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:
parent
d2f8fa3f35
commit
b723136f2a
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
const yaml = require("js-yaml");
|
const yaml = require("js-yaml");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
|
const { grpc } = require("../src/utils/grpc");
|
||||||
|
|
||||||
let options;
|
let options;
|
||||||
const args = require("yargs")
|
const args = require("yargs")
|
||||||
|
|
@ -78,8 +79,6 @@ if (!args.serverSocket && !args.serverAddress && !args.serverPort) {
|
||||||
const package = require("../package.json");
|
const package = require("../package.json");
|
||||||
args.version = package.version;
|
args.version = package.version;
|
||||||
|
|
||||||
//const grpc = require("grpc");
|
|
||||||
const grpc = require("grpc-uds");
|
|
||||||
const protoLoader = require("@grpc/proto-loader");
|
const protoLoader = require("@grpc/proto-loader");
|
||||||
const LRU = require("lru-cache");
|
const LRU = require("lru-cache");
|
||||||
const cache = new LRU({ max: 500 });
|
const cache = new LRU({ max: 500 });
|
||||||
|
|
@ -335,16 +334,6 @@ logger.info(
|
||||||
bindSocket
|
bindSocket
|
||||||
);
|
);
|
||||||
|
|
||||||
if (bindAddress) {
|
|
||||||
csiServer.bind(bindAddress, grpc.ServerCredentials.createInsecure());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bindSocket) {
|
|
||||||
csiServer.bind(bindSocket, grpc.ServerCredentials.createInsecure());
|
|
||||||
}
|
|
||||||
|
|
||||||
csiServer.start();
|
|
||||||
|
|
||||||
[`SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach(
|
[`SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach(
|
||||||
(eventType) => {
|
(eventType) => {
|
||||||
process.on(eventType, (code) => {
|
process.on(eventType, (code) => {
|
||||||
|
|
@ -359,3 +348,37 @@ csiServer.start();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
(async function () {
|
||||||
|
try {
|
||||||
|
if (bindAddress) {
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
csiServer.bindAsync(
|
||||||
|
bindAddress,
|
||||||
|
grpc.ServerCredentials.createInsecure(),
|
||||||
|
() => {
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bindSocket) {
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
csiServer.bindAsync(
|
||||||
|
bindSocket,
|
||||||
|
grpc.ServerCredentials.createInsecure(),
|
||||||
|
() => {
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
csiServer.start();
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "democratic-csi",
|
"name": "democratic-csi",
|
||||||
"version": "1.5.3",
|
"version": "1.5.5",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "democratic-csi",
|
"name": "democratic-csi",
|
||||||
"version": "1.5.4",
|
"version": "1.5.5",
|
||||||
"description": "kubernetes csi driver framework",
|
"description": "kubernetes csi driver framework",
|
||||||
"main": "bin/democratic-csi",
|
"main": "bin/democratic-csi",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,8 @@ const VOLUME_CONTEXT_PROVISIONER_DRIVER_PROPERTY_NAME =
|
||||||
const VOLUME_CONTEXT_PROVISIONER_INSTANCE_ID_PROPERTY_NAME =
|
const VOLUME_CONTEXT_PROVISIONER_INSTANCE_ID_PROPERTY_NAME =
|
||||||
"democratic-csi:volume_context_provisioner_instance_id";
|
"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.
|
* Base driver to provisin zfs assets using zfs cli commands.
|
||||||
* Derived drivers only need to implement:
|
* Derived drivers only need to implement:
|
||||||
|
|
@ -413,6 +415,14 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
|
||||||
let kernel;
|
let kernel;
|
||||||
let kernel_release;
|
let kernel_release;
|
||||||
|
|
||||||
|
const cachedValue = await driver.ctx.cache.get(
|
||||||
|
MAX_ZVOL_NAME_LENGTH_CACHE_KEY
|
||||||
|
);
|
||||||
|
|
||||||
|
if (cachedValue) {
|
||||||
|
return cachedValue;
|
||||||
|
}
|
||||||
|
|
||||||
// get kernel
|
// get kernel
|
||||||
command = "uname -s";
|
command = "uname -s";
|
||||||
driver.ctx.logger.verbose("uname command: %s", command);
|
driver.ctx.logger.verbose("uname command: %s", command);
|
||||||
|
|
@ -423,12 +433,14 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
|
||||||
kernel = response.stdout.trim();
|
kernel = response.stdout.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let max;
|
||||||
switch (kernel.toLowerCase().trim()) {
|
switch (kernel.toLowerCase().trim()) {
|
||||||
// Linux is 255 (probably larger 4096) but scst may have a 255 limit
|
// 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://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
|
// https://github.com/dmeister/scst/blob/master/iscsi-scst/include/iscsi_scst.h#L28
|
||||||
case "linux":
|
case "linux":
|
||||||
return 255;
|
max = 255;
|
||||||
|
break;
|
||||||
case "freebsd":
|
case "freebsd":
|
||||||
// get kernel_release
|
// get kernel_release
|
||||||
command = "uname -r";
|
command = "uname -r";
|
||||||
|
|
@ -444,14 +456,20 @@ class ControllerZfsBaseDriver extends CsiBaseDriver {
|
||||||
let kernel_release_major = parts[0];
|
let kernel_release_major = parts[0];
|
||||||
|
|
||||||
if (kernel_release_major >= 13) {
|
if (kernel_release_major >= 13) {
|
||||||
return 255;
|
max = 255;
|
||||||
} else {
|
} else {
|
||||||
return 63;
|
max = 63;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Error(`unknown kernel: ${kernel}`);
|
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) {
|
async setFilesystemMode(path, mode) {
|
||||||
|
|
|
||||||
|
|
@ -208,11 +208,9 @@ class Api {
|
||||||
}
|
}
|
||||||
|
|
||||||
async setVersionInfoCache(versionInfo) {
|
async setVersionInfoCache(versionInfo) {
|
||||||
await this.cache.set(
|
await this.cache.set(FREENAS_SYSTEM_VERSION_CACHE_KEY, versionInfo, {
|
||||||
FREENAS_SYSTEM_VERSION_CACHE_KEY,
|
ttl: 60 * 1000,
|
||||||
versionInfo,
|
});
|
||||||
60 * 1000
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async getSystemVersion() {
|
async getSystemVersion() {
|
||||||
|
|
|
||||||
|
|
@ -2011,11 +2011,9 @@ class FreeNASSshDriver extends ControllerZfsBaseDriver {
|
||||||
async setVersionInfoCache(versionInfo) {
|
async setVersionInfoCache(versionInfo) {
|
||||||
const driver = this;
|
const driver = this;
|
||||||
|
|
||||||
await driver.ctx.cache.set(
|
await driver.ctx.cache.set(FREENAS_SYSTEM_VERSION_CACHE_KEY, versionInfo, {
|
||||||
FREENAS_SYSTEM_VERSION_CACHE_KEY,
|
ttl: 60 * 1000,
|
||||||
versionInfo,
|
});
|
||||||
60 * 1000
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async getSystemVersion() {
|
async getSystemVersion() {
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,7 @@ class GrpcError {
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.GrpcError = 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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue