From da04033abc96f33ce3fb3b72fff96d6a3a7ef1e7 Mon Sep 17 00:00:00 2001 From: Michel Peterson Date: Sun, 23 Mar 2025 10:48:49 +0200 Subject: [PATCH] Small CR and preparatory work for CI --- .github/workflows/main.yml | 3 +- ci/configs/zfs-generic/iscsi-pcs.yaml | 28 +++++++++++++ .../{iscsi.yaml => iscsi-targetcli.yaml} | 0 src/driver/controller-zfs-generic/index.js | 41 ++++++++----------- 4 files changed, 48 insertions(+), 24 deletions(-) create mode 100644 ci/configs/zfs-generic/iscsi-pcs.yaml rename ci/configs/zfs-generic/{iscsi.yaml => iscsi-targetcli.yaml} (100%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 47b6c73..f9b1bc8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -191,7 +191,8 @@ jobs: max-parallel: 1 matrix: config: - - zfs-generic/iscsi.yaml + - zfs-generic/iscsi-pcs.yaml + - zfs-generic/iscsi-targetcli.yaml - zfs-generic/nfs.yaml - zfs-generic/smb.yaml - zfs-generic/nvmeof.yaml diff --git a/ci/configs/zfs-generic/iscsi-pcs.yaml b/ci/configs/zfs-generic/iscsi-pcs.yaml new file mode 100644 index 0000000..baabb69 --- /dev/null +++ b/ci/configs/zfs-generic/iscsi-pcs.yaml @@ -0,0 +1,28 @@ +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: "pcs" + shareStrategyPcs: + pcs_group: "group-nas" + basename: "iqn.2003-01.org.linux-iscsi.ubuntu-19.x8664" + auth: + enabled: 0 diff --git a/ci/configs/zfs-generic/iscsi.yaml b/ci/configs/zfs-generic/iscsi-targetcli.yaml similarity index 100% rename from ci/configs/zfs-generic/iscsi.yaml rename to ci/configs/zfs-generic/iscsi-targetcli.yaml diff --git a/src/driver/controller-zfs-generic/index.js b/src/driver/controller-zfs-generic/index.js index 380b674..2ec3965 100644 --- a/src/driver/controller-zfs-generic/index.js +++ b/src/driver/controller-zfs-generic/index.js @@ -302,25 +302,22 @@ create /backstores/block/${assetName} basename = this.options.iscsi.shareStrategyPcs.basename; pcs_group = this.options.iscsi.shareStrategyPcs.pcs_group; - let groupText = `group ${pcs_group}`; - let createTargetText = [ - `resource create --future target-${assetName} iSCSITarget`, - 'implementation="lio-t"', - `iqn="${basename}:${assetName}"` + let groupTerms = ['group', `${pcs_group}`]; + let createTargetTerms = [ + 'resource', 'create', '--future', `target-${assetName}`, 'iSCSITarget', + 'implementation="lio-t"', `iqn="${basename}:${assetName}"` ]; if (this.options.iscsi.shareStrategyPcs.auth.enabled) { - createTargetText.push(`incoming_username="${this.options.iscsi.shareStrategyPcs.auth.incoming_username}"`); - createTargetText.push(`incoming_password="${this.options.iscsi.shareStrategyPcs.auth.incoming_password}"`); + createTargetTerms.push(`incoming_username="${this.options.iscsi.shareStrategyPcs.auth.incoming_username}"`); + createTargetTerms.push(`incoming_password="${this.options.iscsi.shareStrategyPcs.auth.incoming_password}"`); } - createTargetText.push(groupText); - await GeneralUtils.retry( 3, 2000, async () => { - await this.pcsCommand(createTargetText); + await this.pcsCommand(createTargetTerms.concat(groupTerms)); }, { retryCondition: (err) => { @@ -332,19 +329,17 @@ create /backstores/block/${assetName} } ); - let createLunText = [ - `resource create --future lun-${assetName} iSCSILogicalUnit`, - 'implementation="lio-t"', - `target_iqn="${basename}:${assetName}" lun="1"`, - `path="/dev/${extentDiskName}"`, - groupText + let createLunTerms = [ + 'resource', 'create', '--future', `lun-${assetName}`, 'iSCSILogicalUnit', + 'implementation="lio-t"', `target_iqn="${basename}:${assetName}" lun="1"`, + `path="/dev/${extentDiskName}"` ]; await GeneralUtils.retry( 3, 2000, async () => { - await this.pcsCommand(createLunText); + await this.pcsCommand(createLunTerms.concat(groupTerms)); }, { retryCondition: (err) => { @@ -754,7 +749,7 @@ delete ${assetName} break; case "pcs": let deleteLunText = [ - `resource delete lun-${assetName}` + 'resource', 'delete', `lun-${assetName}` ]; await GeneralUtils.retry( @@ -774,7 +769,7 @@ delete ${assetName} ); let deleteTargetText = [ - `resource delete target-${assetName}` + 'resource', 'delete', `target-${assetName}` ]; await GeneralUtils.retry( @@ -962,7 +957,7 @@ save_config filename=${this.options.nvmeof.shareStrategySpdkCli.configPath} } } - async pcsCommand(commandLines) { + async pcsCommand(commandTerms) { const execClient = this.getExecClient(); const driver = this; @@ -978,7 +973,7 @@ save_config filename=${this.options.nvmeof.shareStrategySpdkCli.configPath} let cliCommand = []; cliCommand.push(cliArgs.join(" ")); - cliCommand.push(commandLines.join(" ")); + cliCommand.push(commandTerms.join(" ")); args.push("'" + cliCommand.join(" ") + "'"); let logCommandTmp = command + " " + args.join(" "); @@ -994,7 +989,7 @@ save_config filename=${this.options.nvmeof.shareStrategySpdkCli.configPath} } }); - driver.ctx.logger.verbose("Pcs command:" + logCommand); + driver.ctx.logger.verbose("pcs command:" + logCommand); let options = { pty: true, @@ -1004,7 +999,7 @@ save_config filename=${this.options.nvmeof.shareStrategySpdkCli.configPath} options ); driver.ctx.logger.verbose( - "Pcs response: " + JSON.stringify(response) + "pcs response: " + JSON.stringify(response) ); if (response.code != 0) { throw response;