fix nvme address parsing with older versions of nvme-cli package
Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
parent
263a72635a
commit
1d49644217
|
|
@ -147,8 +147,9 @@ class CsiBaseDriver {
|
|||
* @returns NVMEoF
|
||||
*/
|
||||
getDefaultNVMEoFInstance() {
|
||||
const driver = this;
|
||||
return registry.get(`${__REGISTRY_NS__}:default_nvmeof_instance`, () => {
|
||||
return new NVMEoF();
|
||||
return new NVMEoF({ logger: driver.ctx.logger });
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,12 @@ class NVMEoF {
|
|||
spawn: cp.spawn,
|
||||
};
|
||||
}
|
||||
|
||||
if (nvmeof.options.logger) {
|
||||
nvmeof.logger = nvmeof.options.logger;
|
||||
} else {
|
||||
nvmeof.logger = console;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -46,7 +52,35 @@ class NVMEoF {
|
|||
async listSubsys(args = []) {
|
||||
const nvmeof = this;
|
||||
args.unshift("list-subsys", "-o", "json");
|
||||
await nvmeof.exec(nvmeof.options.paths.nvme, args);
|
||||
let result = await nvmeof.exec(nvmeof.options.paths.nvme, args);
|
||||
return result.parsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Discover NVMeoF subsystems
|
||||
*
|
||||
* @param {*} transport
|
||||
* @param {*} args
|
||||
* @returns
|
||||
*/
|
||||
async discover(transport, args = []) {
|
||||
const nvmeof = this;
|
||||
transport = nvmeof.parseTransport(transport);
|
||||
|
||||
let transport_args = [];
|
||||
if (transport.type) {
|
||||
transport_args.push("--transport", transport.type);
|
||||
}
|
||||
if (transport.address) {
|
||||
transport_args.push("--traddr", transport.address);
|
||||
}
|
||||
if (transport.service) {
|
||||
transport_args.push("--trsvcid", transport.service);
|
||||
}
|
||||
|
||||
args.unshift("discover", "-o", "json", ...transport_args);
|
||||
let result = await nvmeof.exec(nvmeof.options.paths.nvme, args);
|
||||
return result.parsed;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -218,6 +252,8 @@ class NVMEoF {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
nvmeof.logger.warn(`failed to find subsystem for nqn: ${nqn}`);
|
||||
}
|
||||
|
||||
async getControllerByTransportNQN(transport, nqn) {
|
||||
|
|
@ -231,6 +267,12 @@ class NVMEoF {
|
|||
}
|
||||
|
||||
let controllerAddress = controller.Address;
|
||||
/**
|
||||
* For backwards compatibility with older nvme-cli versions (at least < 2.2.1)
|
||||
* old: "Address":"traddr=127.0.0.1 trsvcid=4420"
|
||||
* new: "Address":"traddr=127.0.0.1,trsvcid=4420"
|
||||
*/
|
||||
controllerAddress = controllerAddress.replaceAll(" ", ",");
|
||||
let parts = controllerAddress.split(",");
|
||||
|
||||
let traddr;
|
||||
|
|
@ -258,6 +300,12 @@ class NVMEoF {
|
|||
return controller;
|
||||
}
|
||||
}
|
||||
|
||||
nvmeof.logger.warn(
|
||||
`failed to find controller for transport: ${JSON.stringify(
|
||||
transport
|
||||
)}, nqn: ${nqn}`
|
||||
);
|
||||
}
|
||||
|
||||
async nqnByNamespaceDeviceName(name) {
|
||||
|
|
@ -318,7 +366,11 @@ class NVMEoF {
|
|||
command = nvmeof.options.paths.sudo;
|
||||
}
|
||||
|
||||
console.log("executing nvmeof command: %s %s", command, args.join(" "));
|
||||
nvmeof.logger.verbose(
|
||||
"executing nvmeof command: %s %s",
|
||||
command,
|
||||
args.join(" ")
|
||||
);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const child = nvmeof.options.executor.spawn(command, args, options);
|
||||
|
|
|
|||
Loading…
Reference in New Issue