prep work for aggregate drivers
This commit is contained in:
parent
cb0032ed77
commit
ff63654455
|
|
@ -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" ]
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
driver: freenas-iscsi
|
||||
instance_id:
|
||||
httpConnection:
|
||||
protocol: http
|
||||
host: server address
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
driver: freenas-nfs
|
||||
instance_id:
|
||||
httpConnection:
|
||||
protocol: http
|
||||
host: server address
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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":
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue