Skip to content

Commit

Permalink
Powermax operator support wizard (#754)
Browse files Browse the repository at this point in the history
  • Loading branch information
boyamurthy authored Aug 21, 2023
1 parent d280aec commit 791583f
Show file tree
Hide file tree
Showing 11 changed files with 1,071 additions and 15 deletions.
93 changes: 92 additions & 1 deletion content/docs/deployment/csminstallationwizard/src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,50 @@
</div>
</div>

<div class="row mb-4 observability-operator">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="observability-operator" value="" onchange="onObservabilityOperatorChange()">
<label for="observability-operator" class="form-check-label ms-2 text-dark" data-bs-toggle="tooltip" data-bs-placement="right" title="Enable/Disable Observability module">Observability</label>
</div>
<div class="row mt-3 observability child-level-one" id="observability-operator-metrics-wrapper">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="observability-operator-metrics" value="">
<label for="observability-operator-metrics" class="form-check-label ms-2 text-dark" data-bs-toggle="tooltip" data-bs-placement="right" title="Enable/Disable Observability Metrics">Observability Metrics</label>
</div>
</div>
<div class="row mt-3 observability child-level-one" id="observability-operator-topology-wrapper">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="observability-operator-topology" value="">
<label for="observability-operator-topology" class="form-check-label ms-2 text-dark" data-bs-toggle="tooltip" data-bs-placement="right" title="Enable/Disable Observability Metrics">Observability Topology</label>
</div>
</div>
<div class="row mt-3 observability child-level-one" id="observability-operator-otel-wrapper">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="observability-operator-otel" value="">
<label for="observability-operator-otel" class="form-check-label ms-2 text-dark" data-bs-toggle="tooltip" data-bs-placement="right" title="Enable/Disable Observability Otel collector">Observability Otel Collector</label>
</div>
</div>
</div>


<div class="row mb-4 replication-mod">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="replication" value="">
<input class="form-check-input" type="checkbox" id="replication" value="" onchange="onReplicationChange(replicationNote)">
<label for="replication" class="form-check-label ms-2 text-dark" data-bs-toggle="tooltip" data-bs-placement="right" title="Enable/Disable Replication module">Replication</label>
</div>
<div class="was-validated row mt-3 child-level-one replication-operator">
<label for="target-cluster-id" class="col-sm-3 col-form-label" data-bs-toggle="tooltip" data-bs-placement="right" title="List of cluster IDs of the targets clusters">Target Cluster ID</label>
<div class="col-sm-9"></div>
<div class="col-sm-2">
<input class="form-control input-lg" type="text" id="target-cluster-id" placeholder="target-cluster-id" required>
</div>
</div>
<div class="row child-level-one replication-operator" id="replication-operator-note-wrapper">
<div class="mt-3 py-2 note">
<i class="icon dds__icon dds__icon--alert-info-cir"></i>
<span class="h6" id="replication-operator-note"></span>
</div>
</div>
</div>

<div class="row mb-4 resiliency col-sm-11">
Expand Down Expand Up @@ -341,6 +380,26 @@
</div>
</div>

<div class="managedArrays mb-4">
<div class="row mb-4">
<label for="manage-array-id" class="col-sm-2 col-form-label" data-bs-toggle="tooltip" data-bs-placement="right" title="This refers to PowerMax Symmetrix ID" style="width: 140px;">Managed Array Id</label>
<div class="col-sm-9"></div>
<div class="was-validated col-sm-3">
<input class="form-control input-lg" type="text" id="manage-array-id" placeholder="Example: 000000000001" oninput="validateInput(validateForm, CONSTANTS)" required>
</div>
</div>

<div class="row mb-4">
<label for="manage-array-endpoint-url" class="col-sm-3 col-form-label" data-bs-toggle="tooltip" data-bs-placement="right" title="This refers to the URL of the Unisphere server managing storageArrayId." style="width: 225px;">Managed Array Endpoint URL</label>
<div class="row">
<div class="was-validated col-sm-3">
<input class="form-control input-lg" type="text" id="manage-array-endpoint-url" placeholder="Example: https://primary-1.unisphe.re:8443" oninput="validateInput(validateForm, CONSTANTS)" required>
</div>
</div>
</div>
</div>


<div class="row mb-3 powermax-csi-reverse-proxy">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="powermax-csi-reverse-proxy" value="" checked>
Expand Down Expand Up @@ -368,6 +427,38 @@
</div>
</div>

<div class="transport-protocol">
<div class="row mb-4">
<label for="transport-protocol" class="col-sm-2 col-form-label" data-bs-toggle="tooltip" data-bs-placement="right" title="Define the Transport Protocol for the driver to use to provision to nodes. Optional" style="width: 110px;">Transport Protocol</label>
<div class="col-sm-9"></div>
<div class="col-sm-3">
<input class="form-control input-lg" type="text" id="transport-protocol" placeholder="Example: ISCSI ,FC or FIBRE " required>
</div>
</div>
</div>

<div class="row mb-4 iscsichap">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="iscsichap" value="" >
<label for="iscsichap" class="form-check-label ms-2 text-dark" data-bs-toggle="tooltip" data-bs-placement="right" title="Enable/Disable ISCSI CHAPfeature">iSCSI CHAP</label>
</div>
</div>

<div class="row mb-4 col-sm-11 topology">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="topology" value="" onchange="onTopologyChange(topologyNote)">
<label for="topology" class="form-check-label ms-2 text-dark" data-bs-toggle="tooltip" data-bs-placement="right" title="Enable/Disable Node Topology feature">Node Topology</label>
</div>
<div class="row child-level-one" id="topology-note-wrapper">
<div class="mt-3 py-2 note">
<i class="icon dds__icon dds__icon--alert-info-cir"></i>
<span class="h6" id="topology-note"></span>
</div>
</div>
</div>



<div class="row mb-4 vSphere">
<div class="col-sm-12">
<input class="form-check-input" type="checkbox" id="vSphere" value="" onchange="onVSphereChange()" oninput="validateInput(validateForm, CONSTANTS)">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,5 @@ const certmanagerNote = 'If cert-manager is enabled, ensure the cert-manager CRD
const veleroNote = 'If Velero is enabled, please add the respective credentials and configurations in the YAML file.';
const podmonNote = 'Uncomment tolerations under node property, if CSM for Resiliency and CSI Driver pods monitor are enabled in the generated YAML';
const authorizationNote = 'Only the Authorization sidecar is enabled by the CSM Installation Wizard. The Proxy Server has to be installed and configured separately';
const topologyNote = 'If Node Topology is enabled, make sure topology configmap is created';
const replicationNote = 'If Replication is enabled, ensure the Replication CRDs are installed and secrets are created. Enter the target cluster ID or "self" in case of stretched/single cluster';
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const CONSTANTS = {
POWERSCALE_NAMESPACE: "isilon",
UNITY_NAMESPACE: "unity",
POWERSTORE_LABEL_VALUE: "csi-powerstore",
POWERMAX_LABEL_VALUE: "csi-powermax",
POWERSCALE_LABEL_VALUE: "csi-isilon",
VALUES: "values",
TEMP_DIR: "templates",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@
var template = "";
var version = "";
var observabilityEnabled = false;
var observabilityOperatorEnabled = false;
var authorizationEnabled = false;
var replicationEnabled = false;


function generateYamlFile(tmpl) {
var yamlFile = null;
setMap(version);
Expand All @@ -46,6 +48,7 @@ function setValues(csmMapValues, CONSTANTS_PARAM) {
DriverValues.controllerCount = document.getElementById("controller-count").value;
DriverValues.volNamePrefix = document.getElementById("vol-name-prefix").value;
DriverValues.snapNamePrefix = document.getElementById("snapshot-prefix").value;
DriverValues.targetClusterId = document.getElementById("target-cluster-id").value;
DriverValues.fsGroupPolicy = document.getElementById("fsGroup-Policy").value;
DriverValues.driverNamespace = document.getElementById("driver-namespace").value;
DriverValues.labelValue = document.getElementById("label-value").value;
Expand Down Expand Up @@ -82,27 +85,37 @@ function setValues(csmMapValues, CONSTANTS_PARAM) {
DriverValues.snapshot = $("#snapshot").prop('checked') ? true : false;
DriverValues.vgsnapshot = $("#vgsnapshot").prop('checked') ? true : false;
DriverValues.resizer = $("#resizer").prop('checked') ? true : false;
DriverValues.iscsichap = $("#iscsichap").prop('checked') ? true : false;
DriverValues.healthMonitor = $("#health-monitor").prop('checked') ? true : false;
DriverValues.replication = $("#replication").prop('checked') ? true : false;
DriverValues.migration = $("#migration").prop('checked') ? true : false;
DriverValues.observability = $("#observability").prop('checked') ? true : false;
DriverValues.observabilityMetrics = $("#observability-metrics").prop('checked') ? true : false;
DriverValues.observabilityOperator = $("#observability-operator").prop('checked') ? true : false;
DriverValues.observabilityOperatorMetrics = $("#observability-operator-metrics").prop('checked') ? true : false;
DriverValues.observabilityOperatorTopology = $("#observability-operator-topology").prop('checked') ? true : false;
DriverValues.observabilityOperatorOtel = $("#observability-operator-otel").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 || '""';
DriverValues.certManagerEnabled = $("#certmanager").prop('checked') ? true : false;
DriverValues.topologyEnabled = $("#topology").prop('checked') ? true : false;
observabilityEnabled = DriverValues.observability;
observabilityOperatorEnabled = DriverValues.observabilityOperator;
authorizationEnabled = DriverValues.authorization;
replicationEnabled = DriverValues.replication;

DriverValues.storageArrayId = $("#storage-array-id").val();
DriverValues.storageArrayEndpointUrl = $("#storage-array-endpoint-url").val() || '""';
DriverValues.storageArrayBackupEndpointUrl = $("#storage-array-backup-endpoint-url").val() || '""';
DriverValues.manageArrayId = $("#manage-array-id").val() || '""';
DriverValues.manageArrayEndpointUrl = $("#manage-array-endpoint-url").val() || '""';
DriverValues.clusterPrefix = $("#cluster-prefix").val();
DriverValues.portGroups = $("#port-groups").val();
DriverValues.transportProtocol = $("#transport-protocol").val();

DriverValues.vSphereEnabled = $("#vSphere").prop('checked') ? true : false;
DriverValues.vSphereFCPortGroup = $("#vSphere-fc-port-group").val();
Expand All @@ -117,6 +130,7 @@ function createYamlString(yamlTpl, yamlTplValues, driverParam, CONSTANTS_PARAM)
yamlTpl = yamlTpl.replaceAll("$CONTROLLER_COUNT", yamlTplValues.controllerCount);
yamlTpl = yamlTpl.replaceAll("$VOLUME_NAME_PREFIX", yamlTplValues.volNamePrefix);
yamlTpl = yamlTpl.replaceAll("$SNAP_NAME_PREFIX", yamlTplValues.snapNamePrefix);
yamlTpl = yamlTpl.replaceAll("$TARGET_CLUSTER_ID", yamlTplValues.targetClusterId);
yamlTpl = yamlTpl.replaceAll("$FSGROUP_POLICY", yamlTplValues.fsGroupPolicy);
yamlTpl = yamlTpl.replaceAll("$NAMESPACE", yamlTplValues.driverNamespace);
yamlTpl = yamlTpl.replaceAll("$CONTROLLER_POD_NODE_SELECTOR", yamlTplValues.controllerPodsNodeSelector);
Expand All @@ -125,12 +139,15 @@ function createYamlString(yamlTpl, yamlTplValues, driverParam, CONSTANTS_PARAM)
yamlTpl = yamlTpl.replaceAll("$VG_SNAPSHOT_ENABLED", yamlTplValues.vgsnapshot);
yamlTpl = yamlTpl.replaceAll("$SNAPSHOT_ENABLED", yamlTplValues.snapshot);
yamlTpl = yamlTpl.replaceAll("$RESIZER_ENABLED", yamlTplValues.resizer);
yamlTpl = yamlTpl.replaceAll("$ISCSI_CHAP_ENABLED", yamlTplValues.iscsichap);
yamlTpl = yamlTpl.replaceAll("$TOPOLOGY_ENABLED", yamlTplValues.topologyEnabled);
yamlTpl = yamlTpl.replaceAll("$REPLICATION_ENABLED", yamlTplValues.replication);
yamlTpl = yamlTpl.replaceAll("$MIGRATION_ENABLED", yamlTplValues.migration);
yamlTpl = yamlTpl.replaceAll("$AUTHORIZATION_ENABLED", yamlTplValues.authorization);
yamlTpl = yamlTpl.replaceAll("$AUTHORIZATION_PROXY_HOST", yamlTplValues.authorizationProxyHost);
yamlTpl = yamlTpl.replaceAll("$AUTHORIZATION_SKIP_CERTIFICATE_VALIDATION", yamlTplValues.authorizationSkipCertValidation);
yamlTpl = yamlTpl.replaceAll("$OBSERVABILITY_ENABLED", yamlTplValues.observability);
yamlTpl = yamlTpl.replaceAll("$OBSERVABILITY_OPERATOR_ENABLED", yamlTplValues.observabilityOperator);
yamlTpl = yamlTpl.replaceAll("$RESILIENCY_ENABLED", yamlTplValues.resiliency);
yamlTpl = yamlTpl.replaceAll("$OPERATOR_RESILIENCY_ENABLED", yamlTplValues.operatorResiliency);
yamlTpl = yamlTpl.replaceAll("$LABEL_VALUE", yamlTplValues.labelValue);
Expand All @@ -147,8 +164,11 @@ function createYamlString(yamlTpl, yamlTplValues, driverParam, CONSTANTS_PARAM)
yamlTpl = yamlTpl.replaceAll("$POWERMAX_STORAGE_ARRAY_ENDPOINT_URL", yamlTplValues.storageArrayEndpointUrl);
yamlTpl = yamlTpl.replaceAll("$POWERMAX_STORAGE_ARRAY_BACKUP_ENDPOINT_URL", yamlTplValues.storageArrayBackupEndpointUrl);
yamlTpl = yamlTpl.replaceAll("$POWERMAX_MANAGEMENT_SERVERS_ENDPOINT_URL", yamlTplValues.storageArrayEndpointUrl);
yamlTpl = yamlTpl.replaceAll("$POWERMAX_MANAGE_ARRAY_ID", yamlTplValues.manageArrayId);
yamlTpl = yamlTpl.replaceAll("$POWERMAX_MANAGE_ARRAY_ENDPOINT_URL", yamlTplValues.manageArrayEndpointUrl);
yamlTpl = yamlTpl.replaceAll("$POWERMAX_CLUSTER_PREFIX", yamlTplValues.clusterPrefix);
yamlTpl = yamlTpl.replaceAll("$POWERMAX_PORT_GROUPS", yamlTplValues.portGroups);
yamlTpl = yamlTpl.replaceAll("$NODE_TRANSPORT_PROTOCOL", yamlTplValues.transportProtocol);
yamlTpl = yamlTpl.replaceAll("$VSPHERE_ENABLED", yamlTplValues.vSphereEnabled);
yamlTpl = yamlTpl.replaceAll("$VSPHERE_FC_PORT_GROUP", yamlTplValues.vSphereFCPortGroup);
yamlTpl = yamlTpl.replaceAll("$VSPHERE_FC_HOST_NAME", yamlTplValues.vSphereFCHostName);
Expand Down Expand Up @@ -190,6 +210,11 @@ function createYamlString(yamlTpl, yamlTplValues, driverParam, CONSTANTS_PARAM)
yamlTpl = yamlTpl.replaceAll("$POWERSCALE_OBSERVABILITY_METRICS_ENABLED", true);
}
}
yamlTpl = yamlTpl.replaceAll("$OBSERVABILITY_OPERATOR_TOPOLOGY", yamlTplValues.observabilityOperatorTopology);
yamlTpl = yamlTpl.replaceAll("$OBSERVABILITY_OPERATOR_METRICS", yamlTplValues.observabilityOperatorMetrics);
yamlTpl = yamlTpl.replaceAll("$OBSERVABILITY_OPERATOR_OTEL", yamlTplValues.observabilityOperatorOtel);


yamlTpl = yamlTpl.replaceAll("$POWERSTORE_OBSERVABILITY_METRICS_ENABLED", false);
yamlTpl = yamlTpl.replaceAll("$POWERMAX_OBSERVABILITY_METRICS_ENABLED", false);
yamlTpl = yamlTpl.replaceAll("$POWERFLEX_OBSERVABILITY_METRICS_ENABLED", false);
Expand Down
Loading

0 comments on commit 791583f

Please sign in to comment.