proper ttl syntax on cache entries, begin work for purejs grpc server

Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
Travis Glenn Hansen
2022-03-03 22:14:48 -07:00
parent d2f8fa3f35
commit b723136f2a
7 changed files with 68 additions and 28 deletions
+21 -3
View File
@@ -29,6 +29,8 @@ const VOLUME_CONTEXT_PROVISIONER_DRIVER_PROPERTY_NAME =
const VOLUME_CONTEXT_PROVISIONER_INSTANCE_ID_PROPERTY_NAME =
"democratic-csi:volume_context_provisioner_instance_id";
const MAX_ZVOL_NAME_LENGTH_CACHE_KEY = "controller-zfs:max_zvol_name_length";
/**
* Base driver to provisin zfs assets using zfs cli commands.
* Derived drivers only need to implement:
@@ -413,6 +415,14 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
let kernel;
let kernel_release;
const cachedValue = await driver.ctx.cache.get(
MAX_ZVOL_NAME_LENGTH_CACHE_KEY
);
if (cachedValue) {
return cachedValue;
}
// get kernel
command = "uname -s";
driver.ctx.logger.verbose("uname command: %s", command);
@@ -423,12 +433,14 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
kernel = response.stdout.trim();
}
let max;
switch (kernel.toLowerCase().trim()) {
// Linux is 255 (probably larger 4096) but scst may have a 255 limit
// https://ngelinux.com/what-is-the-maximum-file-name-length-in-linux-and-how-to-see-this-is-this-really-255-characters-answer-is-no/
// https://github.com/dmeister/scst/blob/master/iscsi-scst/include/iscsi_scst.h#L28
case "linux":
return 255;
max = 255;
break;
case "freebsd":
// get kernel_release
command = "uname -r";
@@ -444,14 +456,20 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
let kernel_release_major = parts[0];
if (kernel_release_major >= 13) {
return 255;
max = 255;
} else {
return 63;
max = 63;
}
}
break;
default:
throw new Error(`unknown kernel: ${kernel}`);
}
await driver.ctx.cache.set(MAX_ZVOL_NAME_LENGTH_CACHE_KEY, max, {
ttl: 60 * 1000,
});
return max;
}
async setFilesystemMode(path, mode) {
+3 -5
View File
@@ -208,11 +208,9 @@ class Api {
}
async setVersionInfoCache(versionInfo) {
await this.cache.set(
FREENAS_SYSTEM_VERSION_CACHE_KEY,
versionInfo,
60 * 1000
);
await this.cache.set(FREENAS_SYSTEM_VERSION_CACHE_KEY, versionInfo, {
ttl: 60 * 1000,
});
}
async getSystemVersion() {
+3 -5
View File
@@ -2011,11 +2011,9 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
async setVersionInfoCache(versionInfo) {
const driver = this;
await driver.ctx.cache.set(
FREENAS_SYSTEM_VERSION_CACHE_KEY,
versionInfo,
60 * 1000
);
await driver.ctx.cache.set(FREENAS_SYSTEM_VERSION_CACHE_KEY, versionInfo, {
ttl: 60 * 1000,
});
}
async getSystemVersion() {
+4 -1
View File
@@ -7,4 +7,7 @@ class GrpcError {
}
module.exports.GrpcError = GrpcError;
module.exports.grpc = require("grpc-uds");
const grpcImplementation = process.env.GRPC_IMPLEMENTATION || "grpc-uds";
console.log(`grpc implementation: ${grpcImplementation}`);
module.exports.grpc = require(grpcImplementation);