ipv6 iscsi improvements, fs detection improvements

Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
Travis Glenn Hansen 2022-08-02 11:22:39 -06:00
parent 36a4e59c15
commit 516701bd29
7 changed files with 696 additions and 44 deletions

View File

@ -1,3 +1,10 @@
# v1.7.5
Released 2022-08-02
- improved ipv6 iscsi support
- allow using `blkid` for filesystem detection on block devices
# v1.7.4 # v1.7.4
Released 2022-07-29 Released 2022-07-29

690
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "democratic-csi", "name": "democratic-csi",
"version": "1.7.4", "version": "1.7.5",
"description": "kubernetes csi driver framework", "description": "kubernetes csi driver framework",
"main": "bin/democratic-csi", "main": "bin/democratic-csi",
"scripts": { "scripts": {

View File

@ -792,7 +792,7 @@ class CsiBaseDriver {
await iscsi.iscsiadm.rescanSession(session); await iscsi.iscsiadm.rescanSession(session);
// find device name // find device name
device = `/dev/disk/by-path/ip-${iscsiConnection.portal}-iscsi-${iscsiConnection.iqn}-lun-${iscsiConnection.lun}`; device = iscsi.devicePathByPortalIQNLUN(iscsiConnection.portal, iscsiConnection.iqn, iscsiConnection.lun)
let deviceByPath = device; let deviceByPath = device;
// can take some time for device to show up, loop for some period // can take some time for device to show up, loop for some period

View File

@ -500,8 +500,34 @@ class Filesystem {
let result; let result;
try { try {
result = await filesystem.getBlockDevice(device); /**
return result.fstype ? true : false; * lsblk
* blkid
*/
const strategy = process.env.FILESYSTEM_TYPE_DETECTION_STRATEGY || "lsblk";
switch (strategy) {
// requires udev data to be present otherwise fstype property is always null but otherwise succeeds
case "lsblk":
result = await filesystem.getBlockDevice(device);
return result.fstype ? true : false;
// no requirement on udev data to be present
case "blkid":
try {
result = await filesystem.getDeviceFilesystemInfo(device);
} catch (err) {
// if not formatted nor partitioned exits with 2
if (err.code == 2) {
return false;
}
throw err;
}
return result.type ? true : false;
// file -s <device> could also be an option
default:
throw new Error(`unknown filesystem detection strategy: ${strategy}`);
}
} catch (err) { } catch (err) {
throw err; throw err;
} }

View File

@ -213,6 +213,7 @@ async function retry(retries, retriesDelay, code, options = {}) {
let retry = retryCondition(err); let retry = retryCondition(err);
if (!retry) { if (!retry) {
console.log(`retry - failed condition, not trying again`); console.log(`retry - failed condition, not trying again`);
//console.log(code.toString(), retryCondition.toString());
throw err; throw err;
} }
} }

View File

@ -560,6 +560,14 @@ class ISCSI {
}; };
} }
devicePathByPortalIQNLUN(portal, iqn, lun) {
const parsedPortal = this.parsePortal(portal);
const portalHost = parsedPortal.host
.replaceAll("[", "")
.replaceAll("]", "");
return `/dev/disk/by-path/ip-${portalHost}:${parsedPortal.port}-iscsi-${iqn}-lun-${lun}`;
}
exec(command, args, options = {}) { exec(command, args, options = {}) {
if (!options.hasOwnProperty("timeout")) { if (!options.hasOwnProperty("timeout")) {
options.timeout = DEFAULT_TIMEOUT; options.timeout = DEFAULT_TIMEOUT;