From f591759fd697541b3ef62b732f86025ca3e10bf3 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sat, 25 Feb 2023 10:33:56 -0700 Subject: [PATCH 1/7] nvmeof doc Signed-off-by: Travis Glenn Hansen --- README.md | 3 ++- examples/node-manual-nvmeof-pv.yaml | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 examples/node-manual-nvmeof-pv.yaml diff --git a/README.md b/README.md index d8604a5..8f9e0ae 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,8 @@ have access to resizing, snapshots, clones, etc functionality. for all volumes) - `local-hostpath` (crudely provisions node-local directories) - `node-manual` (allows connecting to manually created smb, nfs, lustre, - oneclient, and iscsi volumes, see sample PVs in the `examples` directory) + oneclient, nvmeof, and iscsi volumes, see sample PVs in the `examples` + directory) - framework for developing `csi` drivers If you have any interest in providing a `csi` driver, simply open an issue to diff --git a/examples/node-manual-nvmeof-pv.yaml b/examples/node-manual-nvmeof-pv.yaml new file mode 100644 index 0000000..5d2abf2 --- /dev/null +++ b/examples/node-manual-nvmeof-pv.yaml @@ -0,0 +1,26 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nvmeof-manual +spec: + capacity: + storage: 1Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + mountOptions: [] + csi: + driver: org.democratic-csi.node-manual + readOnly: false + # can be ext4 or xfs + fsType: ext4 + volumeHandle: unique-volumeid # make sure it's a unique id in the cluster + volumeAttributes: + # rdma and fc are also available + transport: tcp://, + #transports: ,,... + nqn: + nsid: + node_attach_driver: "nvmeof" + provisioner_driver: node-manual From 86bc420ecae39a10258a79a4aa68d9cf2a87347c Mon Sep 17 00:00:00 2001 From: 5cat Date: Sun, 26 Feb 2023 13:34:58 +0800 Subject: [PATCH 2/7] adding privilged namespace note for talos --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index d8604a5..2e98c62 100644 --- a/README.md +++ b/README.md @@ -185,6 +185,13 @@ node: and continue your democratic installation as usuall with other iscsi drivers. +#### Privilged Namespace +democratic-csi requires privileged access to the nodes, so the namespace should allow for privileged pods. One way of doing it is via [namespace labels](https://kubernetes.io/docs/tasks/configure-pod-container/enforce-standards-namespace-labels/). +Add the followin label to the democratic-csi installation namespace `pod-security.kubernetes.io/enforce=privileged` +``` +kubectl label --overwrite namespace democratic-csi pod-security.kubernetes.io/enforce=privileged +``` + ### nvmeof ```bash From 53b6cc183d2d5c5b3c87d1e4389c253add9846f4 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sat, 1 Apr 2023 20:05:21 -0600 Subject: [PATCH 3/7] MULTI_NODE_MULTI_WRITER for block access by default Signed-off-by: Travis Glenn Hansen --- CHANGELOG.md | 9 +++ src/driver/controller-client-common/index.js | 38 ++++++++--- src/driver/controller-synology/index.js | 66 ++++++++++++++------ src/driver/controller-zfs-local/index.js | 15 ++++- src/driver/controller-zfs/index.js | 29 +++++++-- src/driver/freenas/api.js | 66 ++++++++++++++------ src/driver/node-manual/index.js | 16 +++++ 7 files changed, 182 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15c92ba..fde170a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# v1.8.2 + +Released 2023-04-01 + +- more comprehensive support to manually set `access_modes` +- more intelligent handling of `access_modes` when `access_type=block` + - https://github.com/ceph/ceph-csi/blob/devel/examples/README.md#how-to-test-rbd-multi_node_multi_writer-block-feature + - others? allow this by default + # v1.8.1 Released 2023-02-25 diff --git a/src/driver/controller-client-common/index.js b/src/driver/controller-client-common/index.js index a211888..0279faa 100644 --- a/src/driver/controller-client-common/index.js +++ b/src/driver/controller-client-common/index.js @@ -104,6 +104,33 @@ class ControllerClientCommonDriver extends CsiBaseDriver { } } + getAccessModes(capability) { + let access_modes = _.get(this.options, "csi.access_modes", null); + if (access_modes !== null) { + return access_modes; + } + + access_modes = [ + "UNKNOWN", + "SINGLE_NODE_WRITER", + "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 + "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 + "SINGLE_NODE_READER_ONLY", + "MULTI_NODE_READER_ONLY", + "MULTI_NODE_SINGLE_WRITER", + "MULTI_NODE_MULTI_WRITER", + ]; + + if ( + capability.access_type == "block" && + !access_modes.includes("MULTI_NODE_MULTI_WRITER") + ) { + access_modes.push("MULTI_NODE_MULTI_WRITER"); + } + + return access_modes; + } + assertCapabilities(capabilities) { const driver = this; this.ctx.logger.verbose("validating capabilities: %j", capabilities); @@ -126,16 +153,7 @@ class ControllerClientCommonDriver extends CsiBaseDriver { } if ( - ![ - "UNKNOWN", - "SINGLE_NODE_WRITER", - "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 - "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 - "SINGLE_NODE_READER_ONLY", - "MULTI_NODE_READER_ONLY", - "MULTI_NODE_SINGLE_WRITER", - "MULTI_NODE_MULTI_WRITER", - ].includes(capability.access_mode.mode) + !this.getAccessModes(capability).includes(capability.access_mode.mode) ) { message = `invalid access_mode, ${capability.access_mode.mode}`; return false; diff --git a/src/driver/controller-synology/index.js b/src/driver/controller-synology/index.js index 7ce5f18..91619d8 100644 --- a/src/driver/controller-synology/index.js +++ b/src/driver/controller-synology/index.js @@ -208,6 +208,47 @@ class ControllerSynologyDriver extends CsiBaseDriver { return location; } + getAccessModes(capability) { + let access_modes = _.get(this.options, "csi.access_modes", null); + if (access_modes !== null) { + return access_modes; + } + + const driverResourceType = this.getDriverResourceType(); + switch (driverResourceType) { + case "filesystem": + access_modes = [ + "UNKNOWN", + "SINGLE_NODE_WRITER", + "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 + "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 + "SINGLE_NODE_READER_ONLY", + "MULTI_NODE_READER_ONLY", + "MULTI_NODE_SINGLE_WRITER", + "MULTI_NODE_MULTI_WRITER", + ]; + case "volume": + access_modes = [ + "UNKNOWN", + "SINGLE_NODE_WRITER", + "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 + "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 + "SINGLE_NODE_READER_ONLY", + "MULTI_NODE_READER_ONLY", + "MULTI_NODE_SINGLE_WRITER", + ]; + } + + if ( + capability.access_type == "block" && + !access_modes.includes("MULTI_NODE_MULTI_WRITER") + ) { + access_modes.push("MULTI_NODE_MULTI_WRITER"); + } + + return access_modes; + } + assertCapabilities(capabilities) { const driverResourceType = this.getDriverResourceType(); this.ctx.logger.verbose("validating capabilities: %j", capabilities); @@ -233,16 +274,9 @@ class ControllerSynologyDriver extends CsiBaseDriver { } if ( - ![ - "UNKNOWN", - "SINGLE_NODE_WRITER", - "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 - "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 - "SINGLE_NODE_READER_ONLY", - "MULTI_NODE_READER_ONLY", - "MULTI_NODE_SINGLE_WRITER", - "MULTI_NODE_MULTI_WRITER", - ].includes(capability.access_mode.mode) + !this.getAccessModes(capability).includes( + capability.access_mode.mode + ) ) { message = `invalid access_mode, ${capability.access_mode.mode}`; return false; @@ -263,15 +297,9 @@ class ControllerSynologyDriver extends CsiBaseDriver { } if ( - ![ - "UNKNOWN", - "SINGLE_NODE_WRITER", - "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 - "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 - "SINGLE_NODE_READER_ONLY", - "MULTI_NODE_READER_ONLY", - "MULTI_NODE_SINGLE_WRITER", - ].includes(capability.access_mode.mode) + !this.getAccessModes(capability).includes( + capability.access_mode.mode + ) ) { message = `invalid access_mode, ${capability.access_mode.mode}`; return false; diff --git a/src/driver/controller-zfs-local/index.js b/src/driver/controller-zfs-local/index.js index e22b21a..06740da 100644 --- a/src/driver/controller-zfs-local/index.js +++ b/src/driver/controller-zfs-local/index.js @@ -110,7 +110,7 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver { * * @returns Array */ - getAccessModes() { + getAccessModes(capability) { let access_modes = _.get(this.options, "csi.access_modes", null); if (access_modes !== null) { return access_modes; @@ -119,7 +119,7 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver { const driverZfsResourceType = this.getDriverZfsResourceType(); switch (driverZfsResourceType) { case "filesystem": - return [ + access_modes = [ "UNKNOWN", "SINGLE_NODE_WRITER", "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 @@ -130,7 +130,7 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver { "MULTI_NODE_MULTI_WRITER", ]; case "volume": - return [ + access_modes = [ "UNKNOWN", "SINGLE_NODE_WRITER", "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 @@ -141,6 +141,15 @@ class ControllerZfsLocalDriver extends ControllerZfsBaseDriver { "MULTI_NODE_MULTI_WRITER", ]; } + + if ( + capability.access_type == "block" && + !access_modes.includes("MULTI_NODE_MULTI_WRITER") + ) { + access_modes.push("MULTI_NODE_MULTI_WRITER"); + } + + return access_modes; } /** diff --git a/src/driver/controller-zfs/index.js b/src/driver/controller-zfs/index.js index b19bfd6..dcc2f2e 100644 --- a/src/driver/controller-zfs/index.js +++ b/src/driver/controller-zfs/index.js @@ -39,7 +39,7 @@ const MAX_ZVOL_NAME_LENGTH_CACHE_KEY = "controller-zfs:max_zvol_name_length"; * - async setZetabyteCustomOptions(options) // optional * - getDriverZfsResourceType() // return "filesystem" or "volume" * - getFSTypes() // optional - * - getAccessModes() // optional + * - getAccessModes(capability) // optional * - async getAccessibleTopology() // optional * - async createShare(call, datasetName) // return appropriate volume_context for Node operations * - async deleteShare(call, datasetName) // no return expected @@ -207,7 +207,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver { } } - getAccessModes() { + getAccessModes(capability) { let access_modes = _.get(this.options, "csi.access_modes", null); if (access_modes !== null) { return access_modes; @@ -216,7 +216,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver { const driverZfsResourceType = this.getDriverZfsResourceType(); switch (driverZfsResourceType) { case "filesystem": - return [ + access_modes = [ "UNKNOWN", "SINGLE_NODE_WRITER", "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 @@ -227,7 +227,7 @@ class ControllerZfsBaseDriver extends CsiBaseDriver { "MULTI_NODE_MULTI_WRITER", ]; case "volume": - return [ + access_modes = [ "UNKNOWN", "SINGLE_NODE_WRITER", "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 @@ -237,6 +237,15 @@ class ControllerZfsBaseDriver extends CsiBaseDriver { "MULTI_NODE_SINGLE_WRITER", ]; } + + if ( + capability.access_type == "block" && + !access_modes.includes("MULTI_NODE_MULTI_WRITER") + ) { + access_modes.push("MULTI_NODE_MULTI_WRITER"); + } + + return access_modes; } assertCapabilities(capabilities) { @@ -261,7 +270,11 @@ class ControllerZfsBaseDriver extends CsiBaseDriver { return false; } - if (!this.getAccessModes().includes(capability.access_mode.mode)) { + if ( + !this.getAccessModes(capability).includes( + capability.access_mode.mode + ) + ) { message = `invalid access_mode, ${capability.access_mode.mode}`; return false; } @@ -278,7 +291,11 @@ class ControllerZfsBaseDriver extends CsiBaseDriver { } } - if (!this.getAccessModes().includes(capability.access_mode.mode)) { + if ( + !this.getAccessModes(capability).includes( + capability.access_mode.mode + ) + ) { message = `invalid access_mode, ${capability.access_mode.mode}`; return false; } diff --git a/src/driver/freenas/api.js b/src/driver/freenas/api.js index 0a0b969..fd4627b 100644 --- a/src/driver/freenas/api.js +++ b/src/driver/freenas/api.js @@ -2017,6 +2017,47 @@ class FreeNASApiDriver extends CsiBaseDriver { }); } + getAccessModes(capability) { + let access_modes = _.get(this.options, "csi.access_modes", null); + if (access_modes !== null) { + return access_modes; + } + + const driverZfsResourceType = this.getDriverZfsResourceType(); + switch (driverZfsResourceType) { + case "filesystem": + access_modes = [ + "UNKNOWN", + "SINGLE_NODE_WRITER", + "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 + "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 + "SINGLE_NODE_READER_ONLY", + "MULTI_NODE_READER_ONLY", + "MULTI_NODE_SINGLE_WRITER", + "MULTI_NODE_MULTI_WRITER", + ]; + case "volume": + access_modes = [ + "UNKNOWN", + "SINGLE_NODE_WRITER", + "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 + "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 + "SINGLE_NODE_READER_ONLY", + "MULTI_NODE_READER_ONLY", + "MULTI_NODE_SINGLE_WRITER", + ]; + } + + if ( + capability.access_type == "block" && + !access_modes.includes("MULTI_NODE_MULTI_WRITER") + ) { + access_modes.push("MULTI_NODE_MULTI_WRITER"); + } + + return access_modes; + } + assertCapabilities(capabilities) { const driverZfsResourceType = this.getDriverZfsResourceType(); this.ctx.logger.verbose("validating capabilities: %j", capabilities); @@ -2040,16 +2081,9 @@ class FreeNASApiDriver extends CsiBaseDriver { } if ( - ![ - "UNKNOWN", - "SINGLE_NODE_WRITER", - "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 - "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 - "SINGLE_NODE_READER_ONLY", - "MULTI_NODE_READER_ONLY", - "MULTI_NODE_SINGLE_WRITER", - "MULTI_NODE_MULTI_WRITER", - ].includes(capability.access_mode.mode) + !this.getAccessModes(capability).includes( + capability.access_mode.mode + ) ) { message = `invalid access_mode, ${capability.access_mode.mode}`; return false; @@ -2070,15 +2104,9 @@ class FreeNASApiDriver extends CsiBaseDriver { } if ( - ![ - "UNKNOWN", - "SINGLE_NODE_WRITER", - "SINGLE_NODE_SINGLE_WRITER", // added in v1.5.0 - "SINGLE_NODE_MULTI_WRITER", // added in v1.5.0 - "SINGLE_NODE_READER_ONLY", - "MULTI_NODE_READER_ONLY", - "MULTI_NODE_SINGLE_WRITER", - ].includes(capability.access_mode.mode) + !this.getAccessModes(capability).includes( + capability.access_mode.mode + ) ) { message = `invalid access_mode, ${capability.access_mode.mode}`; return false; diff --git a/src/driver/node-manual/index.js b/src/driver/node-manual/index.js index a69f26c..96d6722 100644 --- a/src/driver/node-manual/index.js +++ b/src/driver/node-manual/index.js @@ -165,6 +165,14 @@ class NodeManualDriver extends CsiBaseDriver { "MULTI_NODE_MULTI_WRITER", ]; } + + if ( + capability.access_type == "block" && + !access_modes.includes("MULTI_NODE_MULTI_WRITER") + ) { + access_modes.push("MULTI_NODE_MULTI_WRITER"); + } + if (capability.access_type != "mount") { message = `invalid access_type ${capability.access_type}`; return false; @@ -196,6 +204,14 @@ class NodeManualDriver extends CsiBaseDriver { "MULTI_NODE_SINGLE_WRITER", ]; } + + if ( + capability.access_type == "block" && + !access_modes.includes("MULTI_NODE_MULTI_WRITER") + ) { + access_modes.push("MULTI_NODE_MULTI_WRITER"); + } + if (capability.access_type == "mount") { if ( capability.mount.fs_type && From acae938209973555833c6fd764f0f2c749cc7f4e Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sat, 1 Apr 2023 21:44:41 -0600 Subject: [PATCH 4/7] debug windows csi-sanity mnt/stage dir Signed-off-by: Travis Glenn Hansen --- ci/bin/launch-csi-sanity.ps1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/bin/launch-csi-sanity.ps1 b/ci/bin/launch-csi-sanity.ps1 index ba99971..1f0f08f 100644 --- a/ci/bin/launch-csi-sanity.ps1 +++ b/ci/bin/launch-csi-sanity.ps1 @@ -30,6 +30,8 @@ Write-Output "connecting to: ${endpoint}" Write-Output "failfast: ${env:CSI_SANITY_FAILFAST}" Write-Output "skip: ${env:CSI_SANITY_SKIP}" Write-Output "focus: ${env:CSI_SANITY_FOCUS}" +Write-Output "csi.mountdir: ${env:CSI_SANITY_TEMP_DIR}\mnt" +Write-Output "csi.stagingdir: ${env:CSI_SANITY_TEMP_DIR}\stage" $skip = '"' + ${env:CSI_SANITY_SKIP} + '"' $focus = '"' + ${env:CSI_SANITY_FOCUS} + '"' From da319b1d338e7c518658b89be44a2d1d2ccea862 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sun, 2 Apr 2023 10:34:55 -0600 Subject: [PATCH 5/7] better windows ci launching Signed-off-by: Travis Glenn Hansen --- ci/bin/launch-csi-sanity.ps1 | 33 ++-- package-lock.json | 373 +++++++++++++++++------------------ package.json | 2 +- 3 files changed, 201 insertions(+), 207 deletions(-) diff --git a/ci/bin/launch-csi-sanity.ps1 b/ci/bin/launch-csi-sanity.ps1 index 1f0f08f..35d4318 100644 --- a/ci/bin/launch-csi-sanity.ps1 +++ b/ci/bin/launch-csi-sanity.ps1 @@ -19,12 +19,6 @@ if (! $env:CSI_SANITY_FAILFAST) { $env:CSI_SANITY_FAILFAST = "false" } -$failfast = "" - -if ($env:CSI_SANITY_FAILFAST -eq "true") { - $failfast = "-ginkgo.failFast" -} - Write-Output "launching csi-sanity" Write-Output "connecting to: ${endpoint}" Write-Output "failfast: ${env:CSI_SANITY_FAILFAST}" @@ -33,20 +27,23 @@ Write-Output "focus: ${env:CSI_SANITY_FOCUS}" Write-Output "csi.mountdir: ${env:CSI_SANITY_TEMP_DIR}\mnt" Write-Output "csi.stagingdir: ${env:CSI_SANITY_TEMP_DIR}\stage" -$skip = '"' + ${env:CSI_SANITY_SKIP} + '"' -$focus = '"' + ${env:CSI_SANITY_FOCUS} + '"' +$exe = "csi-sanity.exe" +$exeargs = @() +$xecargs += "-csi.endpoint", "unix://${endpoint}" +$xecargs += "-csi.mountdir", "${env:CSI_SANITY_TEMP_DIR}\mnt" +$xecargs += "-csi.stagingdir", "${env:CSI_SANITY_TEMP_DIR}\stage" +$xecargs += "-csi.testvolumeexpandsize", "2147483648" +$xecargs += "-csi.testvolumesize", "1073741824" +$xecargs += "-ginkgo.skip", "${env:CSI_SANITY_SKIP}" +$xecargs += "-ginkgo.focus", "${env:CSI_SANITY_FOCUS}" -csi-sanity.exe -"csi.endpoint" "unix://${endpoint}" ` - $failfast ` - -"csi.mountdir" "${env:CSI_SANITY_TEMP_DIR}\mnt" ` - -"csi.stagingdir" "${env:CSI_SANITY_TEMP_DIR}\stage" ` - -"csi.testvolumeexpandsize" 2147483648 ` - -"csi.testvolumesize" 1073741824 ` - -"ginkgo.skip" $skip ` - -"ginkgo.focus" $focus +if ($env:CSI_SANITY_FAILFAST -eq "true") { + $exeargs += "-ginkgo.fail-fast" +} -# does not work the same as linux for some reason -# -"ginkgo.skip" "'" + ${env:CSI_SANITY_SKIP} + "'" ` +Write-Output "csi-sanity command: $exe $($exeargs -join ' ')" + +&$exe $exeargs if (-not $?) { $exit_code = $LASTEXITCODE diff --git a/package-lock.json b/package-lock.json index 7cafd98..8143d64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "democratic-csi", - "version": "1.8.1", + "version": "1.8.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "democratic-csi", - "version": "1.8.1", + "version": "1.8.2", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.8.4", @@ -50,15 +50,39 @@ "kuler": "^2.0.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -73,10 +97,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/js": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@grpc/grpc-js": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.11.tgz", - "integrity": "sha512-f/xC+6Z2QKsRJ+VSSFlt4hA5KSRm+PKvMWV8kMPkMgGlFidR6PeIkXrOasIY2roe+WROM6GFQLlgDKfeEZo2YQ==", + "version": "1.8.13", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.13.tgz", + "integrity": "sha512-iY3jsdfbc0ARoCLFvbvUB8optgyb0r1XLPb142u+QtgBcKJYkCIFt3Fd/881KqjLYWjsBJF57N3b8Eop9NDfUA==", "dependencies": { "@grpc/proto-loader": "^0.7.0", "@types/node": ">=12.12.47" @@ -86,9 +119,9 @@ } }, "node_modules/@grpc/proto-loader": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.5.tgz", - "integrity": "sha512-mfcTuMbFowq1wh/Rn5KQl6qb95M21Prej3bewD9dUQMurYGVckGO/Pbe2Ocwto6sD05b/mxZLspvqwx60xO2Rg==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.6.tgz", + "integrity": "sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw==", "dependencies": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", @@ -302,9 +335,9 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "node_modules/@types/node": { - "version": "18.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", - "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==" + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" }, "node_modules/@types/request": { "version": "2.48.8", @@ -803,12 +836,15 @@ } }, "node_modules/eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -819,10 +855,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -843,7 +878,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -871,51 +905,27 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -925,9 +935,9 @@ } }, "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -1110,9 +1120,9 @@ } }, "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1212,9 +1222,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/grapheme-splitter": { "version": "1.0.4", @@ -1413,18 +1423,18 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "node_modules/jose": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.12.0.tgz", - "integrity": "sha512-wW1u3cK81b+SFcHjGC8zw87yuyUweEFe0UJirrXEw1NasW00eF7sZjeG3SLBGz001ozxQ46Y9sofDvhBmWFtXQ==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz", + "integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==", "optional": true, "funding": { "url": "https://github.com/sponsors/panva" } }, "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", "dev": true, "funding": { "type": "opencollective", @@ -1569,9 +1579,9 @@ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "node_modules/lru-cache": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.17.0.tgz", - "integrity": "sha512-zSxlVVwOabhVyTi6E8gYv2cr6bXK+8ifYz5/uyJb9feXX6NACVDwY4p5Ut3WC3Ivo/QhpARHU3iujx2xGAYHbQ==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "engines": { "node": ">=12" } @@ -1615,9 +1625,9 @@ } }, "node_modules/minipass": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.1.tgz", - "integrity": "sha512-KS4CHIsDfOZetnT+u6fwxyFADXLamtkPxkGScmmtTW//MlRrImV+LtbmbJpLQ86Hw7km/utbfEfndhGBrfwvlA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", "engines": { "node": ">=8" } @@ -1952,9 +1962,9 @@ } }, "node_modules/protobufjs": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", - "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", + "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -2037,9 +2047,9 @@ } }, "node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -2049,18 +2059,6 @@ "node": ">= 6" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -2217,9 +2215,9 @@ "optional": true }, "node_modules/safe-stable-stringify": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", - "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "engines": { "node": ">=10" } @@ -2667,9 +2665,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "engines": { "node": ">=10.0.0" }, @@ -2753,15 +2751,30 @@ "kuler": "^2.0.0" } }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -2770,19 +2783,25 @@ "strip-json-comments": "^3.1.1" } }, + "@eslint/js": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", + "dev": true + }, "@grpc/grpc-js": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.11.tgz", - "integrity": "sha512-f/xC+6Z2QKsRJ+VSSFlt4hA5KSRm+PKvMWV8kMPkMgGlFidR6PeIkXrOasIY2roe+WROM6GFQLlgDKfeEZo2YQ==", + "version": "1.8.13", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.13.tgz", + "integrity": "sha512-iY3jsdfbc0ARoCLFvbvUB8optgyb0r1XLPb142u+QtgBcKJYkCIFt3Fd/881KqjLYWjsBJF57N3b8Eop9NDfUA==", "requires": { "@grpc/proto-loader": "^0.7.0", "@types/node": ">=12.12.47" } }, "@grpc/proto-loader": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.5.tgz", - "integrity": "sha512-mfcTuMbFowq1wh/Rn5KQl6qb95M21Prej3bewD9dUQMurYGVckGO/Pbe2Ocwto6sD05b/mxZLspvqwx60xO2Rg==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.6.tgz", + "integrity": "sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw==", "requires": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", @@ -2965,9 +2984,9 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "@types/node": { - "version": "18.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", - "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==" + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" }, "@types/request": { "version": "2.48.8", @@ -3364,12 +3383,15 @@ "dev": true }, "eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -3380,10 +3402,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -3404,7 +3425,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -3420,44 +3440,27 @@ "estraverse": "^5.2.0" } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" } }, "esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -3590,9 +3593,9 @@ } }, "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3667,9 +3670,9 @@ } }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "grapheme-splitter": { "version": "1.0.4", @@ -3814,15 +3817,15 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "jose": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.12.0.tgz", - "integrity": "sha512-wW1u3cK81b+SFcHjGC8zw87yuyUweEFe0UJirrXEw1NasW00eF7sZjeG3SLBGz001ozxQ46Y9sofDvhBmWFtXQ==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz", + "integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==", "optional": true }, "js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", "dev": true }, "js-yaml": { @@ -3943,9 +3946,9 @@ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "lru-cache": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.17.0.tgz", - "integrity": "sha512-zSxlVVwOabhVyTi6E8gYv2cr6bXK+8ifYz5/uyJb9feXX6NACVDwY4p5Ut3WC3Ivo/QhpARHU3iujx2xGAYHbQ==" + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" }, "mime-db": { "version": "1.52.0", @@ -3974,9 +3977,9 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "minipass": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.1.tgz", - "integrity": "sha512-KS4CHIsDfOZetnT+u6fwxyFADXLamtkPxkGScmmtTW//MlRrImV+LtbmbJpLQ86Hw7km/utbfEfndhGBrfwvlA==" + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==" }, "minizlib": { "version": "2.1.2", @@ -4243,9 +4246,9 @@ } }, "protobufjs": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", - "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", + "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -4303,21 +4306,15 @@ } }, "readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -4418,9 +4415,9 @@ "optional": true }, "safe-stable-stringify": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", - "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==" + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" }, "safer-buffer": { "version": "2.1.2", @@ -4753,9 +4750,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "requires": {} }, "y18n": { diff --git a/package.json b/package.json index ab10858..c783534 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "democratic-csi", - "version": "1.8.1", + "version": "1.8.2", "description": "kubernetes csi driver framework", "main": "bin/democratic-csi", "scripts": { From 6b4bec1aab0b77b19d61ac719d916917a1859272 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sun, 2 Apr 2023 10:42:16 -0600 Subject: [PATCH 6/7] correct ci variable name Signed-off-by: Travis Glenn Hansen --- ci/bin/launch-csi-sanity.ps1 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ci/bin/launch-csi-sanity.ps1 b/ci/bin/launch-csi-sanity.ps1 index 35d4318..549f6df 100644 --- a/ci/bin/launch-csi-sanity.ps1 +++ b/ci/bin/launch-csi-sanity.ps1 @@ -29,13 +29,13 @@ Write-Output "csi.stagingdir: ${env:CSI_SANITY_TEMP_DIR}\stage" $exe = "csi-sanity.exe" $exeargs = @() -$xecargs += "-csi.endpoint", "unix://${endpoint}" -$xecargs += "-csi.mountdir", "${env:CSI_SANITY_TEMP_DIR}\mnt" -$xecargs += "-csi.stagingdir", "${env:CSI_SANITY_TEMP_DIR}\stage" -$xecargs += "-csi.testvolumeexpandsize", "2147483648" -$xecargs += "-csi.testvolumesize", "1073741824" -$xecargs += "-ginkgo.skip", "${env:CSI_SANITY_SKIP}" -$xecargs += "-ginkgo.focus", "${env:CSI_SANITY_FOCUS}" +$exeargs += "-csi.endpoint", "unix://${endpoint}" +$exeargs += "-csi.mountdir", "${env:CSI_SANITY_TEMP_DIR}\mnt" +$exeargs += "-csi.stagingdir", "${env:CSI_SANITY_TEMP_DIR}\stage" +$exeargs += "-csi.testvolumeexpandsize", "2147483648" +$exeargs += "-csi.testvolumesize", "1073741824" +$exeargs += "-ginkgo.skip", "${env:CSI_SANITY_SKIP}" +$exeargs += "-ginkgo.focus", "${env:CSI_SANITY_FOCUS}" if ($env:CSI_SANITY_FAILFAST -eq "true") { $exeargs += "-ginkgo.fail-fast" From 24c5996dbd070ef485598fcbea9cc678e6270fda Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sun, 2 Apr 2023 12:09:13 -0600 Subject: [PATCH 7/7] remove old TN versions from CI Signed-off-by: Travis Glenn Hansen --- .github/workflows/main.yml | 73 ++------------------------------------ CHANGELOG.md | 3 +- 2 files changed, 4 insertions(+), 72 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1feec5b..5d4decb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,3 +1,5 @@ +# https://www.truenas.com/software-status/ + name: CI on: @@ -113,39 +115,6 @@ jobs: SYNOLOGY_PASSWORD: ${{ secrets.SANITY_SYNOLOGY_PASSWORD }} SYNOLOGY_VOLUME: ${{ secrets.SANITY_SYNOLOGY_VOLUME }} - # api-based drivers - csi-sanity-truenas-scale-22_02: - needs: - - build-npm-linux-amd64 - strategy: - fail-fast: false - matrix: - config: - - truenas/scale/22.02/scale-iscsi.yaml - - truenas/scale/22.02/scale-nfs.yaml - # 80 char limit - - truenas/scale/22.02/scale-smb.yaml - runs-on: - - self-hosted - - Linux - - X64 - #- csi-sanity-truenas - - csi-sanity-zfs-generic - steps: - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: node-modules-linux-amd64 - - name: csi-sanity - run: | - # run tests - ci/bin/run.sh - env: - TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" - TRUENAS_HOST: ${{ secrets.SANITY_TRUENAS_SCALE_22_02_HOST }} - TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_USERNAME }} - TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_PASSWORD }} - csi-sanity-truenas-scale-22_12: needs: - build-npm-linux-amd64 @@ -178,40 +147,6 @@ jobs: TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_USERNAME }} TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_PASSWORD }} - # ssh-based drivers - csi-sanity-truenas-core-12_0: - needs: - - build-npm-linux-amd64 - strategy: - fail-fast: false - matrix: - config: - # 63 char limit - - truenas/core/12.0/core-iscsi.yaml - - truenas/core/12.0/core-nfs.yaml - # 80 char limit - - truenas/core/12.0/core-smb.yaml - runs-on: - - self-hosted - - Linux - - X64 - #- csi-sanity-truenas - - csi-sanity-zfs-generic - steps: - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: node-modules-linux-amd64 - - name: csi-sanity - run: | - # run tests - ci/bin/run.sh - env: - TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" - TRUENAS_HOST: ${{ secrets.SANITY_TRUENAS_CORE_12_0_HOST }} - TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_USERNAME }} - TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_PASSWORD }} - # ssh-based drivers csi-sanity-truenas-core-13_0: needs: @@ -458,9 +393,7 @@ jobs: - determine-image-tag - csi-sanity-synology-dsm6 - csi-sanity-synology-dsm7 - - csi-sanity-truenas-scale-22_02 - csi-sanity-truenas-scale-22_12 - - csi-sanity-truenas-core-12_0 - csi-sanity-truenas-core-13_0 - csi-sanity-zfs-generic - csi-sanity-client @@ -498,9 +431,7 @@ jobs: needs: - csi-sanity-synology-dsm6 - csi-sanity-synology-dsm7 - - csi-sanity-truenas-scale-22_02 - csi-sanity-truenas-scale-22_12 - - csi-sanity-truenas-core-12_0 - csi-sanity-truenas-core-13_0 - csi-sanity-zfs-generic - csi-sanity-client diff --git a/CHANGELOG.md b/CHANGELOG.md index fde170a..b3212d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,12 @@ # v1.8.2 -Released 2023-04-01 +Released 2023-04-02 - more comprehensive support to manually set `access_modes` - more intelligent handling of `access_modes` when `access_type=block` - https://github.com/ceph/ceph-csi/blob/devel/examples/README.md#how-to-test-rbd-multi_node_multi_writer-block-feature - others? allow this by default +- remove older versions of TrueNAS from ci # v1.8.1