sudo support for reloading iscsi daemon, error handling for failed chown/chmod/setacl

This commit is contained in:
Travis Glenn Hansen 2020-11-30 09:42:58 -07:00
parent 4f48cfc640
commit 3924f08ae8
2 changed files with 38 additions and 15 deletions

View File

@ -699,6 +699,14 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver {
driver.ctx.logger.verbose("set permission command: %s", command); driver.ctx.logger.verbose("set permission command: %s", command);
response = await sshClient.exec(command); response = await sshClient.exec(command);
if (response.code != 0) {
throw new GrpcError(
grpc.status.UNKNOWN,
`error setting permissions on dataset: ${JSON.stringify(
response
)}`
);
}
} }
// set ownership // set ownership
@ -722,6 +730,12 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver {
driver.ctx.logger.verbose("set ownership command: %s", command); driver.ctx.logger.verbose("set ownership command: %s", command);
response = await sshClient.exec(command); response = await sshClient.exec(command);
if (response.code != 0) {
throw new GrpcError(
grpc.status.UNKNOWN,
`error setting ownership on dataset: ${JSON.stringify(response)}`
);
}
} }
// set acls // set acls
@ -739,6 +753,12 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver {
driver.ctx.logger.verbose("set acl command: %s", command); driver.ctx.logger.verbose("set acl command: %s", command);
response = await sshClient.exec(command); response = await sshClient.exec(command);
if (response.code != 0) {
throw new GrpcError(
grpc.status.UNKNOWN,
`error setting acl on dataset: ${JSON.stringify(response)}`
);
}
} }
} }

View File

@ -1393,28 +1393,31 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver {
switch (driverShareType) { switch (driverShareType) {
case "iscsi": case "iscsi":
const isScale = await this.getIsScale(); const isScale = await this.getIsScale();
let command;
let reload = false;
if (isScale) { if (isScale) {
this.ctx.logger.verbose("FreeNAS reloading scst"); command = sshClient.buildCommand("systemctl", ["reload", "scst"]);
response = await sshClient.exec( reload = true;
sshClient.buildCommand("systemctl", ["reload", "scst"])
);
if (response.code != 0) {
throw new GrpcError(
grpc.status.UNKNOWN,
`error reloading scst: ${JSON.stringify(response)}`
);
}
} else { } else {
this.ctx.logger.verbose("FreeNAS reloading ctld"); command = sshClient.buildCommand("/etc/rc.d/ctld", ["reload"]);
response = await sshClient.exec( reload = true;
sshClient.buildCommand("/etc/rc.d/ctld", ["reload"]) }
if (reload) {
if (this.getSudoEnabled()) {
command = (await this.getSudoPath()) + " " + command;
}
this.ctx.logger.verbose(
"FreeNAS reloading iscsi daemon: %s",
command
); );
response = await sshClient.exec(command);
if (response.code != 0) { if (response.code != 0) {
throw new GrpcError( throw new GrpcError(
grpc.status.UNKNOWN, grpc.status.UNKNOWN,
`error reloading ctld: ${JSON.stringify(response)}` `error reloading iscsi daemon: ${JSON.stringify(response)}`
); );
} }
} }