From e8b0d7df9359dbad319f239728eca1a177b8fe4a Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sun, 26 Sep 2021 22:17:33 -0600 Subject: [PATCH 01/15] initial attempt at csi-sanity ci test Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 34 +++++++++++- bin/k8s-csi-cleaner | 2 +- ci/bin/launch-csi-sanity.sh | 39 ++++++++++++++ ci/bin/launch-server.sh | 24 +++++++++ ci/configs/synlogy-iscsi/default.yaml | 77 +++++++++++++++++++++++++++ docker/iscsiadm | 0 docker/mount | 0 docker/multipath | 0 docker/node-installer.sh | 9 ++-- docker/npm-install-wrapper.sh | 23 -------- docker/umount | 0 11 files changed, 179 insertions(+), 29 deletions(-) create mode 100755 ci/bin/launch-csi-sanity.sh create mode 100755 ci/bin/launch-server.sh create mode 100644 ci/configs/synlogy-iscsi/default.yaml mode change 100644 => 100755 docker/iscsiadm mode change 100644 => 100755 docker/mount mode change 100644 => 100755 docker/multipath mode change 100644 => 100755 docker/node-installer.sh delete mode 100644 docker/npm-install-wrapper.sh mode change 100644 => 100755 docker/umount diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ecda440..8a25a66 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,14 +9,44 @@ on: - next jobs: - build: + cancel-previous-runs: runs-on: ubuntu-latest - steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.6.0 with: access_token: ${{ github.token }} + + csi-sanity-synology: + strategy: + matrix: + config: + - synlogy-iscsi/default.yaml + runs-on: + - self-hosted + steps: + - uses: actions/checkout@v2 + - name: csi-sanity + run: | + export CI_BUILD_KEY=$(uuidgen) + sudo ci/bin/launch-server.sh & + # wait for server to launch + sleep 10 + sudo ci/bin/launch-csi-sanity.sh + env: + TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" + SYNOLOGY_HOST: ${{ secrets.SANITY_SYNOLOGY_HOST }} + SYNOLOGY_PORT: ${{ secrets.SANITY_SYNOLOGY_PORT }} + SYNOLOGY_USERNAME: ${{ secrets.SANITY_SYNOLOGY_USERNAME }} + SYNOLOGY_PASSWORD: ${{ secrets.SANITY_SYNOLOGY_PASSWORD }} + SYNOLOGY_VOLUME: ${{ secrets.SANITY_SYNOLOGY_VOLUME }} + TARGET_PORTAL: ${{ secrets.SANITY_SYNOLOGY_TARGET_PORTAL }} + + build: + needs: + - csi-sanity-synology + runs-on: ubuntu-latest + steps: - uses: actions/checkout@v2 - name: docker build run: | diff --git a/bin/k8s-csi-cleaner b/bin/k8s-csi-cleaner index b483fa0..e57c9db 100755 --- a/bin/k8s-csi-cleaner +++ b/bin/k8s-csi-cleaner @@ -31,7 +31,7 @@ const PROTO_PATH = __dirname + "/../csi_proto/csi-v1.5.0.proto"; //var grpc = require("grpc-uds"); var grpc = require("@grpc/grpc-js"); var protoLoader = require("@grpc/proto-loader"); -const { rsort } = require("semver"); + // Suggested options for similarity to existing grpc.load behavior var packageDefinition = protoLoader.loadSync(PROTO_PATH, { keepCase: true, diff --git a/ci/bin/launch-csi-sanity.sh b/ci/bin/launch-csi-sanity.sh new file mode 100755 index 0000000..2d82f89 --- /dev/null +++ b/ci/bin/launch-csi-sanity.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +set -e +set -x + +: ${CI_BUILD_KEY:="local"} +: ${CSI_ENDPOINT:=/tmp/csi-${CI_BUILD_KEY}.sock} +: ${CSI_SANITY_TEMP_DIR:=$(mktemp -d -t ci-csi-sanity-tmp-XXXXXXXX)} + +if [[ ! -S "${CSI_ENDPOINT}" ]];then + echo "csi socket: ${CSI_ENDPOINT} does not exist" + exit 1 +fi + +trap ctrl_c INT + +function ctrl_c() { + echo "Trapped CTRL-C" + exit 1 +} + +chmod g+w,o+w "${CSI_ENDPOINT}"; +mkdir -p "${CSI_SANITY_TEMP_DIR}"; +rm -rf "${CSI_SANITY_TEMP_DIR}"/*; +chmod -R 777 "${CSI_SANITY_TEMP_DIR}"; + +# https://github.com/kubernetes-csi/csi-test/tree/master/cmd/csi-sanity +# FOR DEBUG: --ginkgo.v +# --csi.secrets= +# expand size 2073741824 to have mis-alignments +# expand size 2147483648 to have everything line up nicely + +csi-sanity --csi.endpoint "unix://${CSI_ENDPOINT}" \ +--csi.mountdir "${CSI_SANITY_TEMP_DIR}/mnt" \ +--csi.stagingdir "${CSI_SANITY_TEMP_DIR}/stage" \ +--csi.testvolumeexpandsize 2147483648 \ +--csi.testvolumesize 1073741824 + +rm -rf "${CSI_SANITY_TEMP_DIR}" diff --git a/ci/bin/launch-server.sh b/ci/bin/launch-server.sh new file mode 100755 index 0000000..d59d2b1 --- /dev/null +++ b/ci/bin/launch-server.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -e +set -x + +: ${CI_BUILD_KEY:="local"} +: ${TEMPLATE_CONFIG_FILE:=${1}} +: ${CSI_MODE:=""} +: ${CSI_VERSION:="1.5.0"} +: ${CSI_ENDPOINT:=/tmp/csi-${CI_BUILD_KEY}.sock} + +if [[ "x${CONFIG_FILE}" == "x" ]];then + : ${CONFIG_FILE:=$(mktemp -t ci-csi-config-XXXXXXXX)} + + if [[ "x${TEMPLATE_CONFIG_FILE}" != "x" ]];then + envsubst < "${TEMPLATE_CONFIG_FILE}" > "${CONFIG_FILE}" + fi +fi + +if [[ "x${CSI_MODE}" != "x" ]];then + EXTRA_ARGS="--csi-mode ${CSI_MODE} ${EXTRA_ARGS}" +fi + +./bin/democratic-csi --log-level debug --driver-config-file "${CONFIG_FILE}" --csi-version "${CSI_VERSION}" --csi-name "driver-test" --server-socket "${CSI_ENDPOINT}" ${EXTRA_ARGS} diff --git a/ci/configs/synlogy-iscsi/default.yaml b/ci/configs/synlogy-iscsi/default.yaml new file mode 100644 index 0000000..6811247 --- /dev/null +++ b/ci/configs/synlogy-iscsi/default.yaml @@ -0,0 +1,77 @@ +driver: synology-iscsi +httpConnection: + protocol: http + host: ${SYNOLOGY_HOST} + port: ${SYNOLOGY_PORT} + username: ${SYNOLOGY_USERNAME} + password: ${SYNOLOGY_PASSWORD} + allowInsecure: true + session: "democratic-csi-${CI_BUILD_KEY}" + serialize: true + +synology: + volume: ${SYNOLOGY_VOLUME} + +iscsi: + targetPortal: ${TARGET_PORTAL} + targetPortals: [] + baseiqn: "iqn.2000-01.com.synology:XpenoDsm62x." + namePrefix: "csi-${CI_BUILD_KEY}" + nameSuffix: "-ci" + + lunTemplate: + # btrfs thin provisioning + type: "BLUN" + # tpws = Hardware-assisted zeroing + # caw = Hardware-assisted locking + # 3pc = Hardware-assisted data transfer + # tpu = Space reclamation + # can_snapshot = Snapshot + #dev_attribs: + #- dev_attrib: emulate_tpws + # enable: 1 + #- dev_attrib: emulate_caw + # enable: 1 + #- dev_attrib: emulate_3pc + # enable: 1 + #- dev_attrib: emulate_tpu + # enable: 0 + #- dev_attrib: can_snapshot + # enable: 1 + + # btfs thick provisioning + # only zeroing and locking supported + #type: "BLUN_THICK" + # tpws = Hardware-assisted zeroing + # caw = Hardware-assisted locking + #dev_attribs: + #- dev_attrib: emulate_tpws + # enable: 1 + #- dev_attrib: emulate_caw + # enable: 1 + + # ext4 thinn provisioning UI sends everything with enabled=0 + #type: "THIN" + + # ext4 thin with advanced legacy features set + # can only alter tpu (all others are set as enabled=1) + #type: "ADV" + #dev_attribs: + #- dev_attrib: emulate_tpu + # enable: 1 + + # ext4 thick + # can only alter caw + #type: "FILE" + #dev_attribs: + #- dev_attrib: emulate_caw + # enable: 1 + + lunSnapshotTemplate: + is_locked: true + # https://kb.synology.com/en-me/DSM/tutorial/What_is_file_system_consistent_snapshot + is_app_consistent: true + + targetTemplate: + auth_type: 0 + max_sessions: 0 diff --git a/docker/iscsiadm b/docker/iscsiadm old mode 100644 new mode 100755 diff --git a/docker/mount b/docker/mount old mode 100644 new mode 100755 diff --git a/docker/multipath b/docker/multipath old mode 100644 new mode 100755 diff --git a/docker/node-installer.sh b/docker/node-installer.sh old mode 100644 new mode 100755 index f7e34dd..c65c8bb --- a/docker/node-installer.sh +++ b/docker/node-installer.sh @@ -28,8 +28,11 @@ fi echo "I am installing node $NODE_VERSION $NODE_DISTRO" +if [[ "x${NODE_TARGET_DIR}" == "x" ]]; then + NODE_TARGET_DIR="/usr/local/lib/nodejs" +fi + wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_DISTRO}.tar.xz >/dev/null 2>&1 -mkdir -p /usr/local/lib/nodejs -tar -xJf node-${NODE_VERSION}-${NODE_DISTRO}.tar.xz -C /usr/local/lib/nodejs --strip-components=1 +mkdir -p ${NODE_TARGET_DIR} +tar -xJf node-${NODE_VERSION}-${NODE_DISTRO}.tar.xz -C ${NODE_TARGET_DIR} --strip-components=1 rm node-${NODE_VERSION}-${NODE_DISTRO}.tar.xz -rm -rf /var/lib/apt/lists/* diff --git a/docker/npm-install-wrapper.sh b/docker/npm-install-wrapper.sh deleted file mode 100644 index 4279e48..0000000 --- a/docker/npm-install-wrapper.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -set -e -set -x - -PLATFORM=$TARGETPLATFORM - -if [[ "x${PLATFORM}" == "x" ]]; then - PLATFORM="linux/amd64" -fi - -if [ "$PLATFORM" = "linux/amd64" ]; then - export NODE_ARCH="x64" -elif [ "$PLATFORM" = "linux/arm64" ]; then - export NODE_ARCH="arm64" -elif [ "$PLATFORM" = "linux/arm/v7" ]; then - export NODE_ARCH="armv7l" -else - echo "unsupported/unknown PLATFORM ${PLATFORM}" - exit 1 -fi - -npm install --target_arch="${NODE_ARCH}" diff --git a/docker/umount b/docker/umount old mode 100644 new mode 100755 From 73e61a023af4217a21e7becb2e5aa5b694a9e5fb Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sun, 26 Sep 2021 22:22:57 -0600 Subject: [PATCH 02/15] ensure sudo command inherit env Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8a25a66..3c88386 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,11 +28,12 @@ jobs: - uses: actions/checkout@v2 - name: csi-sanity run: | + export PATH="/usr/local/lib/nodejs/bin:${PATH}" export CI_BUILD_KEY=$(uuidgen) - sudo ci/bin/launch-server.sh & + sudo -E ci/bin/launch-server.sh & # wait for server to launch sleep 10 - sudo ci/bin/launch-csi-sanity.sh + sudo -E ci/bin/launch-csi-sanity.sh env: TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" SYNOLOGY_HOST: ${{ secrets.SANITY_SYNOLOGY_HOST }} From 9b107de721113379e6e018cfe186427a3abf0fd5 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sun, 26 Sep 2021 22:36:03 -0600 Subject: [PATCH 03/15] ensure deps are installed Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3c88386..82b5f62 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,10 +29,19 @@ jobs: - name: csi-sanity run: | export PATH="/usr/local/lib/nodejs/bin:${PATH}" + # install deps + npm i + + # generate key for paths etc export CI_BUILD_KEY=$(uuidgen) + + # launch the server sudo -E ci/bin/launch-server.sh & + # wait for server to launch sleep 10 + + # launch csi-sanity sudo -E ci/bin/launch-csi-sanity.sh env: TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" From 55e1c89be196a426f99926aef1a3076217338f62 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Tue, 28 Sep 2021 21:55:53 -0600 Subject: [PATCH 04/15] add truenas ci jobs Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 66 ++++++++++++++----- ci/bin/launch-server.sh | 4 +- ci/bin/run.sh | 20 ++++++ .../default.yaml => synlogy/iscsi.yaml} | 4 +- ci/configs/truenas/core-iscsi.yaml | 31 +++++++++ ci/configs/truenas/core-nfs.yaml | 29 ++++++++ ci/configs/truenas/core-smb.yaml | 56 ++++++++++++++++ ci/configs/truenas/scale-iscsi.yaml | 31 +++++++++ ci/configs/truenas/scale-nfs.yaml | 29 ++++++++ ci/configs/truenas/scale-smb.yaml | 56 ++++++++++++++++ 10 files changed, 306 insertions(+), 20 deletions(-) create mode 100755 ci/bin/run.sh rename ci/configs/{synlogy-iscsi/default.yaml => synlogy/iscsi.yaml} (96%) create mode 100644 ci/configs/truenas/core-iscsi.yaml create mode 100644 ci/configs/truenas/core-nfs.yaml create mode 100644 ci/configs/truenas/core-smb.yaml create mode 100644 ci/configs/truenas/scale-iscsi.yaml create mode 100644 ci/configs/truenas/scale-nfs.yaml create mode 100644 ci/configs/truenas/scale-smb.yaml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 82b5f62..da39fe9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,28 +21,15 @@ jobs: strategy: matrix: config: - - synlogy-iscsi/default.yaml + - synlogy/iscsi.yaml runs-on: - self-hosted steps: - uses: actions/checkout@v2 - name: csi-sanity run: | - export PATH="/usr/local/lib/nodejs/bin:${PATH}" - # install deps - npm i - - # generate key for paths etc - export CI_BUILD_KEY=$(uuidgen) - - # launch the server - sudo -E ci/bin/launch-server.sh & - - # wait for server to launch - sleep 10 - - # launch csi-sanity - sudo -E ci/bin/launch-csi-sanity.sh + # run tests + ci/bin/run.sh env: TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" SYNOLOGY_HOST: ${{ secrets.SANITY_SYNOLOGY_HOST }} @@ -50,11 +37,56 @@ jobs: SYNOLOGY_USERNAME: ${{ secrets.SANITY_SYNOLOGY_USERNAME }} SYNOLOGY_PASSWORD: ${{ secrets.SANITY_SYNOLOGY_PASSWORD }} SYNOLOGY_VOLUME: ${{ secrets.SANITY_SYNOLOGY_VOLUME }} - TARGET_PORTAL: ${{ secrets.SANITY_SYNOLOGY_TARGET_PORTAL }} + + # api-based drivers + csi-sanity-truenas-scale: + strategy: + matrix: + config: + - truenas/scale-iscsi.yaml + - truenas/scale-nfs.yaml + - truenas/scale-smb.yaml + runs-on: + - self-hosted + steps: + - uses: actions/checkout@v2 + - name: csi-sanity + run: | + # run tests + ci/bin/run.sh + env: + TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" + TRUENAS_HOST: ${{ secrets.SANITY_TRUENAS_SCALE_HOST }} + TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_SCALE_USERNAME }} + TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_SCALE_PASSWORD }} + + # ssh-based drivers + csi-sanity-truenas-core: + strategy: + matrix: + config: + - truenas/core-iscsi.yaml + - truenas/core-nfs.yaml + - truenas/core-smb.yaml + runs-on: + - self-hosted + steps: + - uses: actions/checkout@v2 + - name: csi-sanity + run: | + # run tests + ci/bin/run.sh + env: + TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" + TRUENAS_HOST: ${{ secrets.SANITY_TRUENAS_CORE_HOST }} + TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_CORE_USERNAME }} + TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_CORE_PASSWORD }} build: needs: - csi-sanity-synology + - csi-sanity-truenas-scale + - csi-sanity-truenas-core runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/ci/bin/launch-server.sh b/ci/bin/launch-server.sh index d59d2b1..52753c3 100755 --- a/ci/bin/launch-server.sh +++ b/ci/bin/launch-server.sh @@ -8,9 +8,10 @@ set -x : ${CSI_MODE:=""} : ${CSI_VERSION:="1.5.0"} : ${CSI_ENDPOINT:=/tmp/csi-${CI_BUILD_KEY}.sock} +: ${LOG_PATH:=/tmp/csi-${CI_BUILD_KEY}.log} if [[ "x${CONFIG_FILE}" == "x" ]];then - : ${CONFIG_FILE:=$(mktemp -t ci-csi-config-XXXXXXXX)} + : ${CONFIG_FILE:=/tmp/csi-config-${CI_BUILD_KEY}.yaml} if [[ "x${TEMPLATE_CONFIG_FILE}" != "x" ]];then envsubst < "${TEMPLATE_CONFIG_FILE}" > "${CONFIG_FILE}" @@ -21,4 +22,5 @@ if [[ "x${CSI_MODE}" != "x" ]];then EXTRA_ARGS="--csi-mode ${CSI_MODE} ${EXTRA_ARGS}" fi +# > "${LOG_PATH}" 2>&1 ./bin/democratic-csi --log-level debug --driver-config-file "${CONFIG_FILE}" --csi-version "${CSI_VERSION}" --csi-name "driver-test" --server-socket "${CSI_ENDPOINT}" ${EXTRA_ARGS} diff --git a/ci/bin/run.sh b/ci/bin/run.sh new file mode 100755 index 0000000..b951a99 --- /dev/null +++ b/ci/bin/run.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -e +set -x + +export PATH="/usr/local/lib/nodejs/bin:${PATH}" +# install deps +npm i + +# generate key for paths etc +export CI_BUILD_KEY=$(uuidgen | cut -d "-" -f 1) + +# launch the server +sudo -E ci/bin/launch-server.sh & + +# wait for server to launch +sleep 10 + +# launch csi-sanity +sudo -E ci/bin/launch-csi-sanity.sh diff --git a/ci/configs/synlogy-iscsi/default.yaml b/ci/configs/synlogy/iscsi.yaml similarity index 96% rename from ci/configs/synlogy-iscsi/default.yaml rename to ci/configs/synlogy/iscsi.yaml index 6811247..8b58913 100644 --- a/ci/configs/synlogy-iscsi/default.yaml +++ b/ci/configs/synlogy/iscsi.yaml @@ -13,10 +13,10 @@ synology: volume: ${SYNOLOGY_VOLUME} iscsi: - targetPortal: ${TARGET_PORTAL} + targetPortal: ${SYNOLOGY_HOST} targetPortals: [] baseiqn: "iqn.2000-01.com.synology:XpenoDsm62x." - namePrefix: "csi-${CI_BUILD_KEY}" + namePrefix: "csi-${CI_BUILD_KEY}-" nameSuffix: "-ci" lunTemplate: diff --git a/ci/configs/truenas/core-iscsi.yaml b/ci/configs/truenas/core-iscsi.yaml new file mode 100644 index 0000000..05d0359 --- /dev/null +++ b/ci/configs/truenas/core-iscsi.yaml @@ -0,0 +1,31 @@ +driver: freenas-api-iscsi + +httpConnection: + protocol: http + host: ${TRUENAS_HOST} + port: 80 + #apiKey: + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + +zfs: + datasetParentName: tank/ci/${CI_BUILD_KEY}/v + detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s + + zvolCompression: + zvolDedup: + zvolEnableReservation: false + zvolBlocksize: + +iscsi: + targetPortal: ${TRUENAS_HOST} + interface: "" + namePrefix: "csi-ci-${CI_BUILD_KEY}" + nameSuffix: "" + targetGroups: + - targetGroupPortalGroup: 1 + targetGroupInitiatorGroup: 1 + targetGroupAuthType: None + targetGroupAuthGroup: + # 0-100 (0 == ignore) + extentAvailThreshold: 0 diff --git a/ci/configs/truenas/core-nfs.yaml b/ci/configs/truenas/core-nfs.yaml new file mode 100644 index 0000000..5b0f272 --- /dev/null +++ b/ci/configs/truenas/core-nfs.yaml @@ -0,0 +1,29 @@ +driver: freenas-api-nfs + +httpConnection: + protocol: http + host: ${TRUENAS_HOST} + port: 80 + #apiKey: + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + +zfs: + datasetParentName: tank/ci/${CI_BUILD_KEY}/v + detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s + + datasetEnableQuotas: true + datasetEnableReservation: true + datasetPermissionsMode: "0777" + datasetPermissionsUser: 0 + datasetPermissionsGroup: 0 + +nfs: + shareHost: ${TRUENAS_HOST} + shareAlldirs: false + shareAllowedHosts: [] + shareAllowedNetworks: [] + shareMaprootUser: root + shareMaprootGroup: wheel + shareMapallUser: "" + shareMapallGroup: "" diff --git a/ci/configs/truenas/core-smb.yaml b/ci/configs/truenas/core-smb.yaml new file mode 100644 index 0000000..74964ea --- /dev/null +++ b/ci/configs/truenas/core-smb.yaml @@ -0,0 +1,56 @@ +driver: freenas-api-smb + +httpConnection: + protocol: http + host: ${TRUENAS_HOST} + port: 80 + #apiKey: + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + +zfs: + datasetProperties: + # smb options + #aclmode: restricted + #casesensitivity: mixed + + datasetParentName: tank/ci/${CI_BUILD_KEY}/v + detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s + + datasetEnableQuotas: true + datasetEnableReservation: true + datasetPermissionsMode: "0777" + datasetPermissionsUser: 0 + datasetPermissionsGroup: 0 + + # for smb with guest + #datasetPermissionsUser: nobody + #datasetPermissionsGroup: nobody + + #datasetPermissionsGroup: root + #datasetPermissionsAcls: + #- "-m everyone@:full_set:allow" + + #datasetPermissionsAcls: + #- "-m u:kube:full_set:allow" + +smb: + shareHost: ${TRUENAS_HOST} + #nameTemplate: "" + namePrefix: "csi-ci-${CI_BUILD_KEY}" + nameSuffix: "" + shareAuxiliaryConfigurationTemplate: | + #guest ok = yes + #guest only = yes + shareHome: false + shareAllowedHosts: [] + shareDeniedHosts: [] + #shareDefaultPermissions: true + shareGuestOk: true + #shareGuestOnly: true + #shareShowHiddenFiles: true + shareRecycleBin: true + shareBrowsable: false + shareAccessBasedEnumeration: true + shareTimeMachine: false + #shareStorageTask: diff --git a/ci/configs/truenas/scale-iscsi.yaml b/ci/configs/truenas/scale-iscsi.yaml new file mode 100644 index 0000000..05d0359 --- /dev/null +++ b/ci/configs/truenas/scale-iscsi.yaml @@ -0,0 +1,31 @@ +driver: freenas-api-iscsi + +httpConnection: + protocol: http + host: ${TRUENAS_HOST} + port: 80 + #apiKey: + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + +zfs: + datasetParentName: tank/ci/${CI_BUILD_KEY}/v + detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s + + zvolCompression: + zvolDedup: + zvolEnableReservation: false + zvolBlocksize: + +iscsi: + targetPortal: ${TRUENAS_HOST} + interface: "" + namePrefix: "csi-ci-${CI_BUILD_KEY}" + nameSuffix: "" + targetGroups: + - targetGroupPortalGroup: 1 + targetGroupInitiatorGroup: 1 + targetGroupAuthType: None + targetGroupAuthGroup: + # 0-100 (0 == ignore) + extentAvailThreshold: 0 diff --git a/ci/configs/truenas/scale-nfs.yaml b/ci/configs/truenas/scale-nfs.yaml new file mode 100644 index 0000000..0e817ce --- /dev/null +++ b/ci/configs/truenas/scale-nfs.yaml @@ -0,0 +1,29 @@ +driver: freenas-api-nfs + +httpConnection: + protocol: http + host: ${TRUENAS_HOST} + port: 80 + #apiKey: + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + +zfs: + datasetParentName: tank/ci/${CI_BUILD_KEY}/v + detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s + + datasetEnableQuotas: true + datasetEnableReservation: true + datasetPermissionsMode: "0777" + datasetPermissionsUser: 0 + datasetPermissionsGroup: 0 + +nfs: + shareHost: ${TRUENAS_HOST} + shareAlldirs: false + shareAllowedHosts: [] + shareAllowedNetworks: [] + shareMaprootUser: root + shareMaprootGroup: root + shareMapallUser: "" + shareMapallGroup: "" diff --git a/ci/configs/truenas/scale-smb.yaml b/ci/configs/truenas/scale-smb.yaml new file mode 100644 index 0000000..74964ea --- /dev/null +++ b/ci/configs/truenas/scale-smb.yaml @@ -0,0 +1,56 @@ +driver: freenas-api-smb + +httpConnection: + protocol: http + host: ${TRUENAS_HOST} + port: 80 + #apiKey: + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + +zfs: + datasetProperties: + # smb options + #aclmode: restricted + #casesensitivity: mixed + + datasetParentName: tank/ci/${CI_BUILD_KEY}/v + detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s + + datasetEnableQuotas: true + datasetEnableReservation: true + datasetPermissionsMode: "0777" + datasetPermissionsUser: 0 + datasetPermissionsGroup: 0 + + # for smb with guest + #datasetPermissionsUser: nobody + #datasetPermissionsGroup: nobody + + #datasetPermissionsGroup: root + #datasetPermissionsAcls: + #- "-m everyone@:full_set:allow" + + #datasetPermissionsAcls: + #- "-m u:kube:full_set:allow" + +smb: + shareHost: ${TRUENAS_HOST} + #nameTemplate: "" + namePrefix: "csi-ci-${CI_BUILD_KEY}" + nameSuffix: "" + shareAuxiliaryConfigurationTemplate: | + #guest ok = yes + #guest only = yes + shareHome: false + shareAllowedHosts: [] + shareDeniedHosts: [] + #shareDefaultPermissions: true + shareGuestOk: true + #shareGuestOnly: true + #shareShowHiddenFiles: true + shareRecycleBin: true + shareBrowsable: false + shareAccessBasedEnumeration: true + shareTimeMachine: false + #shareStorageTask: From 26006e6ae33c9c365b5c7a12e5a6e8b5a3cabe31 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Tue, 28 Sep 2021 22:05:06 -0600 Subject: [PATCH 05/15] remove smb, proper configs for core Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 4 ++-- ci/configs/truenas/core-iscsi.yaml | 8 +++++++- ci/configs/truenas/core-nfs.yaml | 8 +++++++- ci/configs/truenas/core-smb.yaml | 8 +++++++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index da39fe9..7872d20 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -45,7 +45,7 @@ jobs: config: - truenas/scale-iscsi.yaml - truenas/scale-nfs.yaml - - truenas/scale-smb.yaml + #- truenas/scale-smb.yaml runs-on: - self-hosted steps: @@ -67,7 +67,7 @@ jobs: config: - truenas/core-iscsi.yaml - truenas/core-nfs.yaml - - truenas/core-smb.yaml + #- truenas/core-smb.yaml runs-on: - self-hosted steps: diff --git a/ci/configs/truenas/core-iscsi.yaml b/ci/configs/truenas/core-iscsi.yaml index 05d0359..2cf1d84 100644 --- a/ci/configs/truenas/core-iscsi.yaml +++ b/ci/configs/truenas/core-iscsi.yaml @@ -1,4 +1,4 @@ -driver: freenas-api-iscsi +driver: freenas-iscsi httpConnection: protocol: http @@ -8,6 +8,12 @@ httpConnection: username: ${TRUENAS_USERNAME} password: ${TRUENAS_PASSWORD} +sshConnection: + host: ${TRUENAS_HOST} + port: 22 + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + zfs: datasetParentName: tank/ci/${CI_BUILD_KEY}/v detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s diff --git a/ci/configs/truenas/core-nfs.yaml b/ci/configs/truenas/core-nfs.yaml index 5b0f272..04f2744 100644 --- a/ci/configs/truenas/core-nfs.yaml +++ b/ci/configs/truenas/core-nfs.yaml @@ -1,4 +1,4 @@ -driver: freenas-api-nfs +driver: freenas-nfs httpConnection: protocol: http @@ -8,6 +8,12 @@ httpConnection: username: ${TRUENAS_USERNAME} password: ${TRUENAS_PASSWORD} +sshConnection: + host: ${TRUENAS_HOST} + port: 22 + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + zfs: datasetParentName: tank/ci/${CI_BUILD_KEY}/v detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s diff --git a/ci/configs/truenas/core-smb.yaml b/ci/configs/truenas/core-smb.yaml index 74964ea..9460255 100644 --- a/ci/configs/truenas/core-smb.yaml +++ b/ci/configs/truenas/core-smb.yaml @@ -1,4 +1,4 @@ -driver: freenas-api-smb +driver: freenas-smb httpConnection: protocol: http @@ -8,6 +8,12 @@ httpConnection: username: ${TRUENAS_USERNAME} password: ${TRUENAS_PASSWORD} +sshConnection: + host: ${TRUENAS_HOST} + port: 22 + username: ${TRUENAS_USERNAME} + password: ${TRUENAS_PASSWORD} + zfs: datasetProperties: # smb options From 84c941064032688e9741e81dbdbc6783016b26ad Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Tue, 28 Sep 2021 22:15:52 -0600 Subject: [PATCH 06/15] remove failing tests Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7872d20..66f7307 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -45,6 +45,7 @@ jobs: config: - truenas/scale-iscsi.yaml - truenas/scale-nfs.yaml + # 80 char limit #- truenas/scale-smb.yaml runs-on: - self-hosted @@ -65,8 +66,10 @@ jobs: strategy: matrix: config: - - truenas/core-iscsi.yaml + # 63 char limit + #- truenas/core-iscsi.yaml - truenas/core-nfs.yaml + # 80 char limit #- truenas/core-smb.yaml runs-on: - self-hosted From 8530b31de61f17a522c180003fa6c643ff264316 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Tue, 28 Sep 2021 22:19:55 -0600 Subject: [PATCH 07/15] disable fail-fast on csi-sanity Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 66f7307..519d7b4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,6 +19,7 @@ jobs: csi-sanity-synology: strategy: + fail-fast: false matrix: config: - synlogy/iscsi.yaml @@ -41,6 +42,7 @@ jobs: # api-based drivers csi-sanity-truenas-scale: strategy: + fail-fast: false matrix: config: - truenas/scale-iscsi.yaml @@ -64,6 +66,7 @@ jobs: # ssh-based drivers csi-sanity-truenas-core: strategy: + fail-fast: false matrix: config: # 63 char limit From 80b80dcb5769e98fcd67ead2785efffff0a0b56e Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Tue, 28 Sep 2021 23:42:12 -0600 Subject: [PATCH 08/15] zfs-generic testing Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 22 ++++++++++++++++++ ci/configs/zfs-generic/iscsi.yaml | 31 ++++++++++++++++++++++++++ ci/configs/zfs-generic/nfs.yaml | 24 ++++++++++++++++++++ src/driver/controller-zfs-ssh/index.js | 4 ++++ src/driver/freenas/api.js | 4 ++++ 5 files changed, 85 insertions(+) create mode 100644 ci/configs/zfs-generic/iscsi.yaml create mode 100644 ci/configs/zfs-generic/nfs.yaml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 519d7b4..acb9882 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -88,6 +88,28 @@ jobs: TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_CORE_USERNAME }} TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_CORE_PASSWORD }} + # ssh-based drivers + csi-sanity-zfs-generic: + strategy: + fail-fast: false + matrix: + config: + - zfs-generic/iscsi.yaml + - zfs-generic/nfs.yaml + runs-on: + - self-hosted + steps: + - uses: actions/checkout@v2 + - name: csi-sanity + run: | + # run tests + ci/bin/run.sh + env: + TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" + SERVER_HOST: ${{ secrets.SANITY_ZFS_GENERIC_HOST }} + SERVER_USERNAME: ${{ secrets.SANITY_ZFS_GENERIC_USERNAME }} + SERVER_PASSWORD: ${{ secrets.SANITY_ZFS_GENERIC_PASSWORD }} + build: needs: - csi-sanity-synology diff --git a/ci/configs/zfs-generic/iscsi.yaml b/ci/configs/zfs-generic/iscsi.yaml new file mode 100644 index 0000000..38dc594 --- /dev/null +++ b/ci/configs/zfs-generic/iscsi.yaml @@ -0,0 +1,31 @@ +driver: zfs-generic-iscsi + +sshConnection: + host: ${SERVER_HOST} + port: 22 + username: ${SERVER_USERNAME} + password: ${SERVER_PASSWORD} + +zfs: + datasetParentName: tank/ci/${CI_BUILD_KEY}/v + detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s + + zvolCompression: + zvolDedup: + zvolEnableReservation: false + zvolBlocksize: + +iscsi: + targetPortal: ${SERVER_HOST} + interface: "" + namePrefix: "csi-ci-${CI_BUILD_KEY}" + nameSuffix: "" + shareStrategy: "targetCli" + shareStrategyTargetCli: + basename: "iqn.2003-01.org.linux-iscsi.ubuntu-19.x8664" + tpg: + attributes: + authentication: 0 + generate_node_acls: 1 + cache_dynamic_acls: 1 + demo_mode_write_protect: 0 diff --git a/ci/configs/zfs-generic/nfs.yaml b/ci/configs/zfs-generic/nfs.yaml new file mode 100644 index 0000000..2fde5d2 --- /dev/null +++ b/ci/configs/zfs-generic/nfs.yaml @@ -0,0 +1,24 @@ +driver: zfs-generic-nfs + +sshConnection: + host: ${SERVER_HOST} + port: 22 + username: ${SERVER_USERNAME} + password: ${SERVER_PASSWORD} + +zfs: + datasetParentName: tank/ci/${CI_BUILD_KEY}/v + detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s + + datasetEnableQuotas: true + datasetEnableReservation: true + datasetPermissionsMode: "0777" + datasetPermissionsUser: 0 + datasetPermissionsGroup: 0 + +nfs: + shareHost: ${TRUENAS_HOST} + shareStrategy: "setDatasetProperties" + shareStrategySetDatasetProperties: + properties: + sharenfs: "on" diff --git a/src/driver/controller-zfs-ssh/index.js b/src/driver/controller-zfs-ssh/index.js index 074f457..4a441ed 100644 --- a/src/driver/controller-zfs-ssh/index.js +++ b/src/driver/controller-zfs-ssh/index.js @@ -1403,6 +1403,10 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver { const datasetName = datasetParentName; + await zb.zfs.create(datasetName, { + parents: true, + }); + let properties; try { properties = await zb.zfs.get(datasetName, ["avail"]); diff --git a/src/driver/freenas/api.js b/src/driver/freenas/api.js index 187eb20..eab6388 100644 --- a/src/driver/freenas/api.js +++ b/src/driver/freenas/api.js @@ -2964,6 +2964,10 @@ class FreeNASApiDriver extends CsiBaseDriver { const datasetName = datasetParentName; + await httpApiClient.DatasetCreate(datasetName, { + create_ancestors: true, + }); + let properties; properties = await httpApiClient.DatasetGet(datasetName, ["available"]); From 47623c9f02adc4fbfc0436666d96091aef876643 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Wed, 29 Sep 2021 00:10:02 -0600 Subject: [PATCH 09/15] require zfs-generic for build Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index acb9882..9dde371 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -115,6 +115,7 @@ jobs: - csi-sanity-synology - csi-sanity-truenas-scale - csi-sanity-truenas-core + - csi-sanity-zfs-generic runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 From 80bd77120ee933fcf86602c9d5f641581a27bd98 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Wed, 29 Sep 2021 00:24:28 -0600 Subject: [PATCH 10/15] proper env var for zfs-generic-nfs Signed-off-by: Travis Glenn Hansen --- ci/configs/zfs-generic/nfs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/configs/zfs-generic/nfs.yaml b/ci/configs/zfs-generic/nfs.yaml index 2fde5d2..a3a8b88 100644 --- a/ci/configs/zfs-generic/nfs.yaml +++ b/ci/configs/zfs-generic/nfs.yaml @@ -17,7 +17,7 @@ zfs: datasetPermissionsGroup: 0 nfs: - shareHost: ${TRUENAS_HOST} + shareHost: ${SERVER_HOST} shareStrategy: "setDatasetProperties" shareStrategySetDatasetProperties: properties: From e8f68a9af7abf837022ddfb52bbe6e176400d34b Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Wed, 29 Sep 2021 00:40:11 -0600 Subject: [PATCH 11/15] more robust delete handling Signed-off-by: Travis Glenn Hansen --- src/driver/controller-zfs-generic/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/driver/controller-zfs-generic/index.js b/src/driver/controller-zfs-generic/index.js index de9f68c..c35621e 100644 --- a/src/driver/controller-zfs-generic/index.js +++ b/src/driver/controller-zfs-generic/index.js @@ -1,5 +1,7 @@ const { ControllerZfsSshBaseDriver } = require("../controller-zfs-ssh"); const { GrpcError, grpc } = require("../../utils/grpc"); +const sleep = require("../../utils/general").sleep; + const Handlebars = require("handlebars"); @@ -202,6 +204,18 @@ create /backstores/block/${iscsiName} case "zfs-generic-nfs": switch (this.options.nfs.shareStrategy) { case "setDatasetProperties": + // remove the dataset properties + // sleep to let things settle + for (let key of ["share", "sharenfs"]) { + if ( + this.options.nfs.shareStrategySetDatasetProperties.properties[ + key + ] + ) { + await zb.zfs.inherit(datasetName, key); + } + } + await sleep(2000); // let things settle break; default: throw new GrpcError( From 1eb78a1528c86ad3a582387a8ca85f9aacc0ef42 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Wed, 29 Sep 2021 01:03:16 -0600 Subject: [PATCH 12/15] remove comments Signed-off-by: Travis Glenn Hansen --- src/driver/controller-zfs-generic/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/driver/controller-zfs-generic/index.js b/src/driver/controller-zfs-generic/index.js index c35621e..379933e 100644 --- a/src/driver/controller-zfs-generic/index.js +++ b/src/driver/controller-zfs-generic/index.js @@ -204,8 +204,6 @@ create /backstores/block/${iscsiName} case "zfs-generic-nfs": switch (this.options.nfs.shareStrategy) { case "setDatasetProperties": - // remove the dataset properties - // sleep to let things settle for (let key of ["share", "sharenfs"]) { if ( this.options.nfs.shareStrategySetDatasetProperties.properties[ From a45e0967f5b8616313a4cc0a3730611a02ea78e1 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Wed, 29 Sep 2021 01:19:57 -0600 Subject: [PATCH 13/15] better idempotency Signed-off-by: Travis Glenn Hansen --- src/driver/controller-zfs-generic/index.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/driver/controller-zfs-generic/index.js b/src/driver/controller-zfs-generic/index.js index 379933e..70a464f 100644 --- a/src/driver/controller-zfs-generic/index.js +++ b/src/driver/controller-zfs-generic/index.js @@ -2,7 +2,6 @@ const { ControllerZfsSshBaseDriver } = require("../controller-zfs-ssh"); const { GrpcError, grpc } = require("../../utils/grpc"); const sleep = require("../../utils/general").sleep; - const Handlebars = require("handlebars"); const ISCSI_ASSETS_NAME_PROPERTY_NAME = "democratic-csi:iscsi_assets_name"; @@ -210,7 +209,15 @@ create /backstores/block/${iscsiName} key ] ) { - await zb.zfs.inherit(datasetName, key); + try { + await zb.zfs.inherit(datasetName, key); + } catch (err) { + if (err.toString().includes("dataset does not exist")) { + // do nothing + } else { + throw err; + } + } } } await sleep(2000); // let things settle From fdb2cfa8ed640bfb3b115a001346daa19b85d142 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Wed, 29 Sep 2021 01:42:24 -0600 Subject: [PATCH 14/15] try to make volume delete more robust Signed-off-by: Travis Glenn Hansen --- src/driver/controller-zfs-ssh/index.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/driver/controller-zfs-ssh/index.js b/src/driver/controller-zfs-ssh/index.js index 4a441ed..480faf6 100644 --- a/src/driver/controller-zfs-ssh/index.js +++ b/src/driver/controller-zfs-ssh/index.js @@ -1,6 +1,7 @@ const { CsiBaseDriver } = require("../index"); const SshClient = require("../../utils/ssh").SshClient; const { GrpcError, grpc } = require("../../utils/grpc"); +const sleep = require("../../utils/general").sleep; const { Zetabyte, ZfsSshProcessManager } = require("../../utils/zfs"); @@ -1243,7 +1244,27 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver { // NOTE: -R will recursively delete items + dependent filesets // delete dataset try { - await zb.zfs.destroy(datasetName, { recurse: true, force: true }); + let max_tries = 5; + let sleep_time = 3000; + let current_try = 1; + let success = false; + while(!success && current_try <= max_tries) { + try { + await zb.zfs.destroy(datasetName, { recurse: true, force: true }); + success = true; + } catch (err) { + if (err.toString().includes("dataset is busy")) { + current_try++; + if (current_try > max_tries) { + throw err; + } else { + await sleep(sleep_time); + } + } else { + throw err; + } + } + } } catch (err) { if (err.toString().includes("filesystem has dependent clones")) { throw new GrpcError( From 41ba79c72eddd8f3f8d21217060077bbdcc7e694 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Wed, 29 Sep 2021 10:51:05 -0600 Subject: [PATCH 15/15] version bump Signed-off-by: Travis Glenn Hansen --- .dockerignore | 1 + CHANGELOG.md | 7 +++++++ README.md | 2 ++ package-lock.json | 52 +++++++++++++++++++++++------------------------ package.json | 2 +- 5 files changed, 37 insertions(+), 27 deletions(-) diff --git a/.dockerignore b/.dockerignore index fe9900c..5a21efb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,3 +6,4 @@ node_modules Dockerfile* TODO.md .git +/ci diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e59d51..5021e44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# v1.4.2 + +Released 2021-09-29 + +- general improvements to help ci +- cover most drivers with ci + # v1.4.1 Released 2021-09-21 diff --git a/README.md b/README.md index 1a14ded..94fdaed 100644 --- a/README.md +++ b/README.md @@ -368,3 +368,5 @@ A special shout out to the wonderful sponsors of the project! - https://github.com/nmaupu/freenas-provisioner - https://github.com/travisghansen/freenas-iscsi-provisioner - https://datamattsson.tumblr.com/post/624751011659202560/welcome-truenas-core-container-storage-provider +- https://github.com/dravanet/truenas-csi +- https://github.com/SynologyOpenSource/synology-csi diff --git a/package-lock.json b/package-lock.json index 3202f19..0c99f22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "democratic-csi", - "version": "1.4.1", + "version": "1.4.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "democratic-csi", - "version": "1.4.1", + "version": "1.4.2", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.3.6", @@ -419,9 +419,9 @@ } }, "node_modules/@types/node": { - "version": "16.9.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.6.tgz", - "integrity": "sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ==" + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" }, "node_modules/@types/request": { "version": "2.48.7", @@ -2383,9 +2383,9 @@ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", "dependencies": { "has": "^1.0.3" }, @@ -2411,9 +2411,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.2.tgz", + "integrity": "sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -3948,9 +3948,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.0.tgz", - "integrity": "sha512-UPeZv4h9Xv510ibpt5rdsUNzgD78nMa1rhxxCgvkKiq06hlKCEHJLiJ6Ub8zDg/wR6hedEI6ovnd2vCvJ4nusA==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", + "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -4315,9 +4315,9 @@ } }, "@types/node": { - "version": "16.9.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.6.tgz", - "integrity": "sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ==" + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" }, "@types/request": { "version": "2.48.7", @@ -5813,9 +5813,9 @@ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", "requires": { "has": "^1.0.3" } @@ -5832,9 +5832,9 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.2.tgz", + "integrity": "sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -7008,9 +7008,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.0.tgz", - "integrity": "sha512-UPeZv4h9Xv510ibpt5rdsUNzgD78nMa1rhxxCgvkKiq06hlKCEHJLiJ6Ub8zDg/wR6hedEI6ovnd2vCvJ4nusA==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", + "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", diff --git a/package.json b/package.json index 3292f45..7a21123 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "democratic-csi", - "version": "1.4.1", + "version": "1.4.2", "description": "kubernetes csi driver framework", "main": "bin/democratic-csi", "scripts": {