diff --git a/doc/source/introduction/terms.rst b/doc/source/introduction/terms.rst
index 75a839e0f..3345b5cdf 100644
--- a/doc/source/introduction/terms.rst
+++ b/doc/source/introduction/terms.rst
@@ -224,3 +224,13 @@ commonly used in the |org| community and in this documentation.
A single physical port that can be shared by two or more system networks (oam, mgmt.,
cluster-host, pxeboot and data)
For more information, see :ref:`sriov-port-sharing`.
+
+ |CSM| Observability
+ An OpenTelemetry agent that collects array-level metrics for Dell storage.
+
+ Prometheus
+ An open source software application that is used to monitor and alert
+ events. For more information, see ``__.
+
+ Unity XT
+ A simple, fast, flexible, and all-inclusive unified storage platform.
diff --git a/doc/source/shared/abbrevs.txt b/doc/source/shared/abbrevs.txt
index aa9ea9b7e..4613366c4 100755
--- a/doc/source/shared/abbrevs.txt
+++ b/doc/source/shared/abbrevs.txt
@@ -32,6 +32,7 @@
.. |CNI| replace:: :abbr:`CNI (Container Networking Interface)`
.. |CNIs| replace:: :abbr:`CNIs (Container Networking Interfaces)`
.. |CoW| replace:: :abbr:`CoW (Copy on Write)`
+.. |CO| replace:: :abbr:`CO (Container Orchestrator)`
.. |CR| replace:: :abbr:`CR (Custom Resource)`
.. |CRs| replace:: :abbr:`CRs (Custom Resources)`
.. |CRD| replace:: :abbr:`CRD (Custom Resource Definition)`
@@ -40,6 +41,8 @@
.. |CSIs| replace:: :abbr:`CSIs (Container Storage Interfaces)`
.. |CSK| replace:: :abbr:`CSK (Code Signing Key)`
.. |CSKs| replace:: :abbr:`CSKs (Code Signing Keys)`
+.. |CSM| replace:: :abbr:`CSM (Container Storage Module)`
+.. |CSMs| replace:: :abbr:`CSMs (Container Storage Modules)`
.. |CSR| replace:: :abbr:`CSR (Certificate Signing Request)`
.. |CSV| replace:: :abbr:`CSV (Comma-Separated Values)`
.. |CVE| replace:: :abbr:`CVE (Common Vulnerabilities and Exposures)`
@@ -72,6 +75,7 @@
.. |FPGA| replace:: :abbr:`FPGA (Field Programmable Gate Array)`
.. |FQDN| replace:: :abbr:`FQDN (Fully Qualified Domain Name)`
.. |FQDNs| replace:: :abbr:`FQDNs (Fully Qualified Domain Names)`
+.. |JWT| replace:: :abbr:`JWT (JSON Web Token)`
.. |GC| replace:: :abbr:`GC (Garbage Collection)`
.. |GM| replace:: :abbr:`GM (Grand Master)`
.. |GNP| replace:: :abbr:`GNP (Global Network Policy)`
@@ -110,9 +114,11 @@
.. |MNFA| replace:: :abbr:`MNFA (Multi-Node Failure Avoidance)`
.. |MOTD| replace:: :abbr:`MOTD (Message of the Day)`
.. |MSR| replace:: :abbr:`MSR (Model-specific Registers)`
+.. |mTLS| replace:: :abbr:`mTLS (Mutual Transport Layer Security)`
.. |MTU| replace:: :abbr:`MTU (Maximum Transmission Unit)`
.. |NA| replace:: :abbr:`NA (Not Applicable)`
.. |NAT| replace:: :abbr:`NAT (Network Address Translation)`
+.. |NAS| replace:: :abbr:`NAS (Network Attached Storage)`
.. |NF| replace:: :abbr:`NF (Network Function)`
.. |NFD| replace:: :abbr:`NFD (Node Feature Discovery)`
.. |NFs| replace:: :abbr:`NFs (Network Functions)`
@@ -123,6 +129,7 @@
.. |NUMA| replace:: :abbr:`NUMA (Non-Uniform Memory Access)`
.. |NVMe| replace:: :abbr:`NVMe (Non-Volatile Memory express)`
.. |OAM| replace:: :abbr:`OAM (Operations, administration and management)`
+.. |OAuth| replace:: :abbr:`OAuth (Open standard for authorization)`
.. |OEM| replace:: :abbr:`OEM (Original Equipment Manufacturer)`
.. |OC| replace:: :abbr:`OC (Ordinary Clock)`
.. |OCI| replace:: :abbr:`OCI (Open Container Initiative)`
@@ -171,6 +178,8 @@
.. |RBD| replace:: :abbr:`RBD (RADOS Block Device)`
.. |RCA| replace:: :abbr:`RCA (Root Certificate Authority)`
.. |RCAs| replace:: :abbr:`RCAs (Root Certificate Authorities)`
+.. |RG| replace:: :abbr:`RG (Replication Group)`
+.. |RPOs| replace:: :abbr:`RPOs (Recovery Point Objective)`
.. |RPC| replace:: :abbr:`RPC (Remote Procedure Call)`
.. |RST| replace:: :abbr:`rST (reStructuredText)`
.. |RVMC| replace:: :abbr:`RVMC (Redfish Virtual Media Controller)`
@@ -179,6 +188,7 @@
.. |SAS| replace:: :abbr:`SAS (Serial Attached SCSI)`
.. |SATA| replace:: :abbr:`SATA (Serial AT Attachment)`
.. |SBR| replace:: :abbr:`SBR (Source-Based Routing)`
+.. |SCSI| replace:: :abbr:`SCSI (Small Computer System Interface)`
.. |SCTP| replace:: :abbr:`SCTP (Stream Control Transmission Protocol)`
.. |SDO| replace:: :abbr:`SDO (Secure Device Onboard)`
.. |SGX| replace:: :abbr:`SGX (Software Guard Extensions)`
@@ -195,6 +205,8 @@
.. |SPO| replace:: :abbr:`SPO (Security Profiles Operator)`
.. |SRIOV| replace:: :abbr:`SR-IOV (Single Root I/O Virtualization)`
.. |SRIOVs| replace:: :abbr:`SR-IOVs (Single Root I/O Virtualizations)`
+.. |SRDF| replace:: :abbr:`SRDF (Symmetrix Remote Data Facility)`
+.. |SRP| replace:: :abbr:`SRP (Storage Resource Pool)`
.. |SSD| replace:: :abbr:`SSD (Solid State Drive)`
.. |SSDs| replace:: :abbr:`SSDs (Solid State Drives)`
.. |SSH| replace:: :abbr:`SSH (Secure Shell)`
@@ -219,6 +231,7 @@
.. |UDS| replace:: :abbr:`UDS (Unix Domain Socket)`
.. |UEFI| replace:: :abbr:`UEFI (Unified Extensible Firmware Interface)`
.. |UFT| replace:: :abbr:`UFT (Unified Flow Tool)`
+.. |USM| replace:: :abbr:`USM (Unified Software Management)`
.. |UUID| replace:: :abbr:`UUID (Universally Unique Identifier)`
.. |UUIDs| replace:: :abbr:`UUIDs (Universally Unique Identifiers)`
.. |VF| replace:: :abbr:`VF (Virtual Function)`
diff --git a/doc/source/storage/kubernetes/configure-dell-storage-csms-937563b7bb36.rst b/doc/source/storage/kubernetes/configure-dell-storage-csms-937563b7bb36.rst
new file mode 100644
index 000000000..d987fe267
--- /dev/null
+++ b/doc/source/storage/kubernetes/configure-dell-storage-csms-937563b7bb36.rst
@@ -0,0 +1,239 @@
+.. WARNING: Add no lines of text between the label immediately following
+.. and the title.
+
+.. _configure-dell-storage-csms-937563b7bb36:
+
+===========================
+Configure Dell-Storage CSMs
+===========================
+
+.. contents::
+ :local:
+ :depth: 2
+
+-----------------
+CSM Observability
+-----------------
+
+|CSM| Observability is an OpenTelemetry agent that collects array-level metrics
+for Dell storage so they can be exported into a Prometheus database. With |CSM|
+for Observability, you will gain visibility not only on the capacity of the
+volumes/file shares you manage with Dell |CSM| |CSI| drivers but also on their
+performance in terms of bandwidth, |IOPS|, and response time.
+
+.. note::
+
+ The |CSM| Observability is not available for Unity XT and is not fully
+ available for all storages. You can check the compatibility/capabilities on
+ `Dell Documentation `__.
+
+******************
+Enable Helm Charts
+******************
+
+.. note::
+
+ Disable any other |CSI|/|CSM| if not used/configured, otherwise it could
+ cause the application to fail on apply.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage
+
+Enable |CSM| Observability using the following command:
+
+.. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csm-observability dell-storage
+
+*********************
+Update User Overrides
+*********************
+
+.. note::
+
+ ``karaviMetricsPowerstore`` is enabled by default. All others are disabled.
+ The ``karaviTopology`` and ``otelCollector`` collectors are also enabled by default.
+
+.. rubric:: |proc|
+
+#. Create user overrides by enabling the metrics that you need.
+
+ .. code-block:: none
+
+ :name: observabilityOverrides.yaml
+ karaviMetricsPowerstore:
+ enabled: true
+
+ karaviMetricsPowerflex:
+ enabled: false
+
+ karaviMetricsPowerscale:
+ enabled: false
+
+ karaviMetricsPowermax:
+ enabled: false
+
+#. Apply the overrides.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-update dell-storage csm-observability dell-storage --values=observabilityOverrides.yml
+
+#. Apply the application.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system application-apply dell-storage
+
+
+#. Check that the metrics are being generated by accessing the otel-collector pod API.
+
+ .. code-block:: none
+
+ curl -k https://$(kubectl get -n dell-storage pods -o wide | grep otel-collector | awk '{print $6}'):8443/metrics
+
+
+****************************
+CSM Observability Parameters
+****************************
+
+.. table::
+ :widths: auto
+
+ +---------------------------------+---------------------------------------------+----------+---------+
+ | Parameter | Description | Required | default |
+ +=================================+=============================================+==========+=========+
+ | karaviMetricsPowerstore.enabled | If true, enable metrics for CSI-Powerstore. | No | True |
+ +---------------------------------+---------------------------------------------+----------+---------+
+ | karaviMetricsPowerflex.enabled | If true, enable metrics for CSI-Powerflex. | No | False |
+ +---------------------------------+---------------------------------------------+----------+---------+
+ | karaviMetricsPowerscale.enabled | If true, enable metrics for CSI-Powerscale. | No | False |
+ +---------------------------------+---------------------------------------------+----------+---------+
+ | karaviMetricsPowermax.enabled | If true, enable metrics for CSI-Powermax. | No | False |
+ +---------------------------------+---------------------------------------------+----------+---------+
+
+--------------
+CSM Resiliency
+--------------
+
+User applications can have problems if you want their pods to be resilient to
+node failure. This is especially true for those deployed with StatefulSets that
+use PersistentVolumeClaims. Kubernetes makes sure that there will never be two
+copies of the same StatefulSet pod running at the same time and accessing
+storage volumes. Therefore, it does not clean up StatefulSet pods if the node executing
+them fails.
+
+*********************
+Enable csm-resiliency
+*********************
+
+.. rubric:: |proc|
+
+#. Add the ``csm.resiliency: true`` parameter to the user overrides. Below is
+ an example using Powerstore:
+
+ .. code-block:: none
+
+ :name: powerstoreOverrides.yaml
+ csm:
+ resiliency: true
+ storageClasses:
+ - name: csi-powerstore-iscsi
+ arrayID:
+ fstype: ext4
+
+ secret:
+ arrays:
+ - globalID:
+ username:
+ password:
+ endpoint: https:///api/rest
+ isDefault: true
+ blockProtocol: "ISCSI"
+
+#. Apply the user overrides.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=powerstoreOverrides.yaml
+
+#. Apply the application.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system application-apply dell-storage
+
+---------------
+CSM Replication
+---------------
+
+|CSM| for replication project aims to bring replication and disaster recovery
+capabilities of Dell Storage Arrays to Kubernetes clusters. It helps users
+replicate groups of volumes using the native replication technology available
+on the storage array and can provide you a way to restart applications in case
+of both planned and unplanned migration.
+
+*****************************
+Enable CSM Replication Charts
+*****************************
+
+.. rubric:: |prereq|
+
+Ensure that the csm-replication chart is enabled.
+
+.. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csm-replication dell-storage
+
+.. rubric:: |proc|
+
+#. Add the ``csm.replication: true`` parameter to the user overrides. Below is
+ an example using Powerstore:
+
+ .. code-block:: none
+
+ :name: powerstoreOverrides.yaml
+ csm:
+ replication: true
+ app.starlingx.io/component: platform
+ storageClasses:
+ - name: csi-powerstore-iscsi
+ arrayID:
+ fstype: ext4
+ replication:
+ remoteStorageClassName: remote_storageclass
+ remoteClusterID: remote_clusterid
+ remoteSystem: remote_system
+ rpo: "Five_Minutes"
+ ignoreNamespaces: false
+ volumeGroupPrefix:
+
+ secret:
+ arrays:
+ - globalID:
+ username:
+ password:
+ endpoint: https:///api/rest
+ isDefault: true
+ blockProtocol: "ISCSI"
+
+ .. note::
+
+ The replication parameters need to be configured on each storage class
+ that will use it. Check the ``StorageClasses`` Parameter session of the |CSI|
+ you are using to know which parameters to set.
+
+#. Apply the user overrides.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=powerstoreOverrides.yaml
+
+#. Apply the application.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system application-apply dell-storage
+
+
diff --git a/doc/source/storage/kubernetes/configure-powerflex-csi-backend-20a371e4f7d3.rst b/doc/source/storage/kubernetes/configure-powerflex-csi-backend-20a371e4f7d3.rst
new file mode 100644
index 000000000..419c778b8
--- /dev/null
+++ b/doc/source/storage/kubernetes/configure-powerflex-csi-backend-20a371e4f7d3.rst
@@ -0,0 +1,215 @@
+.. WARNING: Add no lines of text between the label immediately following
+.. and the title.
+
+.. _configure-powerflex-csi-backend-20a371e4f7d3:
+
+===============================
+Configure PowerFlex CSI Backend
+===============================
+
+|CSI| driver for PowerFlex is a part of the |CSM| open-source suite of
+Kubernetes storage enablers for Dell products. It is a |CSI| driver that
+provides support for provisioning persistent storage using Dell PowerFlex
+storage array.
+
+.. note::
+
+ VxFlexOs is the legacy name for PowerFlex.
+
+.. note::
+
+ By default, the csi-powerflex chart is disabled. It is necessary to enable
+ the chart and update user-overrides before applying the dell-storage
+ application.
+
+.. contents::
+ :local:
+ :depth: 2
+
+--------------------------
+Enable CSI PowerFlex Chart
+--------------------------
+
+.. note::
+
+ Disable any other |CSI|/|CSM| if not used/configured, otherwise it could cause the
+ application to fail on apply.
+
+ .. code-block::
+
+ system helm-chart-attribute-modify --enabled false dell-storage dell-storage
+
+
+#. Enable the chart using the following command:
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powerflex dell-storage
+
+#. Create overrides to configure the storage connection.
+
+ .. code-block:: none
+
+ :name: powerflexOverrides.yaml
+ app.starlingx.io/component: platform
+
+ storageClasses:
+ - name: csi-powerflex-nfs
+ arrayId:
+ nasServer: nas_2
+ provisioner: csi-vxflexos.dellemc.com
+ fstype: nfs
+ path: /target
+ reclaimPolicy: Delete
+ allowVolumeExpansion: true
+ volumeBindingMode: Immediate
+ mountOptions: ["hard"]
+ hostIoSize: 8192
+ tieringPolicy: 0
+ isDataReductionEnabled: "false"
+ thinProvisioned: "true"
+ storagePool: pool_2
+ protocol: NFS
+
+ secret:
+ arrays:
+ - arrayId:
+ username:
+ password:
+ systemID:
+ allSystemNames: "pflex-1"
+ endpoint: https:///api/rest
+ isDefault: true
+ skipCertificateValidation: true
+ nasName: nas_2
+
+#. Apply overrides using the following command:
+
+ .. code-block::
+
+ (keystone_admin)$ system helm-override-update dell-storage csi-powerflex dell-storage --values=powerflexOverrides.yaml
+
+#. Apply the chart using the following command:
+
+ .. code-block::
+
+ (keystone_admin)$ system application-apply dell-storage
+
+------------------------
+UserOverrides Parameters
+------------------------
+
+******************
+General Parameters
+******************
+
+.. table::
+ :widths: auto
+
+ +------------------------------------+-----------------------------------------------------------+----------+----------+
+ | Parameter | Description | Required | Default |
+ +====================================+===========================================================+==========+==========+
+ | csm.replication | Enables/disables replication sidecar container. | No | false |
+ +------------------------------------+-----------------------------------------------------------+----------+----------+
+ | csm.resiliency | Enables/disables dell-csi-replicator sidecar container. | No | false |
+ +------------------------------------+-----------------------------------------------------------+----------+----------+
+ | app.starlingx.io/component | Core affinity. | No | platform |
+ +------------------------------------+-----------------------------------------------------------+----------+----------+
+ | controller.snapshot.deletionPolicy | Specifies what happens when VolumeSnapshot is deleted. | No | Delete |
+ +------------------------------------+-----------------------------------------------------------+----------+----------+
+
+*************************
+StorageClasses Parameters
+*************************
+
+.. table::
+ :widths: auto
+
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | Parameter | Description | Required | Default |
+ +=======================================================+==========================================================================================================================================================================+==========+===========================+
+ | storageClasses[0].name | StorageClass name. | No | "csi-powerflex-" + fstype |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].systemID | ID of array to be used for volumes. arrayID corresponding to array's globalID specified in secrets. | Yes | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].nasName | |NAS| server's name. Important: required for |NFS| protocol. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].provisioner | Driver name. | No | csi-vxflexos.dellemc.com |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].fstype | Filesystem type for mounted volumes. | No | nfs |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | No | Delete |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | No | true |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | No | Immediate |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].protectionDomain | Protection domain that storage pool belongs to. Needed if array has two storagepools that share the same name but belong to different protection domains. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].iopsLimit | Limit the volume |IOPS|. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].path | The relative path to the root of the associated filesystem. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].softLimit | Time for soft limit to quota. Specified as percentage. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].gracePeriod | Requires the configuration of softLimit. Defines the period in which the soft limit time has reached and can exceed until process ends. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].bandwithLimitInKbps | The value to limit the volume network bandwidth. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].mkfsFormatOption | A string value to dictate de fs format options to pass to mkfs. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].storagePool | Defines storage pool. The value should be picked from the column labeled "CLI ID" of pools in the Unisphere GUI. | Yes | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication | Used to configure replication sidecar container. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.remoteStorageClassName | Remote StorageClass name. | No | csi-powerflex-replication |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.remoteClusterID | Remote ClusterID. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.remoteSystem | Remote PowerStore system. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.remoteStoragePool | Defines storage pool for the replication. The value should be picked from the column labeled "CLI ID" of Pools in the Unisphere GUI. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.rpo | Change to any other |RPOs| supported by PowerStore. | No | Five_Minutes |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.consistencyGroupName | Defines the group name in array of a replication. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.volumeGroupPrefix | Volume group prefix. | No | csi-powerflex |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.protectionDomain | Protection domain that storage pool of replication belongs to. Needed if array has two storagepools that share the same name but belong to different protection domains. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.remotePVRetentionPolicy | Reclaim policy for PersistentVolumes. Can accept ``Retain``, ``Recycle``, and ``Delete``. | No | Delete |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].replication.remoteRGRetentionPolicy | Reclaim policy for |RG|. Can accept ``Retain``, ``Recycle``, and ``Delete``. | No | Delete |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+ | storageClasses[0].allowedTopologies | This feature lets you specify sub-divisions of a cluster for a volume to be placed in. | No | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------------------------+
+
+*****************
+Secret Parameters
+*****************
+
+.. table::
+ :widths: auto
+
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | Parameter | Description | Required | Default |
+ +============================================+=========================================================================================+==========+================+
+ | secret.arrays | List of Unity XT. | Yes | Not Applicable |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].systemID | Array ID of Powerflex. | Yes | Not Applicable |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].username | Username for accessing PowerFlex system. | Yes | Not Applicable |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].password | Password for accessing PowerFlex system. | Yes | Not Applicable |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | Yes | Not Applicable |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].isDefault | Treat current array as a default. Important: use at least one of the arrays as default. | No | false |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].skipCertificateValidation | Indicates if client-side validation of server's certificate can be skipped. | No | true |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].AllSystemNames | Previous names used in secret of Powerflex system. | Yes | Not Applicable |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].nasName | What |NAS| should be used for |NFS| volumes. Required for |NFS| protocol. | No | Not Applicable |
+ +--------------------------------------------+-----------------------------------------------------------------------------------------+----------+----------------+
diff --git a/doc/source/storage/kubernetes/configure-powermax-csi-backend-7b6e65e3a811.rst b/doc/source/storage/kubernetes/configure-powermax-csi-backend-7b6e65e3a811.rst
new file mode 100644
index 000000000..85eb28010
--- /dev/null
+++ b/doc/source/storage/kubernetes/configure-powermax-csi-backend-7b6e65e3a811.rst
@@ -0,0 +1,271 @@
+.. WARNING: Add no lines of text between the label immediately following
+.. and the title.
+
+.. _configure-powermax-csi-backend-7b6e65e3a811:
+
+==============================
+Configure PowerMax CSI Backend
+==============================
+
+|CSI| driver for PowerMax is a part of the |CSM| open-source suite of
+Kubernetes storage enablers for Dell products. It is a |CSI| driver that
+provides support for provisioning persistent storage using Dell PowerMax
+storage array.
+
+.. note::
+
+ By default, the csi-powermax chart is disabled. It is necessary to enable
+ the chart and update user-overrides before applying the dell-storage
+ application.
+
+.. contents::
+ :local:
+ :depth: 2
+
+-------------------------
+Enable CSI PowerMax Chart
+-------------------------
+
+.. note::
+
+ Disable any other |CSI|/|CSM| if not used/configured, otherwise it could cause the
+ application to fail on apply.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage
+
+#. Enable the chart.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powermax dell-storage
+
+#. Create overrides to configure the storage connection.
+
+ .. code-block:: none
+
+ :name: powermaxOverrides.yaml
+ secret:
+ username:
+ password:
+
+ authorization:
+ configs:
+ - username:
+ password:
+ intendedEndpoint: endpoint1
+ systemID:
+ isDefault: true
+
+ global:
+ managementServers:
+ - endpoint: https://primary-1.unisphe.re:8443
+ credentialsSecret: primary-1-secret
+ username:
+ password:
+ skipCertificateValidation: true
+
+ storageClasses:
+ - name: "sc-0"
+ SRP: "TEST"
+ SYMID: "TEST1"
+ ApplicationPrefix: "prefix1"
+ HostLimitName: "1000"
+ DynamicDistribution: "Optimized
+
+#. Apply overrides.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-update dell-storage csi-powermax dell-storage --values=powermaxOverrides.yaml
+
+#. Apply the chart.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system application-apply dell-storage
+
+------------------------
+UserOverrides Parameters
+------------------------
+
+******************
+General Parameters
+******************
+
+.. table::
+ :widths: auto
+
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | Parameter | Description | Required | Default |
+ +========================================+==================================================================================================================================+==========+==============================+
+ | csm.replication | Enables/disables replication sidecar container. | No | false |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | csm.authorization | Enables/disables |CSM| authorization and sidecar container. | No | false |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | app.starlingx.io/component | Core affinity. | No | platform |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | replication.replicationPrefix | Change replication prefix. | No | replication.storage.dell.com |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | controller.snapshot.deletionPolicy | Specifies what happens when VolumeSnapshot is deleted. | No | Delete |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | defaultFsType | Default value for Filesystem type for mounted volumes. | No | ext4 |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | certSecret | Secret containing the certificate. | No | Not Applicable |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | global.storageArrays | This refers to the list of arrays managed by the driver and Reverse Proxy in StandAlone mode. | Yes | Not Applicable |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | global.storageArrays[0].storageArrayId | This refers to PowerMax Symmetrix ID. | Yes | Not Applicable |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | global.storageArrays[0].endpoint | This refers to the URL of the Unisphere server managing storageArrayId. | Yes | Not Applicable |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+ | global.storageArrays[0].backupEndpoint | This refers to the URL of the backup Unisphere server managing storageArrayId, if Reverse Proxy is installed in StandAlone mode. | Yes | Not Applicable |
+ +----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+----------+------------------------------+
+
+*************************
+StorageClasses Parameters
+*************************
+
+.. table::
+ :widths: auto
+
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | Parameter | Description | Required | Default |
+ +======================================================+=================================================================================================+==========+==========================+
+ | storageClasses[0].name | StorageClass name. | Yes | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].ServiceLevel | Name of service level on PowerMax array that should be used for provisioning. | No | Optimized |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].SRP | Serial ID of the array that is used for provisioning. | Yes | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].SYMID | Name of service level on PowerMax array that should be used for provisioning. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].ApplicationPrefix | Name of application to be used to group volumes. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].HostLimitName | HostLimitName uniquely identifies given set of limits on a storage class (max of 3 letters). | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].HostIOLimitMBSec | The MBs per Second Host IO limit for the storage class. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].HostIOLimitIOSec | The IOs per Second Host IO limit for the storage class. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].DynamicDistribution | Distribution of the Host IO limits for the storage class. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].nasServer | |NAS| server's name. Important: required for |NFS| protocol. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].provisioner | Driver name. | No | csi-powermax.dellemc.com |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].fstype | Filesystem type for mounted volumes. | No | $.Values.defaultFsType |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | No | Delete |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | No | true |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | No | Immediate |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].allowRoot | Enables or disables root squashing (valid only for |NFS|). | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].mountOptions | Specifies additional mount options when a persistent volume is being mounted on a node. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].allowedTopologies | This feature lets you specify sub-divisions of a cluster for a volume to be placed in. | Yes | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication | Used to configure replication sidecar container. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.remoteStorageClassName | Storage class name on remote cluster to create remote PV. | No | csi-powermax-replication |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.remoteClusterID | ClusterID to which resources will get replicated. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.RemoteSRP | Name of |SRP| on the remote array that should be used for provisioning. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.RemoteSYMID | Serial ID of the remote array that is used for replication. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.RemoteServiceLevel | Service Level on remote PowerMax array. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.RdfMode | SRDF mode of the replication. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.RdfGroup | Local |SRDF| group which protects using mode mentioned above. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.Bias | Configure Bias for Metro mode. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+ | storageClasses[0].replication.RemoteRDFGroup | Remote |SRDF| Group which is bound with Local |SRDF| group. | No | Not Applicable |
+ +------------------------------------------------------+-------------------------------------------------------------------------------------------------+----------+--------------------------+
+
+*****************
+Secret Parameters
+*****************
+
+.. table::
+ :widths: auto
+
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | Parameter | Description | Required | Default |
+ +======================================================================+============================================================================================================+==========+===============================+
+ | global.defaultSecret | Used to configure default credential secrets values. | Yes | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.username | Username for connecting to REST API server. | Yes | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.password | Password for connecting to REST API server. | Yes | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.chapsecret | Secret that contains chap to authentication. | No | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers | A list of values to configure all credential secrets used. | Yes | [] |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].credentialsSecret | Secret name. | No | $.Release.Name -creds- $index |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].username | Username for connecting to REST API server. | Yes | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].password | Password for connecting to REST API server. | Yes | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].chapsecret | Secret that contains chap to authentication. | No | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].endpoint | Endpoint to REST API server. | Yes | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].skipCertificateValidation | Indicates if client side validation of server's certificate can be skipped. | Yes | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].certSecret | Secret containing the certificate. | No | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].limits | This refers to various limits for Reverse Proxy. | No | Not Applicable |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].limits.maxActiveRead | This refers to the maximum concurrent READ request handled by the reverse proxy. | No | 5 |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].limits.maxActiveWrite | This refers to the maximum concurrent WRITE request handled by the reverse proxy. | No | 4 |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].limits.maxOutStandingRead | This refers to maximum queued READ request when reverse proxy receives more than maxActiveRead requests. | No | 50 |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | global.defaultSecret.managementServers[0].limits.maxOutStandingWrite | This refers to maximum queued WRITE request when reverse proxy receives more than maxActiveWrite requests. | No | 50 |
+ +----------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+
+
+************************
+Authorization Parameters
+************************
+
+.. table::
+ :widths: auto
+
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | Parameter | Description | Required | Default |
+ +===========================================+=====================================================================================+==========+========================+
+ | authorization.configs | List of authorization configurations. | No | Not Applicable |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | authorization.configs[0].username | Username for connecting to the backend storage array. This parameter is ignored. | No | Not Applicable |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | authorization.configs[0].password | Password for connecting to the backend storage array. This parameter is ignored. | No | Not Applicable |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | authorization.configs[0].intendedEndpoint | HTTPS REST API endpoint of the backend storage array. | No | Not Applicable |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | authorization.configs[0].endpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | No | https://localhost:9400 |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | authorization.configs[0].SystemID | System ID of the backend storage array. | No | " " |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | authorization.configs[0].isDefault | If the configuration is default or not. | No | false |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | skipCertificateValidation | If certificate is used or not. | No | true |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | proxyAuthzTokens | |JWT| information | No | Not Applicable |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | proxyAuthzTokens.access | Access token for authorization sidecar container access. | No | Not Applicable |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+ | proxyAuthzTokens.refresh | Refresh token for authorization sidecar container access. | No | Not Applicable |
+ +-------------------------------------------+-------------------------------------------------------------------------------------+----------+------------------------+
+
diff --git a/doc/source/storage/kubernetes/configure-powerscale-csi-backend-aa6a128c0b44.rst b/doc/source/storage/kubernetes/configure-powerscale-csi-backend-aa6a128c0b44.rst
new file mode 100644
index 000000000..f70417dd8
--- /dev/null
+++ b/doc/source/storage/kubernetes/configure-powerscale-csi-backend-aa6a128c0b44.rst
@@ -0,0 +1,263 @@
+.. WARNING: Add no lines of text between the label immediately following
+.. and the title.
+
+.. _configure-powerscale-csi-backend-aa6a128c0b44:
+
+================================
+Configure PowerScale CSI Backend
+================================
+
+|CSI| driver for PowerScale is part of the |CSM| open-source suite of
+Kubernetes storage enablers for Dell Technology (Dell) products. It is a |CSI|
+driver that provides support for provisioning persistent storage using Dell
+PowerScale storage array.
+
+.. note::
+
+ Isilon is the legacy name for PowerScale.
+
+.. note::
+
+ By default, the csi-powerscale chart is disabled. It is necessary to enable
+ and update user-overrides before applying dell-storage application.
+
+.. contents::
+ :local:
+ :depth: 2
+
+---------------------------
+Enable CSI PowerScale Chart
+---------------------------
+
+.. note::
+
+ Disable any other |CSI|/|CSM| if not used/configured, otherwise it could cause the
+ application to fail on apply.
+
+ .. code-block::
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage
+
+#. Enable the chart.
+
+ .. code-block::
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powerscale dell-storage
+
+#. Create overrides to configure the storage connection.
+
+ .. code-block:: none
+
+ :name: powerscaleOverrides.yaml
+
+ isiPath: "/my/isi/path"
+
+ controller:
+ replication:
+ replicationPrefix: "myCustomReplicationPrefix"
+
+ secret:
+ arrays:
+ - clusterName: Cluster1
+ username:
+ password:
+ endpoint: https://
+ endpointPort: 8888
+ isDefault: true
+ skipCertificateValidation: false
+ isiPath: "/my/isi/path"
+ isiVolumePathPermissions: "0755"
+ ignoreUnresolvableHosts: true
+ replicationCertificateID: "dd9c736cc17e6dd5f7d85fe13528cfc20f3b4b0af4f26595d22328c8d1f461af"
+ authorizationEndpoint: "https://localhost:9999"
+
+ - clusterName: "Cluster2"
+ username:
+ password:
+ endpoint: https://
+ isiPath: "/my/isi/path2"
+
+ storageClasses:
+ - name: "storageClassDefault"
+
+ proxyAuthzTokens:
+ access: "YWJjZGVmCg=="
+ refresh: "YWJjZGVmCg=="
+
+#. Apply override.
+
+ .. code-block::
+
+ (keystone_admin)$ system helm-override-update dell-storage csi-powerscale dell-storage --values=powerscaleOverrides.yaml
+
+#. Apply chart.
+
+ .. code-block::
+
+ (keystone_admin)$ system application-apply dell-storage
+
+------------------------
+UserOverrides Parameters
+------------------------
+
+******************
+General Parameters
+******************
+
+.. table::
+ :widths: auto
+
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | Parameter | Description | Required | Default |
+ +==========================================+====================================================================+==================================+==============================+
+ | app.starlingx.io/component | Code affinity. | No | platform |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | authorization.rootCertificate | Authorization proxy server root certificate. | Only if authorization is enabled | Not Applicable |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | certSecret | Secret containing the certificate. | No | Not Applicable |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | controller.replication.replicationPrefix | Change replication prefix. | No | replication.storage.dell.com |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | controller.snapshot.deletionPolicy | Specifies what happens when VolumeSnapshot is deleted. | No | Delete |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | csm.authorization | Enables/disables authorization sidecar container. | No | false |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | csm.replication | Enables/disables dell-csi-replicator sidecar container. | No | false |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | csm.resiliency | Enables/disables podmon sidecar container. | No | false |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | driverName | Driver name. | No | csi-isilon.dellemc.com |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | isiPath | The base path for the volumes to be created on PowerScale cluster. | No | /ifs/data/csi |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | proxyAuthzTokens.access | Access token for authorization sidecar container access. | Only if authorization is enabled | Not Applicable |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+ | proxyAuthzTokens.refresh | Refresh token for authorization sidecar container access. | Only if authorization is enabled | Not Applicable |
+ +------------------------------------------+--------------------------------------------------------------------+----------------------------------+------------------------------+
+
+*************************
+StorageClasses Parameters
+*************************
+
+.. table::
+ :widths: auto
+
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | Parameter | Description | Required | Default |
+ +=======================================================+==========================================================================================================================================================================+==========+===============================+
+ | storageClasses | List of storage classes. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].name | StorageClass name. | yes | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].provisioner | Driver name. | no | "csi-isilon.dellemc.com" |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | no | Delete |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | no | true |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].AccessZone | The name of the access zone a volume can be created in. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].IsiPath | The base path for the volumes to be created on PowerScale cluster. | no | Same as General isiPath |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].IsiVolumePathPermissions | The permissions for isi volume directory path. | no | "0777" |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].AzServiceIP | AccessZone groupnet service IP. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].RootClientEnabled | Determines whether the driver should enable root squashing or not. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].ClusterName | Name of PowerScale cluster where PV will be provisioned. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].AdvisoryLimit | Parameter to set advisory limit to quota. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].SoftLimit | Parameter to set soft limit to quota. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].SoftGracePrd | Parameter which must be mentioned along with soft limit. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].fstype | Sets the filesystem type which will be used to format the new volume. | no | "nfs" |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | no | Immediate |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].allowedTopologies | Helps scheduling pods on worker nodes which match all of the below expressions. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].mountOptions | Specifies additional mount options for when a persistent volume is being mounted on a node. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.isReplicationEnabled | If set to true, will mark this storage class as replication enabled. | no | "true" |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.remoteStorageClassName | Name of the remote storage class. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.remoteClusterID | ID of a remote cluster. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.remoteSystem | Name of the remote system that should match whatever clusterName you called it in csI-powerscale-creds secret. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.rpo | Recovery Point Objective value. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.ignoreNamespaces | If set to true PowerScale driver, it will ignore what namespace volumes are created and put every volume created using this storage class into a single volume group. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.volumeGroupPrefix | String that would be appended to the volume group name to differentiate the Volume Groups. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.remoteAccessZone | Name of the access zone a remote volume can be created in. | no | Same as General isiAccessZone |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.remoteAzServiceIP | AccessZone groupnet service IP. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+ | storageClasses[0].replication.remoteRootClientEnabled | Determines whether the driver should enable root squashing or not for the remote volume. | no | Not Applicable |
+ +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+-------------------------------+
+
+
+**************************
+SnapshotClasses Parameters
+**************************
+
+.. table::
+ :widths: auto
+
+ +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+
+ | Parameter | Description | Required | Default |
+ +===================================+===============================================================================================+==========+=========================+
+ | snapshotClasses | List of snapshot classes. | no | Not Applicable |
+ +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+
+ | snapshotClasses[0].name | SnapshotClass name. | yes | Not Applicable |
+ +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+
+ | snapshotClasses[0].deletionPolicy | Configure what happens to a VolumeSnapshotContent when the VolumeSnapshot object is deleted. | yes | Delete |
+ +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+
+ | snapshotClasses[0].IsiPath | The base path of the volumes on Isilon cluster for which snapshot is being created. | no | Same as General isiPath |
+ +-----------------------------------+-----------------------------------------------------------------------------------------------+----------+-------------------------+
+
+
+******************
+Secrets Parameters
+******************
+
+.. table::
+ :widths: auto
+
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | Parameter | Description | Required | Default |
+ +============================================+=======================================================================================================+==========+=========================+
+ | secret.arrays | List of PowerStore array. | no | Not Applicable |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].clusterName | Logical name of PowerScale Cluster. | yes | Not Applicable |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].username | Username for connecting to PowerScale OneFS API server. | yes | Not Applicable |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].password | Password for connecting to PowerScale OneFS API server. | yes | Not Applicable |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].endpoint | HTTPS endpoint of the PowerScale OneFS API server. | yes | Not Applicable |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].endpointPort | Specifies the HTTPs port number of the PowerScale OneFS API server. | no | 8080 |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].isDefault | Is this a default cluster? | no | false |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].skipCertificateValidation | Specifies whether the PowerScale OneFS API server's certificate chain and host name should be verified| no | true |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].isiPath | The base path for the volumes to be created on PowerScale cluster. | no | Same as General isiPath |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].isiVolumePathPermissions | The permissions for isi volume directory path. | no | "0777" |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].ignoreUnresolvableHosts | Ignore unresolvable hosts on the OneFS. | no | false |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].replicationCertificateID | Unique ID if the certificate is used to encrypt replication policy. | no | "" |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+ | secret.arrays[0].authorizationEndpoint | HTTPS localhost endpoint that the authorization sidecar will listen on. | no | https://localhost:9400 |
+ +--------------------------------------------+-------------------------------------------------------------------------------------------------------+----------+-------------------------+
+
+
diff --git a/doc/source/storage/kubernetes/configure-powerstore-csi-backend-02af0aa983b0.rst b/doc/source/storage/kubernetes/configure-powerstore-csi-backend-02af0aa983b0.rst
new file mode 100644
index 000000000..f29c84e9c
--- /dev/null
+++ b/doc/source/storage/kubernetes/configure-powerstore-csi-backend-02af0aa983b0.rst
@@ -0,0 +1,197 @@
+.. WARNING: Add no lines of text between the label immediately following
+.. and the title.
+
+.. _configure-powerstore-csi-backend-02af0aa983b0:
+
+================================
+Configure Powerstore CSI Backend
+================================
+
+|CSI| driver for PowerStore is a part of the |CSM| open-source suite of
+Kubernetes storage enablers for Dell products. It is a |CSI| driver that
+provides support for provisioning persistent storage using Dell PowerStore
+storage array.
+
+.. contents::
+ :local:
+ :depth: 2
+
+---------------------------
+Enable CSI PowerStore Chart
+---------------------------
+
+.. note::
+
+ By default, the csi-powerstore chart is enabled. Disable any other
+ |CSI|/|CSM| if not used/configured, otherwise it could cause the
+ application to fail on apply.
+
+ .. code-block::
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage
+
+#. Enable the chart.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-powerstore dell-storage
+
+#. Create overrides to configure the storage connection.
+
+ **ISCSI Protocol**
+
+ .. code-block:: none
+
+ :name: powerstoreOverrides.yaml
+ storageClasses:
+ - name: csi-powerstore-iscsi
+ arrayID:
+ fstype: ext4
+
+ secret:
+ arrays:
+
+ - globalID:
+ username:
+ password:
+ endpoint: https:///api/rest
+ isDefault: true
+ blockProtocol: "ISCSI"
+
+ **NFS Protocol**
+
+ .. code-block:: none
+
+ :name: powerstoreOverrides.yaml
+ storageClasses:
+ - name: csi-powerstore-nfs
+ arrayID:
+ fstype: ext4
+ nasName: NAS1
+
+ secret:
+ arrays:
+
+ - globalID:
+ username:
+ password:
+ endpoint: https:///api/rest
+ isDefault: true
+ blockProtocol: None
+ nasName: NAS1
+
+#. Apply overrides.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=powerstoreOverrides.yaml
+
+#. Apply the chart.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system application-apply dell-storage
+
+------------------------
+UserOverrides Parameters
+------------------------
+
+******************
+General Parameters
+******************
+
+.. table::
+ :widths: auto
+
+ +------------------------------------------+-------------------------------------------------------+----------+------------------------------+
+ | Parameter | Description | Required | Default |
+ +==========================================+=======================================================+==========+==============================+
+ | csm.replication | Enables/disables replication sidecar container. | No | false |
+ +------------------------------------------+-------------------------------------------------------+----------+------------------------------+
+ | csm.resiliency | Enables/disables podmon sidecar container. | No | false |
+ +------------------------------------------+-------------------------------------------------------+----------+------------------------------+
+ | app.starlingx.io/component | Core Affinity. | No | platform |
+ +------------------------------------------+-------------------------------------------------------+----------+------------------------------+
+ | controller.replication.replicationPrefix | Change replication prefix. | No | replication.storage.dell.com |
+ +------------------------------------------+-------------------------------------------------------+----------+------------------------------+
+ | controller.snapshot.deletionPolicy | Specifies what happens when VolumeSnapshot is deleted.| No | Delete |
+ +------------------------------------------+-------------------------------------------------------+----------+------------------------------+
+
+*************************
+StorageClasses Parameters
+*************************
+
+.. table::
+ :widths: auto
+
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | Parameter | Description | Required | Default |
+ +======================================================+===========================================================================================================+==========+============================+
+ | storageClasses[0].name | StorageClass name. | Yes | "csi-powerstore-" + fstype |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].arrayID | ID of array to be used for volumes. arrayID corresponding to array's globalID specified in secrets. | Yes | Not Applicable |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].nasName | |NAS| server's name. Important: required for |NFS| protocol. | No | Not Applicable |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].provisioner | Driver name. | No | csi-powerstore.dellemc.com |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].fstype | Filesystem type for mounted volumes. | No | nfs |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | No | Delete |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | No | false |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | No | Immediate |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].allowRoot | Enables or disables root squashing (valid only for |NFS|). | No | false |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].nfsAcls | Enables setting permissions on |NFS| mount directory. | No | 0777 |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].allowedTopologies | This feature lets you specify sub-divisions of a cluster for a volume to be placed in. | Yes | Not Applicable |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].replication | Used to configure replication sidecar container. | No | Not Applicable |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].replication.remoteStorageClassName | Remote StorageClass name. | No | csi-powerstore-replication |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].replication.remoteClusterID | Remote ClusterID. | No | Not Applicable |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].replication.remoteSystem | Remote PowerStore system. | No | Not Applicable |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].replication.rpo | Change to any other |RPOs| supported by PowerStore. | No | Five_Minutes |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].replication.ignoreNamespaces | Set to true if you want to ignore namespaces and if false creates separate volume group per namespace. | No | false |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+ | storageClasses[0].replication.volumeGroupPrefix | Volume group prefix. | No | csi-powerstore |
+ +------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+----------+----------------------------+
+
+*****************
+Secret Parameters
+*****************
+
+.. table::
+ :widths: auto
+
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | Parameter | Description | Required | Default |
+ +============================================+===================================================================================================+==========+================+
+ | secret.arrays | List of PowerStore array. | Yes | Not Applicable |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].globalID | Unique ID of the PowerStore array. globalID corresponding to arrayID specified in storageClasses. | Yes | Not Applicable |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].username | Username for connecting to REST API server. | Yes | Not Applicable |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].password | Password for connecting to REST API server. | Yes | Not Applicable |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].endpoint | HTTPS endpoint of the REST API server. | Yes | Not Applicable |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].isDefault | Treat current array as a default. Important: requires one array as default. | No | false |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].skipCertificateValidation | Indicates if client side validation of server's certificate can be skipped. | No | true |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].blockProtocol | What SCSI transport protocol used on node side (FC, ISCSI, NVMeTCP, NVMeFC, None, or auto). | No | auto |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].nasName | What |NAS| should be used for |NFS| volumes. Required for |NFS| protocol. | No | Not Applicable |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].nfsAcls | Enables setting permissions on |NFS| mount directory. | No | 0777 |
+ +--------------------------------------------+---------------------------------------------------------------------------------------------------+----------+----------------+
+
diff --git a/doc/source/storage/kubernetes/configure-unity-xt-csi-backend-c1abbbd371dc.rst b/doc/source/storage/kubernetes/configure-unity-xt-csi-backend-c1abbbd371dc.rst
new file mode 100644
index 000000000..9891efa94
--- /dev/null
+++ b/doc/source/storage/kubernetes/configure-unity-xt-csi-backend-c1abbbd371dc.rst
@@ -0,0 +1,182 @@
+.. WARNING: Add no lines of text between the label immediately following
+.. and the title.
+
+.. _configure-unity-xt-csi-backend-c1abbbd371dc:
+
+==============================
+Configure Unity XT CSI Backend
+==============================
+
+|CSI| driver for Unity XT is a part of the |CSM| open-source suite of
+Kubernetes storage enablers for Dell products. It is a CSI driver that provides
+support for provisioning persistent storage using Dell Unity XT storage array.
+
+.. note::
+
+ By default, the csi-unity chart is disabled. It is necessary to enable the
+ chart and update user-overrides before applying the dell-storage application.
+
+.. contents::
+ :local:
+ :depth: 2
+
+----------------------
+Enable CSI Unity Chart
+----------------------
+
+.. note::
+
+ Disable any other |CSI|/|CSM| if not used/configured, otherwise it could
+ cause the application to fail on apply.
+
+ .. code-block::
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage
+
+#. Enable the chart.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csi-unity dell-storage
+
+#. Create overrides to configure the storage connection.
+
+ .. code-block:: none
+
+ :name: unityOverrides.yaml
+
+ csm:
+ resiliency: false
+ app.starlingx.io/component: platform
+
+ storageClasses:
+ - name: unity-virt2307pjxdbt-nfs
+ arrayId:
+ nasServer: nas_2
+ provisioner: csi-unity.dellemc.com
+ fstype: nfs
+ reclaimPolicy: Delete
+ allowVolumeExpansion: true
+ volumeBindingMode: Immediate
+ mountOptions: ["hard"]
+ hostIoSize: 8192
+ tieringPolicy: 0
+ isDataReductionEnabled: "false"
+ thinProvisioned: "true"
+ storagePool: pool_2
+ protocol: NFS
+ allowedTopologies:
+ - matchLabelExpressions:
+ - key: "csi-unity.dellemc.com/virt2307pjxdbt-nfs"
+ values:
+ - "true"
+
+ secret:
+ arrays:
+ - arrayId:
+ username:
+ password:
+ endpoint: https://
+ isDefault: true
+ skipCertificateValidation: true
+
+#. Apply overrides.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-update dell-storage csi-unity dell-storage --values=unityOverrides.yaml
+
+#. Apply the chart.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system application-apply dell-storage
+
+------------------------
+UserOverrides Parameters
+------------------------
+
+******************
+General Parameters
+******************
+
+.. table::
+ :widths: auto
+
+ +----------------------------+--------------------------------------------+----------+----------+
+ | Parameter | Description | Required | Default |
+ +============================+============================================+==========+==========+
+ | csm.resiliency | Enables/disables podmon sidecar container. | No | false |
+ +----------------------------+--------------------------------------------+----------+----------+
+ | app.starlingx.io/component | Core Affinity. | No | platform |
+ +----------------------------+--------------------------------------------+----------+----------+
+
+
+*************************
+StorageClasses Parameters
+*************************
+
+.. table::
+ :widths: auto
+
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | Parameter | Description | Required | Default |
+ +==========================================+==================================================================================================================+==========+=====================================+
+ | storageClasses[0].hostIoSize | Inserts Host IO size that is to be set for the filesystem. | No | 8192 |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].name | StorageClass name. | No | "unity-" + arrayId + "-" + protocol |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].mountOptions | Defines mount input values. | No | [] |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].provisioner | Driver name. | No | csi-unity.dellemc.com |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].reclaimPolicy | PVs that are dynamically created by a StorageClass will have the reclaim policy specified here. | No | Delete |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].volumeBindingMode | Controls when volume binding and dynamic provisioning should occur. | No | Immediate |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].fstype | Filesystem type for mounted volumes. | No | nfs |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].protocol | Defines FC or FIBRE for FibreChannel, ISCSI, |NFS|, or "" for auto selection. | No | |NFS| |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].allowVolumeExpansion | Allows the users to resize the volume by editing the corresponding |PVC| object. | No | true |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].isDataReductionEnabled | Defines Boolean to choose value of is DataReductionEnabled while creating a new volume. Type: string. | No | true |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].thinProvisioned | Defines Boolean to choose value of thinProvisioned while creating a new volume. Type: string. | No | true |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].arrayId | ID of array to be used for volumes. arrayID corresponding to array's globalID specified in secrets. | Yes | Not Applicable |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].nasServer | |NAS| server's name. Important: required for |NFS| protocol. | No | Not Applicable |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].hostIOLimitName | Insert Host IO Limit Name that is to be used for provisioning here. | No | Not Applicable |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].tieringPolicy | Tiering policy to be used during provisioning. Requires FAST VP license. | No | Not Applicable |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].storagePool | Defines storage pool. Value should be picked from the column labeled "CLI ID" of pools in the Unisphere GUI. | Yes | Not Applicable |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+ | storageClasses[0].allowedTopologies | This feature lets you specify sub-divisions of a cluster for a volume to be placed in. | No | Not Applicable |
+ +------------------------------------------+------------------------------------------------------------------------------------------------------------------+----------+-------------------------------------+
+
+*****************
+Secret Parameters
+*****************
+
+.. table::
+
+ +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+
+ | Parameter | Description | Required | Default |
+ +============================================+========================================================================================+==========+================+
+ | secret.arrays | List of Unity XT. | Yes | Not Applicable |
+ +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].arrayId | Array ID of Unity XT. | Yes | Not Applicable |
+ +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].username | Username for connecting to Unity XT Unisphere REST API server. | Yes | Not Applicable |
+ +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].password | Password for connecting to Unity XT Unisphere REST API server. | Yes | Not Applicable |
+ +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].endpoint | HTTPS endpoint of the Unity XT Unisphere REST API server. | Yes | Not Applicable |
+ +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].isDefault | Treats current array as a default. Use at least one of the arrays as default. | No | false |
+ +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+
+ | secret.arrays[0].skipCertificateValidation | Indicates if client side validation of server's certificate can be skipped. | No | true |
+ +--------------------------------------------+----------------------------------------------------------------------------------------+----------+----------------+
diff --git a/doc/source/storage/kubernetes/dell-storage-backend-28f5771e6d9b.rst b/doc/source/storage/kubernetes/dell-storage-backend-28f5771e6d9b.rst
new file mode 100644
index 000000000..092bfc791
--- /dev/null
+++ b/doc/source/storage/kubernetes/dell-storage-backend-28f5771e6d9b.rst
@@ -0,0 +1,97 @@
+.. WARNING: Add no lines of text between the label immediately following
+.. and the title.
+
+.. _dell-storage-backend-28f5771e6d9b:
+
+====================
+Dell Storage Backend
+====================
+
+The |CSI| drivers by Dell implement an interface between |CSI| (|CSI| spec
+v1.6) enabled |CO| and Dell Storage Arrays. It is a plug-in that is installed
+in Kubernetes to provide persistent storage using the Dell storage system.
+
+For details about Dell |CSIs|, see ``__.
+
+The Dell Technologies (Dell) |CSM| enables simple and consistent integration,
+and automation experiences, extending enterprise storage capabilities to
+Kubernetes for cloud-native stateful applications.
+
+For details about Dell |CSMs|, see ``__.
+
+: rubric:: |prereq|
+
+- Check if your Dell storage platform is supported. To check, see ``__.
+- If using any |CSM|, check if it is supported for your platform. To check, see ``__.
+- Controller is unlocked.
+- The Dell-storage application is on the uploaded state.
+- All commands are executed on the active controller.
+
+.. note::
+
+ For every change on user-overrides to be updated on the application, you
+ need to reapply the override before applying the Dell-storage application.
+
+.. note::
+
+ csi-powerstore is enabled by default. Disable any other |CSI|/|CSM| if
+ not used, otherwise it could cause the application to fail on apply.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage dell-storage
+
+---------------
+Common Commands
+---------------
+
+- Get list of enabled/disabled Dell-storage application charts.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-list dell-storage --long
+
+- Check |CSM|/|CSI| overrides.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-show dell-storage dell-storage
+
+- Enable/disable the chart.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-chart-attribute-modify --enabled dell-storage dell-storage
+
+- Apply overrides.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system helm-override-update dell-storage dell-storage --values=
+
+- Get the Dell-storage pods list.
+
+ .. code-block:: none
+
+ (keystone_admin)$ kubectl get pods -n dell-storage
+
+- Apply/abort/remove the Dell-storage application.
+
+ .. code-block:: none
+
+ (keystone_admin)$ system application- dell-storage
+
+--------------
+Related Topics
+--------------
+
+- :ref:`configure-powermax-csi-backend-7b6e65e3a811`
+- :ref:`configure-powerflex-csi-backend-20a371e4f7d3`
+- :ref:`configure-powerscale-csi-backend-aa6a128c0b44`
+- :ref:`configure-powerstore-csi-backend-02af0aa983b0`
+- :ref:`configure-dell-storage-csms-937563b7bb36`
+- :ref:`configure-unity-xt-csi-backend-c1abbbd371dc`
+- :ref:`dell-storage-snapshots-46916ac34bf0`
+- :ref:`dell-storage-backend-28f5771e6d9b`
+
+
diff --git a/doc/source/storage/kubernetes/dell-storage-snapshots-46916ac34bf0.rst b/doc/source/storage/kubernetes/dell-storage-snapshots-46916ac34bf0.rst
new file mode 100644
index 000000000..1e0e4396c
--- /dev/null
+++ b/doc/source/storage/kubernetes/dell-storage-snapshots-46916ac34bf0.rst
@@ -0,0 +1,94 @@
+.. WARNING: Add no lines of text between the label immediately following
+.. and the title.
+
+.. _dell-storage-snapshots-46916ac34bf0:
+
+================
+Create Snapshots
+================
+
+.. rubric:: |context|
+
+A Volume Snapshot Class enables the creation of snapshots for |PVCs|, allowing
+efficient backups and data restoration. This functionality ensures data
+protection, facilitating point-in-time recovery, and minimizing the risk of data
+loss in Kubernetes clusters.
+
+The procedure below demonstrates how to create a Volume Snapshot Class and
+Volume Snapshot for the Dell |CSI| provisioner.
+
+.. note::
+
+ It is necessary to have the |CSI| controller running to be able to create
+ and mount the |PVC|.
+
+.. note::
+
+ The Dell-storage |CSIs| charts already create default snapshotclasses. You
+ can list them by using the following command:
+
+ .. code-block:: none
+
+ ~(keystone_admin)$ kubectl get volumesnapshotclasses.snapshot.storage.k8s.io
+
+.. rubric:: |proc|
+
+|CSI|-Powerstore is used in this example.
+
+#. Check if the Dell-storage application is successfully applied.
+
+ .. code-block:: none
+
+ ~(keystone_admin)$ system application-list
+ +--------------------------+-----------+-------------------------------------------+------------------+--------------+-----------+
+ | application | version | manifest name | manifest file | status | progress |
+ +--------------------------+-----------+-------------------------------------------+------------------+--------------+-----------+
+ | dell-storage | 24.03-36 | dell-storage-fluxcd-manifests | fluxcd-manifests | applied | completed |
+ +--------------------------+-----------+-------------------------------------------+------------------+--------------+-----------+
+
+#. Check if the |PVC| is created and bound.
+
+ .. code-block:: none
+
+ ~(keystone_admin)$ kubectl get -n dell-storage pvc
+ NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
+ pvol0 Bound csi-powerstore-vol-0fca78f7dd 8Gi RWO csi-powerstore-nfs 5m
+
+#. Check the available snapshot classes.
+
+ .. code-block:: none
+
+ ~(keystone_admin)$ kubectl get volumesnapshotclasses.snapshot.storage.k8s.io
+ NAME DRIVER DELETIONPOLICY AGE
+ csi-powerstore-snapshot csi-powerstore.dellemc.com Delete 5m
+
+#. Create the |PVC| snapshot file and apply it.
+
+ .. code-block:: none
+
+ ~(keystone_admin)$ cat << EOF > ~/powerstore-volume-snapshot.yaml
+ apiVersion: snapshot.storage.k8s.io/v1
+ kind: VolumeSnapshot
+ metadata:
+ name: csi-powerstore-pvc-snapshot
+ namespace: dell-storage
+ spec:
+ volumeSnapshotClassName: csi-powerstore-snapshot
+ source:
+ persistentVolumeClaimName: pvol0
+ EOF
+
+ ~(keystone_admin)$ kubectl apply -f ~/powerstore-volume-snapshot.yaml
+ volumesnapshot.snapshot.storage.k8s.io/csi-powerstore-pvc-snapshot created
+
+#. Confirm that the |PVC| snapshot file was created successfully.
+
+ .. code-block:: none
+
+ ~(keystone_admin)$ kubectl get volumesnapshots.snapshot.storage.k8s.io
+ NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE
+ csi-powerstore-pvc-snapshot true pvol0 8Gi csi-powerstore-snapshot snapcontent-dcfdbb32- 13s 21s
+ c936-469e-aa01-abe59f574fd1
+
+
+
diff --git a/doc/source/storage/kubernetes/index-storage-kub-e797132c87a8.rst b/doc/source/storage/kubernetes/index-storage-kub-e797132c87a8.rst
index 968828329..ceada59bb 100644
--- a/doc/source/storage/kubernetes/index-storage-kub-e797132c87a8.rst
+++ b/doc/source/storage/kubernetes/index-storage-kub-e797132c87a8.rst
@@ -168,6 +168,22 @@ Ceph File System Provisioner
enable-readwritemany-pvc-support-in-additional-namespaces
create-cephfs-volume-snapshot-class-92f4ad13d166
+************************************
+Dell Storage File System Provisioner
+************************************
+
+.. toctree::
+ :maxdepth: 1
+
+ dell-storage-backend-28f5771e6d9b
+ configure-powerstore-csi-backend-02af0aa983b0
+ configure-powerflex-csi-backend-20a371e4f7d3
+ configure-powermax-csi-backend-7b6e65e3a811
+ configure-powerscale-csi-backend-aa6a128c0b44
+ configure-unity-xt-csi-backend-c1abbbd371dc
+ configure-dell-storage-csms-937563b7bb36
+ dell-storage-snapshots-46916ac34bf0
+
----------------------------
Storage-Related CLI Commands
----------------------------