This commit is contained in:
Mandus Momberg 2025-10-02 16:27:36 -07:00 committed by GitHub
commit 21df8c5164
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 54 additions and 20 deletions

View File

@ -170,14 +170,31 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
return zb.options.paths.sudo || "/usr/bin/sudo"; return zb.options.paths.sudo || "/usr/bin/sudo";
} }
getDatasetParentName() { getDatasetParentName(call = null) {
let datasetParentName = this.options.zfs.datasetParentName; let datasetParentName;
// First check if datasetParentName is provided in storage class parameters
if (call && call.request && call.request.parameters) {
const paramDatasetParentName = this.getNormalizedParameterValue(
call.request.parameters,
"datasetParentName"
);
if (paramDatasetParentName) {
datasetParentName = paramDatasetParentName;
}
}
// Fallback to configuration option
if (!datasetParentName) {
datasetParentName = this.options.zfs.datasetParentName;
}
datasetParentName = datasetParentName.replace(/\/$/, ""); datasetParentName = datasetParentName.replace(/\/$/, "");
return datasetParentName; return datasetParentName;
} }
getVolumeParentDatasetName() { getVolumeParentDatasetName(call = null) {
let datasetParentName = this.getDatasetParentName(); let datasetParentName = this.getDatasetParentName(call);
//datasetParentName += "/v"; //datasetParentName += "/v";
datasetParentName = datasetParentName.replace(/\/$/, ""); datasetParentName = datasetParentName.replace(/\/$/, "");
return datasetParentName; return datasetParentName;
@ -640,7 +657,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
const execClient = this.getExecClient(); const execClient = this.getExecClient();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let snapshotParentDatasetName = this.getDetachedSnapshotParentDatasetName(); let snapshotParentDatasetName = this.getDetachedSnapshotParentDatasetName();
let zvolBlocksize = this.options.zfs.zvolBlocksize || "16K"; let zvolBlocksize = this.options.zfs.zvolBlocksize || "16K";
let name = call.request.name; let name = call.request.name;
@ -1273,7 +1290,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
const driver = this; const driver = this;
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let name = call.request.volume_id; let name = call.request.volume_id;
if (!datasetParentName) { if (!datasetParentName) {
@ -1406,7 +1423,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
const driverZfsResourceType = this.getDriverZfsResourceType(); const driverZfsResourceType = this.getDriverZfsResourceType();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let name = call.request.volume_id; let name = call.request.volume_id;
if (!datasetParentName) { if (!datasetParentName) {
@ -1574,7 +1591,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
const driverZfsResourceType = this.getDriverZfsResourceType(); const driverZfsResourceType = this.getDriverZfsResourceType();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let response; let response;
let name = call.request.volume_id; let name = call.request.volume_id;
@ -1655,7 +1672,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
const driverZfsResourceType = this.getDriverZfsResourceType(); const driverZfsResourceType = this.getDriverZfsResourceType();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let entries = []; let entries = [];
let entries_length = 0; let entries_length = 0;
let next_token; let next_token;
@ -2077,7 +2094,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
types.push("volume"); types.push("volume");
} }
} else { } else {
datasetParentName = this.getVolumeParentDatasetName(); datasetParentName = this.getVolumeParentDatasetName(call);
types.push("snapshot"); types.push("snapshot");
} }

View File

@ -1994,14 +1994,31 @@ class FreeNASApiDriver extends CsiBaseDriver {
} }
} }
getDatasetParentName() { getDatasetParentName(call = null) {
let datasetParentName = this.options.zfs.datasetParentName; let datasetParentName;
// First check if datasetParentName is provided in storage class parameters
if (call && call.request && call.request.parameters) {
const paramDatasetParentName = this.getNormalizedParameterValue(
call.request.parameters,
"datasetParentName"
);
if (paramDatasetParentName) {
datasetParentName = paramDatasetParentName;
}
}
// Fallback to configuration option
if (!datasetParentName) {
datasetParentName = this.options.zfs.datasetParentName;
}
datasetParentName = datasetParentName.replace(/\/$/, ""); datasetParentName = datasetParentName.replace(/\/$/, "");
return datasetParentName; return datasetParentName;
} }
getVolumeParentDatasetName() { getVolumeParentDatasetName(call = null) {
let datasetParentName = this.getDatasetParentName(); let datasetParentName = this.getDatasetParentName(call);
//datasetParentName += "/v"; //datasetParentName += "/v";
datasetParentName = datasetParentName.replace(/\/$/, ""); datasetParentName = datasetParentName.replace(/\/$/, "");
return datasetParentName; return datasetParentName;
@ -2234,7 +2251,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
const httpApiClient = await this.getTrueNASHttpApiClient(); const httpApiClient = await this.getTrueNASHttpApiClient();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let snapshotParentDatasetName = this.getDetachedSnapshotParentDatasetName(); let snapshotParentDatasetName = this.getDetachedSnapshotParentDatasetName();
let zvolBlocksize = this.options.zfs.zvolBlocksize || "16K"; let zvolBlocksize = this.options.zfs.zvolBlocksize || "16K";
let name = call.request.name; let name = call.request.name;
@ -3005,7 +3022,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
const httpApiClient = await this.getTrueNASHttpApiClient(); const httpApiClient = await this.getTrueNASHttpApiClient();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let name = call.request.volume_id; let name = call.request.volume_id;
if (!datasetParentName) { if (!datasetParentName) {
@ -3259,7 +3276,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
const httpApiClient = await this.getTrueNASHttpApiClient(); const httpApiClient = await this.getTrueNASHttpApiClient();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
if (!datasetParentName) { if (!datasetParentName) {
throw new GrpcError( throw new GrpcError(
@ -3308,7 +3325,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
const httpApiClient = await this.getTrueNASHttpApiClient(); const httpApiClient = await this.getTrueNASHttpApiClient();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let response; let response;
let name = call.request.volume_id; let name = call.request.volume_id;
@ -3383,7 +3400,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
const httpApiClient = await this.getTrueNASHttpApiClient(); const httpApiClient = await this.getTrueNASHttpApiClient();
const zb = await this.getZetabyte(); const zb = await this.getZetabyte();
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let entries = []; let entries = [];
let entries_length = 0; let entries_length = 0;
let next_token; let next_token;
@ -4426,7 +4443,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
throw new GrpcError(grpc.status.INVALID_ARGUMENT, `missing capabilities`); throw new GrpcError(grpc.status.INVALID_ARGUMENT, `missing capabilities`);
} }
let datasetParentName = this.getVolumeParentDatasetName(); let datasetParentName = this.getVolumeParentDatasetName(call);
let name = volume_id; let name = volume_id;
if (!datasetParentName) { if (!datasetParentName) {