Merge branch 'democratic-csi:master' into env-yaml-tag

This commit is contained in:
Krzysztof Gutkowski 2025-03-30 21:37:30 +02:00 committed by GitHub
commit 6c0f81864f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 65 additions and 54 deletions

View File

@ -1,3 +1,21 @@
# v1.9.4
Release 2024-07-06
- minor doc updates
# v1.9.3
Released 2024-06-01
- minor fixes for objectivefs and iscsi
# v1.9.2
Released 2024-05-23
- minor fixes for objectivefs and iscsi
# v1.9.1 # v1.9.1
Released 2024-05-06 Released 2024-05-06

View File

@ -30,7 +30,7 @@ have access to resizing, snapshots, clones, etc functionality.
- `zfs-local-dataset` (provision node-local volume as dataset) - `zfs-local-dataset` (provision node-local volume as dataset)
- `zfs-local-zvol` (provision node-local volume as zvol) - `zfs-local-zvol` (provision node-local volume as zvol)
- `synology-iscsi` experimental (manages volumes to share over iscsi) - `synology-iscsi` experimental (manages volumes to share over iscsi)
- `objectivefs` experimental (manages objectivefs volumes) - `objectivefs` (manages objectivefs volumes)
- `lustre-client` (crudely provisions storage using a shared lustre - `lustre-client` (crudely provisions storage using a shared lustre
share/directory for all volumes) share/directory for all volumes)
- `nfs-client` (crudely provisions storage using a shared nfs share/directory - `nfs-client` (crudely provisions storage using a shared nfs share/directory
@ -554,6 +554,8 @@ the respective node. Also beware that any cpu/memory limits placed on the
container by the orchestration system will impact any ability to use the container by the orchestration system will impact any ability to use the
caching, etc features of objectivefs. caching, etc features of objectivefs.
- https://objectivefs.com/howto/csi-driver-objectivefs
- https://objectivefs.com/howto/csi-driver-objectivefs-kubernetes-managed
- https://objectivefs.com/howto/objectivefs-admin-key-setup - https://objectivefs.com/howto/objectivefs-admin-key-setup
- https://objectivefs.com/features#filesystem-pool - https://objectivefs.com/features#filesystem-pool
- https://objectivefs.com/howto/how-to-create-a-filesystem-with-an-existing-empty-bucket - https://objectivefs.com/howto/how-to-create-a-filesystem-with-an-existing-empty-bucket

View File

@ -141,10 +141,13 @@ const csi = protoDescriptor.csi.v1;
logger.info("initializing csi driver: %s", options.driver); logger.info("initializing csi driver: %s", options.driver);
const { Registry } = require("../src/utils/registry");
let globalRegistry = new Registry();
let driver; let driver;
try { try {
driver = require("../src/driver/factory").factory( driver = require("../src/driver/factory").factory(
{ logger, args, cache, package, csiVersion }, { logger, args, cache, package, csiVersion, registry: globalRegistry },
options options
); );
} catch (err) { } catch (err) {

View File

@ -43,19 +43,19 @@ if [[ ! -f ${PV_ORIG_FILE} ]]; then
kubectl get pv "${PV}" -o yaml >"${PV_ORIG_FILE}" kubectl get pv "${PV}" -o yaml >"${PV_ORIG_FILE}"
fi fi
reclaimPolicy=$(yq eval '.spec.persistentVolumeReclaimPolicy' "${PV_ORIG_FILE}") reclaimPolicy=$(yq '.spec.persistentVolumeReclaimPolicy' "${PV_ORIG_FILE}")
# copy file for editing # copy file for editing
cp "${PV_ORIG_FILE}" "${PV_TMP_FILE}" cp "${PV_ORIG_FILE}" "${PV_TMP_FILE}"
# pre-process before edit # pre-process before edit
yq -i eval 'del(.metadata.resourceVersion)' "${PV_TMP_FILE}" yq -i -y 'del(.metadata.resourceVersion)' "${PV_TMP_FILE}"
# manually edit # manually edit
${EDITOR} "${PV_TMP_FILE}" ${EDITOR} "${PV_TMP_FILE}"
# ask if looks good # ask if looks good
yq eval '.' "${PV_TMP_FILE}" yq '.' "${PV_TMP_FILE}"
yes_or_no "Would you like to delete the existing PV object and recreate with the above data?" yes_or_no "Would you like to delete the existing PV object and recreate with the above data?"
# set relaim to Retain on PV # set relaim to Retain on PV
@ -69,7 +69,7 @@ kubectl patch pv "${PV}" -p '{"metadata":{"finalizers": null }}' &>/dev/null ||
kubectl apply -f "${PV_TMP_FILE}" kubectl apply -f "${PV_TMP_FILE}"
# restore original reclaim value # restore original reclaim value
kubectl patch pv "${PV}" -p "{\"spec\":{\"persistentVolumeReclaimPolicy\":\"${reclaimPolicy}\"}}" kubectl patch pv "${PV}" -p "{\"spec\":{\"persistentVolumeReclaimPolicy\":${reclaimPolicy}}}"
# spit out any zfs properties updates # spit out any zfs properties updates
yes_or_no "Would you like to delete the PV backup file?" && { yes_or_no "Would you like to delete the PV backup file?" && {

View File

@ -84,7 +84,7 @@ install_nvmetcli() {
python3 setup.py install --install-scripts=${HOME}/.local/bin python3 setup.py install --install-scripts=${HOME}/.local/bin
# install to root home dir # install to root home dir
pip install configshell_fb pip install configshell_fb==1.1.30
# remove source # remove source
cd "${SCRIPTDIR}" cd "${SCRIPTDIR}"

View File

@ -13,7 +13,7 @@ case ${ISCSIADM_HOST_STRATEGY} in
nsenter) nsenter)
# https://github.com/siderolabs/extensions/issues/38#issuecomment-1125403043 # https://github.com/siderolabs/extensions/issues/38#issuecomment-1125403043
iscsid_pid=$(pgrep iscsid) iscsid_pid=$(pgrep --exact --oldest iscsid)
if [[ "${iscsid_pid}x" == "x" ]]; then if [[ "${iscsid_pid}x" == "x" ]]; then
echoerr "failed to find iscsid pid for nsenter" echoerr "failed to find iscsid pid for nsenter"
exit 1 exit 1

View File

@ -7,7 +7,6 @@ const fse = require("fs-extra");
const Kopia = require("../../utils/kopia").Kopia; const Kopia = require("../../utils/kopia").Kopia;
const os = require("os"); const os = require("os");
const path = require("path"); const path = require("path");
const registry = require("../../utils/registry");
const Restic = require("../../utils/restic").Restic; const Restic = require("../../utils/restic").Restic;
const semver = require("semver"); const semver = require("semver");
@ -458,7 +457,7 @@ class ControllerClientCommonDriver extends CsiBaseDriver {
async getResticClient() { async getResticClient() {
const driver = this; const driver = this;
return registry.get(`${__REGISTRY_NS__}:restic`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:restic`, () => {
const config_key = driver.getConfigKey(); const config_key = driver.getConfigKey();
const restic_env = _.get( const restic_env = _.get(
@ -491,7 +490,7 @@ class ControllerClientCommonDriver extends CsiBaseDriver {
async getKopiaClient() { async getKopiaClient() {
const driver = this; const driver = this;
return registry.getAsync(`${__REGISTRY_NS__}:kopia`, async () => { return this.ctx.registry.getAsync(`${__REGISTRY_NS__}:kopia`, async () => {
const config_key = driver.getConfigKey(); const config_key = driver.getConfigKey();
const kopia_env = _.get( const kopia_env = _.get(

View File

@ -3,7 +3,6 @@ const { CsiBaseDriver } = require("../index");
const { GrpcError, grpc } = require("../../utils/grpc"); const { GrpcError, grpc } = require("../../utils/grpc");
const GeneralUtils = require("../../utils/general"); const GeneralUtils = require("../../utils/general");
const { ObjectiveFS } = require("../../utils/objectivefs"); const { ObjectiveFS } = require("../../utils/objectivefs");
const registry = require("../../utils/registry");
const semver = require("semver"); const semver = require("semver");
const uuidv4 = require("uuid").v4; const uuidv4 = require("uuid").v4;
@ -105,7 +104,7 @@ class ControllerObjectiveFSDriver extends CsiBaseDriver {
async getObjectiveFSClient() { async getObjectiveFSClient() {
const driver = this; const driver = this;
return registry.getAsync( return this.ctx.registry.getAsync(
`${__REGISTRY_NS__}:objectivefsclient`, `${__REGISTRY_NS__}:objectivefsclient`,
async () => { async () => {
const options = {}; const options = {};

View File

@ -3,7 +3,6 @@ const http = require("http");
const https = require("https"); const https = require("https");
const { axios_request, stringify } = require("../../../utils/general"); const { axios_request, stringify } = require("../../../utils/general");
const Mutex = require("async-mutex").Mutex; const Mutex = require("async-mutex").Mutex;
const registry = require("../../../utils/registry");
const { GrpcError, grpc } = require("../../../utils/grpc"); const { GrpcError, grpc } = require("../../../utils/grpc");
const USER_AGENT = "democratic-csi"; const USER_AGENT = "democratic-csi";
@ -95,7 +94,7 @@ class SynologyHttpClient {
} }
getHttpAgent() { getHttpAgent() {
return registry.get(`${__REGISTRY_NS__}:http_agent`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:http_agent`, () => {
return new http.Agent({ return new http.Agent({
keepAlive: true, keepAlive: true,
maxSockets: Infinity, maxSockets: Infinity,
@ -105,7 +104,7 @@ class SynologyHttpClient {
} }
getHttpsAgent() { getHttpsAgent() {
return registry.get(`${__REGISTRY_NS__}:https_agent`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:https_agent`, () => {
return new https.Agent({ return new https.Agent({
keepAlive: true, keepAlive: true,
maxSockets: Infinity, maxSockets: Infinity,

View File

@ -3,7 +3,6 @@ const { CsiBaseDriver } = require("../index");
const GeneralUtils = require("../../utils/general"); const GeneralUtils = require("../../utils/general");
const { GrpcError, grpc } = require("../../utils/grpc"); const { GrpcError, grpc } = require("../../utils/grpc");
const Handlebars = require("handlebars"); const Handlebars = require("handlebars");
const registry = require("../../utils/registry");
const SynologyHttpClient = require("./http").SynologyHttpClient; const SynologyHttpClient = require("./http").SynologyHttpClient;
const semver = require("semver"); const semver = require("semver");
const yaml = require("js-yaml"); const yaml = require("js-yaml");
@ -115,7 +114,7 @@ class ControllerSynologyDriver extends CsiBaseDriver {
} }
async getHttpClient() { async getHttpClient() {
return registry.get(`${__REGISTRY_NS__}:http_client`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:http_client`, () => {
return new SynologyHttpClient(this.options.httpConnection); return new SynologyHttpClient(this.options.httpConnection);
}); });
} }

View File

@ -2,7 +2,6 @@ const _ = require("lodash");
const { ControllerZfsBaseDriver } = require("../controller-zfs"); const { ControllerZfsBaseDriver } = require("../controller-zfs");
const { GrpcError, grpc } = require("../../utils/grpc"); const { GrpcError, grpc } = require("../../utils/grpc");
const GeneralUtils = require("../../utils/general"); const GeneralUtils = require("../../utils/general");
const registry = require("../../utils/registry");
const LocalCliExecClient = const LocalCliExecClient =
require("../../utils/zfs_local_exec_client").LocalCliClient; require("../../utils/zfs_local_exec_client").LocalCliClient;
const SshClient = require("../../utils/zfs_ssh_exec_client").SshClient; const SshClient = require("../../utils/zfs_ssh_exec_client").SshClient;
@ -15,7 +14,7 @@ const NVMEOF_ASSETS_NAME_PROPERTY_NAME = "democratic-csi:nvmeof_assets_name";
const __REGISTRY_NS__ = "ControllerZfsGenericDriver"; const __REGISTRY_NS__ = "ControllerZfsGenericDriver";
class ControllerZfsGenericDriver extends ControllerZfsBaseDriver { class ControllerZfsGenericDriver extends ControllerZfsBaseDriver {
getExecClient() { getExecClient() {
return registry.get(`${__REGISTRY_NS__}:exec_client`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:exec_client`, () => {
if (this.options.sshConnection) { if (this.options.sshConnection) {
return new SshClient({ return new SshClient({
logger: this.ctx.logger, logger: this.ctx.logger,
@ -30,7 +29,7 @@ class ControllerZfsGenericDriver extends ControllerZfsBaseDriver {
} }
async getZetabyte() { async getZetabyte() {
return registry.getAsync(`${__REGISTRY_NS__}:zb`, async () => { return this.ctx.registry.getAsync(`${__REGISTRY_NS__}:zb`, async () => {
const execClient = this.getExecClient(); const execClient = this.getExecClient();
const options = {}; const options = {};
if (this.options.sshConnection) { if (this.options.sshConnection) {

View File

@ -4,7 +4,6 @@ const { GrpcError, grpc } = require("../../utils/grpc");
const GeneralUtils = require("../../utils/general"); const GeneralUtils = require("../../utils/general");
const LocalCliExecClient = const LocalCliExecClient =
require("../../utils/zfs_local_exec_client").LocalCliClient; require("../../utils/zfs_local_exec_client").LocalCliClient;
const registry = require("../../utils/registry");
const { Zetabyte } = require("../../utils/zfs"); const { Zetabyte } = require("../../utils/zfs");
const ZFS_ASSET_NAME_PROPERTY_NAME = "zfs_asset_name"; const ZFS_ASSET_NAME_PROPERTY_NAME = "zfs_asset_name";
@ -33,7 +32,7 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver {
} }
getExecClient() { getExecClient() {
return registry.get(`${__REGISTRY_NS__}:exec_client`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:exec_client`, () => {
return new LocalCliExecClient({ return new LocalCliExecClient({
logger: this.ctx.logger, logger: this.ctx.logger,
}); });
@ -41,7 +40,7 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver {
} }
async getZetabyte() { async getZetabyte() {
return registry.getAsync(`${__REGISTRY_NS__}:zb`, async () => { return this.ctx.registry.getAsync(`${__REGISTRY_NS__}:zb`, async () => {
const execClient = this.getExecClient(); const execClient = this.getExecClient();
const options = {}; const options = {};

View File

@ -4,7 +4,6 @@ const { CsiBaseDriver } = require("../index");
const HttpClient = require("./http").Client; const HttpClient = require("./http").Client;
const TrueNASApiClient = require("./http/api").Api; const TrueNASApiClient = require("./http/api").Api;
const { Zetabyte } = require("../../utils/zfs"); const { Zetabyte } = require("../../utils/zfs");
const registry = require("../../utils/registry");
const GeneralUtils = require("../../utils/general"); const GeneralUtils = require("../../utils/general");
const Handlebars = require("handlebars"); const Handlebars = require("handlebars");
@ -156,7 +155,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
* @returns * @returns
*/ */
async getZetabyte() { async getZetabyte() {
return registry.get(`${__REGISTRY_NS__}:zb`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:zb`, () => {
return new Zetabyte({ return new Zetabyte({
executor: { executor: {
spawn: function () { spawn: function () {
@ -2017,7 +2016,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
} }
async getHttpClient() { async getHttpClient() {
return registry.get(`${__REGISTRY_NS__}:http_client`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:http_client`, () => {
const client = new HttpClient(this.options.httpConnection); const client = new HttpClient(this.options.httpConnection);
client.logger = this.ctx.logger; client.logger = this.ctx.logger;
client.setApiVersion(2); // requires version 2 client.setApiVersion(2); // requires version 2
@ -2034,7 +2033,7 @@ class FreeNASApiDriver extends CsiBaseDriver {
} }
async getTrueNASHttpApiClient() { async getTrueNASHttpApiClient() {
return registry.getAsync(`${__REGISTRY_NS__}:api_client`, async () => { return this.ctx.registry.getAsync(`${__REGISTRY_NS__}:api_client`, async () => {
const httpClient = await this.getHttpClient(); const httpClient = await this.getHttpClient();
return new TrueNASApiClient(httpClient, this.ctx.cache); return new TrueNASApiClient(httpClient, this.ctx.cache);
}); });

View File

@ -1,4 +1,4 @@
const registry = require("../../../utils/registry");
const { sleep, stringify } = require("../../../utils/general"); const { sleep, stringify } = require("../../../utils/general");
const { Zetabyte } = require("../../../utils/zfs"); const { Zetabyte } = require("../../../utils/zfs");
@ -22,7 +22,7 @@ class Api {
* @returns * @returns
*/ */
async getZetabyte() { async getZetabyte() {
return registry.get(`${__REGISTRY_NS__}:zb`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:zb`, () => {
return new Zetabyte({ return new Zetabyte({
executor: { executor: {
spawn: function () { spawn: function () {

View File

@ -1,7 +1,6 @@
const _ = require("lodash"); const _ = require("lodash");
const { ControllerZfsBaseDriver } = require("../controller-zfs"); const { ControllerZfsBaseDriver } = require("../controller-zfs");
const { GrpcError, grpc } = require("../../utils/grpc"); const { GrpcError, grpc } = require("../../utils/grpc");
const registry = require("../../utils/registry");
const SshClient = require("../../utils/zfs_ssh_exec_client").SshClient; const SshClient = require("../../utils/zfs_ssh_exec_client").SshClient;
const HttpClient = require("./http").Client; const HttpClient = require("./http").Client;
const TrueNASApiClient = require("./http/api").Api; const TrueNASApiClient = require("./http/api").Api;
@ -57,7 +56,7 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
} }
getExecClient() { getExecClient() {
return registry.get(`${__REGISTRY_NS__}:exec_client`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:exec_client`, () => {
return new SshClient({ return new SshClient({
logger: this.ctx.logger, logger: this.ctx.logger,
connection: this.options.sshConnection, connection: this.options.sshConnection,
@ -66,7 +65,7 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
} }
async getZetabyte() { async getZetabyte() {
return registry.getAsync(`${__REGISTRY_NS__}:zb`, async () => { return this.ctx.registry.getAsync(`${__REGISTRY_NS__}:zb`, async () => {
const sshClient = this.getExecClient(); const sshClient = this.getExecClient();
const options = {}; const options = {};
options.executor = new ZfsSshProcessManager(sshClient); options.executor = new ZfsSshProcessManager(sshClient);
@ -126,7 +125,7 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
async getHttpClient(autoDetectVersion = true) { async getHttpClient(autoDetectVersion = true) {
const autodetectkey = autoDetectVersion === true ? 1 : 0; const autodetectkey = autoDetectVersion === true ? 1 : 0;
return registry.getAsync( return this.ctx.registry.getAsync(
`${__REGISTRY_NS__}:http_client:autoDetectVersion_${autodetectkey}`, `${__REGISTRY_NS__}:http_client:autoDetectVersion_${autodetectkey}`,
async () => { async () => {
const client = new HttpClient(this.options.httpConnection); const client = new HttpClient(this.options.httpConnection);
@ -143,7 +142,7 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
} }
async getTrueNASHttpApiClient() { async getTrueNASHttpApiClient() {
return registry.getAsync(`${__REGISTRY_NS__}:api_client`, async () => { return this.ctx.registry.getAsync(`${__REGISTRY_NS__}:api_client`, async () => {
const httpClient = await this.getHttpClient(); const httpClient = await this.getHttpClient();
return new TrueNASApiClient(httpClient, this.ctx.cache); return new TrueNASApiClient(httpClient, this.ctx.cache);
}); });

View File

@ -12,7 +12,6 @@ const { OneClient } = require("../utils/oneclient");
const { Filesystem } = require("../utils/filesystem"); const { Filesystem } = require("../utils/filesystem");
const { ISCSI } = require("../utils/iscsi"); const { ISCSI } = require("../utils/iscsi");
const { NVMEoF } = require("../utils/nvmeof"); const { NVMEoF } = require("../utils/nvmeof");
const registry = require("../utils/registry");
const semver = require("semver"); const semver = require("semver");
const GeneralUtils = require("../utils/general"); const GeneralUtils = require("../utils/general");
const { Zetabyte } = require("../utils/zfs"); const { Zetabyte } = require("../utils/zfs");
@ -111,7 +110,7 @@ class CsiBaseDriver {
* @returns Filesystem * @returns Filesystem
*/ */
getDefaultFilesystemInstance() { getDefaultFilesystemInstance() {
return registry.get( return this.ctx.registry.get(
`${__REGISTRY_NS__}:default_filesystem_instance`, `${__REGISTRY_NS__}:default_filesystem_instance`,
() => { () => {
return new Filesystem(); return new Filesystem();
@ -125,7 +124,7 @@ class CsiBaseDriver {
* @returns Mount * @returns Mount
*/ */
getDefaultMountInstance() { getDefaultMountInstance() {
return registry.get(`${__REGISTRY_NS__}:default_mount_instance`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:default_mount_instance`, () => {
const filesystem = this.getDefaultFilesystemInstance(); const filesystem = this.getDefaultFilesystemInstance();
return new Mount({ filesystem }); return new Mount({ filesystem });
}); });
@ -137,7 +136,7 @@ class CsiBaseDriver {
* @returns ISCSI * @returns ISCSI
*/ */
getDefaultISCSIInstance() { getDefaultISCSIInstance() {
return registry.get(`${__REGISTRY_NS__}:default_iscsi_instance`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:default_iscsi_instance`, () => {
return new ISCSI(); return new ISCSI();
}); });
} }
@ -149,13 +148,13 @@ class CsiBaseDriver {
*/ */
getDefaultNVMEoFInstance() { getDefaultNVMEoFInstance() {
const driver = this; const driver = this;
return registry.get(`${__REGISTRY_NS__}:default_nvmeof_instance`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:default_nvmeof_instance`, () => {
return new NVMEoF({ logger: driver.ctx.logger }); return new NVMEoF({ logger: driver.ctx.logger });
}); });
} }
getDefaultZetabyteInstance() { getDefaultZetabyteInstance() {
return registry.get(`${__REGISTRY_NS__}:default_zb_instance`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:default_zb_instance`, () => {
return new Zetabyte({ return new Zetabyte({
idempotent: true, idempotent: true,
paths: { paths: {
@ -177,14 +176,14 @@ class CsiBaseDriver {
} }
getDefaultOneClientInstance() { getDefaultOneClientInstance() {
return registry.get(`${__REGISTRY_NS__}:default_oneclient_instance`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:default_oneclient_instance`, () => {
return new OneClient(); return new OneClient();
}); });
} }
getDefaultObjectiveFSInstance() { getDefaultObjectiveFSInstance() {
const driver = this; const driver = this;
return registry.get( return this.ctx.registry.get(
`${__REGISTRY_NS__}:default_objectivefs_instance`, `${__REGISTRY_NS__}:default_objectivefs_instance`,
() => { () => {
return new ObjectiveFS({ return new ObjectiveFS({
@ -199,7 +198,7 @@ class CsiBaseDriver {
* @returns CsiProxyClient * @returns CsiProxyClient
*/ */
getDefaultCsiProxyClientInstance() { getDefaultCsiProxyClientInstance() {
return registry.get(`${__REGISTRY_NS__}:default_csi_proxy_instance`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:default_csi_proxy_instance`, () => {
const options = {}; const options = {};
options.services = _.get(this.options, "node.csiProxy.services", {}); options.services = _.get(this.options, "node.csiProxy.services", {});
return new CsiProxyClient(options); return new CsiProxyClient(options);
@ -207,7 +206,7 @@ class CsiBaseDriver {
} }
getDefaultKubernetsConfigInstance() { getDefaultKubernetsConfigInstance() {
return registry.get( return this.ctx.registry.get(
`${__REGISTRY_NS__}:default_kubernetes_config_instance`, `${__REGISTRY_NS__}:default_kubernetes_config_instance`,
() => { () => {
const kc = new k8s.KubeConfig(); const kc = new k8s.KubeConfig();

View File

@ -2,7 +2,6 @@ const fs = require("fs");
const { CsiBaseDriver } = require("../index"); const { CsiBaseDriver } = require("../index");
const { GrpcError, grpc } = require("../../utils/grpc"); const { GrpcError, grpc } = require("../../utils/grpc");
const { Filesystem } = require("../../utils/filesystem"); const { Filesystem } = require("../../utils/filesystem");
const registry = require("../../utils/registry");
const semver = require("semver"); const semver = require("semver");
const SshClient = require("../../utils/zfs_ssh_exec_client").SshClient; const SshClient = require("../../utils/zfs_ssh_exec_client").SshClient;
const { Zetabyte, ZfsSshProcessManager } = require("../../utils/zfs"); const { Zetabyte, ZfsSshProcessManager } = require("../../utils/zfs");
@ -125,7 +124,7 @@ class ZfsLocalEphemeralInlineDriver extends CsiBaseDriver {
} }
getSshClient() { getSshClient() {
return registry.get(`${__REGISTRY_NS__}:ssh_client`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:ssh_client`, () => {
return new SshClient({ return new SshClient({
logger: this.ctx.logger, logger: this.ctx.logger,
connection: this.options.sshConnection, connection: this.options.sshConnection,
@ -134,7 +133,7 @@ class ZfsLocalEphemeralInlineDriver extends CsiBaseDriver {
} }
getZetabyte() { getZetabyte() {
return registry.get(`${__REGISTRY_NS__}:zb`, () => { return this.ctx.registry.get(`${__REGISTRY_NS__}:zb`, () => {
let sshClient; let sshClient;
let executor; let executor;
if (this.options.sshConnection) { if (this.options.sshConnection) {

View File

@ -124,7 +124,7 @@ class NVMEoF {
} catch (err) { } catch (err) {
if ( if (
err.stderr && err.stderr &&
(err.stderr.includes("already connnected") || (err.stderr.includes("already connected") ||
err.stderr.includes("Operation already in progress")) err.stderr.includes("Operation already in progress"))
) { ) {
// idempotent // idempotent

View File

@ -275,13 +275,13 @@ class ObjectiveFS {
async getObjectStoreFromFilesystem(filesystem) { async getObjectStoreFromFilesystem(filesystem) {
if (filesystem.includes("://")) { if (filesystem.includes("://")) {
return GeneralUtils.before_string("://"); return GeneralUtils.before_string(filesystem, "://") + "://";
} }
} }
async stripObjectStoreFromFilesystem(filesystem) { async stripObjectStoreFromFilesystem(filesystem) {
if (filesystem.includes("://")) { if (filesystem.includes("://")) {
return GeneralUtils.after_string("://"); return GeneralUtils.after_string(filesystem, "://");
} }
return filesystem; return filesystem;
} }

View File

@ -48,6 +48,4 @@ class Registry {
} }
} }
const registry = new Registry(); module.exports.Registry = Registry;
module.exports = registry;