This commit is contained in:
solidDoWant 2025-03-25 04:43:58 +07:00 committed by GitHub
commit 5d49e8c93b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 50 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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "org.freenas:test2": "some value"
# snapshotProperties:
# "org.freenas:key": "value"
# total volume name (zvol/<datasetParentName>/<pvc name>) length cannot exceed 63 chars # 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 # https://www.ixsystems.com/documentation/freenas/11.2-U5/storage.html#zfs-zvol-config-opts-tab

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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "org.freenas:test2": "some value"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/a/vols datasetParentName: tank/k8s/a/vols
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap # do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap

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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "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 # these are managed automatically via the volume creation process when flagged as an smb volume
#datasetProperties: #datasetProperties:

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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "org.freenas:test2": "some value"
# snapshotProperties:
# "org.freenas:key": "value"
# total volume name (zvol/<datasetParentName>/<pvc name>) length cannot exceed 63 chars # 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 # https://www.ixsystems.com/documentation/freenas/11.2-U5/storage.html#zfs-zvol-config-opts-tab

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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "org.freenas:test2": "some value"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/a/vols datasetParentName: tank/k8s/a/vols
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap # do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap

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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "org.freenas:test2": "some value"
# snapshotProperties:
# "org.freenas:key": "value"
datasetProperties: datasetProperties:
aclmode: restricted aclmode: restricted

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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "org.freenas:test2": "some value"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/test datasetParentName: tank/k8s/test
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap # do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap

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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "org.freenas:test2": "some value"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/test datasetParentName: tank/k8s/test
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap # do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap

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:description": "{{ parameters.[csi.storage.k8s.io/pvc/namespace] }}/{{ parameters.[csi.storage.k8s.io/pvc/name] }}"
# "org.freenas:test": "{{ parameters.foo }}" # "org.freenas:test": "{{ parameters.foo }}"
# "org.freenas:test2": "some value" # "org.freenas:test2": "some value"
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/test datasetParentName: tank/k8s/test
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap # do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap

View File

@ -28,6 +28,8 @@ zfs:
#aclinherit: passthrough #aclinherit: passthrough
#acltype: nfsv4 #acltype: nfsv4
casesensitivity: insensitive casesensitivity: insensitive
# snapshotProperties:
# "org.freenas:key": "value"
datasetParentName: tank/k8s/test datasetParentName: tank/k8s/test
# do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap # do NOT make datasetParentName and detachedSnapshotsDatasetParentName overlap

View File

@ -6,6 +6,8 @@ zfs:
datasetProperties: datasetProperties:
# key: value # key: value
snapshotProperties:
# "org.freenas:key": "value"
datasetEnableQuotas: true datasetEnableQuotas: true
datasetEnableReservation: false datasetEnableReservation: false

View File

@ -6,6 +6,8 @@ zfs:
datasetProperties: datasetProperties:
# key: value # key: value
snapshotProperties:
# "org.freenas:key": "value"
zvolCompression: zvolCompression:
zvolDedup: zvolDedup:

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 volumeDatasetName = volumeParentDatasetName + "/" + source_volume_id;
const datasetName = datasetParentName + "/" + source_volume_id; const datasetName = datasetParentName + "/" + source_volume_id;
snapshotProperties[SNAPSHOT_CSI_NAME_PROPERTY_NAME] = name; snapshotProperties[SNAPSHOT_CSI_NAME_PROPERTY_NAME] = name;

View File

@ -3999,6 +3999,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; const datasetName = datasetParentName + "/" + source_volume_id;
snapshotProperties[SNAPSHOT_CSI_NAME_PROPERTY_NAME] = name; snapshotProperties[SNAPSHOT_CSI_NAME_PROPERTY_NAME] = name;
snapshotProperties[SNAPSHOT_CSI_SOURCE_VOLUME_ID_PROPERTY_NAME] = snapshotProperties[SNAPSHOT_CSI_SOURCE_VOLUME_ID_PROPERTY_NAME] =