64 lines
2.3 KiB
JavaScript
64 lines
2.3 KiB
JavaScript
const { FreeNASSshDriver } = require("./freenas/ssh");
|
|
const { FreeNASApiDriver } = require("./freenas/api");
|
|
const {
|
|
ControllerLocalHostpathDriver,
|
|
} = require("./controller-local-hostpath");
|
|
const { ControllerZfsGenericDriver } = require("./controller-zfs-generic");
|
|
const { ControllerZfsLocalDriver } = require("./controller-zfs-local");
|
|
const {
|
|
ZfsLocalEphemeralInlineDriver,
|
|
} = require("./zfs-local-ephemeral-inline");
|
|
|
|
const { ControllerNfsClientDriver } = require("./controller-nfs-client");
|
|
const { ControllerSmbClientDriver } = require("./controller-smb-client");
|
|
const { ControllerLustreClientDriver } = require("./controller-lustre-client");
|
|
const { ControllerObjectiveFSDriver } = require("./controller-objectivefs");
|
|
const { ControllerSynologyDriver } = require("./controller-synology");
|
|
const { NodeManualDriver } = require("./node-manual");
|
|
|
|
function factory(ctx, options) {
|
|
switch (options.driver) {
|
|
case "freenas-nfs":
|
|
case "freenas-smb":
|
|
case "freenas-iscsi":
|
|
case "truenas-nfs":
|
|
case "truenas-smb":
|
|
case "truenas-iscsi":
|
|
return new FreeNASSshDriver(ctx, options);
|
|
case "freenas-api-iscsi":
|
|
case "freenas-api-nfs":
|
|
case "freenas-api-smb":
|
|
return new FreeNASApiDriver(ctx, options);
|
|
case "synology-nfs":
|
|
case "synology-smb":
|
|
case "synology-iscsi":
|
|
return new ControllerSynologyDriver(ctx, options);
|
|
case "zfs-generic-nfs":
|
|
case "zfs-generic-smb":
|
|
case "zfs-generic-iscsi":
|
|
case "zfs-generic-nvmeof":
|
|
return new ControllerZfsGenericDriver(ctx, options);
|
|
case "zfs-local-dataset":
|
|
case "zfs-local-zvol":
|
|
return new ControllerZfsLocalDriver(ctx, options);
|
|
case "zfs-local-ephemeral-inline":
|
|
return new ZfsLocalEphemeralInlineDriver(ctx, options);
|
|
case "smb-client":
|
|
return new ControllerSmbClientDriver(ctx, options);
|
|
case "nfs-client":
|
|
return new ControllerNfsClientDriver(ctx, options);
|
|
case "local-hostpath":
|
|
return new ControllerLocalHostpathDriver(ctx, options);
|
|
case "lustre-client":
|
|
return new ControllerLustreClientDriver(ctx, options);
|
|
case "objectivefs":
|
|
return new ControllerObjectiveFSDriver(ctx, options);
|
|
case "node-manual":
|
|
return new NodeManualDriver(ctx, options);
|
|
default:
|
|
throw new Error("invalid csi driver: " + options.driver);
|
|
}
|
|
}
|
|
|
|
module.exports.factory = factory;
|