allow setting comments field on iscsi volumes

This commit is contained in:
Jeff Stein 2022-04-25 12:05:37 -07:00
parent 7fe916c916
commit 96854c16d1
No known key found for this signature in database
GPG Key ID: D9D0BE91C37098E4
2 changed files with 39 additions and 0 deletions

View File

@ -33,6 +33,8 @@ zfs:
# "org.freenas:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value"
# can be used to set the comments field in the UI
#datasetCommentTemplate: "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# total volume name (zvol/<datasetParentName>/<pvc name>) length cannot exceed 63 chars
# https://www.ixsystems.com/documentation/freenas/11.2-U5/storage.html#zfs-zvol-config-opts-tab

View File

@ -2173,6 +2173,26 @@ class FreeNASApiDriver extends CsiBaseDriver {
*/
const datasetName = datasetParentName + "/" + volume_id;
// Instead of templatizing the name, use the comment field to store details visible in the UI.
let datasetComment;
if (this.options.zfs.datasetCommentTemplate) {
datasetComment = Handlebars.compile(
this.options.zfs.datasetCommentTemplate
)({
name: call.request.name,
parameters: call.request.parameters,
csi: {
name: this.ctx.args.csiName,
version: this.ctx.args.csiVersion,
},
zfs: {
datasetName: datasetName,
},
});
} else {
datasetComment = "";
}
// ensure volumes with the same name being requested a 2nd time but with a different size fails
try {
let properties = await httpApiClient.DatasetGet(datasetName, [
@ -2399,6 +2419,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
break;
}
volumeProperties.comments = datasetComment;
response = await httpApiClient.DatasetSet(
datasetName,
volumeProperties
@ -2438,6 +2459,13 @@ class FreeNASApiDriver extends CsiBaseDriver {
throw err;
}
// CloneCreate doesn't support the comments field, so set it after the fact.
if (datasetComment) {
await httpApiClient.DatasetSet(datasetName, {
comments: datasetComment
});
}
}
if (!zb.helpers.isZfsSnapshot(volume_content_source_snapshot_id)) {
@ -2569,6 +2597,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
}
}
volumeProperties.comments = datasetComment;
response = await httpApiClient.DatasetSet(
datasetName,
volumeProperties
@ -2605,6 +2634,13 @@ class FreeNASApiDriver extends CsiBaseDriver {
throw err;
}
// CloneCreate doesn't support the comments field, so set it after the fact.
if (datasetComment) {
await httpApiClient.DatasetSet(datasetName, {
comments: datasetComment
});
}
}
break;
default:
@ -2629,6 +2665,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
share_type: driver.getDriverShareType().includes("smb")
? "SMB"
: "GENERIC",
comments: datasetComment,
user_properties: httpApiClient.getPropertiesKeyValueArray(
httpApiClient.getUserProperties(volumeProperties)
),