diff --git a/content/docs/deployment/csminstallationwizard/src/static/js/commands.js b/content/docs/deployment/csminstallationwizard/src/static/js/commands.js
index 51694c7ba7..5b1d914548 100644
--- a/content/docs/deployment/csminstallationwizard/src/static/js/commands.js
+++ b/content/docs/deployment/csminstallationwizard/src/static/js/commands.js
@@ -16,10 +16,10 @@
*
*/
var commandTitle = 'Run the following commands to install';
-var commandNote = 'Ensure that the namespaces and secrets are created before installing the helm chart';
+var commandNote = 'Ensure that the namespaces and secrets are created before installing the driver';
var command1 = 'helm repo add dell https://dell.github.io/helm-charts';
var command2 = 'helm install $release-name dell/container-storage-modules -n $namespace --version $version -f values.yaml';
-
+var command3 = 'kubectl create -f values.yaml';
var nodeSelectorNote = 'For the pod to be eligible to run on a node, the node must have the indicated key-value pair as label';
const snapshotNote = 'If Snapshot is enabled, ensure the Snapshot CRDs are installed';
diff --git a/content/docs/deployment/csminstallationwizard/src/static/js/constants.js b/content/docs/deployment/csminstallationwizard/src/static/js/constants.js
index eb9021b818..3a59b1020a 100644
--- a/content/docs/deployment/csminstallationwizard/src/static/js/constants.js
+++ b/content/docs/deployment/csminstallationwizard/src/static/js/constants.js
@@ -26,11 +26,11 @@ const CONSTANTS = {
POWERMAX_NAMESPACE: "powermax",
POWERSCALE_NAMESPACE: "isilon",
UNITY_NAMESPACE: "unity",
+ POWERSTORE_LABEL_VALUE: "csi-powerstore",
VALUES: "values",
TEMP_DIR: "templates",
TEMP_EXT: ".template",
HYPHEN: "-",
- NODE_SELECTOR_TAB: '\n'.padEnd(7, " "),
SLASH: "/",
VERSIONS_DIR: "csm-versions",
CSM: "csm",
@@ -39,9 +39,15 @@ const CONSTANTS = {
HELM: "helm",
OPERATOR: "operator",
CSM_HELM_V170: "1.0.0",
- TAINTS: `
+ CSM_HELM_V180: "1.1.0",
+ HELM_TAINTS: `
- key: "$KEY"
operator: "Exists"
effect: "NoSchedule"
+ `,
+ OPERATOR_TAINTS: `
+ - key: "$KEY"
+ operator: "Exists"
+ effect: "NoSchedule"
`
};
diff --git a/content/docs/deployment/csminstallationwizard/src/static/js/generate-yaml.js b/content/docs/deployment/csminstallationwizard/src/static/js/generate-yaml.js
index 0500b7eb6f..1f047cb092 100644
--- a/content/docs/deployment/csminstallationwizard/src/static/js/generate-yaml.js
+++ b/content/docs/deployment/csminstallationwizard/src/static/js/generate-yaml.js
@@ -47,21 +47,35 @@ function setValues(csmMapValues, CONSTANTS_PARAM) {
DriverValues.volNamePrefix = document.getElementById("vol-name-prefix").value;
DriverValues.snapNamePrefix = document.getElementById("snapshot-prefix").value;
DriverValues.fsGroupPolicy = document.getElementById("fsGroup-Policy").value;
+ DriverValues.driverNamespace = document.getElementById("driver-namespace").value;
+ DriverValues.labelValue = document.getElementById("label-value").value;
+ DriverValues.pollRate = document.getElementById("poll-rate").value;
+ DriverValues.driverPodLabel = document.getElementById("driver-pod-label").value;
+ DriverValues.connectionValidation = $("#connection-validation").prop('checked') ? true : false;
+ DriverValues.volumelessPods = $("#volumeless-pods").prop('checked') ? true : false;
DriverValues.controllerPodsNodeSelector = $("#controller-pods-node-selector").prop('checked') ? true : "";
DriverValues.nodePodsNodeSelector = $("#node-pods-node-selector").prop('checked') ? true : "";
DriverValues.nodeSelectorLabel = document.getElementById("node-selector-label").value || '""';
var taint = document.getElementById("taint").value || '""';
var labels = DriverValues.nodeSelectorLabel.split(":");
- var nodeSelector = CONSTANTS_PARAM.NODE_SELECTOR_TAB + labels[0] + ': "' + labels[1] + '"';
+ var nodeSelector
+ var taints
+ if (document.getElementById("installation-type").value === CONSTANTS_PARAM.OPERATOR) {
+ nodeSelector = '\n'.padEnd(8, " ") + labels[0] + ': "' + labels[1] + '"';
+ taints = CONSTANTS_PARAM.OPERATOR_TAINTS.replace("$KEY", taint).trimEnd();
+ } else {
+ nodeSelector = '\n'.padEnd(7, " ") + labels[0] + ': "' + labels[1] + '"';
+ taints = CONSTANTS_PARAM.HELM_TAINTS.replace("$KEY", taint).trimEnd();
+ }
DriverValues.controllerTolerations = "";
DriverValues.nodeTolerations= "";
if ($("#controller-pods-node-selector").prop('checked') === true) {
DriverValues.controllerPodsNodeSelector = nodeSelector;
- DriverValues.controllerTolerations = CONSTANTS_PARAM.TAINTS.replace("$KEY", taint).trimEnd();
+ DriverValues.controllerTolerations = taints;
}
if ($("#node-pods-node-selector").prop('checked') === true) {
DriverValues.nodePodsNodeSelector = nodeSelector;
- DriverValues.nodeTolerations = CONSTANTS_PARAM.TAINTS.replace("$KEY", taint).trimEnd();
+ DriverValues.nodeTolerations = taints;
}
DriverValues.snapshot = $("#snapshot").prop('checked') ? true : false;
DriverValues.vgsnapshot = $("#vgsnapshot").prop('checked') ? true : false;
@@ -73,6 +87,7 @@ function setValues(csmMapValues, CONSTANTS_PARAM) {
DriverValues.observabilityMetrics = $("#observability-metrics").prop('checked') ? true : false;
DriverValues.authorization = $("#authorization").prop('checked') ? true : false;
DriverValues.resiliency = $("#resiliency").prop('checked') ? true : false;
+ DriverValues.operatorResiliency = $("#operator-resiliency").prop('checked') ? true : false;
DriverValues.storageCapacity = $("#storage-capacity").prop('checked') ? true : false;
DriverValues.authorizationSkipCertValidation = $("#authorization-skip-cert-validation").prop('checked') ? true : false;
DriverValues.authorizationProxyHost = document.getElementById("authorization-proxy-host").value || '""';
@@ -101,6 +116,7 @@ function createYamlString(yamlTpl, yamlTplValues, driverParam, CONSTANTS_PARAM)
yamlTpl = yamlTpl.replaceAll("$VOLUME_NAME_PREFIX", yamlTplValues.volNamePrefix);
yamlTpl = yamlTpl.replaceAll("$SNAP_NAME_PREFIX", yamlTplValues.snapNamePrefix);
yamlTpl = yamlTpl.replaceAll("$FSGROUP_POLICY", yamlTplValues.fsGroupPolicy);
+ yamlTpl = yamlTpl.replaceAll("$NAMESPACE", yamlTplValues.driverNamespace);
yamlTpl = yamlTpl.replaceAll("$CONTROLLER_POD_NODE_SELECTOR", yamlTplValues.controllerPodsNodeSelector);
yamlTpl = yamlTpl.replaceAll("$NODE_POD_NODE_SELECTOR", yamlTplValues.nodePodsNodeSelector);
yamlTpl = yamlTpl.replaceAll("$HEALTH_MONITOR_ENABLED", yamlTplValues.healthMonitor);
@@ -114,6 +130,12 @@ function createYamlString(yamlTpl, yamlTplValues, driverParam, CONSTANTS_PARAM)
yamlTpl = yamlTpl.replaceAll("$AUTHORIZATION_SKIP_CERTIFICATE_VALIDATION", yamlTplValues.authorizationSkipCertValidation);
yamlTpl = yamlTpl.replaceAll("$OBSERVABILITY_ENABLED", yamlTplValues.observability);
yamlTpl = yamlTpl.replaceAll("$RESILIENCY_ENABLED", yamlTplValues.resiliency);
+ yamlTpl = yamlTpl.replaceAll("$OPERATOR_RESILIENCY_ENABLED", yamlTplValues.operatorResiliency);
+ yamlTpl = yamlTpl.replaceAll("$LABEL_VALUE", yamlTplValues.labelValue);
+ yamlTpl = yamlTpl.replaceAll("$POLL_RATE", yamlTplValues.pollRate);
+ yamlTpl = yamlTpl.replaceAll("$DRIVER_POD_LABEL_VALUE", yamlTplValues.driverPodLabel);
+ yamlTpl = yamlTpl.replaceAll("$SKIP_ARRAY_CONNECTION_VALIDATION", yamlTplValues.connectionValidation);
+ yamlTpl = yamlTpl.replaceAll("$IGNORE_VOLUMELESS_PODS", yamlTplValues.volumelessPods);
yamlTpl = yamlTpl.replaceAll("$STORAGE_CAPACITY_ENABLED", yamlTplValues.storageCapacity);
yamlTpl = yamlTpl.replaceAll("$MONITOR_ENABLED", yamlTplValues.monitor);
yamlTpl = yamlTpl.replaceAll("$CERT_SECRET_COUNT", yamlTplValues.certSecretCount);
diff --git a/content/docs/deployment/csminstallationwizard/src/static/js/tests/generate-yaml.test.js b/content/docs/deployment/csminstallationwizard/src/static/js/tests/generate-yaml.test.js
index bf99f2e376..dba45cfce4 100644
--- a/content/docs/deployment/csminstallationwizard/src/static/js/tests/generate-yaml.test.js
+++ b/content/docs/deployment/csminstallationwizard/src/static/js/tests/generate-yaml.test.js
@@ -35,7 +35,6 @@ const CONSTANTS = {
TEMP_DIR: "templates",
TEMP_EXT: ".template",
HYPHEN: "-",
- NODE_SELECTOR_TAB: '\n'.padEnd(7, " "),
SLASH: "/",
VERSIONS_DIR: "csm-versions",
CSM: "csm",
@@ -44,10 +43,16 @@ const CONSTANTS = {
HELM: "helm",
OPERATOR: "operator",
CSM_HELM_V170: "1.0.0",
- TAINTS: `
+ CSM_HELM_V180: "1.1.0",
+ HELM_TAINTS: `
- key: "$KEY"
operator: "Exists"
effect: "NoSchedule"
+ `,
+ OPERATOR_TAINTS: `
+ - key: "$KEY"
+ operator: "Exists"
+ effect: "NoSchedule"
`,
COMMENTED_TAINTS: `
#- key: "node-role.kubernetes.io/control-plane"
@@ -57,64 +62,188 @@ const CONSTANTS = {
};
const testCSMMap = new Map([
- ["csmVersion", "1.6.0"],
+ ["csmVersion", "1.7.0"],
["imageRepository", "dellemc"],
["controllerCount", "1"],
["volNamePrefix", "csivol"],
["snapNamePrefix", "csi-snap"],
["nodeSelectorLabel", "node-role.kubernetes.io/control-plane:"],
- ["driverVersion", "v2.6.0"],
+ ["driverVersion", "v2.7.0"],
]);
describe("GIVEN setValues function", () => {
- test("SHOULD return expected DriverValues", () => {
+ test("SHOULD return expected DriverValues for Helm", () => {
document.body.innerHTML = `
+
-
-
+
+
+
+
+
+
+
`;
const expected = {
- csmVersion: "1.6.0",
- driverVersion: "v2.6.0",
- imageRepository: "dellemc",
- certSecretCount: "0",
- controllerCount: "1",
- volNamePrefix: "csivol",
- snapNamePrefix: "csi-snap",
+ csmVersion: '1.7.0',
+ driverVersion: 'v2.7.0',
+ imageRepository: 'dellemc',
+ monitor: false,
+ certSecretCount: '1',
+ controllerCount: '1',
+ volNamePrefix: 'csivol',
+ snapNamePrefix: 'csi-snap',
+ fsGroupPolicy: 'ReadWriteOnceWithFSType',
+ driverNamespace: '',
controllerPodsNodeSelector: '\n node-role.kubernetes.io/control-plane: ""',
nodePodsNodeSelector: '\n node-role.kubernetes.io/control-plane: ""',
- nodeSelectorLabel: "node-role.kubernetes.io/control-plane:",
- snapshot: true,
+ nodeSelectorLabel: 'node-role.kubernetes.io/control-plane:',
+ controllerTolerations: '\n' +
+ ' - key: "node-role.kubernetes.io/control-plane"\n' +
+ ' operator: "Exists"\n' +
+ ' effect: "NoSchedule"',
+ nodeTolerations: '\n' +
+ ' - key: "node-role.kubernetes.io/control-plane"\n' +
+ ' operator: "Exists"\n' +
+ ' effect: "NoSchedule"',
+ snapshot: false,
vgsnapshot: false,
- resizer: true,
+ resizer: false,
healthMonitor: false,
replication: false,
+ migration: false,
observability: false,
observabilityMetrics: false,
authorization: false,
- authorizationSkipCertValidation: true,
+ resiliency: false,
+ storageCapacity: false,
+ authorizationSkipCertValidation: false,
+ authorizationProxyHost: '""',
certManagerEnabled: false,
- taint: "node-role.kubernetes.io/control-plane"
+ storageArrayId: undefined,
+ storageArrayEndpointUrl: '""',
+ storageArrayBackupEndpointUrl: '""',
+ operatorResiliency: false,
+ labelValue: "",
+ pollRate: '60',
+ driverPodLabel: 'dell-storage',
+ connectionValidation: false,
+ volumelessPods: false,
+ clusterPrefix: undefined,
+ portGroups: undefined,
+ vSphereEnabled: false,
+ vSphereFCPortGroup: undefined,
+ vSphereFCHostName: undefined,
+ vSphereVCenterHost: undefined,
+ vSphereVCenterCredSecret: undefined
};
const received = setValues(testCSMMap, CONSTANTS);
+ expect(expected).toEqual(received);
+ });
- expect(received).toEqual(received);
+ test("SHOULD return expected DriverValues for Operator", () => {
+ document.body.innerHTML = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `;
+
+ const expected = {
+ csmVersion: '1.7.0',
+ driverVersion: 'v2.7.0',
+ imageRepository: 'dellemc',
+ monitor: false,
+ certSecretCount: '1',
+ controllerCount: '1',
+ volNamePrefix: 'csivol',
+ snapNamePrefix: 'csi-snap',
+ fsGroupPolicy: 'ReadWriteOnceWithFSType',
+ driverNamespace: '',
+ controllerPodsNodeSelector: '\n node-role.kubernetes.io/control-plane: ""',
+ nodePodsNodeSelector: '\n node-role.kubernetes.io/control-plane: ""',
+ nodeSelectorLabel: 'node-role.kubernetes.io/control-plane:',
+ controllerTolerations: '\n' +
+ ' - key: "node-role.kubernetes.io/control-plane"\n' +
+ ' operator: "Exists"\n' +
+ ' effect: "NoSchedule"',
+ nodeTolerations: '\n' +
+ ' - key: "node-role.kubernetes.io/control-plane"\n' +
+ ' operator: "Exists"\n' +
+ ' effect: "NoSchedule"',
+ snapshot: false,
+ vgsnapshot: false,
+ resizer: false,
+ healthMonitor: false,
+ replication: false,
+ migration: false,
+ observability: false,
+ observabilityMetrics: false,
+ authorization: false,
+ resiliency: false,
+ storageCapacity: false,
+ authorizationSkipCertValidation: false,
+ authorizationProxyHost: '""',
+ certManagerEnabled: false,
+ storageArrayId: undefined,
+ storageArrayEndpointUrl: '""',
+ storageArrayBackupEndpointUrl: '""',
+ operatorResiliency: false,
+ labelValue: "",
+ pollRate: '60',
+ driverPodLabel: 'dell-storage',
+ connectionValidation: false,
+ volumelessPods: false,
+ clusterPrefix: undefined,
+ portGroups: undefined,
+ vSphereEnabled: false,
+ vSphereFCPortGroup: undefined,
+ vSphereFCHostName: undefined,
+ vSphereVCenterHost: undefined,
+ vSphereVCenterCredSecret: undefined
+ };
+
+ const received = setValues(testCSMMap, CONSTANTS);
+ expect(expected).toEqual(received);
});
test("SHOULD return expected DriverValues for csm version 1.6.0", () => {
@@ -122,6 +251,9 @@ describe("GIVEN setValues function", () => {
+
@@ -136,6 +268,11 @@ describe("GIVEN setValues function", () => {
+
+
+
+
+
`;
const expected = {
@@ -163,7 +300,6 @@ describe("GIVEN setValues function", () => {
};
const received = setValues(testCSMMap, CONSTANTS);
-
expect(received).toEqual(received);
});
});
diff --git a/content/docs/deployment/csminstallationwizard/src/static/js/tests/ui-functions.test.js b/content/docs/deployment/csminstallationwizard/src/static/js/tests/ui-functions.test.js
index 3b20ab6dd1..03f900d78c 100644
--- a/content/docs/deployment/csminstallationwizard/src/static/js/tests/ui-functions.test.js
+++ b/content/docs/deployment/csminstallationwizard/src/static/js/tests/ui-functions.test.js
@@ -19,12 +19,18 @@ const {
onAuthorizationChange,
onObservabilityChange,
onResiliencyChange,
+ onOperatorResiliencyChange,
onSnapshotChange,
onVSphereChange,
onNodeSelectorChange,
onCopyButtonClickHandler,
resetImageRepository,
resetControllerCount,
+ resetVolNamePrefix,
+ resetSnapNamePrefix,
+ resetDriverPodLabel,
+ resetArrayPollRate,
+ resetLabelValue,
resetNodeSelectorLabel,
resetDriverNamespace,
resetTaint,
@@ -45,11 +51,11 @@ const CONSTANTS = {
POWERMAX_NAMESPACE: "powermax",
POWERSCALE_NAMESPACE: "isilon",
UNITY_NAMESPACE: "unity",
+ POWERSTORE_LABEL_VALUE: "csi-powerstore",
VALUES: "values",
TEMP_DIR: "templates",
TEMP_EXT: ".template",
HYPHEN: "-",
- NODE_SELECTOR_TAB: '\n'.padEnd(7, " "),
SLASH: "/",
VERSIONS_DIR: "csm-versions",
CSM: "csm",
@@ -57,7 +63,8 @@ const CONSTANTS = {
PROPERTIES: ".properties",
HELM: "helm",
OPERATOR: "operator",
- CSM_HELM_V170: "1.0.0"
+ CSM_HELM_V170: "1.0.0",
+ CSM_HELM_V180: "1.1.0"
};
describe("GIVEN onAuthorizationChange function", () => {
@@ -132,6 +139,30 @@ describe("GIVEN onResiliencyChange function", () => {
});
});
+describe("GIVEN onOperatorResiliencyChange function", () => {
+ test("SHOULD hide podmon components when option not checked", () => {
+ document.body.innerHTML = `
+
+
+ `;
+
+ onOperatorResiliencyChange();
+
+ expect($("div#podmon-wrapper").css("display")).toEqual("none");
+ });
+
+ test("SHOULD show podmon components when option checked", () => {
+ document.body.innerHTML = `
+
+
+ `;
+
+ onOperatorResiliencyChange();
+
+ expect($("div#podmon-wrapper").css("display")).not.toEqual("none");
+ });
+});
+
describe("GIVEN onSnapshotChange function", () => {
test("SHOULD hide snapshot components when option not checked", () => {
document.body.innerHTML = `
@@ -290,6 +321,82 @@ describe("GIVEN resetControllerCount function", () => {
});
});
+describe("GIVEN resetVolNamePrefix function", () => {
+ const testCSMMap = new Map([
+ ["volNamePrefix", "csivol"]
+ ]);
+
+ test("SHOULD invoke resetVolNamePrefix function", () => {
+ document.body.innerHTML = `
+
+ `;
+
+ resetVolNamePrefix(testCSMMap);
+
+ expect(document.getElementById("vol-name-prefix").value).toEqual("csivol");
+ });
+});
+
+describe("GIVEN resetSnapNamePrefix function", () => {
+ const testCSMMap = new Map([
+ ["snapNamePrefix", "csi-snap"]
+ ]);
+
+ test("SHOULD invoke resetSnapNamePrefix function", () => {
+ document.body.innerHTML = `
+
+ `;
+
+ resetSnapNamePrefix(testCSMMap);
+
+ expect(document.getElementById("snapshot-prefix").value).toEqual("csi-snap");
+ });
+});
+
+describe("GIVEN resetArrayPollRate function", () => {
+ const testCSMMap = new Map([
+ ["pollRate", "60"]
+ ]);
+
+ test("SHOULD invoke resetArrayPollRate function", () => {
+ document.body.innerHTML = `
+
+ `;
+
+ resetArrayPollRate(testCSMMap);
+
+ expect(document.getElementById("poll-rate").value).toEqual("60");
+ });
+});
+
+describe("GIVEN resetLabelValue function", () => {
+ test("SHOULD invoke resetLabelValue function", () => {
+ document.body.innerHTML = `
+
+ `;
+
+ resetLabelValue("csi-powerstore", CONSTANTS);
+
+ expect(document.getElementById("label-value").value).toEqual("csi-powerstore");
+ });
+});
+
+describe("GIVEN resetDriverPodLabel function", () => {
+ const testCSMMap = new Map([
+ ["driverPodLabel", "dell-storage"]
+ ]);
+
+ test("SHOULD invoke resetDriverPodLabel function", () => {
+ document.body.innerHTML = `
+
+ `;
+
+ resetDriverPodLabel(testCSMMap);
+
+ expect(document.getElementById("driver-pod-label").value).toEqual("dell-storage");
+ });
+});
+
describe("GIVEN resetNodeSelectorLabel function", () => {
const testCSMMap = new Map([
["nodeSelectorLabel", "node-role.kubernetes.io/control-plane:"]
@@ -312,7 +419,7 @@ describe("GIVEN resetDriverNamespace function", () => {
`;
- resetDriverNamespace("csi-powerstore");
+ resetDriverNamespace("csi-powerstore", CONSTANTS);
expect(document.getElementById("driver-namespace").value).toEqual("csi-powerstore");
});
@@ -344,55 +451,110 @@ describe("GIVEN displayModules function", () => {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
`;
- test("SHOULD show expected components for csi-powerstore", () => {
+ test("SHOULD show expected components for helm csi-powerstore", () => {
document.body.innerHTML = testHtml;
- displayModules("powerstore", CONSTANTS);
+ displayModules("helm", "powerstore", CONSTANTS);
expect($(".vgsnapshot").css("display")).toEqual("block");
expect($(".authorization").css("display")).toEqual("none");
expect($(".observability").css("display")).toEqual("block");
+ expect($(".resiliency").css("display")).toEqual("block");
+ expect($(".storage-capacity").css("display")).toEqual("block");
+ });
+
+ test("SHOULD show expected components for operator csi-powerstore", () => {
+ document.body.innerHTML = testHtml;
+
+ displayModules("operator", "powerstore", CONSTANTS);
+
+ expect($(".vgsnapshot").css("display")).toEqual("none");
+ expect($(".authorization").css("display")).toEqual("none");
+ expect($(".observability").css("display")).toEqual("none");
+ expect($(".replication-mod").css("display")).toEqual("none");
+ expect($(".image-repository").css("display")).toEqual("none");
+ expect($(".cert-manager").css("display")).toEqual("none");
+ expect($(".resizer").css("display")).toEqual("none");
+ expect($(".vol-name-prefix").css("display")).toEqual("none");
+ expect($(".snapshot-feature").css("display")).toEqual("none");
+ expect($(".fsGroupPolicy").css("display")).toEqual("block");
+ expect($(".resiliency").css("display")).toEqual("none");
+ expect($(".storage-capacity").css("display")).toEqual("block");
});
test("SHOULD show expected components for csi-powerscale", () => {
document.body.innerHTML = testHtml;
- displayModules("powerscale", CONSTANTS);
+ displayModules("helm", "powerscale", CONSTANTS);
expect($(".authorization").css("display")).toEqual("block");
expect($(".observability").css("display")).toEqual("block");
+ expect($(".vgsnapshot").css("display")).toEqual("none");
+ expect($(".storage-capacity").css("display")).toEqual("block");
+ expect($(".fsGroupPolicy").css("display")).toEqual("block");
+ expect($(".resiliency").css("display")).toEqual("block");
+ expect($(".cert-secret-count-wrapper").css("display")).toEqual("block");
});
test("SHOULD show expected components for csi-powermax", () => {
document.body.innerHTML = testHtml;
- displayModules("powermax", CONSTANTS);
+ displayModules("helm", "powermax", CONSTANTS);
expect($(".vgsnapshot").css("display")).toEqual("none");
expect($(".authorization").css("display")).toEqual("block");
expect($(".observability").css("display")).toEqual("block");
+ expect($(".storageArrays").css("display")).toEqual("block");
+ expect($(".cluster-prefix").css("display")).toEqual("block");
+ expect($(".port-groups").css("display")).toEqual("block");
+ expect($(".migration").css("display")).toEqual("block");
+ expect($(".vSphere").css("display")).toEqual("block");
});
test("SHOULD show expected components for csi-powerflex", () => {
document.body.innerHTML = testHtml;
- displayModules("powerflex", CONSTANTS);
+ displayModules("helm", "powerflex", CONSTANTS);
expect($(".vgsnapshot").css("display")).toEqual("block");
expect($(".authorization").css("display")).toEqual("block");
expect($(".observability").css("display")).toEqual("block");
+ expect($(".monitor").css("display")).toEqual("block");
+ expect($(".resiliency").css("display")).toEqual("block");
+ expect($(".cert-secret-count-wrapper").css("display")).toEqual("block");
});
test("SHOULD show expected components for csi-unity", () => {
document.body.innerHTML = testHtml;
- displayModules("unity", CONSTANTS);
+ displayModules("helm", "unity", CONSTANTS);
expect($(".vgsnapshot").css("display")).toEqual("none");
expect($(".authorization").css("display")).toEqual("none");
expect($(".observability").css("display")).toEqual("none");
+ expect($(".replication-mod").css("display")).toEqual("none");
+ expect($(".cert-manager").css("display")).toEqual("none");
+ expect($(".resiliency").css("display")).toEqual("block");
+ expect($(".fsGroupPolicy").css("display")).toEqual("block");
});
});
@@ -417,10 +579,12 @@ describe("GIVEN displayCommands function", () => {
const commandNoteValue = "Ensure that the namespaces and secrets are created before installing the helm chart";
const command1Value = "helm repo add dell https://dell.github.io/helm-charts";
const command2Value = "helm install $release-name dell/container-storage-modules -n $namespace --version $version -f values.yaml";
+ const command3Value = "kubectl create -f values.yaml";
test("SHOULD show expected commands", () => {
document.body.innerHTML = `
+
@@ -431,7 +595,7 @@ describe("GIVEN displayCommands function", () => {
`;
- displayCommands("powerstore", commandTitleValue, commandNoteValue, command1Value, command2Value, CONSTANTS);
+ displayCommands("powerstore", commandTitleValue, commandNoteValue, command1Value, command2Value, command3Value, CONSTANTS);
expect($("#command-text-area").css("display")).toEqual("block");
expect($("#command-title").text()).toEqual("Run the following commands to install");
@@ -440,6 +604,27 @@ describe("GIVEN displayCommands function", () => {
expect($("#command2").text()).toEqual("helm install powerstore dell/container-storage-modules -n csi-powerstore --version 1.0.0 -f values.yaml");
});
+ test("SHOULD show expected commands", () => {
+ document.body.innerHTML = `
+
+
+
+
+
+ `;
+
+ displayCommands("powerstore", commandTitleValue, commandNoteValue, command1Value, command2Value, command3Value, CONSTANTS);
+
+ expect($("#command-text-area").css("display")).toEqual("block");
+ expect($("#command-title").text()).toEqual("Run the following commands to install");
+ expect($("#command-note").text()).toEqual("Ensure that the namespaces and secrets are created before installing the helm chart");
+ expect($("#command1").text()).toEqual("kubectl create -f values.yaml");
+ });
});
describe("SHOULD Disable/Enable Generate YAML button based on validation of input fields", () => {
diff --git a/content/docs/deployment/csminstallationwizard/src/static/js/tests/utility.test.js b/content/docs/deployment/csminstallationwizard/src/static/js/tests/utility.test.js
index 2befa46b36..8e5d734d1a 100644
--- a/content/docs/deployment/csminstallationwizard/src/static/js/tests/utility.test.js
+++ b/content/docs/deployment/csminstallationwizard/src/static/js/tests/utility.test.js
@@ -273,6 +273,8 @@ describe("GIVEN setDefaultValues function", () => {
+
+
`;
const testCSMMap = new Map([
@@ -282,7 +284,9 @@ describe("GIVEN setDefaultValues function", () => {
["volNamePrefix", "csivol"],
["snapNamePrefix", "csi-snap"],
["certSecretCount", "1"],
- ["taint", "node-role.kubernetes.io/control-plane"]
+ ["taint", "node-role.kubernetes.io/control-plane"],
+ ["pollRate", "60"],
+ ["driverPodLabel", "dell-storage"]
]);
setDefaultValues("csmVersion=1.7.0\r\nimageRepository=dellemc\r\ncontrollerCount=2\r\ncertSecretCount=1", testCSMMap);
@@ -294,6 +298,8 @@ describe("GIVEN setDefaultValues function", () => {
expect(document.getElementById("snapshot-prefix").value).toEqual("csi-snap");
expect(document.getElementById("cert-secret-count").value).toEqual("1");
expect(document.getElementById("taint").value).toEqual("node-role.kubernetes.io/control-plane");
+ expect(document.getElementById("poll-rate").value).toEqual("60");
+ expect(document.getElementById("driver-pod-label").value).toEqual("dell-storage");
});
});
diff --git a/content/docs/deployment/csminstallationwizard/src/static/js/ui-functions.js b/content/docs/deployment/csminstallationwizard/src/static/js/ui-functions.js
index 745eb33a43..9dbbbd98ef 100644
--- a/content/docs/deployment/csminstallationwizard/src/static/js/ui-functions.js
+++ b/content/docs/deployment/csminstallationwizard/src/static/js/ui-functions.js
@@ -24,12 +24,23 @@ const setupTooltipStyle = () => {
[...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
};
+function onInstallationTypeChange(){
+ driver = document.getElementById("array").value
+ driver === "" ? $("#main").hide() : $("#main").show();
+ installationType = document.getElementById("installation-type").value
+ displayModules(installationType, driver, CONSTANTS)
+ $("#command-text-area").hide();
+ onOperatorResiliencyChange();
+ loadTemplate(document.getElementById("array").value, document.getElementById("installation-type").value, document.getElementById("csm-version").value);
+}
+
function onArrayChange() {
$('#array').on('change', function() {
$("#command-text-area").hide();
driver = $(this).val();
driver === "" ? $("#main").hide() : $("#main").show();
- displayModules(driver, CONSTANTS)
+ installationType = document.getElementById("installation-type").value
+ displayModules(installationType, driver, CONSTANTS)
loadTemplate(document.getElementById("array").value, document.getElementById("installation-type").value, document.getElementById("csm-version").value);
setDefaultValues(defaultValues, csmMap);
$(".namespace").show();
@@ -69,6 +80,8 @@ function onResiliencyChange(podmonNoteValue) {
}
}
+const onOperatorResiliencyChange = () => $("#operator-resiliency").prop('checked') === true ? $('div#podmon-wrapper').show() : $('div#podmon-wrapper').hide();
+
function onSnapshotChange(snapshotNoteValue, driverName, CONSTANTS_PARAM) {
if ($("#snapshot").prop('checked') === true) {
$('div#snapshot-note-wrapper').show();
@@ -103,7 +116,7 @@ function onNodeSelectorChange(nodeSelectorNoteValue, csmMapValue) {
const onCSMVersionChange = () => {
document.getElementById("csm-version").value !== "" ? loadTemplate(document.getElementById("array").value, document.getElementById("installation-type").value, document.getElementById("csm-version").value) : null;
- displayModules(driver, CONSTANTS);
+ displayModules(installationType, driver, CONSTANTS);
onObservabilityChange();
onAuthorizationChange();
};
@@ -141,8 +154,28 @@ const resetNodeSelectorLabel = csmMapValue => {
document.getElementById("node-selector-label").value = String(csmMapValue.get("nodeSelectorLabel"));
}
-const resetDriverNamespace = driverValue => {
- document.getElementById("driver-namespace").value = driverValue;
+const resetDriverNamespace = (driverValue, CONSTANTS_PARAM) => {
+ if (driverValue === CONSTANTS_PARAM.POWERSTORE) {
+ document.getElementById("driver-namespace").value = CONSTANTS_PARAM.POWERSTORE_NAMESPACE;
+ } else {
+ document.getElementById("driver-namespace").value = driverValue;
+ }
+}
+
+const resetArrayPollRate = csmMapValue => {
+ document.getElementById("poll-rate").value = String(csmMapValue.get("pollRate"));
+}
+
+const resetLabelValue = (driverValue, CONSTANTS_PARAM) => {
+ if (driverValue === CONSTANTS_PARAM.POWERSTORE) {
+ document.getElementById("label-value").value = CONSTANTS_PARAM.POWERSTORE_LABEL_VALUE;
+ } else {
+ document.getElementById("label-value").value = driverValue;
+ }
+}
+
+const resetDriverPodLabel = csmMapValue => {
+ document.getElementById("driver-pod-label").value = String(csmMapValue.get("driverPodLabel"));
}
const resetTaint = csmMapValue => {
@@ -153,13 +186,13 @@ const downloadFile = (validateFormFunc, generateYamlFileFunc, displayCommandsFun
var link = document.getElementById('download-file');
link.href = generateYamlFileFunc(template);
link.style.display = 'inline-block';
- displayCommandsFunc(releaseName, commandTitle, commandNote, command1, command2, CONSTANTS_PARAM)
+ displayCommandsFunc(releaseName, commandTitle, commandNote, command1, command2, command3, CONSTANTS_PARAM)
validateInputFunc(validateFormFunc, CONSTANTS_PARAM)
return true;
}
-function displayModules(driverName, CONSTANTS_PARAM) {
+function displayModules(installationType, driverName, CONSTANTS_PARAM) {
$(".vgsnapshot").show();
$(".authorization").show();
$(".observability").show();
@@ -178,7 +211,10 @@ function displayModules(driverName, CONSTANTS_PARAM) {
$(".vol-name-prefix").show();
$("div#snap-prefix").show();
$(".fsGroupPolicy").hide();
-
+ $(".image-repository").show();
+ $(".resizer").show();
+ $(".snapshot-feature").show();
+ $(".resiliency-operator").hide();
switch (driverName) {
case CONSTANTS_PARAM.POWERSTORE:
$(".authorization").hide();
@@ -186,6 +222,20 @@ function displayModules(driverName, CONSTANTS_PARAM) {
$(".storage-capacity").show();
$(".resiliency").show();
document.getElementById("driver-namespace").value = CONSTANTS_PARAM.POWERSTORE_NAMESPACE;
+ if (installationType === 'operator'){
+ $(".resiliency").hide();
+ $(".resiliency-operator").show();
+ $(".observability").hide();
+ $(".replication-mod").hide();
+ $(".image-repository").hide();
+ $(".cert-manager").hide();
+ $(".vgsnapshot").hide();
+ $(".resizer").hide();
+ $(".snapshot-feature").hide();
+ $(".vol-name-prefix").hide();
+ $(".fsGroupPolicy").show();
+ document.getElementById("label-value").value = CONSTANTS_PARAM.POWERSTORE_LABEL_VALUE;
+ }
break;
case CONSTANTS_PARAM.POWERSCALE:
$(".cert-secret-count-wrapper").show();
@@ -224,26 +274,38 @@ function displayModules(driverName, CONSTANTS_PARAM) {
}
}
-function displayCommands(releaseNameValue, commandTitleValue, commandNoteValue, command1Value, command2Value, CONSTANTS) {
+function displayCommands(releaseNameValue, commandTitleValue, commandNoteValue, command1Value, command2Value, command3Value, CONSTANTS) {
driverNamespace = document.getElementById("driver-namespace").value;
csmVersion = document.getElementById("csm-version").value;
+ installationType = document.getElementById("installation-type").value
var helmChartVersion;
switch (csmVersion) {
case "1.7.0":
helmChartVersion = CONSTANTS.CSM_HELM_V170;
break;
+ case "1.8.0":
+ helmChartVersion = CONSTANTS.CSM_HELM_V180;
+ break;
default:
- helmChartVersion = CONSTANTS.CSM_HELM_V170;
+ helmChartVersion = CONSTANTS.CSM_HELM_V180;
break;
}
$("#command-text-area").show();
$("#reverseProxyNote").hide();
$("#command-title").html(commandTitleValue);
$("#command-note").show();
- $("#command1").html(command1Value);
$("#command-note").html(commandNoteValue);
- var command2 = command2Value.replace("$release-name", releaseNameValue).replace("$namespace", driverNamespace).replace("$version", helmChartVersion);
- $("#command2").html(command2);
+
+ if (installationType === 'helm'){
+ $("#command1").html(command1Value);
+
+ $("#command2-wrapper").show();
+ var command2 = command2Value.replace("$release-name", releaseNameValue).replace("$namespace", driverNamespace).replace("$version", helmChartVersion);
+ $("#command2").html(command2);
+ } else {
+ $("#command1").html(command3Value);
+ $("#command2-wrapper").hide();
+ }
if (document.getElementById("array").value === CONSTANTS.POWERMAX) {
$("#reverseProxyNote").show();
}
@@ -285,6 +347,7 @@ if (typeof exports !== 'undefined') {
onAuthorizationChange,
onObservabilityChange,
onResiliencyChange,
+ onOperatorResiliencyChange,
onSnapshotChange,
onVSphereChange,
onNodeSelectorChange,
@@ -293,6 +356,9 @@ if (typeof exports !== 'undefined') {
resetControllerCount,
resetNodeSelectorLabel,
resetDriverNamespace,
+ resetArrayPollRate,
+ resetLabelValue,
+ resetDriverPodLabel,
resetTaint,
downloadFile,
displayModules,
diff --git a/content/docs/deployment/csminstallationwizard/src/static/js/utility.js b/content/docs/deployment/csminstallationwizard/src/static/js/utility.js
index 53699653b7..8de9b593dc 100644
--- a/content/docs/deployment/csminstallationwizard/src/static/js/utility.js
+++ b/content/docs/deployment/csminstallationwizard/src/static/js/utility.js
@@ -102,6 +102,8 @@ function setDefaultValues(defaultValuesParam, csmMapValues) {
document.getElementById("snapshot-prefix").value = csmMapValues.get("snapNamePrefix");
document.getElementById("cert-secret-count").value = csmMapValues.get("certSecretCount");
document.getElementById("taint").value = csmMapValues.get("taint");
+ document.getElementById("poll-rate").value = csmMapValues.get("pollRate");
+ document.getElementById("driver-pod-label").value = csmMapValues.get("driverPodLabel");
}
diff --git a/content/docs/deployment/csminstallationwizard/src/templates/helm/csm-1.8.0-values.template b/content/docs/deployment/csminstallationwizard/src/templates/helm/csm-1.8.0-values.template
new file mode 100644
index 0000000000..6a4cb16530
--- /dev/null
+++ b/content/docs/deployment/csminstallationwizard/src/templates/helm/csm-1.8.0-values.template
@@ -0,0 +1,444 @@
+## K8S/DRIVER ATTRIBUTES
+##########################################
+## K8S/CSI-PowerStore ATTRIBUTES
+##########################################
+csi-powerstore:
+ enabled: $POWERSTORE_ENABLED
+ version: v2.8.0
+ images:
+ driverRepository: $IMAGE_REPOSITORY
+ ## Controller ATTRIBUTES
+ controller:
+ controllerCount: $CONTROLLER_COUNT
+ volumeNamePrefix: $VOLUME_NAME_PREFIX
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+ nodeSelector: $CONTROLLER_POD_NODE_SELECTOR
+ tolerations: $CONTROLLER_TOLERATIONS
+ replication:
+ enabled: $REPLICATION_ENABLED
+ image: dellemc/dell-csi-replicator:v1.5.0
+ vgsnapshot:
+ enabled: $VG_SNAPSHOT_ENABLED
+ image: dellemc/csi-volumegroup-snapshotter:v1.2.0
+ metadataretriever: dellemc/csi-metadata-retriever:v1.4.0
+ snapshot:
+ enabled: $SNAPSHOT_ENABLED
+ snapNamePrefix: $SNAP_NAME_PREFIX
+ resizer:
+ enabled: $RESIZER_ENABLED
+ ## Node ATTRIBUTES
+ node:
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+ nodeSelector: $NODE_POD_NODE_SELECTOR
+ tolerations: $NODE_TOLERATIONS
+ # Uncomment if CSM for Resiliency and CSI Driver pods monitor are enabled
+ # - key: "offline.vxflexos.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "vxflexos.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.unity.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "unity.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.isilon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "isilon.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.powerstore.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "powerstore.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ storageCapacity:
+ enabled: $STORAGE_CAPACITY_ENABLED
+ podmon:
+ enabled: $RESILIENCY_ENABLED
+ image: dellemc/podmon:v1.6.0
+ #controller:
+ # args:
+ # - "--csisock=unix:/var/run/csi/csi.sock"
+ # - "--labelvalue=csi-powerstore"
+ # - "--arrayConnectivityPollRate=60"
+ # - "--driverPath=csi-powerstore.dellemc.com"
+ # - "--mode=controller"
+ # - "--skipArrayConnectionValidation=false"
+ # - "--driver-config-params=/powerstore-config-params/driver-config-params.yaml"
+ # - "--driverPodLabelValue=dell-storage"
+ # - "--ignoreVolumelessPods=false"
+
+ #node:
+ # args:
+ # - "--csisock=unix:/var/lib/kubelet/plugins/csi-powerstore.dellemc.com/csi_sock"
+ # - "--labelvalue=csi-powerstore"
+ # - "--arrayConnectivityPollRate=60"
+ # - "--driverPath=csi-powerstore.dellemc.com"
+ # - "--mode=node"
+ # - "--leaderelection=false"
+ # - "--driver-config-params=/powerstore-config-params/driver-config-params.yaml"
+ # - "--driverPodLabelValue=dell-storage"
+ # - "--ignoreVolumelessPods=false"
+
+## K8S/CSI-PowerMax ATTRIBUTES
+##########################################
+csi-powermax:
+ enabled: $POWERMAX_ENABLED
+ global:
+ storageArrays:
+ - storageArrayId: "$POWERMAX_STORAGE_ARRAY_ID"
+ endpoint: $POWERMAX_STORAGE_ARRAY_ENDPOINT_URL
+ backupEndpoint: $POWERMAX_STORAGE_ARRAY_BACKUP_ENDPOINT_URL
+ managementServers:
+ - endpoint: $POWERMAX_MANAGEMENT_SERVERS_ENDPOINT_URL
+ version: v2.8.0
+ images:
+ driverRepository: $IMAGE_REPOSITORY
+ clusterPrefix: $POWERMAX_CLUSTER_PREFIX
+ portGroups: "$POWERMAX_PORT_GROUPS"
+ controller:
+ controllerCount: $CONTROLLER_COUNT
+ volumeNamePrefix: $VOLUME_NAME_PREFIX
+ snapshot:
+ enabled: $SNAPSHOT_ENABLED
+ snapNamePrefix: $SNAP_NAME_PREFIX
+ resizer:
+ enabled: $RESIZER_ENABLED
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+ nodeSelector: $CONTROLLER_POD_NODE_SELECTOR
+ tolerations: $CONTROLLER_TOLERATIONS
+ node:
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+ nodeSelector: $NODE_POD_NODE_SELECTOR
+ tolerations: $NODE_TOLERATIONS
+ - key: "node.kubernetes.io/memory-pressure"
+ operator: "Exists"
+ effect: "NoExecute"
+ - key: "node.kubernetes.io/disk-pressure"
+ operator: "Exists"
+ effect: "NoExecute"
+ - key: "node.kubernetes.io/network-unavailable"
+ operator: "Exists"
+ effect: "NoExecute"
+ csireverseproxy:
+ image: dellemc/csipowermax-reverseproxy:v2.6.0
+ deployAsSidecar: true
+ replication:
+ enabled: $REPLICATION_ENABLED
+ image: dellemc/dell-csi-replicator:v1.5.0
+ migration:
+ enabled: $MIGRATION_ENABLED
+ image: dellemc/dell-csi-migrator:v1.1.1
+ nodeRescanSidecarImage: dellemc/dell-csi-node-rescanner:v1.0.1
+ authorization:
+ enabled: $AUTHORIZATION_ENABLED
+ sidecarProxyImage: dellemc/csm-authorization-sidecar:v1.7.0
+ proxyHost: $AUTHORIZATION_PROXY_HOST
+ skipCertificateValidation: $AUTHORIZATION_SKIP_CERTIFICATE_VALIDATION
+ vSphere:
+ enabled: $VSPHERE_ENABLED
+ fcPortGroup: "$VSPHERE_FC_PORT_GROUP"
+ fcHostName: "$VSPHERE_FC_HOST_NAME"
+ vCenterHost: "$VSPHERE_VCENTER_HOST"
+ vCenterCredSecret: $VSPHERE_VCENTER_CRED_SECRET
+
+## K8S/CSI-PowerFlex ATTRIBUTES
+##########################################
+csi-vxflexos:
+ enabled: $POWERFLEX_ENABLED
+ version: v2.8.0
+ images:
+ driverRepository: $IMAGE_REPOSITORY
+ powerflexSdc: dellemc/sdc:3.6.0.6
+ certSecretCount: $CERT_SECRET_COUNT
+ controller:
+ replication:
+ enabled: $REPLICATION_ENABLED
+ image: dellemc/dell-csi-replicator:v1.5.0
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+ controllerCount: $CONTROLLER_COUNT
+ volumeNamePrefix: $VOLUME_NAME_PREFIX
+ snapshot:
+ enabled: $SNAPSHOT_ENABLED
+ resizer:
+ enabled: $RESIZER_ENABLED
+ nodeSelector: $CONTROLLER_POD_NODE_SELECTOR
+ tolerations: $CONTROLLER_TOLERATIONS
+ node:
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+ nodeSelector: $NODE_POD_NODE_SELECTOR
+ tolerations: $NODE_TOLERATIONS
+ # Uncomment if CSM for Resiliency and CSI Driver pods monitor is enabled
+ # - key: "offline.vxflexos.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "vxflexos.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.unity.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "unity.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.isilon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "isilon.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ monitor:
+ enabled: $MONITOR_ENABLED
+ vgsnapshotter:
+ enabled: $VG_SNAPSHOT_ENABLED
+ image: dellemc/csi-volumegroup-snapshotter:v1.2.0
+ podmon:
+ enabled: $RESILIENCY_ENABLED
+ image: dellemc/podmon:v1.6.0
+ # controller:
+ # args:
+ # - "--csisock=unix:/var/run/csi/csi.sock"
+ # - "--labelvalue=csi-vxflexos"
+ # - "--mode=controller"
+ # - "--skipArrayConnectionValidation=false"
+ # - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml"
+ # - "--driverPodLabelValue=dell-storage"
+ # - "--ignoreVolumelessPods=false"
+ # node:
+ # args:
+ # - "--csisock=unix:/var/lib/kubelet/plugins/vxflexos.emc.dell.com/csi_sock"
+ # - "--labelvalue=csi-vxflexos"
+ # - "--mode=node"
+ # - "--leaderelection=false"
+ # - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml"
+ # - "--driverPodLabelValue=dell-storage"
+ # - "--ignoreVolumelessPods=false"
+ authorization:
+ enabled: $AUTHORIZATION_ENABLED
+ sidecarProxyImage: dellemc/csm-authorization-sidecar:v1.7.0
+ proxyHost: $AUTHORIZATION_PROXY_HOST
+ skipCertificateValidation: $AUTHORIZATION_SKIP_CERTIFICATE_VALIDATION
+
+## K8S/CSI-PowerScale ATTRIBUTES
+##########################################
+csi-isilon:
+ enabled: $POWERSCALE_ENABLED
+ version: "v2.8.0"
+ certSecretCount: $CERT_SECRET_COUNT
+
+ allowedNetworks: []
+
+ verbose: 1
+
+ enableCustomTopology: false
+
+ fsGroupPolicy: $FSGROUP_POLICY
+
+ storageCapacity:
+ enabled: $STORAGE_CAPACITY_ENABLED
+
+ controller:
+ controllerCount: $CONTROLLER_COUNT
+ volumeNamePrefix: $VOLUME_NAME_PREFIX
+
+ replication:
+ enabled: $REPLICATION_ENABLED
+ image: dellemc/dell-csi-replicator:v1.5.0
+
+ snapshot:
+ enabled: $SNAPSHOT_ENABLED
+ snapNamePrefix: $SNAP_NAME_PREFIX
+
+ resizer:
+ enabled: $RESIZER_ENABLED
+
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+
+ nodeSelector: $CONTROLLER_POD_NODE_SELECTOR
+ tolerations: $CONTROLLER_TOLERATIONS
+ node:
+ nodeSelector: $NODE_POD_NODE_SELECTOR
+ tolerations: $NODE_TOLERATIONS
+ # - key: "node.kubernetes.io/memory-pressure"
+ # operator: "Exists"
+ # effect: "NoExecute"
+ # - key: "node.kubernetes.io/disk-pressure"
+ # operator: "Exists"
+ # effect: "NoExecute"
+ # - key: "node.kubernetes.io/network-unavailable"
+ # operator: "Exists"
+ # effect: "NoExecute"
+ # Uncomment if CSM for Resiliency and CSI Driver pods monitor are enabled
+ # - key: "offline.vxflexos.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "vxflexos.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.unity.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "unity.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.isilon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "isilon.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+
+ authorization:
+ enabled: $AUTHORIZATION_ENABLED
+ sidecarProxyImage: dellemc/csm-authorization-sidecar:v1.7.0
+ proxyHost: $AUTHORIZATION_PROXY_HOST
+ skipCertificateValidation: $AUTHORIZATION_SKIP_CERTIFICATE_VALIDATION
+
+ # Enable this feature only after contact support for additional information
+ podmon:
+ enabled: $RESILIENCY_ENABLED
+ image: dellemc/podmon:v1.6.0
+ #controller:
+ # args:
+ # - "--csisock=unix:/var/run/csi/csi.sock"
+ # - "--labelvalue=csi-isilon"
+ # - "--arrayConnectivityPollRate=60"
+ # - "--driverPath=csi-isilon.dellemc.com"
+ # - "--mode=controller"
+ # - "--skipArrayConnectionValidation=false"
+ # - "--driver-config-params=/csi-isilon-config-params/driver-config-params.yaml"
+ # - "--driverPodLabelValue=dell-storage"
+ # - "--ignoreVolumelessPods=false"
+
+ #node:
+ # args:
+ # - "--csisock=unix:/var/lib/kubelet/plugins/csi-isilon/csi_sock"
+ # - "--labelvalue=csi-isilon"
+ # - "--arrayConnectivityPollRate=60"
+ # - "--driverPath=csi-isilon.dellemc.com"
+ # - "--mode=node"
+ # - "--leaderelection=false"
+ # - "--driver-config-params=/csi-isilon-config-params/driver-config-params.yaml"
+ # - "--driverPodLabelValue=dell-storage"
+ # - "--ignoreVolumelessPods=false"
+
+ images:
+ driverRepository: $IMAGE_REPOSITORY
+
+## K8S/CSI-Unity ATTRIBUTES
+##########################################
+csi-unity:
+ enabled: $UNITY_ENABLED
+ version: v2.8.0
+ images:
+ driverRepository: $IMAGE_REPOSITORY
+ certSecretCount: $CERT_SECRET_COUNT
+ fsGroupPolicy: $FSGROUP_POLICY
+ controller:
+ controllerCount: $CONTROLLER_COUNT
+ volumeNamePrefix: $VOLUME_NAME_PREFIX
+ snapshot:
+ enabled: $SNAPSHOT_ENABLED
+ snapNamePrefix: $SNAP_NAME_PREFIX
+ resizer:
+ enabled: $RESIZER_ENABLED
+ nodeSelector: $CONTROLLER_POD_NODE_SELECTOR
+ tolerations: $CONTROLLER_TOLERATIONS
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+ node:
+ healthMonitor:
+ enabled: $HEALTH_MONITOR_ENABLED
+ nodeSelector: $NODE_POD_NODE_SELECTOR
+ tolerations: $NODE_TOLERATIONS
+ # - key: "node.kubernetes.io/memory-pressure"
+ # operator: "Exists"
+ # effect: "NoExecute"
+ # - key: "node.kubernetes.io/disk-pressure"
+ # operator: "Exists"
+ # effect: "NoExecute"
+ # - key: "node.kubernetes.io/network-unavailable"
+ # operator: "Exists"
+ # effect: "NoExecute"
+ # Uncomment if CSM for Resiliency and CSI Driver pods monitor are enabled
+ # - key: "offline.vxflexos.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "vxflexos.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.unity.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "unity.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "offline.isilon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ # - key: "isilon.podmon.storage.dell.com"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ podmon:
+ enabled: $RESILIENCY_ENABLED
+ image: dellemc/podmon:v1.6.0
+ controller:
+ args:
+ - "--csisock=unix:/var/run/csi/csi.sock"
+ - "--labelvalue=csi-unity"
+ - "--driverPath=csi-unity.dellemc.com"
+ - "--mode=controller"
+ - "--skipArrayConnectionValidation=false"
+ - "--driver-config-params=/unity-config/driver-config-params.yaml"
+ - "--driverPodLabelValue=dell-storage"
+ - "--ignoreVolumelessPods=false"
+ node:
+ args:
+ - "--csisock=unix:/var/lib/kubelet/plugins/unity.emc.dell.com/csi_sock"
+ - "--labelvalue=csi-unity"
+ - "--driverPath=csi-unity.dellemc.com"
+ - "--mode=node"
+ - "--leaderelection=false"
+ - "--driver-config-params=/unity-config/driver-config-params.yaml"
+ - "--driverPodLabelValue=dell-storage"
+ - "--ignoreVolumelessPods=false"
+
+## K8S/Replication Module ATTRIBUTES
+##########################################
+csm-replication:
+ enabled: $REPLICATION_ENABLED
+
+## K8S/Observability Module ATTRIBUTES
+##########################################
+karavi-observability:
+ enabled: $OBSERVABILITY_ENABLED
+ karaviMetricsPowerstore:
+ enabled: $POWERSTORE_OBSERVABILITY_METRICS_ENABLED
+ karaviMetricsPowerMax:
+ enabled: $POWERMAX_OBSERVABILITY_METRICS_ENABLED
+ karaviMetricsPowerflex:
+ enabled: $POWERFLEX_OBSERVABILITY_METRICS_ENABLED
+ karaviMetricsPowerscale:
+ enabled: $POWERSCALE_OBSERVABILITY_METRICS_ENABLED
+ cert-manager:
+ enabled: $OBSERVABILITY_CERT_MANAGER_ENABLED
+
+## K8S/Cert-manager ATTRIBUTES
+##########################################
+cert-manager:
+ enabled: $CERT_MANAGER_ENABLED
diff --git a/content/docs/deployment/csminstallationwizard/src/templates/operator/csm-powerstore-1.7.0.template b/content/docs/deployment/csminstallationwizard/src/templates/operator/csm-powerstore-1.7.0.template
new file mode 100644
index 0000000000..1a90bdad1b
--- /dev/null
+++ b/content/docs/deployment/csminstallationwizard/src/templates/operator/csm-powerstore-1.7.0.template
@@ -0,0 +1,194 @@
+#
+#
+# Copyright © 2023 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+apiVersion: storage.dell.com/v1
+kind: ContainerStorageModule
+metadata:
+ name: powerstore
+ namespace: $NAMESPACE
+spec:
+ driver:
+ csiDriverType: "powerstore"
+ csiDriverSpec:
+ # fsGroupPolicy: Defines if the underlying volume supports changing ownership and permission of the volume before being mounted.
+ # Allowed values: ReadWriteOnceWithFSType, File , None
+ # Default value: ReadWriteOnceWithFSType
+ fSGroupPolicy: "$FSGROUP_POLICY"
+ # storageCapacity: Helps the scheduler to schedule the pod on a node satisfying the topology constraints, only if the requested capacity is available on the storage array
+ # Allowed values:
+ # true: enable storage capacity tracking
+ # false: disable storage capacity tracking
+ storageCapacity: $STORAGE_CAPACITY_ENABLED
+ # Config version for CSI PowerStore v2.7.0 driver
+ configVersion: v2.7.0
+ # authSecret: This is the secret used to validate the default PowerStore secret used for installation
+ # Allowed values:
-config
+ # For example: If the metadataName is set to powerstore, authSecret value should be set to powerstore-config
+ authSecret: powerstore-config
+ # Controller count
+ replicas: $CONTROLLER_COUNT
+ dnsPolicy: ClusterFirstWithHostNet
+ forceUpdate: false
+ forceRemoveDriver: true
+ common:
+ # Image for CSI PowerStore driver v2.7.0
+ image: "dellemc/csi-powerstore:v2.7.0"
+ imagePullPolicy: IfNotPresent
+ envs:
+ - name: X_CSI_POWERSTORE_NODE_NAME_PREFIX
+ value: "csi-node"
+ - name: X_CSI_FC_PORTS_FILTER_FILE_PATH
+ value: "/etc/fc-ports-filter"
+ - name: KUBELET_CONFIG_DIR
+ value: /var/lib/kubelet
+ - name: CSI_LOG_LEVEL
+ value: debug
+
+ sideCars:
+ # health monitor is disabled by default, refer to driver documentation before enabling it
+ - name: external-health-monitor
+ enabled: $HEALTH_MONITOR_ENABLED
+ args: ["--monitor-interval=60s"]
+
+ # Uncomment the following to configure how often external-provisioner polls the driver to detect changed capacity
+ # Configure only when the storageCapacity is set as "true"
+ # Allowed values: 1m,2m,3m,...,10m,...,60m etc. Default value: 5m
+ #- name: provisioner
+ # args: ["--capacity-poll-interval=5m"]
+
+ controller:
+ envs:
+ # X_CSI_NFS_ACLS: enables setting permissions on NFS mount directory
+ # This value will be the default value if a storage class and array config in secret
+ # do not contain the NFS ACL (nfsAcls) parameter specified
+ # Permissions can be specified in two formats:
+ # 1) Unix mode (NFSv3)
+ # 2) NFSv4 ACLs (NFSv4)
+ # NFSv4 ACLs are supported on NFSv4 share only.
+ # Allowed values:
+ # 1) Unix mode: valid octal mode number
+ # Examples: "0777", "777", "0755"
+ # 2) NFSv4 acls: valid NFSv4 acls, seperated by comma
+ # Examples: "A::OWNER@:RWX,A::GROUP@:RWX", "A::OWNER@:rxtncy"
+ # Optional: true
+ # Default value: "0777"
+ # nfsAcls: "0777"
+ - name: X_CSI_NFS_ACLS
+ value: "0777"
+ # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from Controller plugin - volume condition.
+ # Install the 'external-health-monitor' sidecar accordingly.
+ # Allowed values:
+ # true: enable checking of health condition of CSI volumes
+ # false: disable checking of health condition of CSI volumes
+ # Default value: false
+ - name: X_CSI_HEALTH_MONITOR_ENABLED
+ value: "$HEALTH_MONITOR_ENABLED"
+ # X_CSI_POWERSTORE_EXTERNAL_ACCESS: Allows to specify additional entries for hostAccess of NFS volumes. Both single IP address and subnet are valid entries.
+ # Allowed Values: x.x.x.x/xx or x.x.x.x
+ # Default Value:
+ - name: X_CSI_POWERSTORE_EXTERNAL_ACCESS
+ value:
+
+ # nodeSelector: Define node selection constraints for controller pods.
+ # For the pod to be eligible to run on a node, the node must have each
+ # of the indicated key-value pairs as labels.
+ # Leave as blank to consider all nodes
+ # Allowed values: map of key-value pairs
+ # Default value: None
+ nodeSelector:$NODE_POD_NODE_SELECTOR
+ # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
+ # node-role.kubernetes.io/control-plane: ""
+
+ # tolerations: Define tolerations for the controllers, if required.
+ # Leave as blank to install controller on worker nodes
+ # Default value: None
+ tolerations:$NODE_TOLERATIONS
+ # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
+ # - key: "node-role.kubernetes.io/control-plane"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ node:
+ envs:
+ # Set to "true" to enable ISCSI CHAP Authentication
+ # CHAP password will be autogenerated by driver
+ - name: "X_CSI_POWERSTORE_ENABLE_CHAP"
+ value: "false"
+ # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from node plugin - volume usage
+ # Allowed values:
+ # true: enable checking of health condition of CSI volumes
+ # false: disable checking of health condition of CSI volumes
+ # Default value: false
+ - name: X_CSI_HEALTH_MONITOR_ENABLED
+ value: "$HEALTH_MONITOR_ENABLED"
+
+ # nodeSelector: Define node selection constraints for node pods.
+ # For the pod to be eligible to run on a node, the node must have each
+ # of the indicated key-value pairs as labels.
+ # Leave as blank to consider all nodes
+ # Allowed values: map of key-value pairs
+ # Default value: None
+ nodeSelector:$NODE_POD_NODE_SELECTOR
+ # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
+ # node-role.kubernetes.io/control-plane: ""
+
+ # tolerations: Define tolerations for the controllers, if required.
+ # Leave as blank to install controller on worker nodes
+ # Default value: None
+ tolerations:$NODE_TOLERATIONS
+ # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
+ # - key: "node-role.kubernetes.io/control-plane"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+
+ modules:
+ - name: resiliency
+ # enabled: Enable/Disable Resiliency feature
+ # Allowed values:
+ # true: enable Resiliency feature(deploy podmon sidecar)
+ # false: disable Resiliency feature(do not deploy podmon sidecar)
+ # Default value: false
+ enabled: $OPERATOR_RESILIENCY_ENABLED
+ configVersion: v1.6.0
+ components:
+ - name: podmon-controller
+ args:
+ - "--labelvalue=$LABEL_VALUE"
+ - "--arrayConnectivityPollRate=$POLL_RATE"
+ - "--skipArrayConnectionValidation=$SKIP_ARRAY_CONNECTION_VALIDATION"
+ - "--driverPodLabelValue=$DRIVER_POD_LABEL_VALUE"
+ - "--ignoreVolumelessPods=$IGNORE_VOLUMELESS_PODS"
+ # Below 4 args should not be modified.
+ - "--csisock=unix:/var/run/csi/csi.sock"
+ - "--mode=controller"
+ - "--driver-config-params=/powerstore-config-params/driver-config-params.yaml"
+ - "--driverPath=csi-powerstore.dellemc.com"
+ - name: podmon-node
+ envs:
+ # podmonAPIPort: Defines the port to be used within the kubernetes cluster
+ # Allowed values: Any valid and free port (string)
+ # Default value: 8083
+ - name: "X_CSI_PODMON_API_PORT"
+ value: "8083"
+ args:
+ - "--labelvalue=$LABEL_VALUE"
+ - "--arrayConnectivityPollRate=$POLL_RATE"
+ - "--leaderelection=$SKIP_ARRAY_CONNECTION_VALIDATION"
+ - "--driverPodLabelValue=$DRIVER_POD_LABEL_VALUE"
+ - "--ignoreVolumelessPods=$IGNORE_VOLUMELESS_PODS"
+ # Below 4 args should not be modified.
+ - "--csisock=unix:/var/lib/kubelet/plugins/csi-powerstore.dellemc.com/csi_sock"
+ - "--mode=node"
+ - "--driver-config-params=/powerstore-config-params/driver-config-params.yaml"
+ - "--driverPath=csi-powerstore.dellemc.com"
\ No newline at end of file
diff --git a/content/docs/deployment/csminstallationwizard/src/templates/operator/csm-powerstore-1.8.0.template b/content/docs/deployment/csminstallationwizard/src/templates/operator/csm-powerstore-1.8.0.template
new file mode 100644
index 0000000000..8b5c19d764
--- /dev/null
+++ b/content/docs/deployment/csminstallationwizard/src/templates/operator/csm-powerstore-1.8.0.template
@@ -0,0 +1,194 @@
+#
+#
+# Copyright © 2023 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+apiVersion: storage.dell.com/v1
+kind: ContainerStorageModule
+metadata:
+ name: powerstore
+ namespace: $NAMESPACE
+spec:
+ driver:
+ csiDriverType: "powerstore"
+ csiDriverSpec:
+ # fsGroupPolicy: Defines if the underlying volume supports changing ownership and permission of the volume before being mounted.
+ # Allowed values: ReadWriteOnceWithFSType, File , None
+ # Default value: ReadWriteOnceWithFSType
+ fSGroupPolicy: "$FSGROUP_POLICY"
+ # storageCapacity: Helps the scheduler to schedule the pod on a node satisfying the topology constraints, only if the requested capacity is available on the storage array
+ # Allowed values:
+ # true: enable storage capacity tracking
+ # false: disable storage capacity tracking
+ storageCapacity: $STORAGE_CAPACITY_ENABLED
+ # Config version for CSI PowerStore v2.8.0 driver
+ configVersion: v2.8.0
+ # authSecret: This is the secret used to validate the default PowerStore secret used for installation
+ # Allowed values: -config
+ # For example: If the metadataName is set to powerstore, authSecret value should be set to powerstore-config
+ authSecret: powerstore-config
+ # Controller count
+ replicas: $CONTROLLER_COUNT
+ dnsPolicy: ClusterFirstWithHostNet
+ forceUpdate: false
+ forceRemoveDriver: true
+ common:
+ # Image for CSI PowerStore driver v2.8.0
+ image: "dellemc/csi-powerstore:v2.8.0"
+ imagePullPolicy: IfNotPresent
+ envs:
+ - name: X_CSI_POWERSTORE_NODE_NAME_PREFIX
+ value: "csi-node"
+ - name: X_CSI_FC_PORTS_FILTER_FILE_PATH
+ value: "/etc/fc-ports-filter"
+ - name: KUBELET_CONFIG_DIR
+ value: /var/lib/kubelet
+ - name: CSI_LOG_LEVEL
+ value: debug
+
+ sideCars:
+ # health monitor is disabled by default, refer to driver documentation before enabling it
+ - name: external-health-monitor
+ enabled: $HEALTH_MONITOR_ENABLED
+ args: ["--monitor-interval=60s"]
+
+ # Uncomment the following to configure how often external-provisioner polls the driver to detect changed capacity
+ # Configure only when the storageCapacity is set as "true"
+ # Allowed values: 1m,2m,3m,...,10m,...,60m etc. Default value: 5m
+ #- name: provisioner
+ # args: ["--capacity-poll-interval=5m"]
+
+ controller:
+ envs:
+ # X_CSI_NFS_ACLS: enables setting permissions on NFS mount directory
+ # This value will be the default value if a storage class and array config in secret
+ # do not contain the NFS ACL (nfsAcls) parameter specified
+ # Permissions can be specified in two formats:
+ # 1) Unix mode (NFSv3)
+ # 2) NFSv4 ACLs (NFSv4)
+ # NFSv4 ACLs are supported on NFSv4 share only.
+ # Allowed values:
+ # 1) Unix mode: valid octal mode number
+ # Examples: "0777", "777", "0755"
+ # 2) NFSv4 acls: valid NFSv4 acls, seperated by comma
+ # Examples: "A::OWNER@:RWX,A::GROUP@:RWX", "A::OWNER@:rxtncy"
+ # Optional: true
+ # Default value: "0777"
+ # nfsAcls: "0777"
+ - name: X_CSI_NFS_ACLS
+ value: "0777"
+ # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from Controller plugin - volume condition.
+ # Install the 'external-health-monitor' sidecar accordingly.
+ # Allowed values:
+ # true: enable checking of health condition of CSI volumes
+ # false: disable checking of health condition of CSI volumes
+ # Default value: false
+ - name: X_CSI_HEALTH_MONITOR_ENABLED
+ value: "$HEALTH_MONITOR_ENABLED"
+ # X_CSI_POWERSTORE_EXTERNAL_ACCESS: Allows to specify additional entries for hostAccess of NFS volumes. Both single IP address and subnet are valid entries.
+ # Allowed Values: x.x.x.x/xx or x.x.x.x
+ # Default Value:
+ - name: X_CSI_POWERSTORE_EXTERNAL_ACCESS
+ value:
+
+ # nodeSelector: Define node selection constraints for controller pods.
+ # For the pod to be eligible to run on a node, the node must have each
+ # of the indicated key-value pairs as labels.
+ # Leave as blank to consider all nodes
+ # Allowed values: map of key-value pairs
+ # Default value: None
+ nodeSelector:$NODE_POD_NODE_SELECTOR
+ # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
+ # node-role.kubernetes.io/control-plane: ""
+
+ # tolerations: Define tolerations for the controllers, if required.
+ # Leave as blank to install controller on worker nodes
+ # Default value: None
+ tolerations:$NODE_TOLERATIONS
+ # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
+ # - key: "node-role.kubernetes.io/control-plane"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+ node:
+ envs:
+ # Set to "true" to enable ISCSI CHAP Authentication
+ # CHAP password will be autogenerated by driver
+ - name: "X_CSI_POWERSTORE_ENABLE_CHAP"
+ value: "false"
+ # X_CSI_HEALTH_MONITOR_ENABLED: Enable/Disable health monitor of CSI volumes from node plugin - volume usage
+ # Allowed values:
+ # true: enable checking of health condition of CSI volumes
+ # false: disable checking of health condition of CSI volumes
+ # Default value: false
+ - name: X_CSI_HEALTH_MONITOR_ENABLED
+ value: "$HEALTH_MONITOR_ENABLED"
+
+ # nodeSelector: Define node selection constraints for node pods.
+ # For the pod to be eligible to run on a node, the node must have each
+ # of the indicated key-value pairs as labels.
+ # Leave as blank to consider all nodes
+ # Allowed values: map of key-value pairs
+ # Default value: None
+ nodeSelector:$NODE_POD_NODE_SELECTOR
+ # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
+ # node-role.kubernetes.io/control-plane: ""
+
+ # tolerations: Define tolerations for the controllers, if required.
+ # Leave as blank to install controller on worker nodes
+ # Default value: None
+ tolerations:$NODE_TOLERATIONS
+ # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
+ # - key: "node-role.kubernetes.io/control-plane"
+ # operator: "Exists"
+ # effect: "NoSchedule"
+
+ modules:
+ - name: resiliency
+ # enabled: Enable/Disable Resiliency feature
+ # Allowed values:
+ # true: enable Resiliency feature(deploy podmon sidecar)
+ # false: disable Resiliency feature(do not deploy podmon sidecar)
+ # Default value: false
+ enabled: $OPERATOR_RESILIENCY_ENABLED
+ configVersion: v1.6.0
+ components:
+ - name: podmon-controller
+ args:
+ - "--labelvalue=$LABEL_VALUE"
+ - "--arrayConnectivityPollRate=$POLL_RATE"
+ - "--skipArrayConnectionValidation=$SKIP_ARRAY_CONNECTION_VALIDATION"
+ - "--driverPodLabelValue=$DRIVER_POD_LABEL_VALUE"
+ - "--ignoreVolumelessPods=$IGNORE_VOLUMELESS_PODS"
+ # Below 4 args should not be modified.
+ - "--csisock=unix:/var/run/csi/csi.sock"
+ - "--mode=controller"
+ - "--driver-config-params=/powerstore-config-params/driver-config-params.yaml"
+ - "--driverPath=csi-powerstore.dellemc.com"
+ - name: podmon-node
+ envs:
+ # podmonAPIPort: Defines the port to be used within the kubernetes cluster
+ # Allowed values: Any valid and free port (string)
+ # Default value: 8083
+ - name: "X_CSI_PODMON_API_PORT"
+ value: "8083"
+ args:
+ - "--labelvalue=$LABEL_VALUE"
+ - "--arrayConnectivityPollRate=$POLL_RATE"
+ - "--leaderelection=$SKIP_ARRAY_CONNECTION_VALIDATION"
+ - "--driverPodLabelValue=$DRIVER_POD_LABEL_VALUE"
+ - "--ignoreVolumelessPods=$IGNORE_VOLUMELESS_PODS"
+ # Below 4 args should not be modified.
+ - "--csisock=unix:/var/lib/kubelet/plugins/csi-powerstore.dellemc.com/csi_sock"
+ - "--mode=node"
+ - "--driver-config-params=/powerstore-config-params/driver-config-params.yaml"
+ - "--driverPath=csi-powerstore.dellemc.com"
\ No newline at end of file