Merge branch 'next' of github.com:democratic-csi/democratic-csi into next

This commit is contained in:
Travis Glenn Hansen
2025-10-31 09:45:57 -06:00
18 changed files with 58 additions and 8 deletions
+2
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"
# snapshotProperties:
# "org.freenas:key": "value"
# 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
+2
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"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/a/vols
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap
+2
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"
# snapshotProperties:
# "org.freenas:key": "value"
# these are managed automatically via the volume creation process when flagged as an smb volume
#datasetProperties:
+2
View File
@@ -43,6 +43,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"
# snapshotProperties:
# "org.freenas:key": "value"
# 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
+2
View File
@@ -43,6 +43,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"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/a/vols
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap
+2
View File
@@ -43,6 +43,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"
# snapshotProperties:
# "org.freenas:key": "value"
datasetProperties:
aclmode: restricted
+2
View File
@@ -27,6 +27,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"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/test
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap
+2
View File
@@ -27,6 +27,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"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/test
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap
+2
View File
@@ -27,6 +27,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"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/test
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap
+2
View File
@@ -28,6 +28,8 @@ zfs:
#aclinherit: passthrough
#acltype: nfsv4
casesensitivity: insensitive
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/test
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap
+2
View File
@@ -6,6 +6,8 @@ zfs:
datasetProperties:
# key: value
snapshotProperties:
# "org.freenas:key": "value"
datasetEnableQuotas: true
datasetEnableReservation: false
+2
View File
@@ -6,6 +6,8 @@ zfs:
datasetProperties:
# key: value
snapshotProperties:
# "org.freenas:key": "value"
zvolCompression:
zvolDedup:
+2 -2
View File
@@ -127,7 +127,7 @@ class ControllerSynologyDriver extends CsiBaseDriver {
case "synology-iscsi":
return "volume";
default:
throw new Error("unknown driver: " + this.ctx.args.driver);
throw new Error("unknown driver: " + this.options.driver);
}
}
@@ -140,7 +140,7 @@ class ControllerSynologyDriver extends CsiBaseDriver {
case "synology-iscsi":
return "iscsi";
default:
throw new Error("unknown driver: " + this.ctx.args.driver);
throw new Error("unknown driver: " + this.options.driver);
}
}
+1 -1
View File
@@ -67,7 +67,7 @@ class ControllerZfsGenericDriver extends ControllerZfsBaseDriver {
case "zfs-generic-nvmeof":
return "volume";
default:
throw new Error("unknown driver: " + this.ctx.args.driver);
throw new Error("unknown driver: " + this.options.driver);
}
}
+1 -1
View File
@@ -86,7 +86,7 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver {
case "zfs-local-zvol":
return "volume";
default:
throw new Error("unknown driver: " + this.ctx.args.driver);
throw new Error("unknown driver: " + this.options.driver);
}
}
+13
View File
@@ -2106,6 +2106,19 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
);
}
// user-supplied properties
// put early to prevent stupid (user-supplied values overwriting system values)
if (driver.options.zfs.snapshotProperties) {
for (let property in driver.options.zfs.snapshotProperties) {
let value = driver.options.zfs.snapshotProperties[property];
const template = Handlebars.compile(value);
snapshotProperties[property] = template({
parameters: call.request.parameters,
});
}
}
const volumeDatasetName = volumeParentDatasetName + "/" + source_volume_id;
const datasetName = datasetParentName + "/" + source_volume_id;
snapshotProperties[SNAPSHOT_CSI_NAME_PROPERTY_NAME] = name;
+15 -2
View File
@@ -2367,7 +2367,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
case "truenas-api-nvmeof":
return "volume";
default:
throw new Error("unknown driver: " + this.ctx.args.driver);
throw new Error("unknown driver: " + this.options.driver);
}
}
@@ -2386,7 +2386,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
case "truenas-api-nvmeof":
return "nvmeof";
default:
throw new Error("unknown driver: " + this.ctx.args.driver);
throw new Error("unknown driver: " + this.options.driver);
}
}
@@ -4415,6 +4415,19 @@ class FreeNASApiDriver extends CsiBaseDriver {
);
}
// user-supplied properties
// put early to prevent stupid (user-supplied values overwriting system values)
if (driver.options.zfs.snapshotProperties) {
for (let property in driver.options.zfs.snapshotProperties) {
let value = driver.options.zfs.snapshotProperties[property];
const template = Handlebars.compile(value);
snapshotProperties[property] = template({
parameters: call.request.parameters,
});
}
}
const datasetName = datasetParentName + "/" + source_volume_id;
snapshotProperties[SNAPSHOT_CSI_NAME_PROPERTY_NAME] = name;
snapshotProperties[SNAPSHOT_CSI_SOURCE_VOLUME_ID_PROPERTY_NAME] =
+2 -2
View File
@@ -113,7 +113,7 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
case "truenas-nvmeof":
return "volume";
default:
throw new Error("unknown driver: " + this.ctx.args.driver);
throw new Error("unknown driver: " + this.options.driver);
}
}
@@ -190,7 +190,7 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
case "truenas-nvmeof":
return "nvmeof";
default:
throw new Error("unknown driver: " + this.ctx.args.driver);
throw new Error("unknown driver: " + this.options.driver);
}
}