ci flakes, delegated zfs setups

Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
Travis Glenn Hansen 2022-02-23 11:02:23 -07:00
parent ae9791d500
commit 41d4502d7e
9 changed files with 69 additions and 44 deletions

View File

@ -1,3 +1,11 @@
# v1.5.1
Released 2022-02-23
- fix ci flakes
- better support running `zfs` commands as non-root with `delegated`
permissions
# v1.5.0
Released 2022-02-23

View File

@ -162,7 +162,7 @@ volume is/was provisioned.
### local-hostpath
This `driver` provisions node-local storage. Each node should and an
This `driver` provisions node-local storage. Each node should have an
identically name folder where volumes will be created.
## Server Prep

View File

@ -1,6 +1,6 @@
{
"name": "democratic-csi",
"version": "1.5.0",
"version": "1.5.1",
"description": "kubernetes csi driver framework",
"main": "bin/democratic-csi",
"scripts": {

View File

@ -320,6 +320,10 @@ class ControllerClientCommonDriver extends CsiBaseDriver {
return response.stdout.split("\n")[1].trim();
}
async createDir(path) {
await this.exec("mkdir", ["-p", path]);
}
async deleteDir(path) {
await this.exec("rm", ["-rf", path]);
@ -600,6 +604,10 @@ class ControllerClientCommonDriver extends CsiBaseDriver {
}
}
if (!(await driver.directoryExists(driver.getControllerBasePath()))) {
await driver.createDir(driver.getControllerBasePath());
}
const available_capacity = await driver.getAvailableSpaceAtPath(
driver.getControllerBasePath()
);

View File

@ -1,3 +1,4 @@
const _ = require("lodash");
const { ControllerZfsBaseDriver } = require("../controller-zfs");
const { GrpcError, grpc } = require("../../utils/grpc");
const SshClient = require("../../utils/ssh").SshClient;
@ -30,13 +31,7 @@ class ControllerZfsGenericDriver extends ControllerZfsBaseDriver {
options.paths = this.options.zfs.cli.paths;
}
if (
this.options.zfs.hasOwnProperty("cli") &&
this.options.zfs.cli &&
this.options.zfs.cli.hasOwnProperty("sudoEnabled")
) {
options.sudo = this.getSudoEnabled();
}
options.sudo = _.get(this.options, "zfs.cli.sudoEnabled", false);
if (typeof this.setZetabyteCustomOptions === "function") {
await this.setZetabyteCustomOptions(options);
@ -367,7 +362,7 @@ delete ${iscsiName}
taregetCliCommand.push("|");
taregetCliCommand.push("targetcli");
if (this.options.iscsi.shareStrategyTargetCli.sudoEnabled) {
if (_.get(this.options, "iscsi.shareStrategyTargetCli.sudoEnabled", false)) {
command = "sudo";
args.unshift("sh");
}

View File

@ -59,13 +59,7 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver {
chroot: "chroot",
};
if (
this.options.zfs.hasOwnProperty("cli") &&
this.options.zfs.cli &&
this.options.zfs.cli.hasOwnProperty("sudoEnabled")
) {
options.sudo = this.getSudoEnabled();
}
options.sudo = _.get(this.options, "zfs.cli.sudoEnabled", false);
if (typeof this.setZetabyteCustomOptions === "function") {
await this.setZetabyteCustomOptions(options);

View File

@ -149,8 +149,17 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
}
}
getSudoEnabled() {
return this.options.zfs.cli && this.options.zfs.cli.sudoEnabled === true;
async getWhoAmI() {
const driver = this;
const execClient = driver.getExecClient();
const command = "whoami";
driver.ctx.logger.verbose("whoami command: %s", command);
const response = await execClient.exec(command);
if (response.code !== 0) {
throw new Error("failed to run uname to determine max zvol name length");
} else {
return response.stdout.trim();
}
}
async getSudoPath() {
@ -321,6 +330,13 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
return;
}
if (
!zb.helpers.isPropertyValueSet(row[SHARE_VOLUME_CONTEXT_PROPERTY_NAME])
) {
driver.ctx.logger.warn(`${row.name} is missing share context`);
return;
}
let volume_content_source;
let volume_context = JSON.parse(row[SHARE_VOLUME_CONTEXT_PROPERTY_NAME]);
if (
@ -1019,7 +1035,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
this.options.zfs.datasetPermissionsMode,
properties.mountpoint.value,
]);
if (this.getSudoEnabled()) {
if ((await this.getWhoAmI()) != "root") {
command = (await this.getSudoPath()) + " " + command;
}
@ -1050,7 +1066,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
: ""),
properties.mountpoint.value,
]);
if (this.getSudoEnabled()) {
if ((await this.getWhoAmI()) != "root") {
command = (await this.getSudoPath()) + " " + command;
}
@ -1073,7 +1089,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
acl,
properties.mountpoint.value,
]);
if (this.getSudoEnabled()) {
if ((await this.getWhoAmI()) != "root") {
command = (await this.getSudoPath()) + " " + command;
}
@ -1641,13 +1657,14 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
}
let volume = await driver.populateCsiVolumeFromData(row);
if (volume) {
let status = await driver.getVolumeStatus(datasetName);
entries.push({
volume,
status,
});
}
}
if (max_entries && entries.length > max_entries) {
uuid = uuidv4();

View File

@ -1657,7 +1657,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
}
if (reload) {
if (this.getSudoEnabled()) {
if ((await this.getWhoAmI()) != "root") {
command = (await this.getSudoPath()) + " " + command;
}
@ -1726,6 +1726,13 @@ class FreeNASApiDriver extends CsiBaseDriver {
return;
}
if (
!zb.helpers.isPropertyValueSet(row[SHARE_VOLUME_CONTEXT_PROPERTY_NAME])
) {
driver.ctx.logger.warn(`${row.name} is missing share context`);
return;
}
let volume_content_source;
let volume_context = JSON.parse(row[SHARE_VOLUME_CONTEXT_PROPERTY_NAME]);
if (
@ -3208,13 +3215,14 @@ class FreeNASApiDriver extends CsiBaseDriver {
);
let volume = await driver.populateCsiVolumeFromData(row);
if (volume) {
let status = await driver.getVolumeStatus(volume_id);
entries.push({
volume,
status,
});
}
}
if (max_entries && entries.length > max_entries) {
uuid = uuidv4();

View File

@ -1,3 +1,4 @@
const _ = require("lodash");
const { ControllerZfsBaseDriver } = require("../controller-zfs");
const { GrpcError, grpc } = require("../../utils/grpc");
const SshClient = require("../../utils/ssh").SshClient;
@ -42,13 +43,7 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
options.paths = this.options.zfs.cli.paths;
}
if (
this.options.zfs.hasOwnProperty("cli") &&
this.options.zfs.cli &&
this.options.zfs.cli.hasOwnProperty("sudoEnabled")
) {
options.sudo = this.getSudoEnabled();
}
options.sudo = _.get(this.options, "zfs.cli.sudoEnabled", false);
if (typeof this.setZetabyteCustomOptions === "function") {
await this.setZetabyteCustomOptions(options);
@ -1706,7 +1701,7 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
}
if (reload) {
if (this.getSudoEnabled()) {
if ((await this.getWhoAmI()) != "root") {
command = (await this.getSudoPath()) + " " + command;
}