Default Values & Code Style

This commit is contained in:
Kim Wittenburg 2022-04-16 15:56:39 +02:00
parent 8dbe45a789
commit 7f998ebec2
3 changed files with 30 additions and 13 deletions

View File

@ -64,6 +64,9 @@ parameters:
... ...
``` ```
Note that it is currently not supported by Synology devices to restore a snapshot onto a different volume. You can
create volumes from snapshots, but you should use the same `StorageClass` as the original volume of the snapshot did.
### Enabling CHAP Authentication ### Enabling CHAP Authentication
You can enable CHAP Authentication for `StorageClass`es by supplying an appropriate `StorageClass` secret (see the You can enable CHAP Authentication for `StorageClass`es by supplying an appropriate `StorageClass` secret (see the
[documentation](https://kubernetes-csi.github.io/docs/secrets-and-credentials-storage-class.html) for more details). You [documentation](https://kubernetes-csi.github.io/docs/secrets-and-credentials-storage-class.html) for more details). You

View File

@ -39,7 +39,12 @@ class SynologyError extends GrpcError {
class SynologyHttpClient { class SynologyHttpClient {
constructor(options = {}) { constructor(options = {}) {
this.options = JSON.parse(JSON.stringify(options)); this.options = Object.assign({
protocol: "https",
port: 5001,
allowInsecure: false,
session: "democratic-csi"
}, JSON.parse(JSON.stringify(options)));
this.logger = console; this.logger = console;
this.doLoginMutex = new Mutex(); this.doLoginMutex = new Mutex();
this.apiSerializeMutex = new Mutex(); this.apiSerializeMutex = new Mutex();
@ -618,7 +623,7 @@ class SynologyHttpClient {
return await this.do_request("GET", "entry.cgi", create_cloned_volume); return await this.do_request("GET", "entry.cgi", create_cloned_volume);
} }
async CreateVolumeFromSnapshot(src_lun_uuid, snapshot_uuid, cloned_lun_name) { async CreateVolumeFromSnapshot(src_lun_uuid, snapshot_uuid, cloned_lun_name, description) {
const create_volume_from_snapshot = { const create_volume_from_snapshot = {
api: "SYNO.Core.ISCSI.LUN", api: "SYNO.Core.ISCSI.LUN",
version: 1, version: 1,
@ -628,6 +633,9 @@ class SynologyHttpClient {
cloned_lun_name: cloned_lun_name, // cloned lun name cloned_lun_name: cloned_lun_name, // cloned lun name
clone_type: "democratic-csi", // check clone_type: "democratic-csi", // check
}; };
if (description) {
create_volume_from_snapshot.description = description;
}
return await this.do_request( return await this.do_request(
"GET", "GET",
"entry.cgi", "entry.cgi",

View File

@ -441,7 +441,8 @@ class ControllerSynologyDriver extends CsiBaseDriver {
await httpClient.CreateVolumeFromSnapshot( await httpClient.CreateVolumeFromSnapshot(
src_lun_uuid, src_lun_uuid,
snapshot_uuid, snapshot_uuid,
iscsiName iscsiName,
normalizedParameters.description
); );
} }
break; break;
@ -465,7 +466,12 @@ class ControllerSynologyDriver extends CsiBaseDriver {
`invalid volume_id: ${volume_content_source.volume.volume_id}` `invalid volume_id: ${volume_content_source.volume.volume_id}`
); );
} }
await httpClient.CreateClonedVolume(src_lun_uuid, iscsiName, driver.getLocation(normalizedParameters)); await httpClient.CreateClonedVolume(
src_lun_uuid,
iscsiName,
driver.getLocation(normalizedParameters),
normalizedParameters.description
);
} }
break; break;
default: default:
@ -549,13 +555,13 @@ class ControllerSynologyDriver extends CsiBaseDriver {
iqn, iqn,
}); });
if ('headerChecksum' in normalizedParameters) { if ('headerChecksum' in normalizedParameters) {
data.has_data_checksum = normalizedParameters['headerChecksum']; data.has_data_checksum = normalizedParameters.headerChecksum;
} }
if ('dataChecksum' in normalizedParameters) { if ('dataChecksum' in normalizedParameters) {
data.has_data_checksum = normalizedParameters['dataChecksum']; data.has_data_checksum = normalizedParameters.dataChecksum;
} }
if ('maxSessions' in normalizedParameters) { if ('maxSessions' in normalizedParameters) {
data.max_sessions = Number(normalizedParameters['maxSessions']); data.max_sessions = Number(normalizedParameters.maxSessions);
if (isNaN(data.max_sessions)) { if (isNaN(data.max_sessions)) {
throw new GrpcError( throw new GrpcError(
grpc.status.INVALID_ARGUMENT, grpc.status.INVALID_ARGUMENT,
@ -567,7 +573,7 @@ class ControllerSynologyDriver extends CsiBaseDriver {
data.multi_sessions = data.max_sessions == 1; data.multi_sessions = data.max_sessions == 1;
} }
if ('maxReceiveSegmentBytes' in normalizedParameters) { if ('maxReceiveSegmentBytes' in normalizedParameters) {
data.max_recv_seg_bytes = Number(normalizedParameters['maxReceiveSegmentBytes']); data.max_recv_seg_bytes = Number(normalizedParameters.maxReceiveSegmentBytes);
if (isNaN(data.max_recv_seg_bytes)) { if (isNaN(data.max_recv_seg_bytes)) {
throw new GrpcError( throw new GrpcError(
grpc.status.INVALID_ARGUMENT, grpc.status.INVALID_ARGUMENT,
@ -576,7 +582,7 @@ class ControllerSynologyDriver extends CsiBaseDriver {
} }
} }
if ('maxSendSegmentBytes' in normalizedParameters) { if ('maxSendSegmentBytes' in normalizedParameters) {
data.max_send_seg_bytes = Number(normalizedParameters['maxSendSegmentBytes']); data.max_send_seg_bytes = Number(normalizedParameters.maxSendSegmentBytes);
if (isNaN(data.max_send_seg_bytes)) { if (isNaN(data.max_send_seg_bytes)) {
throw new GrpcError( throw new GrpcError(
grpc.status.INVALID_ARGUMENT, grpc.status.INVALID_ARGUMENT,
@ -588,7 +594,7 @@ class ControllerSynologyDriver extends CsiBaseDriver {
if ('user' in call.request.secrets && 'password' in call.request.secrets) { if ('user' in call.request.secrets && 'password' in call.request.secrets) {
data.user = call.request.secrets.user; data.user = call.request.secrets.user;
data.password = call.request.secrets.password; data.password = call.request.secrets.password;
data['chap'] = true; data.chap = true;
if ('mutualUser' in call.request.secrets && 'mutualPassword' in call.request.secrets) { if ('mutualUser' in call.request.secrets && 'mutualPassword' in call.request.secrets) {
data.mutual_user = call.request.secrets.mutualUser; data.mutual_user = call.request.secrets.mutualUser;
data.mutual_password = call.request.secrets.mutualPassword; data.mutual_password = call.request.secrets.mutualPassword;
@ -1001,12 +1007,12 @@ class ControllerSynologyDriver extends CsiBaseDriver {
description: name, //check description: name, //check
}); });
if ('isLocked' in normalizedParameters) { if ('isLocked' in normalizedParameters) {
data['is_locked'] = driver.parseBoolean(normalizedParameters.isLocked); data.is_locked = driver.parseBoolean(normalizedParameters.isLocked);
} }
if (normalizedParameters.consistency === "AppConsistent") { if (normalizedParameters.consistency === "AppConsistent") {
data['is_app_consistent'] = true; data.is_app_consistent = true;
} else if (normalizedParameters.consistency === 'CrashConsistent') { } else if (normalizedParameters.consistency === 'CrashConsistent') {
data['is_app_consistent'] = false; data.is_app_consistent = false;
} else if ('consistency' in normalizedParameters.consistency) { } else if ('consistency' in normalizedParameters.consistency) {
throw new GrpcError( throw new GrpcError(
grpc.status.INVALID_ARGUMENT, grpc.status.INVALID_ARGUMENT,