diff --git a/ci/configs/truenas/ssh/26/iscsi.yaml b/ci/configs/truenas/ssh/26/iscsi.yaml index 3a8619b..76baaff 100644 --- a/ci/configs/truenas/ssh/26/iscsi.yaml +++ b/ci/configs/truenas/ssh/26/iscsi.yaml @@ -4,7 +4,7 @@ httpConnection: protocol: http host: ${TRUENAS_HOST} port: 80 - #apiKey: + #apiKey: username: ${TRUENAS_USERNAME} password: ${TRUENAS_PASSWORD} @@ -30,7 +30,7 @@ iscsi: nameSuffix: "" targetGroups: - targetGroupPortalGroup: 1 - targetGroupInitiatorGroup: 1 + targetGroupInitiatorGroup: 3 targetGroupAuthType: None targetGroupAuthGroup: # 0-100 (0 == ignore) diff --git a/ci/configs/truenas/ssh/26/smb.yaml b/ci/configs/truenas/ssh/26/smb.yaml index fe6856e..03dba9e 100644 --- a/ci/configs/truenas/ssh/26/smb.yaml +++ b/ci/configs/truenas/ssh/26/smb.yaml @@ -4,7 +4,7 @@ httpConnection: protocol: http host: ${TRUENAS_HOST} port: 80 - #apiKey: + #apiKey: username: ${TRUENAS_USERNAME} password: ${TRUENAS_PASSWORD} @@ -30,11 +30,11 @@ zfs: datasetPermissionsMode: "0770" datasetPermissionsUser: 1001 datasetPermissionsGroup: 1001 - - datasetPermissionsAcls: - - "-m g:builtin_users:full_set:fd:allow" - - "-m group@:modify_set:fd:allow" - - "-m owner@:full_set:fd:allow" + + # datasetPermissionsAcls: + # - "-m g:builtin_users:full_set:fd:allow" + # - "-m group@:modify_set:fd:allow" + # - "-m owner@:full_set:fd:allow" smb: shareHost: ${TRUENAS_HOST} diff --git a/src/driver/freenas/api.js b/src/driver/freenas/api.js index 1fe4291..e1dc7e2 100644 --- a/src/driver/freenas/api.js +++ b/src/driver/freenas/api.js @@ -12,8 +12,6 @@ const FreeNASApiShareHelper = const { Zetabyte } = require("../../utils/zfs"); const GeneralUtils = require("../../utils/general"); - - // zfs common properties const MANAGED_PROPERTY_NAME = "democratic-csi:managed_resource"; const SUCCESS_PROPERTY_NAME = "democratic-csi:provision_success"; @@ -616,6 +614,13 @@ class FreeNASApiDriver extends CsiBaseDriver { ); } + // TODO: remove this after TN fixes the create_ancestors logic of zvol creation path + if (driver.getDriverZfsResourceType() == "volume") { + await webSocketApiClient.DatasetCreate(datasetParentName, { + create_ancestors: true, + }); + } + if ( call.request.volume_capabilities && call.request.volume_capabilities.length > 0 diff --git a/src/driver/freenas/websocket/api.js b/src/driver/freenas/websocket/api.js index 9099c6d..286aaee 100644 --- a/src/driver/freenas/websocket/api.js +++ b/src/driver/freenas/websocket/api.js @@ -213,7 +213,12 @@ class Api { } getPropertiesFromKeyValueArray(kvarr) { + if (!Array.isArray(kvarr)) { + return {}; + } + let properties = {}; + for (const v of kvarr) { properties[v.key] = v.value; }