From 80b80dcb5769e98fcd67ead2785efffff0a0b56e Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Tue, 28 Sep 2021 23:42:12 -0600 Subject: [PATCH] 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"]);