commit
7233bde497
|
|
@ -146,6 +146,38 @@ jobs:
|
||||||
TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_USERNAME }}
|
TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_USERNAME }}
|
||||||
TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_PASSWORD }}
|
TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_PASSWORD }}
|
||||||
|
|
||||||
|
csi-sanity-truenas-scale-22_12:
|
||||||
|
needs:
|
||||||
|
- build-npm-linux-amd64
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
config:
|
||||||
|
- truenas/scale/22.12/scale-iscsi.yaml
|
||||||
|
- truenas/scale/22.12/scale-nfs.yaml
|
||||||
|
# 80 char limit
|
||||||
|
- truenas/scale/22.12/scale-smb.yaml
|
||||||
|
runs-on:
|
||||||
|
- self-hosted
|
||||||
|
- Linux
|
||||||
|
- X64
|
||||||
|
#- csi-sanity-truenas
|
||||||
|
- csi-sanity-zfs-generic
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: node-modules-linux-amd64
|
||||||
|
- name: csi-sanity
|
||||||
|
run: |
|
||||||
|
# run tests
|
||||||
|
ci/bin/run.sh
|
||||||
|
env:
|
||||||
|
TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}"
|
||||||
|
TRUENAS_HOST: ${{ secrets.SANITY_TRUENAS_SCALE_22_12_HOST }}
|
||||||
|
TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_USERNAME }}
|
||||||
|
TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_PASSWORD }}
|
||||||
|
|
||||||
# ssh-based drivers
|
# ssh-based drivers
|
||||||
csi-sanity-truenas-core-12_0:
|
csi-sanity-truenas-core-12_0:
|
||||||
needs:
|
needs:
|
||||||
|
|
@ -302,8 +334,6 @@ jobs:
|
||||||
SHARE_NAME: tank_client_smb
|
SHARE_NAME: tank_client_smb
|
||||||
CSI_SANITY_SKIP: "should fail when requesting to create a snapshot with already existing name and different source volume ID|should fail when requesting to create a volume with already existing name and different capacity"
|
CSI_SANITY_SKIP: "should fail when requesting to create a snapshot with already existing name and different source volume ID|should fail when requesting to create a volume with already existing name and different capacity"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# zfs-local drivers
|
# zfs-local drivers
|
||||||
csi-sanity-zfs-local:
|
csi-sanity-zfs-local:
|
||||||
needs:
|
needs:
|
||||||
|
|
|
||||||
|
|
@ -324,8 +324,17 @@ unecessarily:
|
||||||
|
|
||||||
- https://askubuntu.com/questions/318592/how-can-i-remove-the-landscape-canonical-com-greeting-from-motd
|
- https://askubuntu.com/questions/318592/how-can-i-remove-the-landscape-canonical-com-greeting-from-motd
|
||||||
- https://linuxconfig.org/disable-dynamic-motd-and-news-on-ubuntu-20-04-focal-fossa-linux
|
- https://linuxconfig.org/disable-dynamic-motd-and-news-on-ubuntu-20-04-focal-fossa-linux
|
||||||
|
- https://github.com/democratic-csi/democratic-csi/issues/151 (some notes on
|
||||||
|
using delegated zfs permissions)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
####### nfs
|
||||||
|
yum install -y nfs-utils
|
||||||
|
systemctl enable --now nfs-server.service
|
||||||
|
|
||||||
|
apt-get install -y nfs-kernel-server
|
||||||
|
systemctl enable --now nfs-kernel-server.service
|
||||||
|
|
||||||
####### iscsi
|
####### iscsi
|
||||||
yum install targetcli -y
|
yum install targetcli -y
|
||||||
apt-get -y install targetcli-fb
|
apt-get -y install targetcli-fb
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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: false
|
||||||
|
datasetPermissionsMode: "0777"
|
||||||
|
datasetPermissionsUser: 0
|
||||||
|
datasetPermissionsGroup: 0
|
||||||
|
|
||||||
|
nfs:
|
||||||
|
shareHost: ${TRUENAS_HOST}
|
||||||
|
shareAlldirs: false
|
||||||
|
shareAllowedHosts: []
|
||||||
|
shareAllowedNetworks: []
|
||||||
|
shareMaprootUser: root
|
||||||
|
shareMaprootGroup: root
|
||||||
|
shareMapallUser: ""
|
||||||
|
shareMapallGroup: ""
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
driver: freenas-api-smb
|
||||||
|
|
||||||
|
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: false
|
||||||
|
datasetPermissionsMode: "0770"
|
||||||
|
datasetPermissionsUser: 1001
|
||||||
|
datasetPermissionsGroup: 1001
|
||||||
|
|
||||||
|
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: false
|
||||||
|
#shareGuestOnly: true
|
||||||
|
#shareShowHiddenFiles: true
|
||||||
|
shareRecycleBin: false
|
||||||
|
shareBrowsable: false
|
||||||
|
shareAccessBasedEnumeration: true
|
||||||
|
shareTimeMachine: false
|
||||||
|
#shareStorageTask:
|
||||||
|
|
||||||
|
node:
|
||||||
|
mount:
|
||||||
|
mount_flags: "username=smbroot,password=smbroot"
|
||||||
|
|
||||||
|
_private:
|
||||||
|
csi:
|
||||||
|
volume:
|
||||||
|
idHash:
|
||||||
|
strategy: crc16
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "democratic-csi",
|
"name": "democratic-csi",
|
||||||
"version": "1.7.0",
|
"version": "1.7.1",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "democratic-csi",
|
"name": "democratic-csi",
|
||||||
"version": "1.7.0",
|
"version": "1.7.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@grpc/grpc-js": "^1.5.7",
|
"@grpc/grpc-js": "^1.5.7",
|
||||||
|
|
@ -316,9 +316,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "17.0.41",
|
"version": "17.0.42",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.41.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.42.tgz",
|
||||||
"integrity": "sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw=="
|
"integrity": "sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/request": {
|
"node_modules/@types/request": {
|
||||||
"version": "2.48.8",
|
"version": "2.48.8",
|
||||||
|
|
@ -2546,7 +2546,7 @@
|
||||||
"node_modules/simple-swizzle": {
|
"node_modules/simple-swizzle": {
|
||||||
"version": "0.2.2",
|
"version": "0.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
||||||
"integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
|
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-arrayish": "^0.3.1"
|
"is-arrayish": "^0.3.1"
|
||||||
}
|
}
|
||||||
|
|
@ -2560,9 +2560,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ssh2": {
|
"node_modules/ssh2": {
|
||||||
"version": "1.10.0",
|
"version": "1.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz",
|
||||||
"integrity": "sha512-OnKAAmf4j8wCRrXXZv3Tp5lCZkLJZtgZbn45ELiShCg27djDQ3XFGvIzuGsIsf4hdHslP+VdhA9BhUQdTdfd9w==",
|
"integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"asn1": "^0.2.4",
|
"asn1": "^0.2.4",
|
||||||
|
|
@ -2573,7 +2573,7 @@
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"cpu-features": "~0.0.4",
|
"cpu-features": "~0.0.4",
|
||||||
"nan": "^2.15.0"
|
"nan": "^2.16.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sshpk": {
|
"node_modules/sshpk": {
|
||||||
|
|
@ -2603,7 +2603,7 @@
|
||||||
"node_modules/stack-trace": {
|
"node_modules/stack-trace": {
|
||||||
"version": "0.0.10",
|
"version": "0.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
|
||||||
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
|
"integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "*"
|
"node": "*"
|
||||||
}
|
}
|
||||||
|
|
@ -2726,7 +2726,7 @@
|
||||||
"node_modules/text-table": {
|
"node_modules/text-table": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||||
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
|
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/tmp": {
|
"node_modules/tmp": {
|
||||||
|
|
@ -2773,7 +2773,7 @@
|
||||||
"node_modules/tunnel-agent": {
|
"node_modules/tunnel-agent": {
|
||||||
"version": "0.6.0",
|
"version": "0.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||||
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"safe-buffer": "^5.0.1"
|
"safe-buffer": "^5.0.1"
|
||||||
},
|
},
|
||||||
|
|
@ -2784,7 +2784,7 @@
|
||||||
"node_modules/tweetnacl": {
|
"node_modules/tweetnacl": {
|
||||||
"version": "0.14.5",
|
"version": "0.14.5",
|
||||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
|
||||||
},
|
},
|
||||||
"node_modules/type-check": {
|
"node_modules/type-check": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
|
|
@ -2846,7 +2846,7 @@
|
||||||
"node_modules/util-deprecate": {
|
"node_modules/util-deprecate": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||||
},
|
},
|
||||||
"node_modules/uuid": {
|
"node_modules/uuid": {
|
||||||
"version": "8.3.2",
|
"version": "8.3.2",
|
||||||
|
|
@ -2865,7 +2865,7 @@
|
||||||
"node_modules/verror": {
|
"node_modules/verror": {
|
||||||
"version": "1.10.0",
|
"version": "1.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
"integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
|
||||||
"engines": [
|
"engines": [
|
||||||
"node >=0.6.0"
|
"node >=0.6.0"
|
||||||
],
|
],
|
||||||
|
|
@ -2934,7 +2934,7 @@
|
||||||
"node_modules/wordwrap": {
|
"node_modules/wordwrap": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
||||||
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
|
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
|
||||||
},
|
},
|
||||||
"node_modules/wrap-ansi": {
|
"node_modules/wrap-ansi": {
|
||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
|
|
@ -2955,7 +2955,7 @@
|
||||||
"node_modules/wrappy": {
|
"node_modules/wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||||
},
|
},
|
||||||
"node_modules/ws": {
|
"node_modules/ws": {
|
||||||
"version": "7.5.8",
|
"version": "7.5.8",
|
||||||
|
|
@ -3269,9 +3269,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "17.0.41",
|
"version": "17.0.42",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.41.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.42.tgz",
|
||||||
"integrity": "sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw=="
|
"integrity": "sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ=="
|
||||||
},
|
},
|
||||||
"@types/request": {
|
"@types/request": {
|
||||||
"version": "2.48.8",
|
"version": "2.48.8",
|
||||||
|
|
@ -4973,7 +4973,7 @@
|
||||||
"simple-swizzle": {
|
"simple-swizzle": {
|
||||||
"version": "0.2.2",
|
"version": "0.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
||||||
"integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
|
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"is-arrayish": "^0.3.1"
|
"is-arrayish": "^0.3.1"
|
||||||
}
|
}
|
||||||
|
|
@ -4984,14 +4984,14 @@
|
||||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||||
},
|
},
|
||||||
"ssh2": {
|
"ssh2": {
|
||||||
"version": "1.10.0",
|
"version": "1.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz",
|
||||||
"integrity": "sha512-OnKAAmf4j8wCRrXXZv3Tp5lCZkLJZtgZbn45ELiShCg27djDQ3XFGvIzuGsIsf4hdHslP+VdhA9BhUQdTdfd9w==",
|
"integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"asn1": "^0.2.4",
|
"asn1": "^0.2.4",
|
||||||
"bcrypt-pbkdf": "^1.0.2",
|
"bcrypt-pbkdf": "^1.0.2",
|
||||||
"cpu-features": "~0.0.4",
|
"cpu-features": "~0.0.4",
|
||||||
"nan": "^2.15.0"
|
"nan": "^2.16.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sshpk": {
|
"sshpk": {
|
||||||
|
|
@ -5013,7 +5013,7 @@
|
||||||
"stack-trace": {
|
"stack-trace": {
|
||||||
"version": "0.0.10",
|
"version": "0.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
|
||||||
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
|
"integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="
|
||||||
},
|
},
|
||||||
"stream-buffers": {
|
"stream-buffers": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
|
|
@ -5099,7 +5099,7 @@
|
||||||
"text-table": {
|
"text-table": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||||
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
|
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"tmp": {
|
"tmp": {
|
||||||
|
|
@ -5140,7 +5140,7 @@
|
||||||
"tunnel-agent": {
|
"tunnel-agent": {
|
||||||
"version": "0.6.0",
|
"version": "0.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||||
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.0.1"
|
"safe-buffer": "^5.0.1"
|
||||||
}
|
}
|
||||||
|
|
@ -5148,7 +5148,7 @@
|
||||||
"tweetnacl": {
|
"tweetnacl": {
|
||||||
"version": "0.14.5",
|
"version": "0.14.5",
|
||||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
|
||||||
},
|
},
|
||||||
"type-check": {
|
"type-check": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
|
|
@ -5192,7 +5192,7 @@
|
||||||
"util-deprecate": {
|
"util-deprecate": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
"version": "8.3.2",
|
"version": "8.3.2",
|
||||||
|
|
@ -5208,7 +5208,7 @@
|
||||||
"verror": {
|
"verror": {
|
||||||
"version": "1.10.0",
|
"version": "1.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
"integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"assert-plus": "^1.0.0",
|
"assert-plus": "^1.0.0",
|
||||||
"core-util-is": "1.0.2",
|
"core-util-is": "1.0.2",
|
||||||
|
|
@ -5259,7 +5259,7 @@
|
||||||
"wordwrap": {
|
"wordwrap": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
||||||
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
|
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
|
||||||
},
|
},
|
||||||
"wrap-ansi": {
|
"wrap-ansi": {
|
||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
|
|
@ -5274,7 +5274,7 @@
|
||||||
"wrappy": {
|
"wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||||
},
|
},
|
||||||
"ws": {
|
"ws": {
|
||||||
"version": "7.5.8",
|
"version": "7.5.8",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "democratic-csi",
|
"name": "democratic-csi",
|
||||||
"version": "1.7.0",
|
"version": "1.7.1",
|
||||||
"description": "kubernetes csi driver framework",
|
"description": "kubernetes csi driver framework",
|
||||||
"main": "bin/democratic-csi",
|
"main": "bin/democratic-csi",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
|
|
@ -182,6 +182,10 @@ class FreeNASApiDriver extends CsiBaseDriver {
|
||||||
const httpApiClient = await this.getTrueNASHttpApiClient();
|
const httpApiClient = await this.getTrueNASHttpApiClient();
|
||||||
const apiVersion = httpClient.getApiVersion();
|
const apiVersion = httpClient.getApiVersion();
|
||||||
const zb = await this.getZetabyte();
|
const zb = await this.getZetabyte();
|
||||||
|
const truenasVersion = semver.coerce(
|
||||||
|
await httpApiClient.getSystemVersionMajorMinor()
|
||||||
|
);
|
||||||
|
const isScale = await httpApiClient.getIsScale();
|
||||||
|
|
||||||
let volume_context;
|
let volume_context;
|
||||||
let properties;
|
let properties;
|
||||||
|
|
@ -261,6 +265,12 @@ class FreeNASApiDriver extends CsiBaseDriver {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isScale && semver.satisfies(truenasVersion, ">=22.12")) {
|
||||||
|
share.path = share.paths[0];
|
||||||
|
delete share.paths;
|
||||||
|
delete share.alldirs;
|
||||||
|
}
|
||||||
|
|
||||||
response = await GeneralUtils.retry(
|
response = await GeneralUtils.retry(
|
||||||
3,
|
3,
|
||||||
1000,
|
1000,
|
||||||
|
|
@ -294,7 +304,11 @@ class FreeNASApiDriver extends CsiBaseDriver {
|
||||||
sharePaths = response.body.nfs_paths;
|
sharePaths = response.body.nfs_paths;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
sharePaths = response.body.paths;
|
if (response.body.path) {
|
||||||
|
sharePaths = [response.body.path];
|
||||||
|
} else {
|
||||||
|
sharePaths = response.body.paths;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -336,7 +350,9 @@ class FreeNASApiDriver extends CsiBaseDriver {
|
||||||
properties.mountpoint.value
|
properties.mountpoint.value
|
||||||
)) ||
|
)) ||
|
||||||
(item.paths &&
|
(item.paths &&
|
||||||
item.paths.includes(properties.mountpoint.value))
|
item.paths.includes(properties.mountpoint.value)) ||
|
||||||
|
(item.path &&
|
||||||
|
item.path == properties.mountpoint.value)
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1393,7 +1409,11 @@ class FreeNASApiDriver extends CsiBaseDriver {
|
||||||
sharePaths = response.body.nfs_paths;
|
sharePaths = response.body.nfs_paths;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
sharePaths = response.body.paths;
|
if (response.body.path) {
|
||||||
|
sharePaths = [response.body.path];
|
||||||
|
} else {
|
||||||
|
sharePaths = response.body.paths;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2990,10 +3010,27 @@ class FreeNASApiDriver extends CsiBaseDriver {
|
||||||
// NOTE: -R will recursively delete items + dependent filesets
|
// NOTE: -R will recursively delete items + dependent filesets
|
||||||
// delete dataset
|
// delete dataset
|
||||||
try {
|
try {
|
||||||
await httpApiClient.DatasetDelete(datasetName, {
|
await GeneralUtils.retry(
|
||||||
recursive: true,
|
12,
|
||||||
force: true,
|
5000,
|
||||||
});
|
async () => {
|
||||||
|
await httpApiClient.DatasetDelete(datasetName, {
|
||||||
|
recursive: true,
|
||||||
|
force: true,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
{
|
||||||
|
retryCondition: (err) => {
|
||||||
|
if (
|
||||||
|
err.toString().includes("dataset is busy") ||
|
||||||
|
err.toString().includes("target is busy")
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err.toString().includes("filesystem has dependent clones")) {
|
if (err.toString().includes("filesystem has dependent clones")) {
|
||||||
throw new GrpcError(
|
throw new GrpcError(
|
||||||
|
|
|
||||||
|
|
@ -281,8 +281,7 @@ class Api {
|
||||||
|
|
||||||
// throw error if cannot get v1 or v2 data
|
// throw error if cannot get v1 or v2 data
|
||||||
// likely bad creds/url
|
// likely bad creds/url
|
||||||
throw new GrpcError(
|
throw new Error(
|
||||||
grpc.status.UNKNOWN,
|
|
||||||
`FreeNAS error getting system version info: ${stringify({
|
`FreeNAS error getting system version info: ${stringify({
|
||||||
errors: versionErrors,
|
errors: versionErrors,
|
||||||
responses: versionResponses,
|
responses: versionResponses,
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ const { Zetabyte, ZfsSshProcessManager } = require("../../utils/zfs");
|
||||||
const GeneralUtils = require("../../utils/general");
|
const GeneralUtils = require("../../utils/general");
|
||||||
|
|
||||||
const Handlebars = require("handlebars");
|
const Handlebars = require("handlebars");
|
||||||
|
const semver = require("semver");
|
||||||
|
|
||||||
// freenas properties
|
// freenas properties
|
||||||
const FREENAS_NFS_SHARE_PROPERTY_NAME = "democratic-csi:freenas_nfs_share_id";
|
const FREENAS_NFS_SHARE_PROPERTY_NAME = "democratic-csi:freenas_nfs_share_id";
|
||||||
|
|
@ -226,8 +227,13 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
|
||||||
const driverShareType = this.getDriverShareType();
|
const driverShareType = this.getDriverShareType();
|
||||||
const execClient = this.getExecClient();
|
const execClient = this.getExecClient();
|
||||||
const httpClient = await this.getHttpClient();
|
const httpClient = await this.getHttpClient();
|
||||||
|
const httpApiClient = await this.getTrueNASHttpApiClient();
|
||||||
const apiVersion = httpClient.getApiVersion();
|
const apiVersion = httpClient.getApiVersion();
|
||||||
const zb = await this.getZetabyte();
|
const zb = await this.getZetabyte();
|
||||||
|
const truenasVersion = semver.coerce(
|
||||||
|
await httpApiClient.getSystemVersionMajorMinor()
|
||||||
|
);
|
||||||
|
const isScale = await httpApiClient.getIsScale();
|
||||||
|
|
||||||
let volume_context;
|
let volume_context;
|
||||||
let properties;
|
let properties;
|
||||||
|
|
@ -308,6 +314,12 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isScale && semver.satisfies(truenasVersion, ">=22.12")) {
|
||||||
|
share.path = share.paths[0];
|
||||||
|
delete share.paths;
|
||||||
|
delete share.alldirs;
|
||||||
|
}
|
||||||
|
|
||||||
response = await GeneralUtils.retry(
|
response = await GeneralUtils.retry(
|
||||||
3,
|
3,
|
||||||
1000,
|
1000,
|
||||||
|
|
@ -341,7 +353,11 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
|
||||||
sharePaths = response.body.nfs_paths;
|
sharePaths = response.body.nfs_paths;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
sharePaths = response.body.paths;
|
if (response.body.path) {
|
||||||
|
sharePaths = [response.body.path];
|
||||||
|
} else {
|
||||||
|
sharePaths = response.body.paths;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -382,7 +398,8 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
|
||||||
properties.mountpoint.value
|
properties.mountpoint.value
|
||||||
)) ||
|
)) ||
|
||||||
(item.paths &&
|
(item.paths &&
|
||||||
item.paths.includes(properties.mountpoint.value))
|
item.paths.includes(properties.mountpoint.value)) ||
|
||||||
|
(item.path && item.path == properties.mountpoint.value)
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1441,7 +1458,11 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
|
||||||
sharePaths = response.body.nfs_paths;
|
sharePaths = response.body.nfs_paths;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
sharePaths = response.body.paths;
|
if (response.body.path) {
|
||||||
|
sharePaths = [response.body.path];
|
||||||
|
} else {
|
||||||
|
sharePaths = response.body.paths;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2607,7 +2607,7 @@ class CsiBaseDriver {
|
||||||
if (!result) {
|
if (!result) {
|
||||||
throw new GrpcError(
|
throw new GrpcError(
|
||||||
grpc.status.FAILED_PRECONDITION,
|
grpc.status.FAILED_PRECONDITION,
|
||||||
`it appears something else is already mounted at ${target_path}`
|
`it appears ${normalized_staging_device} is already mounted at ${target_path}, should be ${normalized_staging_path}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue