support templates for nfs share comment

Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
Travis Glenn Hansen 2021-09-08 13:26:26 -06:00
parent a008f4f2ba
commit ccc5ea206d
7 changed files with 85 additions and 38 deletions

View File

@ -1,3 +1,10 @@
# v1.3.1
Released 2021-09-08
- support using a template for nfs share comment in `freenas-nfs` and
`freenas-api-nfs` (see #115)
# v1.3.0 # v1.3.0
Released 2021-09-02 Released 2021-09-02

View File

@ -48,6 +48,7 @@ zfs:
#- "-m u:kube:full_set:allow" #- "-m u:kube:full_set:allow"
nfs: nfs:
#shareCommentTemplate: "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}-{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
shareHost: server address shareHost: server address
shareAlldirs: false shareAlldirs: false
shareAllowedHosts: [] shareAllowedHosts: []

View File

@ -58,6 +58,7 @@ zfs:
#- "-m u:kube:full_set:allow" #- "-m u:kube:full_set:allow"
nfs: nfs:
#shareCommentTemplate: "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}-{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
shareHost: server address shareHost: server address
shareAlldirs: false shareAlldirs: false
shareAllowedHosts: [] shareAllowedHosts: []

64
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "democratic-csi", "name": "democratic-csi",
"version": "1.2.0", "version": "1.3.1",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "democratic-csi", "name": "democratic-csi",
"version": "1.2.0", "version": "1.3.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@grpc/grpc-js": "^1.3.6", "@grpc/grpc-js": "^1.3.6",
@ -311,9 +311,9 @@
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "16.7.10", "version": "16.7.13",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.10.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.13.tgz",
"integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA==" "integrity": "sha512-pLUPDn+YG3FYEt/pHI74HmnJOWzeR+tOIQzUx93pi9M7D8OE7PSLr97HboXwk5F+JS+TLtWuzCOW97AHjmOXXA=="
}, },
"node_modules/acorn": { "node_modules/acorn": {
"version": "7.4.1", "version": "7.4.1",
@ -723,9 +723,9 @@
} }
}, },
"node_modules/deep-is": { "node_modules/deep-is": {
"version": "0.1.3", "version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true "dev": true
}, },
"node_modules/delayed-stream": { "node_modules/delayed-stream": {
@ -1063,9 +1063,9 @@
"dev": true "dev": true
}, },
"node_modules/fast-safe-stringify": { "node_modules/fast-safe-stringify": {
"version": "2.0.8", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
"integrity": "sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag==" "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
}, },
"node_modules/fecha": { "node_modules/fecha": {
"version": "4.2.1", "version": "4.2.1",
@ -2671,9 +2671,9 @@
"dev": true "dev": true
}, },
"node_modules/ssh2": { "node_modules/ssh2": {
"version": "1.3.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.3.0.tgz", "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.4.0.tgz",
"integrity": "sha512-OjBQ5FR+ClYav3fRnvkhycmd5co5qEfofBaZEqVO3I4tKJLZqu+Ku4LN4nJSckjhqQnomqBqlCdvD3iGV+6isA==", "integrity": "sha512-XvXwcXKvS452DyQvCa6Ct+chpucwc/UyxgliYz+rWXJ3jDHdtBb9xgmxJdMmnIn5bpgGAEV3KaEsH98ZGPHqwg==",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"asn1": "^0.2.4", "asn1": "^0.2.4",
@ -2888,9 +2888,9 @@
} }
}, },
"node_modules/uglify-js": { "node_modules/uglify-js": {
"version": "3.14.1", "version": "3.14.2",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz",
"integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==",
"optional": true, "optional": true,
"bin": { "bin": {
"uglifyjs": "bin/uglifyjs" "uglifyjs": "bin/uglifyjs"
@ -3343,9 +3343,9 @@
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
}, },
"@types/node": { "@types/node": {
"version": "16.7.10", "version": "16.7.13",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.10.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.13.tgz",
"integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA==" "integrity": "sha512-pLUPDn+YG3FYEt/pHI74HmnJOWzeR+tOIQzUx93pi9M7D8OE7PSLr97HboXwk5F+JS+TLtWuzCOW97AHjmOXXA=="
}, },
"acorn": { "acorn": {
"version": "7.4.1", "version": "7.4.1",
@ -3665,9 +3665,9 @@
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
}, },
"deep-is": { "deep-is": {
"version": "0.1.3", "version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true "dev": true
}, },
"delayed-stream": { "delayed-stream": {
@ -3932,9 +3932,9 @@
"dev": true "dev": true
}, },
"fast-safe-stringify": { "fast-safe-stringify": {
"version": "2.0.8", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
"integrity": "sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag==" "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
}, },
"fecha": { "fecha": {
"version": "4.2.1", "version": "4.2.1",
@ -5153,9 +5153,9 @@
"dev": true "dev": true
}, },
"ssh2": { "ssh2": {
"version": "1.3.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.3.0.tgz", "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.4.0.tgz",
"integrity": "sha512-OjBQ5FR+ClYav3fRnvkhycmd5co5qEfofBaZEqVO3I4tKJLZqu+Ku4LN4nJSckjhqQnomqBqlCdvD3iGV+6isA==", "integrity": "sha512-XvXwcXKvS452DyQvCa6Ct+chpucwc/UyxgliYz+rWXJ3jDHdtBb9xgmxJdMmnIn5bpgGAEV3KaEsH98ZGPHqwg==",
"requires": { "requires": {
"asn1": "^0.2.4", "asn1": "^0.2.4",
"bcrypt-pbkdf": "^1.0.2", "bcrypt-pbkdf": "^1.0.2",
@ -5318,9 +5318,9 @@
"dev": true "dev": true
}, },
"uglify-js": { "uglify-js": {
"version": "3.14.1", "version": "3.14.2",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz",
"integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==",
"optional": true "optional": true
}, },
"uri-js": { "uri-js": {

View File

@ -1,6 +1,6 @@
{ {
"name": "democratic-csi", "name": "democratic-csi",
"version": "1.3.0", "version": "1.3.1",
"description": "kubernetes csi driver framework", "description": "kubernetes csi driver framework",
"main": "bin/democratic-csi", "main": "bin/democratic-csi",
"scripts": { "scripts": {

View File

@ -196,6 +196,25 @@ class FreeNASApiDriver extends CsiBaseDriver {
properties[FREENAS_NFS_SHARE_PROPERTY_NAME].value properties[FREENAS_NFS_SHARE_PROPERTY_NAME].value
) )
) { ) {
let nfsShareComment;
if (this.options.nfs.shareCommentTemplate) {
nfsShareComment = Handlebars.compile(
this.options.nfs.shareCommentTemplate
)({
name: call.request.name,
parameters: call.request.parameters,
csi: {
name: this.ctx.args.csiName,
version: this.ctx.args.csiVersion,
},
zfs: {
datasetName: datasetName,
},
});
} else {
nfsShareComment = `democratic-csi (${this.ctx.args.csiName}): ${datasetName}`;
}
switch (apiVersion) { switch (apiVersion) {
case 1: case 1:
case 2: case 2:
@ -203,7 +222,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
case 1: case 1:
share = { share = {
nfs_paths: [properties.mountpoint.value], nfs_paths: [properties.mountpoint.value],
nfs_comment: `democratic-csi (${this.ctx.args.csiName}): ${datasetName}`, nfs_comment: nfsShareComment || "",
nfs_network: nfs_network:
this.options.nfs.shareAllowedNetworks.join(","), this.options.nfs.shareAllowedNetworks.join(","),
nfs_hosts: this.options.nfs.shareAllowedHosts.join(","), nfs_hosts: this.options.nfs.shareAllowedHosts.join(","),
@ -220,7 +239,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
case 2: case 2:
share = { share = {
paths: [properties.mountpoint.value], paths: [properties.mountpoint.value],
comment: `democratic-csi (${this.ctx.args.csiName}): ${datasetName}`, comment: nfsShareComment || "",
networks: this.options.nfs.shareAllowedNetworks, networks: this.options.nfs.shareAllowedNetworks,
hosts: this.options.nfs.shareAllowedHosts, hosts: this.options.nfs.shareAllowedHosts,
alldirs: this.options.nfs.shareAlldirs, alldirs: this.options.nfs.shareAlldirs,

View File

@ -193,6 +193,25 @@ class FreeNASSshDriver extends ControllerZfsSshBaseDriver {
properties[FREENAS_NFS_SHARE_PROPERTY_NAME].value properties[FREENAS_NFS_SHARE_PROPERTY_NAME].value
) )
) { ) {
let nfsShareComment;
if (this.options.nfs.shareCommentTemplate) {
nfsShareComment = Handlebars.compile(
this.options.nfs.shareCommentTemplate
)({
name: call.request.name,
parameters: call.request.parameters,
csi: {
name: this.ctx.args.csiName,
version: this.ctx.args.csiVersion,
},
zfs: {
datasetName: datasetName,
},
});
} else {
nfsShareComment = `democratic-csi (${this.ctx.args.csiName}): ${datasetName}`;
}
switch (apiVersion) { switch (apiVersion) {
case 1: case 1:
case 2: case 2:
@ -200,7 +219,7 @@ class FreeNASSshDriver extends ControllerZfsSshBaseDriver {
case 1: case 1:
share = { share = {
nfs_paths: [properties.mountpoint.value], nfs_paths: [properties.mountpoint.value],
nfs_comment: `democratic-csi (${this.ctx.args.csiName}): ${datasetName}`, nfs_comment: nfsShareComment || "",
nfs_network: nfs_network:
this.options.nfs.shareAllowedNetworks.join(","), this.options.nfs.shareAllowedNetworks.join(","),
nfs_hosts: this.options.nfs.shareAllowedHosts.join(","), nfs_hosts: this.options.nfs.shareAllowedHosts.join(","),
@ -217,7 +236,7 @@ class FreeNASSshDriver extends ControllerZfsSshBaseDriver {
case 2: case 2:
share = { share = {
paths: [properties.mountpoint.value], paths: [properties.mountpoint.value],
comment: `democratic-csi (${this.ctx.args.csiName}): ${datasetName}`, comment: nfsShareComment || "",
networks: this.options.nfs.shareAllowedNetworks, networks: this.options.nfs.shareAllowedNetworks,
hosts: this.options.nfs.shareAllowedHosts, hosts: this.options.nfs.shareAllowedHosts,
alldirs: this.options.nfs.shareAlldirs, alldirs: this.options.nfs.shareAlldirs,