prep work for aggregate drivers

This commit is contained in:
Travis Glenn Hansen 2019-11-22 21:00:44 -07:00
parent cb0032ed77
commit ff63654455
7 changed files with 51 additions and 12 deletions

View File

@ -53,5 +53,10 @@ COPY --chown=csi:csi . .
USER root
# remove build deps
#RUN apt-get update && \
# apt-get purge -y python make gcc g++ && \
# rm -rf /var/lib/apt/lists/*
EXPOSE 50051
ENTRYPOINT [ "bin/democratic-csi" ]

View File

@ -8,12 +8,6 @@ const args = require("yargs")
.env("DEMOCRATIC_CSI")
.scriptName("democratic-csi")
.usage("$0 [options]")
.option("driver", {
alias: "d",
describe: "driver",
choices: ["freenas-nfs", "freenas-iscsi"]
})
.demandOption(["driver"], "driver is required")
.option("driver-config-file", {
describe: "provide a path to driver config file",
config: true,
@ -105,7 +99,7 @@ const { FreeNASDriver } = require("../src/driver/freenas");
logger.info("initializing csi driver: %s", args.driver);
let driver;
switch (args.driver) {
switch (options.driver) {
case "freenas-nfs":
case "freenas-iscsi":
driver = new FreeNASDriver({ logger, args, cache, package }, options);

View File

@ -1,3 +1,5 @@
driver: freenas-iscsi
instance_id:
httpConnection:
protocol: http
host: server address

View File

@ -1,3 +1,5 @@
driver: freenas-nfs
instance_id:
httpConnection:
protocol: http
host: server address

View File

@ -351,7 +351,10 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver {
case "snapshot":
try {
let tmpDetachedClone = JSON.parse(
call.request.parameters.detachedVolumesFromSnapshots
driver.getParameterValue(
call.request.parameters,
"detachedVolumesFromSnapshots"
)
);
if (typeof tmpDetachedClone === "boolean") {
detachedClone = tmpDetachedClone;
@ -462,7 +465,10 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver {
case "volume":
try {
let tmpDetachedClone = JSON.parse(
call.request.parameters.detachedVolumesFromVolumes
driver.getParameterValue(
call.request.parameters,
"detachedVolumesFromVolumes"
)
);
if (typeof tmpDetachedClone === "boolean") {
detachedClone = tmpDetachedClone;
@ -1357,7 +1363,7 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver {
let detachedSnapshot = false;
try {
let tmpDetachedSnapshot = JSON.parse(
call.request.parameters.detachedSnapshots
driver.getParameterValue(call.request.parameters, "detachedSnapshots")
); // snapshot class parameter
if (typeof tmpDetachedSnapshot === "boolean") {
detachedSnapshot = tmpDetachedSnapshot;

View File

@ -18,7 +18,7 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver {
* into various calls such as GetControllerCapabilities etc
*/
getDriverZfsResourceType() {
switch (this.ctx.args.driver) {
switch (this.options.driver) {
case "freenas-nfs":
return "filesystem";
case "freenas-iscsi":
@ -35,7 +35,7 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver {
}
getDriverShareType() {
switch (this.ctx.args.driver) {
switch (this.options.driver) {
case "freenas-nfs":
return "nfs";
case "freenas-iscsi":

View File

@ -21,6 +21,36 @@ class CsiBaseDriver {
this.options = options;
}
/**
* abstract way of retrieving values from parameters/secrets
* in order of preference:
* - democratic-csi.org/{instance_id}/{key}
* - democratic-csi.org/{driver}/{key}
* - {key}
*
* @param {*} parameters
* @param {*} key
*/
getParameterValue(parameters, key) {
const base_key = "democratic-csi.org";
if (
this.options.instance_id &&
parameters[`${base_key}/${this.options.instance_id}/${key}`]
) {
return parameters[`${base_key}/${this.options.instance_id}/${key}`];
}
if (
this.options.driver &&
parameters[`${base_key}/${this.options.driver}/${key}`]
) {
return parameters[`${base_key}/${this.options.driver}/${key}`];
}
return parameters[key];
}
async GetPluginInfo(call) {
return {
name: this.ctx.args.csiName,