summaryrefslogtreecommitdiffstats
path: root/ansible_collections/dellemc/powerflex/docs/modules
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:04:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:04:41 +0000
commit975f66f2eebe9dadba04f275774d4ab83f74cf25 (patch)
tree89bd26a93aaae6a25749145b7e4bca4a1e75b2be /ansible_collections/dellemc/powerflex/docs/modules
parentInitial commit. (diff)
downloadansible-975f66f2eebe9dadba04f275774d4ab83f74cf25.tar.xz
ansible-975f66f2eebe9dadba04f275774d4ab83f74cf25.zip
Adding upstream version 7.7.0+dfsg.upstream/7.7.0+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/dellemc/powerflex/docs/modules')
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/device.rst474
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/info.rst655
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/mdm_cluster.rst549
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/protection_domain.rst437
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/replication_consistency_group.rst465
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/replication_pair.rst432
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/sdc.rst198
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/sds.rst516
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/snapshot.rst398
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/storagepool.rst264
-rw-r--r--ansible_collections/dellemc/powerflex/docs/modules/volume.rst476
11 files changed, 4864 insertions, 0 deletions
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/device.rst b/ansible_collections/dellemc/powerflex/docs/modules/device.rst
new file mode 100644
index 000000000..35ae246aa
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/device.rst
@@ -0,0 +1,474 @@
+.. _device_module:
+
+
+device -- Manage device on Dell PowerFlex
+=========================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing device on PowerFlex storage system includes adding new device, getting details of device, and removing a device.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ current_pathname (optional, str, None)
+ Full path of the device to be added.
+
+ Required while adding a device.
+
+
+ device_name (optional, str, None)
+ Device name.
+
+ Mutually exclusive with *device_id*.
+
+
+ device_id (optional, str, None)
+ Device ID.
+
+ Mutually exclusive with *device_name*.
+
+
+ sds_name (optional, str, None)
+ The name of the SDS.
+
+ Required while adding a device.
+
+ Mutually exclusive with *sds_id*.
+
+
+ sds_id (optional, str, None)
+ The ID of the SDS.
+
+ Required while adding a device.
+
+ Mutually exclusive with *sds_name*.
+
+
+ storage_pool_name (optional, str, None)
+ Storage Pool name.
+
+ Used while adding a storage device.
+
+ Mutually exclusive with *storage_pool_id*, *acceleration_pool_id* and *acceleration_pool_name*.
+
+
+ storage_pool_id (optional, str, None)
+ Storage Pool ID.
+
+ Used while adding a storage device.
+
+ Media type supported are ``SSD`` and ``HDD``.
+
+ Mutually exclusive with *storage_pool_name*, *acceleration_pool_id* and *acceleration_pool_name*.
+
+
+ acceleration_pool_name (optional, str, None)
+ Acceleration Pool Name.
+
+ Used while adding an acceleration device.
+
+ Media type supported are ``SSD`` and ``NVDIMM``.
+
+ Mutually exclusive with *storage_pool_id*, *storage_pool_name* and *acceleration_pool_name*.
+
+
+ acceleration_pool_id (optional, str, None)
+ Acceleration Pool ID.
+
+ Used while adding an acceleration device.
+
+ Media type supported are ``SSD`` and ``NVDIMM``.
+
+ Mutually exclusive with *acceleration_pool_name*, *storage_pool_name* and *storage_pool_id*.
+
+
+ protection_domain_name (optional, str, None)
+ Protection domain name.
+
+ Used while identifying a storage pool along with *storage_pool_name*.
+
+ Mutually exclusive with *protection_domain_id*.
+
+
+ protection_domain_id (optional, str, None)
+ Protection domain ID.
+
+ Used while identifying a storage pool along with *storage_pool_name*.
+
+ Mutually exclusive with *protection_domain_name*.
+
+
+ external_acceleration_type (optional, str, None)
+ Device external acceleration types.
+
+ Used while adding a device.
+
+
+ media_type (optional, str, None)
+ Device media types.
+
+ Required while adding a device.
+
+
+ state (True, str, None)
+ State of the device.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The value for device_id is generated only after successful addition of the device.
+ - To uniquely identify a device, either *device_id* can be passed or one of *current_pathname* or *device_name* must be passed with *sds_id* or *sds_name*.
+ - It is recommended to install Rfcache driver for SSD device on SDS in order to add it to an acceleration pool.
+ - The *check_mode* is not supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Add a device
+ dellemc.powerflex.device:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ current_pathname: "/dev/sdb"
+ sds_name: "node1"
+ media_type: "HDD"
+ device_name: "device2"
+ storage_pool_name: "pool1"
+ protection_domain_name: "domain1"
+ external_acceleration_type: "ReadAndWrite"
+ state: "present"
+ - name: Get device details using device_id
+ dellemc.powerflex.device:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ device_id: "d7fe088900000000"
+ state: "present"
+ - name: Get device details using (current_pathname, sds_name)
+ dellemc.powerflex.device:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ current_pathname: "/dev/sdb"
+ sds_name: "node0"
+ state: "present"
+ - name: Get device details using (current_pathname, sds_id)
+ dellemc.powerflex.device:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ current_pathname: "/dev/sdb"
+ sds_id: "5717d71800000000"
+ state: "present"
+ - name: Remove a device using device_id
+ dellemc.powerflex.device:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ device_id: "76eb7e2f00010000"
+ state: "absent"
+ - name: Remove a device using (current_pathname, sds_id)
+ dellemc.powerflex.device:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ current_pathname: "/dev/sdb"
+ sds_name: "node1"
+ state: "absent"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+device_details (When device exists, dict, {'accelerationPoolId': None, 'accelerationProps': None, 'aggregatedState': 'NeverFailed', 'ataSecurityActive': False, 'autoDetectMediaType': 'SSD', 'cacheLookAheadActive': False, 'capacity': 0, 'capacityLimitInKb': 365772800, 'deviceCurrentPathName': '/dev/sdb', 'deviceOriginalPathName': '/dev/sdb', 'deviceState': 'Normal', 'deviceType': 'Unknown', 'errorState': 'None', 'externalAccelerationType': 'None', 'fglNvdimmMetadataAmortizationX100': 150, 'fglNvdimmWriteCacheSize': 16, 'firmwareVersion': None, 'id': 'b6efa59900000000', 'ledSetting': 'Off', 'links': [{'href': '/api/instances/Device::b6efa59900000000', 'rel': 'self'}, {'href': '/api/instances/Device::b6efa59900000000/relationships /Statistics', 'rel': '/api/Device/relationship/Statistics'}, {'href': '/api/instances/Sds::8f3bb0ce00000000', 'rel': '/api/parent/relationship/sdsId'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000', 'rel': '/api/parent/relationship/storagePoolId'}, {'href': '/api/instances/SpSds::fedf6f2000000000', 'rel': '/api/parent/relationship/spSdsId'}], 'logicalSectorSizeInBytes': 0, 'longSuccessfulIos': {'longWindow': None, 'mediumWindow': None, 'shortWindow': None}, 'maxCapacityInKb': 365772800, 'mediaFailing': False, 'mediaType': 'HDD', 'modelName': None, 'name': 'device230', 'persistentChecksumState': 'Protected', 'physicalSectorSizeInBytes': 0, 'protectionDomainId': '9300c1f900000000', 'protectionDomainName': 'domain1', 'raidControllerSerialNumber': None, 'rfcacheErrorDeviceDoesNotExist': False, 'rfcacheProps': None, 'sdsId': '8f3bb0ce00000000', 'sdsName': 'node1', 'serialNumber': None, 'slotNumber': None, 'spSdsId': 'fedf6f2000000000', 'ssdEndOfLifeState': 'NeverFailed', 'storagePoolId': 'e0d8f6c900000000', 'storagePoolName': 'pool1', 'storageProps': {'destFglAccDeviceId': None, 'destFglNvdimmSizeMb': 0, 'fglAccDeviceId': None, 'fglNvdimmSizeMb': 0}, 'temperatureState': 'NeverFailed', 'vendorName': None, 'writeCacheActive': False})
+ Details of the device.
+
+
+ accelerationPoolId (, str, )
+ Acceleration pool ID.
+
+
+ accelerationPoolName (, str, )
+ Acceleration pool name.
+
+
+ accelerationProps (, str, )
+ Indicates acceleration props.
+
+
+ aggregatedState (, str, )
+ Indicates aggregated state.
+
+
+ ataSecurityActive (, bool, )
+ Indicates ATA security active state.
+
+
+ autoDetectMediaType (, str, )
+ Indicates auto detection of media type.
+
+
+ cacheLookAheadActive (, bool, )
+ Indicates cache look ahead active state.
+
+
+ capacity (, int, )
+ Device capacity.
+
+
+ capacityLimitInKb (, int, )
+ Device capacity limit in KB.
+
+
+ deviceCurrentPathName (, str, )
+ Device current path name.
+
+
+ deviceOriginalPathName (, str, )
+ Device original path name.
+
+
+ deviceState (, str, )
+ Indicates device state.
+
+
+ deviceType (, str, )
+ Indicates device type.
+
+
+ errorState (, str, )
+ Indicates error state.
+
+
+ externalAccelerationType (, str, )
+ Indicates external acceleration type.
+
+
+ fglNvdimmMetadataAmortizationX100 (, int, )
+ Indicates FGL NVDIMM meta data amortization value.
+
+
+ fglNvdimmWriteCacheSize (, int, )
+ Indicates FGL NVDIMM write cache size.
+
+
+ firmwareVersion (, str, )
+ Indicates firmware version.
+
+
+ id (, str, )
+ Device ID.
+
+
+ ledSetting (, str, )
+ Indicates LED setting.
+
+
+ links (, list, )
+ Device links.
+
+
+ href (, str, )
+ Device instance URL.
+
+
+ rel (, str, )
+ Relationship of device with different entities.
+
+
+
+ logicalSectorSizeInBytes (, int, )
+ Logical sector size in bytes.
+
+
+ longSuccessfulIos (, list, )
+ Indicates long successful IOs.
+
+
+ maxCapacityInKb (, int, )
+ Maximum device capacity limit in KB.
+
+
+ mediaFailing (, bool, )
+ Indicates media failing.
+
+
+ mediaType (, str, )
+ Indicates media type.
+
+
+ modelName (, str, )
+ Indicates model name.
+
+
+ name (, str, )
+ Device name.
+
+
+ persistentChecksumState (, str, )
+ Indicates persistent checksum state.
+
+
+ physicalSectorSizeInBytes (, int, )
+ Physical sector size in bytes.
+
+
+ protectionDomainId (, str, )
+ Protection domain ID.
+
+
+ protectionDomainName (, str, )
+ Protection domain name.
+
+
+ raidControllerSerialNumber (, str, )
+ RAID controller serial number.
+
+
+ rfcacheErrorDeviceDoesNotExist (, bool, )
+ Indicates RF cache error device does not exist.
+
+
+ rfcacheProps (, str, )
+ RF cache props.
+
+
+ sdsId (, str, )
+ SDS ID.
+
+
+ sdsName (, str, )
+ SDS name.
+
+
+ serialNumber (, str, )
+ Indicates Serial number.
+
+
+ spSdsId (, str, )
+ Indicates SPs SDS ID.
+
+
+ ssdEndOfLifeState (, str, )
+ Indicates SSD end of life state.
+
+
+ storagePoolId (, str, )
+ Storage Pool ID.
+
+
+ storagePoolName (, str, )
+ Storage Pool name.
+
+
+ storageProps (, list, )
+ Storage props.
+
+
+ temperatureState (, str, )
+ Indicates temperature state.
+
+
+ vendorName (, str, )
+ Indicates vendor name.
+
+
+ writeCacheActive (, bool, )
+ Indicates write cache active.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Rajshree Khare (@khareRajshree) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/info.rst b/ansible_collections/dellemc/powerflex/docs/modules/info.rst
new file mode 100644
index 000000000..735fb04f4
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/info.rst
@@ -0,0 +1,655 @@
+.. _info_module:
+
+
+info -- Gathering information about Dell PowerFlex
+==================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Gathering information about Dell PowerFlex storage system includes getting the api details, list of volumes, SDSs, SDCs, storage pools, protection domains, snapshot policies, and devices.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ gather_subset (optional, list, None)
+ List of string variables to specify the Powerflex storage system entities for which information is required.
+
+ Volumes - ``vol``.
+
+ Storage pools - ``storage_pool``.
+
+ Protection domains - ``protection_domain``.
+
+ SDCs - ``sdc``.
+
+ SDSs - ``sds``.
+
+ Snapshot policies - ``snapshot_policy``.
+
+ Devices - ``device``.
+
+ Replication consistency groups - ``rcg``.
+
+ Replication pairs - ``replication_pair``.
+
+
+ filters (optional, list, None)
+ List of filters to support filtered output for storage entities.
+
+ Each filter is a list of *filter_key*, *filter_operator*, *filter_value*.
+
+ Supports passing of multiple filters.
+
+
+ filter_key (True, str, None)
+ Name identifier of the filter.
+
+
+ filter_operator (True, str, None)
+ Operation to be performed on filter key.
+
+
+ filter_value (True, str, None)
+ Value of the filter key.
+
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The *check_mode* is supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get detailed list of PowerFlex entities
+ dellemc.powerflex.info:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ gather_subset:
+ - vol
+ - storage_pool
+ - protection_domain
+ - sdc
+ - sds
+ - snapshot_policy
+ - device
+ - rcg
+ - replication_pair
+
+ - name: Get a subset list of PowerFlex volumes
+ dellemc.powerflex.info:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ gather_subset:
+ - vol
+ filters:
+ - filter_key: "name"
+ filter_operator: "equal"
+ filter_value: "ansible_test"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+Array_Details (always, dict, {'addressSpaceUsage': 'Normal', 'authenticationMethod': 'Native', 'capacityAlertCriticalThresholdPercent': 90, 'capacityAlertHighThresholdPercent': 80, 'capacityTimeLeftInDays': '24', 'cliPasswordAllowed': True, 'daysInstalled': 66, 'defragmentationEnabled': True, 'enterpriseFeaturesEnabled': True, 'id': '4a54a8ba6df0690f', 'installId': '38622771228e56db', 'isInitialLicense': True, 'lastUpgradeTime': 0, 'managementClientSecureCommunicationEnabled': True, 'maxCapacityInGb': 'Unlimited', 'mdmCluster': {'clusterMode': 'ThreeNodes', 'clusterState': 'ClusteredNormal', 'goodNodesNum': 3, 'goodReplicasNum': 2, 'id': '5356091375512217871', 'master': {'id': '6101582c2ca8db00', 'ips': ['10.47.xxx.xxx'], 'managementIPs': ['10.47.xxx.xxx'], 'name': 'node0', 'opensslVersion': 'OpenSSL 1.0.2k-fips 26 Jan 2017', 'port': 9011, 'role': 'Manager', 'status': 'Normal', 'versionInfo': 'R3_6.0.0', 'virtualInterfaces': ['ens160']}, 'slaves': [{'id': '23fb724015661901', 'ips': ['10.47.xxx.xxx'], 'managementIPs': ['10.47.xxx.xxx'], 'opensslVersion': 'OpenSSL 1.0.2k-fips 26 Jan 2017', 'port': 9011, 'role': 'Manager', 'status': 'Normal', 'versionInfo': 'R3_6.0.0', 'virtualInterfaces': ['ens160']}], 'tieBreakers': [{'id': '6ef27eb20d0c1202', 'ips': ['10.47.xxx.xxx'], 'managementIPs': ['10.47.xxx.xxx'], 'opensslVersion': 'N/A', 'port': 9011, 'role': 'TieBreaker', 'status': 'Normal', 'versionInfo': 'R3_6.0.0'}]}, 'mdmExternalPort': 7611, 'mdmManagementPort': 6611, 'mdmSecurityPolicy': 'None', 'showGuid': True, 'swid': '', 'systemVersionName': 'DellEMC PowerFlex Version: R3_6.0.354', 'tlsVersion': 'TLSv1.2', 'upgradeState': 'NoUpgrade'})
+ System entities of PowerFlex storage array.
+
+
+ addressSpaceUsage (, str, )
+ Address space usage.
+
+
+ authenticationMethod (, str, )
+ Authentication method.
+
+
+ capacityAlertCriticalThresholdPercent (, int, )
+ Capacity alert critical threshold percentage.
+
+
+ capacityAlertHighThresholdPercent (, int, )
+ Capacity alert high threshold percentage.
+
+
+ capacityTimeLeftInDays (, str, )
+ Capacity time left in days.
+
+
+ cliPasswordAllowed (, bool, )
+ CLI password allowed.
+
+
+ daysInstalled (, int, )
+ Days installed.
+
+
+ defragmentationEnabled (, bool, )
+ Defragmentation enabled.
+
+
+ enterpriseFeaturesEnabled (, bool, )
+ Enterprise features enabled.
+
+
+ id (, str, )
+ The ID of the system.
+
+
+ installId (, str, )
+ installation Id.
+
+
+ isInitialLicense (, bool, )
+ Initial license.
+
+
+ lastUpgradeTime (, int, )
+ Last upgrade time.
+
+
+ managementClientSecureCommunicationEnabled (, bool, )
+ Management client secure communication enabled.
+
+
+ maxCapacityInGb (, dict, )
+ Maximum capacity in GB.
+
+
+ mdmCluster (, dict, )
+ MDM cluster details.
+
+
+ mdmExternalPort (, int, )
+ MDM external port.
+
+
+ mdmManagementPort (, int, )
+ MDM management port.
+
+
+ mdmSecurityPolicy (, str, )
+ MDM security policy.
+
+
+ showGuid (, bool, )
+ Show guid.
+
+
+ swid (, str, )
+ SWID.
+
+
+ systemVersionName (, str, )
+ System version and name.
+
+
+ tlsVersion (, str, )
+ TLS version.
+
+
+ upgradeState (, str, )
+ Upgrade state.
+
+
+
+API_Version (always, str, 3.5)
+ API version of PowerFlex API Gateway.
+
+
+Protection_Domains (always, list, [{'id': '9300e90900000001', 'name': 'domain2'}, {'id': '9300c1f900000000', 'name': 'domain1'}])
+ Details of all protection domains.
+
+
+ id (, str, )
+ protection domain id.
+
+
+ name (, str, )
+ protection domain name.
+
+
+
+SDCs (always, list, [{'id': '07335d3d00000006', 'name': 'LGLAP203'}, {'id': '07335d3c00000005', 'name': 'LGLAP178'}, {'id': '0733844a00000003'}])
+ Details of storage data clients.
+
+
+ id (, str, )
+ storage data client id.
+
+
+ name (, str, )
+ storage data client name.
+
+
+
+SDSs (always, list, [{'id': '8f3bb0cc00000002', 'name': 'node0'}, {'id': '8f3bb0ce00000000', 'name': 'node1'}, {'id': '8f3bb15300000001', 'name': 'node22'}])
+ Details of storage data servers.
+
+
+ id (, str, )
+ storage data server id.
+
+
+ name (, str, )
+ storage data server name.
+
+
+
+Snapshot_Policies (always, list, [{'id': '2b380c5c00000000', 'name': 'sample_snap_policy'}, {'id': '2b380c5d00000001', 'name': 'sample_snap_policy_1'}])
+ Details of snapshot policies.
+
+
+ id (, str, )
+ snapshot policy id.
+
+
+ name (, str, )
+ snapshot policy name.
+
+
+
+Storage_Pools (always, list, [{'addressSpaceUsage': 'Normal', 'addressSpaceUsageType': 'DeviceCapacityLimit', 'backgroundScannerBWLimitKBps': 3072, 'backgroundScannerMode': 'DataComparison', 'bgScannerCompareErrorAction': 'ReportAndFix', 'bgScannerReadErrorAction': 'ReportAndFix', 'capacityAlertCriticalThreshold': 90, 'capacityAlertHighThreshold': 80, 'capacityUsageState': 'Normal', 'capacityUsageType': 'NetCapacity', 'checksumEnabled': False, 'compressionMethod': 'Invalid', 'dataLayout': 'MediumGranularity', 'externalAccelerationType': 'None', 'fglAccpId': None, 'fglExtraCapacity': None, 'fglMaxCompressionRatio': None, 'fglMetadataSizeXx100': None, 'fglNvdimmMetadataAmortizationX100': None, 'fglNvdimmWriteCacheSizeInMb': None, 'fglOverProvisioningFactor': None, 'fglPerfProfile': None, 'fglWriteAtomicitySize': None, 'fragmentationEnabled': True, 'id': 'e0d8f6c900000000', 'links': [{'href': '/api/instances/StoragePool::e0d8f6c900000000', 'rel': 'self'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/Statistics', 'rel': '/api/StoragePool/relationship/Statistics'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/SpSds', 'rel': '/api/StoragePool/relationship/SpSds'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/Volume', 'rel': '/api/StoragePool/relationship/Volume'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/Device', 'rel': '/api/StoragePool/relationship/Device'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/VTree', 'rel': '/api/StoragePool/relationship/VTree'}, {'href': '/api/instances/ProtectionDomain::9300c1f900000000', 'rel': '/api/parent/relationship/protectionDomainId'}], 'statistics': {'BackgroundScannedInMB': 3466920, 'activeBckRebuildCapacityInKb': 0, 'activeEnterProtectedMaintenanceModeCapacityInKb': 0, 'aggregateCompressionLevel': 'Uncompressed', 'atRestCapacityInKb': 1248256, 'backgroundScanCompareErrorCount': 0, 'backgroundScanFixedCompareErrorCount': 0, 'bckRebuildReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'bckRebuildWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'capacityAvailableForVolumeAllocationInKb': 369098752, 'capacityInUseInKb': 2496512, 'capacityInUseNoOverheadInKb': 2496512, 'capacityLimitInKb': 845783040, 'compressedDataCompressionRatio': 0.0, 'compressionRatio': 1.0, 'currentFglMigrationSizeInKb': 0, 'deviceIds': [], 'enterProtectedMaintenanceModeCapacityInKb': 0, 'enterProtectedMaintenanceModeReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'enterProtectedMaintenanceModeWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'exitProtectedMaintenanceModeReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'exitProtectedMaintenanceModeWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'exposedCapacityInKb': 0, 'failedCapacityInKb': 0, 'fwdRebuildReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'fwdRebuildWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'inMaintenanceCapacityInKb': 0, 'inMaintenanceVacInKb': 0, 'inUseVacInKb': 184549376, 'inaccessibleCapacityInKb': 0, 'logWrittenBlocksInKb': 0, 'maxCapacityInKb': 845783040, 'migratingVolumeIds': [], 'migratingVtreeIds': [], 'movingCapacityInKb': 0, 'netCapacityInUseInKb': 1248256, 'normRebuildCapacityInKb': 0, 'normRebuildReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'normRebuildWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'numOfDeviceAtFaultRebuilds': 0, 'numOfDevices': 3, 'numOfIncomingVtreeMigrations': 0, 'numOfVolumes': 8, 'numOfVolumesInDeletion': 0, 'numOfVtrees': 8, 'overallUsageRatio': 73.92289, 'pendingBckRebuildCapacityInKb': 0, 'pendingEnterProtectedMaintenanceModeCapacityInKb': 0, 'pendingExitProtectedMaintenanceModeCapacityInKb': 0, 'pendingFwdRebuildCapacityInKb': 0, 'pendingMovingCapacityInKb': 0, 'pendingMovingInBckRebuildJobs': 0, 'persistentChecksumBuilderProgress': 100.0, 'persistentChecksumCapacityInKb': 414720, 'primaryReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'primaryReadFromDevBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'primaryReadFromRmcacheBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'primaryVacInKb': 92274688, 'primaryWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'protectedCapacityInKb': 2496512, 'protectedVacInKb': 184549376, 'provisionedAddressesInKb': 2496512, 'rebalanceCapacityInKb': 0, 'rebalanceReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'rebalanceWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'rfacheReadHit': 0, 'rfacheWriteHit': 0, 'rfcacheAvgReadTime': 0, 'rfcacheAvgWriteTime': 0, 'rfcacheIoErrors': 0, 'rfcacheIosOutstanding': 0, 'rfcacheIosSkipped': 0, 'rfcacheReadMiss': 0, 'rmPendingAllocatedInKb': 0, 'rmPendingThickInKb': 0, 'rplJournalCapAllowed': 0, 'rplTotalJournalCap': 0, 'rplUsedJournalCap': 0, 'secondaryReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'secondaryReadFromDevBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'secondaryReadFromRmcacheBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'secondaryVacInKb': 92274688, 'secondaryWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'semiProtectedCapacityInKb': 0, 'semiProtectedVacInKb': 0, 'snapCapacityInUseInKb': 0, 'snapCapacityInUseOccupiedInKb': 0, 'snapshotCapacityInKb': 0, 'spSdsIds': ['abdfe71b00030001', 'abdce71d00040001', 'abdde71e00050001'], 'spareCapacityInKb': 84578304, 'targetOtherLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'targetReadLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'targetWriteLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'tempCapacityInKb': 0, 'tempCapacityVacInKb': 0, 'thickCapacityInUseInKb': 0, 'thinAndSnapshotRatio': 73.92289, 'thinCapacityAllocatedInKm': 184549376, 'thinCapacityInUseInKb': 0, 'thinUserDataCapacityInKb': 2496512, 'totalFglMigrationSizeInKb': 0, 'totalReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'totalWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'trimmedUserDataCapacityInKb': 0, 'unreachableUnusedCapacityInKb': 0, 'unusedCapacityInKb': 758708224, 'userDataCapacityInKb': 2496512, 'userDataCapacityNoTrimInKb': 2496512, 'userDataReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcReadLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcTrimLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcWriteLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataTrimBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'volMigrationReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'volMigrationWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'volumeAddressSpaceInKb': '922XXXXX', 'volumeAllocationLimitInKb': '3707XXXXX', 'volumeIds': ['456afc7900XXXXXXXX'], 'vtreeAddresSpaceInKb': 92274688, 'vtreeIds': ['32b1681bXXXXXXXX']}, 'mediaType': 'HDD', 'name': 'pool1', 'numOfParallelRebuildRebalanceJobsPerDevice': 2, 'persistentChecksumBuilderLimitKb': 3072, 'persistentChecksumEnabled': True, 'persistentChecksumState': 'Protected', 'persistentChecksumValidateOnRead': False, 'protectedMaintenanceModeIoPriorityAppBwPerDeviceThresholdInKbps': None, 'protectedMaintenanceModeIoPriorityAppIopsPerDeviceThreshold': None, 'protectedMaintenanceModeIoPriorityBwLimitPerDeviceInKbps': 10240, 'protectedMaintenanceModeIoPriorityNumOfConcurrentIosPerDevice': 1, 'protectedMaintenanceModeIoPriorityPolicy': 'limitNumOfConcurrentIos', 'protectedMaintenanceModeIoPriorityQuietPeriodInMsec': None, 'protectionDomainId': '9300c1f900000000', 'protectionDomainName': 'domain1', 'rebalanceEnabled': True, 'rebalanceIoPriorityAppBwPerDeviceThresholdInKbps': None, 'rebalanceIoPriorityAppIopsPerDeviceThreshold': None, 'rebalanceIoPriorityBwLimitPerDeviceInKbps': 10240, 'rebalanceIoPriorityNumOfConcurrentIosPerDevice': 1, 'rebalanceIoPriorityPolicy': 'favorAppIos', 'rebalanceIoPriorityQuietPeriodInMsec': None, 'rebuildEnabled': True, 'rebuildIoPriorityAppBwPerDeviceThresholdInKbps': None, 'rebuildIoPriorityAppIopsPerDeviceThreshold': None, 'rebuildIoPriorityBwLimitPerDeviceInKbps': 10240, 'rebuildIoPriorityNumOfConcurrentIosPerDevice': 1, 'rebuildIoPriorityPolicy': 'limitNumOfConcurrentIos', 'rebuildIoPriorityQuietPeriodInMsec': None, 'replicationCapacityMaxRatio': 32, 'rmcacheWriteHandlingMode': 'Cached', 'sparePercentage': 10, 'useRfcache': False, 'useRmcache': False, 'vtreeMigrationIoPriorityAppBwPerDeviceThresholdInKbps': None, 'vtreeMigrationIoPriorityAppIopsPerDeviceThreshold': None, 'vtreeMigrationIoPriorityBwLimitPerDeviceInKbps': 10240, 'vtreeMigrationIoPriorityNumOfConcurrentIosPerDevice': 1, 'vtreeMigrationIoPriorityPolicy': 'favorAppIos', 'vtreeMigrationIoPriorityQuietPeriodInMsec': None, 'zeroPaddingEnabled': True}])
+ Details of storage pools.
+
+
+ mediaType (, str, )
+ Type of devices in the storage pool.
+
+
+ useRfcache (, bool, )
+ Enable/Disable RFcache on a specific storage pool.
+
+
+ useRmcache (, bool, )
+ Enable/Disable RMcache on a specific storage pool.
+
+
+ id (, str, )
+ ID of the storage pool under protection domain.
+
+
+ name (, str, )
+ Name of the storage pool under protection domain.
+
+
+ protectionDomainId (, str, )
+ ID of the protection domain in which pool resides.
+
+
+ protectionDomainName (, str, )
+ Name of the protection domain in which pool resides.
+
+
+ statistics (, dict, )
+ Statistics details of the storage pool.
+
+
+ capacityInUseInKb (, str, )
+ Total capacity of the storage pool.
+
+
+ unusedCapacityInKb (, str, )
+ Unused capacity of the storage pool.
+
+
+ deviceIds (, list, )
+ Device Ids of the storage pool.
+
+
+
+
+Volumes (always, list, [{'accessModeLimit': 'ReadWrite', 'ancestorVolumeId': None, 'autoSnapshotGroupId': None, 'compressionMethod': 'Invalid', 'consistencyGroupId': None, 'creationTime': 1661234220, 'dataLayout': 'MediumGranularity', 'id': '456afd7XXXXXXX', 'lockedAutoSnapshot': False, 'lockedAutoSnapshotMarkedForRemoval': False, 'managedBy': 'ScaleIO', 'mappedSdcInfo': [{'accessMode': 'ReadWrite', 'isDirectBufferMapping': False, 'limitBwInMbps': 0, 'limitIops': 0, 'sdcId': 'c42425cbXXXXX', 'sdcIp': '10.XXX.XX.XX', 'sdcName': None}], 'name': 'vol-1', 'notGenuineSnapshot': False, 'originalExpiryTime': 0, 'pairIds': None, 'replicationJournalVolume': False, 'replicationTimeStamp': 0, 'retentionLevels': [], 'secureSnapshotExpTime': 0, 'sizeInKb': 8388608, 'snplIdOfAutoSnapshot': None, 'snplIdOfSourceVolume': None, 'statistics': {'childVolumeIds': [], 'descendantVolumeIds': [], 'initiatorSdcId': None, 'mappedSdcIds': ['c42425XXXXXX'], 'numOfChildVolumes': 0, 'numOfDescendantVolumes': 0, 'numOfMappedSdcs': 1, 'registrationKey': None, 'registrationKeys': [], 'replicationJournalVolume': False, 'replicationState': 'UnmarkedForReplication', 'reservationType': 'NotReserved', 'rplTotalJournalCap': 0, 'rplUsedJournalCap': 0, 'userDataReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcReadLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcTrimLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcWriteLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataTrimBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}}, 'storagePoolId': '7630a248XXXXXXX', 'timeStampIsAccurate': False, 'useRmcache': False, 'volumeReplicationState': 'UnmarkedForReplication', 'volumeType': 'ThinProvisioned', 'vtreeId': '32b168bXXXXXX'}])
+ Details of volumes.
+
+
+ id (, str, )
+ The ID of the volume.
+
+
+ mappedSdcInfo (, dict, )
+ The details of the mapped SDC.
+
+
+ sdcId (, str, )
+ ID of the SDC.
+
+
+ sdcName (, str, )
+ Name of the SDC.
+
+
+ sdcIp (, str, )
+ IP of the SDC.
+
+
+ accessMode (, str, )
+ mapping access mode for the specified volume.
+
+
+ limitIops (, int, )
+ IOPS limit for the SDC.
+
+
+ limitBwInMbps (, int, )
+ Bandwidth limit for the SDC.
+
+
+
+ name (, str, )
+ Name of the volume.
+
+
+ sizeInKb (, int, )
+ Size of the volume in Kb.
+
+
+ sizeInGb (, int, )
+ Size of the volume in Gb.
+
+
+ storagePoolId (, str, )
+ ID of the storage pool in which volume resides.
+
+
+ storagePoolName (, str, )
+ Name of the storage pool in which volume resides.
+
+
+ protectionDomainId (, str, )
+ ID of the protection domain in which volume resides.
+
+
+ protectionDomainName (, str, )
+ Name of the protection domain in which volume resides.
+
+
+ snapshotPolicyId (, str, )
+ ID of the snapshot policy associated with volume.
+
+
+ snapshotPolicyName (, str, )
+ Name of the snapshot policy associated with volume.
+
+
+ snapshotsList (, str, )
+ List of snapshots associated with the volume.
+
+
+ statistics (, dict, )
+ Statistics details of the storage pool.
+
+
+ numOfChildVolumes (, int, )
+ Number of child volumes.
+
+
+ numOfMappedSdcs (, int, )
+ Number of mapped Sdcs of the volume.
+
+
+
+
+Devices (always, list, [{'id': 'b6efa59900000000', 'name': 'device230'}, {'id': 'b6efa5fa00020000', 'name': 'device_node0'}, {'id': 'b7f3a60900010000', 'name': 'device22'}])
+ Details of devices.
+
+
+ id (, str, )
+ device id.
+
+
+ name (, str, )
+ device name.
+
+
+
+Replication_Consistency_Groups (always, list, {'protectionDomainId': 'b969400500000000', 'peerMdmId': '6c3d94f600000000', 'remoteId': '2130961a00000000', 'remoteMdmId': '0e7a082862fedf0f', 'currConsistMode': 'Consistent', 'freezeState': 'Unfrozen', 'lifetimeState': 'Normal', 'pauseMode': 'None', 'snapCreationInProgress': False, 'lastSnapGroupId': 'e58280b300000001', 'lastSnapCreationRc': 'SUCCESS', 'targetVolumeAccessMode': 'NoAccess', 'remoteProtectionDomainId': '4eeb304600000000', 'remoteProtectionDomainName': 'domain1', 'failoverType': 'None', 'failoverState': 'None', 'activeLocal': True, 'activeRemote': True, 'abstractState': 'Ok', 'localActivityState': 'Active', 'remoteActivityState': 'Active', 'inactiveReason': 11, 'rpoInSeconds': 30, 'replicationDirection': 'LocalToRemote', 'disasterRecoveryState': 'None', 'remoteDisasterRecoveryState': 'None', 'error': 65, 'name': 'test_rcg', 'type': 'User', 'id': 'aadc17d500000000'})
+ Details of rcgs.
+
+
+ id (, str, )
+ The ID of the replication consistency group.
+
+
+ name (, str, )
+ The name of the replication consistency group.
+
+
+ protectionDomainId (, str, )
+ The Protection Domain ID of the replication consistency group.
+
+
+ peerMdmId (, str, )
+ The ID of the peer MDM of the replication consistency group.
+
+
+ remoteId (, str, )
+ The ID of the remote replication consistency group.
+
+
+ remoteMdmId (, str, )
+ The ID of the remote MDM of the replication consistency group.
+
+
+ currConsistMode (, str, )
+ The current consistency mode of the replication consistency group.
+
+
+ freezeState (, str, )
+ The freeze state of the replication consistency group.
+
+
+ lifetimeState (, str, )
+ The Lifetime state of the replication consistency group.
+
+
+ pauseMode (, str, )
+ The Lifetime state of the replication consistency group.
+
+
+ snapCreationInProgress (, bool, )
+ Whether the process of snapshot creation of the replication consistency group is in progress or not.
+
+
+ lastSnapGroupId (, str, )
+ ID of the last snapshot of the replication consistency group.
+
+
+ lastSnapCreationRc (, int, )
+ The return code of the last snapshot of the replication consistency group.
+
+
+ targetVolumeAccessMode (, str, )
+ The access mode of the target volume of the replication consistency group.
+
+
+ remoteProtectionDomainId (, str, )
+ The ID of the remote Protection Domain.
+
+
+ remoteProtectionDomainName (, str, )
+ The Name of the remote Protection Domain.
+
+
+ failoverType (, str, )
+ The type of failover of the replication consistency group.
+
+
+ failoverState (, str, )
+ The state of failover of the replication consistency group.
+
+
+ activeLocal (, bool, )
+ Whether the local replication consistency group is active.
+
+
+ activeRemote (, bool, )
+ Whether the remote replication consistency group is active
+
+
+ abstractState (, str, )
+ The abstract state of the replication consistency group.
+
+
+ localActivityState (, str, )
+ The state of activity of the local replication consistency group.
+
+
+ remoteActivityState (, str, )
+ The state of activity of the remote replication consistency group..
+
+
+ inactiveReason (, int, )
+ The reason for the inactivity of the replication consistency group.
+
+
+ rpoInSeconds (, int, )
+ The RPO value of the replication consistency group in seconds.
+
+
+ replicationDirection (, str, )
+ The direction of the replication of the replication consistency group.
+
+
+ disasterRecoveryState (, str, )
+ The state of disaster recovery of the local replication consistency group.
+
+
+ remoteDisasterRecoveryState (, str, )
+ The state of disaster recovery of the remote replication consistency group.
+
+
+ error (, int, )
+ The error code of the replication consistency group.
+
+
+ type (, str, )
+ The type of the replication consistency group.
+
+
+
+Replication_pairs (Always, list, {'copyType': 'OnlineCopy', 'id': '23aa0bc900000001', 'initialCopyPriority': -1, 'initialCopyState': 'Done', 'lifetimeState': 'Normal', 'localActivityState': 'RplEnabled', 'localVolumeId': 'e2bc1fab00000008', 'name': None, 'peerSystemName': None, 'remoteActivityState': 'RplEnabled', 'remoteCapacityInMB': 8192, 'remoteId': 'a058446700000001', 'remoteVolumeId': '1cda7af20000000d', 'remoteVolumeName': 'vol', 'replicationConsistencyGroupId': 'e2ce036b00000002', 'userRequestedPauseTransmitInitCopy': False})
+ Details of the replication pairs.
+
+
+ id (, str, )
+ The ID of the replication pair.
+
+
+ name (, str, )
+ The name of the replication pair.
+
+
+ remoteId (, str, )
+ The ID of the remote replication pair.
+
+
+ localVolumeId (, str, )
+ The ID of the local volume.
+
+
+ replicationConsistencyGroupId (, str, )
+ The ID of the replication consistency group.
+
+
+ copyType (, str, )
+ The copy type of the replication pair.
+
+
+ initialCopyState (, str, )
+ The inital copy state of the replication pair.
+
+
+ localActivityState (, str, )
+ The state of activity of the local replication pair.
+
+
+ remoteActivityState (, str, )
+ The state of activity of the remote replication pair.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Arindam Datta (@dattaarindam) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/mdm_cluster.rst b/ansible_collections/dellemc/powerflex/docs/modules/mdm_cluster.rst
new file mode 100644
index 000000000..5131860e1
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/mdm_cluster.rst
@@ -0,0 +1,549 @@
+.. _mdm_cluster_module:
+
+
+mdm_cluster -- Manage MDM cluster on Dell PowerFlex
+===================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing MDM cluster and MDMs on PowerFlex storage system includes adding/removing standby MDM, modify MDM name and virtual interface.
+
+It also includes getting details of MDM cluster, modify MDM cluster ownership, cluster mode, and performance profile.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ mdm_name (optional, str, None)
+ The name of the MDM. It is unique across the PowerFlex array.
+
+ Mutually exclusive with *mdm_id*.
+
+ If mdm_name passed in add standby operation, then same name will be assigned to the new standby mdm.
+
+
+ mdm_id (optional, str, None)
+ The ID of the MDM.
+
+ Mutually exclusive with *mdm_name*.
+
+
+ mdm_new_name (optional, str, None)
+ To rename the MDM.
+
+
+ standby_mdm (optional, dict, None)
+ Specifies add standby MDM parameters.
+
+
+ mdm_ips (True, list, None)
+ List of MDM IPs that will be assigned to new MDM. It can contain IPv4 addresses.
+
+
+ role (True, str, None)
+ Role of new MDM.
+
+
+ management_ips (optional, list, None)
+ List of management IPs to manage MDM. It can contain IPv4 addresses.
+
+
+ port (optional, int, None)
+ Specifies the port of new MDM.
+
+
+ allow_multiple_ips (optional, bool, None)
+ Allow the added node to have different number of IPs from the primary node.
+
+
+ virtual_interfaces (optional, list, None)
+ List of NIC interfaces that will be used for virtual IP addresses.
+
+
+
+ is_primary (optional, bool, None)
+ Set *is_primary* as ``true`` to change MDM cluster ownership from the current master MDM to different MDM.
+
+ Set *is_primary* as ``false``, will return MDM cluster details.
+
+ New owner MDM must be an MDM with a manager role.
+
+
+ cluster_mode (optional, str, None)
+ Mode of the cluster.
+
+
+ mdm (optional, list, None)
+ Specifies parameters to add/remove MDMs to/from the MDM cluster.
+
+
+ mdm_id (optional, str, None)
+ ID of MDM that will be added/removed to/from the cluster.
+
+
+ mdm_name (optional, str, None)
+ Name of MDM that will be added/removed to/from the cluster.
+
+
+ mdm_type (True, str, None)
+ Type of the MDM.
+
+ Either *mdm_id* or *mdm_name* must be passed with mdm_type.
+
+
+
+ mdm_state (optional, str, None)
+ Mapping state of MDM.
+
+
+ virtual_ip_interfaces (optional, list, None)
+ List of interfaces to be used for virtual IPs.
+
+ The order of interfaces must be matched with virtual IPs assigned to the cluster.
+
+ Interfaces of the primary and secondary type MDMs are allowed to modify.
+
+ The *virtual_ip_interfaces* is mutually exclusive with *clear_interfaces*.
+
+
+ clear_interfaces (optional, bool, None)
+ Clear all virtual IP interfaces.
+
+ The *clear_interfaces* is mutually exclusive with *virtual_ip_interfaces*.
+
+
+ performance_profile (optional, str, None)
+ Apply performance profile to cluster MDMs.
+
+
+ state (True, str, None)
+ State of the MDM cluster.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Parameters *mdm_name* or *mdm_id* are mandatory for rename and modify virtual IP interfaces.
+ - Parameters *mdm_name* or *mdm_id* are not required while modifying performance profile.
+ - For change MDM cluster ownership operation, only changed as True will be returned and for idempotency case MDM cluster details will be returned.
+ - Reinstall all SDC after changing ownership to some newly added MDM.
+ - To add manager standby MDM, MDM package must be installed with manager role.
+ - The *check_mode* is supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Add a standby MDM
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ mdm_name: "mdm_1"
+ standby_mdm:
+ mdm_ips:
+ - "10.x.x.x"
+ role: "TieBreaker"
+ management_ips:
+ - "10.x.y.z"
+ state: "present"
+
+ - name: Remove a standby MDM
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ mdm_name: "mdm_1"
+ state: "absent"
+
+ - name: Switch cluster mode from 3 node to 5 node MDM cluster
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ cluster_mode: "FiveNodes"
+ mdm:
+ - mdm_id: "5f091a8a013f1100"
+ mdm_type: "Secondary"
+ - mdm_name: "mdm_1"
+ mdm_type: "TieBreaker"
+ sdc_state: "present-in-cluster"
+ state: "present"
+
+ - name: Switch cluster mode from 5 node to 3 node MDM cluster
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ cluster_mode: "ThreeNodes"
+ mdm:
+ - mdm_id: "5f091a8a013f1100"
+ mdm_type: "Secondary"
+ - mdm_name: "mdm_1"
+ mdm_type: "TieBreaker"
+ sdc_state: "absent-in-cluster"
+ state: "present"
+
+ - name: Get the details of the MDM cluster
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ state: "present"
+
+ - name: Change ownership of MDM cluster
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ mdm_name: "mdm_2"
+ is_primary: True
+ state: "present"
+
+ - name: Modify performance profile
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ performance_profile: "HighPerformance"
+ state: "present"
+
+ - name: Rename the MDM
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ mdm_name: "mdm_1"
+ mdm_new_name: "new_mdm_1"
+ state: "present"
+
+ - name: Modify virtual IP interface of the MDM
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ mdm_name: "mdm_1"
+ virtual_ip_interface:
+ - "ens224"
+ state: "present"
+
+ - name: Clear virtual IP interface of the MDM
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ mdm_name: "mdm_1"
+ clear_interfaces: True
+ state: "present"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+mdm_cluster_details (When MDM cluster exists, dict, {'clusterState': 'ClusteredNormal', 'clusterMode': 'ThreeNodes', 'goodNodesNum': 3, 'master': {'virtualInterfaces': ['ens1'], 'managementIPs': ['10.x.y.z'], 'ips': ['10.x.y.z'], 'versionInfo': 'R3_6.0.0', 'opensslVersion': 'OpenSSL 1.0.2k-fips 26 Jan 2017', 'role': 'Manager', 'status': 'Normal', 'name': 'sample_mdm', 'id': '5908d328581d1400', 'port': 9011}, 'perfProfile': 'HighPerformance', 'slaves': [{'virtualInterfaces': ['ens1'], 'managementIPs': ['10.x.x.z'], 'ips': ['10.x.x.z'], 'versionInfo': 'R3_6.0.0', 'opensslVersion': 'OpenSSL 1.0.2k-fips 26 Jan 2017', 'role': 'Manager', 'status': 'Normal', 'name': 'sample_mdm1', 'id': '5908d328581d1401', 'port': 9011}], 'tieBreakers': [{'virtualInterfaces': [], 'managementIPs': [], 'ips': ['10.x.y.y'], 'versionInfo': 'R3_6.0.0', 'opensslVersion': 'N/A', 'role': 'TieBreaker', 'status': 'Normal', 'id': '5908d328581d1402', 'port': 9011}], 'standbyMDMs': [{'virtualInterfaces': [], 'managementIPs': ['10.x.z.z'], 'ips': ['10.x.z.z'], 'versionInfo': 'R3_6.0.0', 'opensslVersion': 'N/A', 'role': 'TieBreaker', 'status': 'Normal', 'id': '5908d328581d1403', 'port': 9011}], 'goodReplicasNum': 2, 'id': 'cdd883cf00000002'})
+ Details of the MDM cluster.
+
+
+ id (, str, )
+ The ID of the MDM cluster.
+
+
+ name (, str, )
+ Name of MDM cluster.
+
+
+ clusterMode (, str, )
+ Mode of the MDM cluster.
+
+
+ master (, dict, )
+ The details of the master MDM.
+
+
+ id (, str, )
+ ID of the MDM.
+
+
+ name (, str, )
+ Name of the MDM.
+
+
+ port (, str, )
+ Port of the MDM.
+
+
+ ips (, list, )
+ List of IPs for master MDM.
+
+
+ managementIPs (, list, )
+ List of management IPs for master MDM.
+
+
+ role (, str, )
+ Role of MDM.
+
+
+ status (, str, )
+ Status of MDM.
+
+
+ versionInfo (, str, )
+ Version of MDM.
+
+
+ virtualInterfaces (, list, )
+ List of virtual interfaces
+
+
+ opensslVersion (, str, )
+ OpenSSL version.
+
+
+
+ slaves (, list, )
+ The list of the secondary MDMs.
+
+
+ id (, str, )
+ ID of the MDM.
+
+
+ name (, str, )
+ Name of the MDM.
+
+
+ port (, str, )
+ Port of the MDM.
+
+
+ ips (, list, )
+ List of IPs for secondary MDM.
+
+
+ managementIPs (, list, )
+ List of management IPs for secondary MDM.
+
+
+ role (, str, )
+ Role of MDM.
+
+
+ status (, str, )
+ Status of MDM.
+
+
+ versionInfo (, str, )
+ Version of MDM.
+
+
+ virtualInterfaces (, list, )
+ List of virtual interfaces
+
+
+ opensslVersion (, str, )
+ OpenSSL version.
+
+
+
+ tieBreakers (, list, )
+ The list of the TieBreaker MDMs.
+
+
+ id (, str, )
+ ID of the MDM.
+
+
+ name (, str, )
+ Name of the MDM.
+
+
+ port (, str, )
+ Port of the MDM.
+
+
+ ips (, list, )
+ List of IPs for tie-breaker MDM.
+
+
+ managementIPs (, list, )
+ List of management IPs for tie-breaker MDM.
+
+
+ role (, str, )
+ Role of MDM.
+
+
+ status (, str, )
+ Status of MDM.
+
+
+ versionInfo (, str, )
+ Version of MDM.
+
+
+ opensslVersion (, str, )
+ OpenSSL version.
+
+
+
+ standbyMDMs (, list, )
+ The list of the standby MDMs.
+
+
+ id (, str, )
+ ID of the MDM.
+
+
+ name (, str, )
+ Name of the MDM.
+
+
+ port (, str, )
+ Port of the MDM.
+
+
+ ips (, list, )
+ List of IPs for MDM.
+
+
+ managementIPs (, list, )
+ List of management IPs for MDM.
+
+
+ role (, str, )
+ Role of MDM.
+
+
+ status (, str, )
+ Status of MDM.
+
+
+ versionInfo (, str, )
+ Version of MDM.
+
+
+ virtualInterfaces (, list, )
+ List of virtual interfaces.
+
+
+ opensslVersion (, str, )
+ OpenSSL version.
+
+
+
+ clusterState (, str, )
+ State of the MDM cluster.
+
+
+ goodNodesNum (, int, )
+ Number of Nodes in MDM cluster.
+
+
+ goodReplicasNum (, int, )
+ Number of nodes for Replication.
+
+
+ virtualIps (, list, )
+ List of virtual IPs.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Bhavneet Sharma (@sharmb5) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/protection_domain.rst b/ansible_collections/dellemc/powerflex/docs/modules/protection_domain.rst
new file mode 100644
index 000000000..ca47cb518
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/protection_domain.rst
@@ -0,0 +1,437 @@
+.. _protection_domain_module:
+
+
+protection_domain -- Manage Protection Domain on Dell PowerFlex
+===============================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing Protection Domain on PowerFlex storage system includes creating, modifying attributes, deleting and getting details of Protection Domain.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ protection_domain_name (optional, str, None)
+ The name of the protection domain.
+
+ Mandatory for create operation.
+
+ It is unique across the PowerFlex array.
+
+ Mutually exclusive with *protection_domain_id*.
+
+
+ protection_domain_id (optional, str, None)
+ The ID of the protection domain.
+
+ Except for create operation, all other operations can be performed using protection_domain_id.
+
+ Mutually exclusive with *protection_domain_name*.
+
+
+ protection_domain_new_name (optional, str, None)
+ Used to rename the protection domain.
+
+
+ is_active (optional, bool, None)
+ Used to activate or deactivate the protection domain.
+
+
+ network_limits (optional, dict, None)
+ Network bandwidth limit used by all SDS in protection domain.
+
+
+ rebuild_limit (optional, int, None)
+ Limit the network bandwidth for rebuild.
+
+
+ rebalance_limit (optional, int, None)
+ Limit the network bandwidth for rebalance.
+
+
+ vtree_migration_limit (optional, int, None)
+ Limit the network bandwidth for vtree migration.
+
+
+ overall_limit (optional, int, None)
+ Limit the overall network bandwidth.
+
+
+ bandwidth_unit (optional, str, KBps)
+ Unit for network bandwidth limits.
+
+
+
+ rf_cache_limits (optional, dict, None)
+ Used to set the RFcache parameters of the protection domain.
+
+
+ is_enabled (optional, bool, None)
+ Used to enable or disable RFcache in the protection domain.
+
+
+ page_size (optional, int, None)
+ Used to set the cache page size in KB.
+
+
+ max_io_limit (optional, int, None)
+ Used to set cache maximum I/O limit in KB.
+
+
+ pass_through_mode (optional, str, None)
+ Used to set the cache mode.
+
+
+
+ state (True, str, None)
+ State of the protection domain.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The protection domain can only be deleted if all its related objects have been dissociated from the protection domain.
+ - If the protection domain set to inactive, then no operation can be performed on protection domain.
+ - The *check_mode* is not supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Create protection domain
+ dellemc.powerflex.protection_domain:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ protection_domain_name: "domain1"
+ state: "present"
+
+ - name: Create protection domain with all parameters
+ dellemc.powerflex.protection_domain:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ protection_domain_name: "domain1"
+ is_active: true
+ network_limits:
+ rebuild_limit: 10
+ rebalance_limit: 17
+ vtree_migration_limit: 14
+ overall_limit: 20
+ bandwidth_unit: "MBps"
+ rf_cache_limits:
+ is_enabled: true
+ page_size: 16
+ max_io_limit: 128
+ pass_through_mode: "Read"
+ state: "present"
+
+ - name: Get protection domain details using name
+ dellemc.powerflex.protection_domain:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ protection_domain_name: "domain1"
+ state: "present"
+
+ - name: Get protection domain details using ID
+ dellemc.powerflex.protection_domain:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ protection_domain_id: "5718253c00000004"
+ state: "present"
+
+ - name: Modify protection domain attributes
+ dellemc.powerflex.protection_domain:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ protection_domain_name: "domain1"
+ protection_domain_new_name: "domain1_new"
+ network_limits:
+ rebuild_limit: 14
+ rebalance_limit: 20
+ overall_limit: 25
+ bandwidth_unit: "MBps"
+ rf_cache_limits:
+ page_size: 64
+ pass_through_mode: "WriteMiss"
+ state: "present"
+
+ - name: Delete protection domain using name
+ dellemc.powerflex.protection_domain:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ protection_domain_name: "domain1_new"
+ state: "absent"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+protection_domain_details (When protection domain exists, dict, {'fglDefaultMetadataCacheSize': 0, 'fglDefaultNumConcurrentWrites': 1000, 'fglMetadataCacheEnabled': False, 'id': '7bd6457000000000', 'links': [{'href': '/api/instances/ProtectionDomain::7bd6457000000000', 'rel': 'self'}, {'href': '/api/instances/ProtectionDomain::7bd6457000000000/ relationships/Statistics', 'rel': '/api/ProtectionDomain/relationship/Statistics'}, {'href': '/api/instances/ProtectionDomain::7bd6457000000000/ relationships/Sdr', 'rel': '/api/ProtectionDomain/relationship/Sdr'}, {'href': '/api/instances/ProtectionDomain::7bd6457000000000/ relationships/AccelerationPool', 'rel': '/api/ProtectionDomain/relationship/AccelerationPool'}, {'href': '/api/instances/ProtectionDomain::7bd6457000000000/ relationships/StoragePool', 'rel': '/api/ProtectionDomain/relationship/StoragePool'}, {'href': '/api/instances/ProtectionDomain::7bd6457000000000/ relationships/Sds', 'rel': '/api/ProtectionDomain/relationship/Sds'}, {'href': '/api/instances/ProtectionDomain::7bd6457000000000/ relationships/ReplicationConsistencyGroup', 'rel': '/api/ProtectionDomain/relationship/ ReplicationConsistencyGroup'}, {'href': '/api/instances/ProtectionDomain::7bd6457000000000/ relationships/FaultSet', 'rel': '/api/ProtectionDomain/relationship/FaultSet'}, {'href': '/api/instances/System::0989ce79058f150f', 'rel': '/api/parent/relationship/systemId'}], 'mdmSdsNetworkDisconnectionsCounterParameters': {'longWindow': {'threshold': 700, 'windowSizeInSec': 86400}, 'mediumWindow': {'threshold': 500, 'windowSizeInSec': 3600}, 'shortWindow': {'threshold': 300, 'windowSizeInSec': 60}}, 'name': 'domain1', 'overallIoNetworkThrottlingEnabled': False, 'overallIoNetworkThrottlingInKbps': None, 'protectedMaintenanceModeNetworkThrottlingEnabled': False, 'protectedMaintenanceModeNetworkThrottlingInKbps': None, 'protectionDomainState': 'Active', 'rebalanceNetworkThrottlingEnabled': False, 'rebalanceNetworkThrottlingInKbps': None, 'rebuildNetworkThrottlingEnabled': False, 'rebuildNetworkThrottlingInKbps': None, 'rfcacheAccpId': None, 'rfcacheEnabled': True, 'rfcacheMaxIoSizeKb': 128, 'rfcacheOpertionalMode': 'WriteMiss', 'rfcachePageSizeKb': 64, 'sdrSdsConnectivityInfo': {'clientServerConnStatus': 'CLIENT_SERVER_CONN_STATUS_ALL _CONNECTED', 'disconnectedClientId': None, 'disconnectedClientName': None, 'disconnectedServerId': None, 'disconnectedServerIp': None, 'disconnectedServerName': None}, 'sdsConfigurationFailureCounterParameters': {'longWindow': {'threshold': 700, 'windowSizeInSec': 86400}, 'mediumWindow': {'threshold': 500, 'windowSizeInSec': 3600}, 'shortWindow': {'threshold': 300, 'windowSizeInSec': 60}}, 'sdsDecoupledCounterParameters': {'longWindow': {'threshold': 700, 'windowSizeInSec': 86400}, 'mediumWindow': {'threshold': 500, 'windowSizeInSec': 3600}, 'shortWindow': {'threshold': 300, 'windowSizeInSec': 60}}, 'sdsReceiveBufferAllocationFailuresCounterParameters': {'longWindow': {'threshold': 2000000, 'windowSizeInSec': 86400}, 'mediumWindow': {'threshold': 200000, 'windowSizeInSec': 3600}, 'shortWindow': {'threshold': 20000, 'windowSizeInSec': 60}}, 'sdsSdsNetworkDisconnectionsCounterParameters': {'longWindow': {'threshold': 700, 'windowSizeInSec': 86400}, 'mediumWindow': {'threshold': 500, 'windowSizeInSec': 3600}, 'shortWindow': {'threshold': 300, 'windowSizeInSec': 60}}, 'storagePool': [{'id': '8d1cba1700000000', 'name': 'pool1'}], 'systemId': '0989ce79058f150f', 'vtreeMigrationNetworkThrottlingEnabled': False, 'vtreeMigrationNetworkThrottlingInKbps': None})
+ Details of the protection domain.
+
+
+ fglDefaultMetadataCacheSize (, int, )
+ FGL metadata cache size.
+
+
+ fglDefaultNumConcurrentWrites (, str, )
+ FGL concurrent writes.
+
+
+ fglMetadataCacheEnabled (, bool, )
+ Whether FGL cache enabled.
+
+
+ id (, str, )
+ Protection domain ID.
+
+
+ links (, list, )
+ Protection domain links.
+
+
+ href (, str, )
+ Protection domain instance URL.
+
+
+ rel (, str, )
+ Protection domain's relationship with different entities.
+
+
+
+ mdmSdsNetworkDisconnectionsCounterParameters (, dict, )
+ MDM's SDS counter parameter.
+
+
+ longWindow (, int, )
+ Long window for Counter Parameters.
+
+
+ mediumWindow (, int, )
+ Medium window for Counter Parameters.
+
+
+ shortWindow (, int, )
+ Short window for Counter Parameters.
+
+
+
+ name (, str, )
+ Name of the protection domain.
+
+
+ overallIoNetworkThrottlingEnabled (, bool, )
+ Whether overall network throttling enabled.
+
+
+ overallIoNetworkThrottlingInKbps (, int, )
+ Overall network throttling in KBps.
+
+
+ protectedMaintenanceModeNetworkThrottlingEnabled (, bool, )
+ Whether protected maintenance mode network throttling enabled.
+
+
+ protectedMaintenanceModeNetworkThrottlingInKbps (, int, )
+ Protected maintenance mode network throttling in KBps.
+
+
+ protectionDomainState (, int, )
+ State of protection domain.
+
+
+ rebalanceNetworkThrottlingEnabled (, int, )
+ Whether rebalance network throttling enabled.
+
+
+ rebalanceNetworkThrottlingInKbps (, int, )
+ Rebalance network throttling in KBps.
+
+
+ rebuildNetworkThrottlingEnabled (, int, )
+ Whether rebuild network throttling enabled.
+
+
+ rebuildNetworkThrottlingInKbps (, int, )
+ Rebuild network throttling in KBps.
+
+
+ rfcacheAccpId (, str, )
+ Id of RF cache acceleration pool.
+
+
+ rfcacheEnabled (, bool, )
+ Whether RF cache is enabled or not.
+
+
+ rfcacheMaxIoSizeKb (, int, )
+ RF cache maximum I/O size in KB.
+
+
+ rfcacheOpertionalMode (, str, )
+ RF cache operational mode.
+
+
+ rfcachePageSizeKb (, bool, )
+ RF cache page size in KB.
+
+
+ sdrSdsConnectivityInfo (, dict, )
+ Connectivity info of SDR and SDS.
+
+
+ clientServerConnStatus (, str, )
+ Connectivity status of client and server.
+
+
+ disconnectedClientId (, str, )
+ Disconnected client ID.
+
+
+ disconnectedClientName (, str, )
+ Disconnected client name.
+
+
+ disconnectedServerId (, str, )
+ Disconnected server ID.
+
+
+ disconnectedServerIp (, str, )
+ Disconnected server IP.
+
+
+ disconnectedServerName (, str, )
+ Disconnected server name.
+
+
+
+ sdsSdsNetworkDisconnectionsCounterParameters (, dict, )
+ Counter parameter for SDS-SDS network.
+
+
+ longWindow (, int, )
+ Long window for Counter Parameters.
+
+
+ mediumWindow (, int, )
+ Medium window for Counter Parameters.
+
+
+ shortWindow (, int, )
+ Short window for Counter Parameters.
+
+
+
+ storagePool (, list, )
+ List of storage pools.
+
+
+ systemId (, str, )
+ ID of system.
+
+
+ vtreeMigrationNetworkThrottlingEnabled (, bool, )
+ Whether V-Tree migration network throttling enabled.
+
+
+ vtreeMigrationNetworkThrottlingInKbps (, int, )
+ V-Tree migration network throttling in KBps.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Bhavneet Sharma (@sharmb5) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/replication_consistency_group.rst b/ansible_collections/dellemc/powerflex/docs/modules/replication_consistency_group.rst
new file mode 100644
index 000000000..ceaca0d39
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/replication_consistency_group.rst
@@ -0,0 +1,465 @@
+.. _replication_consistency_group_module:
+
+
+replication_consistency_group -- Manage replication consistency groups on Dell PowerFlex
+========================================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing replication consistency groups on PowerFlex storage system includes getting details, creating, modifying, creating snapshots, pause, resume, freeze, unfreeze, activate, inactivate and deleting a replication consistency group.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ rcg_name (optional, str, None)
+ The name of the replication consistency group.
+
+ It is unique across the PowerFlex array.
+
+ Mutually exclusive with *rcg_id*.
+
+
+ rcg_id (optional, str, None)
+ The ID of the replication consistency group.
+
+ Mutually exclusive with *rcg_name*.
+
+
+ create_snapshot (optional, bool, None)
+ Whether to create the snapshot of the replication consistency group.
+
+
+ rpo (optional, int, None)
+ Desired RPO in seconds.
+
+
+ protection_domain_id (optional, str, None)
+ Protection domain id.
+
+ Mutually exclusive with *protection_domain_name*.
+
+
+ protection_domain_name (optional, str, None)
+ Protection domain name.
+
+ Mutually exclusive with *protection_domain_id*.
+
+
+ activity_mode (optional, str, None)
+ Activity mode of RCG.
+
+ This parameter is supported for version 3.6 and above.
+
+
+ pause (optional, bool, None)
+ Pause or resume the RCG.
+
+
+ freeze (optional, bool, None)
+ Freeze or unfreeze the RCG.
+
+
+ pause_mode (optional, str, None)
+ Pause mode.
+
+ It is required if pause is set as True.
+
+
+ target_volume_access_mode (optional, str, None)
+ Target volume access mode.
+
+
+ is_consistent (optional, bool, None)
+ Consistency of RCG.
+
+
+ new_rcg_name (optional, str, None)
+ Name of RCG to rename to.
+
+
+ remote_peer (optional, dict, None)
+ Remote peer system.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the remote peer gateway host.
+
+
+ username (True, str, None)
+ The username of the remote peer gateway host.
+
+
+ password (True, str, None)
+ The password of the remote peer gateway host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with remote peer gateway host.
+
+
+ timeout (optional, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+ protection_domain_id (optional, str, None)
+ Remote protection domain id.
+
+ Mutually exclusive with *protection_domain_name*.
+
+
+ protection_domain_name (optional, str, None)
+ Remote protection domain name.
+
+ Mutually exclusive with *protection_domain_id*.
+
+
+
+ state (optional, str, present)
+ State of the replication consistency group.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The *check_mode* is supported.
+ - Idempotency is not supported for create snapshot operation.
+ - There is a delay in reflection of final state of RCG after few update operations on RCG.
+ - In 3.6 and above, the replication consistency group will return back to consistent mode on changing to inconsistent mode if consistence barrier arrives. Hence idempotency on setting to inconsistent mode will return changed as True.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+
+ - name: Get RCG details
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "{{rcg_name}}"
+
+ - name: Create a snapshot of the RCG
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_id: "{{rcg_id}}"
+ create_snapshot: True
+ state: "present"
+
+ - name: Create a replication consistency group
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "rcg_test"
+ rpo: 60
+ protection_domain_name: "domain1"
+ activity_mode: "active"
+ remote_peer:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ protection_domain_name: "domain1"
+
+ - name: Modify replication consistency group
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "rcg_test"
+ rpo: 60
+ target_volume_access_mode: "ReadOnly"
+ activity_mode: "Inactive"
+ is_consistent: True
+
+ - name: Rename replication consistency group
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "rcg_test"
+ new_rcg_name: "rcg_test_rename"
+
+ - name: Pause replication consistency group
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "rcg_test"
+ pause: True
+ pause_mode: "StopDataTransfer"
+
+ - name: Resume replication consistency group
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "rcg_test"
+ pause: False
+
+ - name: Freeze replication consistency group
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "rcg_test"
+ freeze: True
+
+ - name: UnFreeze replication consistency group
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "rcg_test"
+ freeze: False
+
+ - name: Delete replication consistency group
+ dellemc.powerflex.replication_consistency_group:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "rcg_test"
+ state: "absent"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+replication_consistency_group_details (When replication consistency group exists, dict, {'protectionDomainId': 'b969400500000000', 'peerMdmId': '6c3d94f600000000', 'remoteId': '2130961a00000000', 'remoteMdmId': '0e7a082862fedf0f', 'currConsistMode': 'Consistent', 'freezeState': 'Unfrozen', 'lifetimeState': 'Normal', 'pauseMode': 'None', 'snapCreationInProgress': False, 'lastSnapGroupId': 'e58280b300000001', 'lastSnapCreationRc': 'SUCCESS', 'targetVolumeAccessMode': 'NoAccess', 'remoteProtectionDomainId': '4eeb304600000000', 'remoteProtectionDomainName': 'domain1', 'failoverType': 'None', 'failoverState': 'None', 'activeLocal': True, 'activeRemote': True, 'abstractState': 'Ok', 'localActivityState': 'Active', 'remoteActivityState': 'Active', 'inactiveReason': 11, 'rpoInSeconds': 30, 'replicationDirection': 'LocalToRemote', 'disasterRecoveryState': 'None', 'remoteDisasterRecoveryState': 'None', 'error': 65, 'name': 'test_rcg', 'type': 'User', 'id': 'aadc17d500000000'})
+ Details of the replication consistency group.
+
+
+ id (, str, )
+ The ID of the replication consistency group.
+
+
+ name (, str, )
+ The name of the replication consistency group.
+
+
+ protectionDomainId (, str, )
+ The Protection Domain ID of the replication consistency group.
+
+
+ peerMdmId (, str, )
+ The ID of the peer MDM of the replication consistency group.
+
+
+ remoteId (, str, )
+ The ID of the remote replication consistency group.
+
+
+ remoteMdmId (, str, )
+ The ID of the remote MDM of the replication consistency group.
+
+
+ currConsistMode (, str, )
+ The current consistency mode of the replication consistency group.
+
+
+ freezeState (, str, )
+ The freeze state of the replication consistency group.
+
+
+ lifetimeState (, str, )
+ The Lifetime state of the replication consistency group.
+
+
+ pauseMode (, str, )
+ The Lifetime state of the replication consistency group.
+
+
+ snapCreationInProgress (, bool, )
+ Whether the process of snapshot creation of the replication consistency group is in progress or not.
+
+
+ lastSnapGroupId (, str, )
+ ID of the last snapshot of the replication consistency group.
+
+
+ lastSnapCreationRc (, int, )
+ The return code of the last snapshot of the replication consistency group.
+
+
+ targetVolumeAccessMode (, str, )
+ The access mode of the target volume of the replication consistency group.
+
+
+ remoteProtectionDomainId (, str, )
+ The ID of the remote Protection Domain.
+
+
+ remoteProtectionDomainName (, str, )
+ The Name of the remote Protection Domain.
+
+
+ failoverType (, str, )
+ The type of failover of the replication consistency group.
+
+
+ failoverState (, str, )
+ The state of failover of the replication consistency group.
+
+
+ activeLocal (, bool, )
+ Whether the local replication consistency group is active.
+
+
+ activeRemote (, bool, )
+ Whether the remote replication consistency group is active
+
+
+ abstractState (, str, )
+ The abstract state of the replication consistency group.
+
+
+ localActivityState (, str, )
+ The state of activity of the local replication consistency group.
+
+
+ remoteActivityState (, str, )
+ The state of activity of the remote replication consistency group..
+
+
+ inactiveReason (, int, )
+ The reason for the inactivity of the replication consistency group.
+
+
+ rpoInSeconds (, int, )
+ The RPO value of the replication consistency group in seconds.
+
+
+ replicationDirection (, str, )
+ The direction of the replication of the replication consistency group.
+
+
+ disasterRecoveryState (, str, )
+ The state of disaster recovery of the local replication consistency group.
+
+
+ remoteDisasterRecoveryState (, str, )
+ The state of disaster recovery of the remote replication consistency group.
+
+
+ error (, int, )
+ The error code of the replication consistency group.
+
+
+ type (, str, )
+ The type of the replication consistency group.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Trisha Datta (@Trisha-Datta) <ansible.team@dell.com>
+- Jennifer John (@Jennifer-John) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/replication_pair.rst b/ansible_collections/dellemc/powerflex/docs/modules/replication_pair.rst
new file mode 100644
index 000000000..c83241cd3
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/replication_pair.rst
@@ -0,0 +1,432 @@
+.. _replication_pair_module:
+
+
+replication_pair -- Manage replication pairs on Dell PowerFlex
+==============================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing replication pairs on PowerFlex storage system includes getting details, creating, pause, resume initial copy and deleting a replication pair.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ pair_id (optional, str, None)
+ The ID of the replication pair.
+
+ Mutually exclusive with *pair_name*.
+
+
+ pair_name (optional, str, None)
+ The name of the replication pair.
+
+ Mutually exclusive with *pair_id*.
+
+
+ rcg_name (optional, str, None)
+ The name of the replication consistency group.
+
+ Mutually exclusive with *rcg_id*.
+
+
+ rcg_id (optional, str, None)
+ The ID of the replication consistency group.
+
+ Mutually exclusive with *rcg_name*.
+
+
+ pause (optional, bool, None)
+ Pause or resume the initial copy of replication pair.
+
+
+ pairs (optional, list, None)
+ List of replication pairs to add to rcg.
+
+
+ source_volume_id (optional, str, None)
+ Source volume ID.
+
+ Mutually exclusive with *source_volume_name*.
+
+
+ source_volume_name (optional, str, None)
+ Source volume name.
+
+ Mutually exclusive with *source_volume_id*.
+
+
+ target_volume_id (optional, str, None)
+ Target volume ID.
+
+ Mutually exclusive with *target_volume_name*.
+
+
+ target_volume_name (optional, str, None)
+ Target volume name.
+
+ If specified, *remote_peer* details should also be specified.
+
+ Mutually exclusive with *target_volume_id*.
+
+
+ copy_type (True, str, None)
+ Copy type.
+
+
+ name (optional, str, None)
+ Name of replication pair.
+
+
+
+ remote_peer (optional, dict, None)
+ Remote peer system.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the remote peer gateway host.
+
+
+ username (True, str, None)
+ The username of the remote peer gateway host.
+
+
+ password (True, str, None)
+ The password of the remote peer gateway host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with remote peer gateway host.
+
+
+ timeout (optional, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+ state (optional, str, present)
+ State of the replication pair.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The *check_mode* is supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+ - In 4.0 the creation of replication pair fails when I(copy_type) is specified as C(OfflineCopy).
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+
+ - name: Get replication pair details
+ dellemc.powerflex.replication_pair:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ pair_id: "123"
+
+ - name: Create a replication pair
+ dellemc.powerflex.replication_pair:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "test_rcg"
+ pairs:
+ - source_volume_id: "002"
+ target_volume_id: "001"
+ copy_type: "OnlineCopy"
+ name: "pair1"
+
+ - name: Create a replication pair with target volume name
+ dellemc.powerflex.replication_pair:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ rcg_name: "test_rcg"
+ pairs:
+ - source_volume_name: "src_vol"
+ target_volume_name: "dest_vol"
+ copy_type: "OnlineCopy"
+ name: "pair1"
+ remote_peer:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+
+ - name: Pause replication pair
+ dellemc.powerflex.replication_pair:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ pair_name: "pair1"
+ pause: True
+
+ - name: Resume replication pair
+ dellemc.powerflex.replication_pair:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ pair_name: "pair1"
+ pause: False
+
+ - name: Delete replication pair
+ dellemc.powerflex.replication_pair:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ pair_name: "pair1"
+ state: "absent"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+replication_pair_details (When replication pair exists, dict, {'copyType': 'OnlineCopy', 'id': '23aa0bc900000001', 'initialCopyPriority': -1, 'initialCopyState': 'Done', 'lifetimeState': 'Normal', 'localActivityState': 'RplEnabled', 'localVolumeId': 'e2bc1fab00000008', 'localVolumeName': 'vol1', 'name': None, 'peerSystemName': None, 'remoteActivityState': 'RplEnabled', 'remoteCapacityInMB': 8192, 'remoteId': 'a058446700000001', 'remoteVolumeId': '1cda7af20000000d', 'remoteVolumeName': 'vol', 'replicationConsistencyGroupId': 'e2ce036b00000002', 'userRequestedPauseTransmitInitCopy': False})
+ Details of the replication pair.
+
+
+ id (, str, )
+ The ID of the replication pair.
+
+
+ name (, str, )
+ The name of the replication pair.
+
+
+ remoteId (, str, )
+ The ID of the remote replication pair.
+
+
+ localVolumeId (, str, )
+ The ID of the local volume.
+
+
+ localVolumeName (, str, )
+ The name of the local volume.
+
+
+ replicationConsistencyGroupId (, str, )
+ The ID of the replication consistency group.
+
+
+ copyType (, str, )
+ The copy type of the replication pair.
+
+
+ initialCopyState (, str, )
+ The inital copy state of the replication pair.
+
+
+ localActivityState (, str, )
+ The state of activity of the local replication pair.
+
+
+ remoteActivityState (, str, )
+ The state of activity of the remote replication pair.
+
+
+ initialCopyPriority (, int, )
+ Initial copy priority.
+
+
+ lifetimeState (, int, )
+ Lifetime state of replication pair.
+
+
+ peerSystemName (, int, )
+ Peer system name.
+
+
+ remoteCapacityInMB (, int, )
+ Remote Capacity in MB.
+
+
+ userRequestedPauseTransmitInitCopy (, int, )
+ Value of user requested pause transmit initial copy.
+
+
+ remoteVolumeId (, int, )
+ Remote Volume ID.
+
+
+ remoteVolumeName (, int, )
+ Remote Volume Name.
+
+
+
+rcg_replication_pairs (When rcg exists, list, [{'copyType': 'OnlineCopy', 'id': '23aa0bc900000001', 'initialCopyPriority': -1, 'initialCopyState': 'Done', 'lifetimeState': 'Normal', 'localActivityState': 'RplEnabled', 'localVolumeId': 'e2bc1fab00000008', 'localVolumeName': 'vol1', 'name': None, 'peerSystemName': None, 'remoteActivityState': 'RplEnabled', 'remoteCapacityInMB': 8192, 'remoteId': 'a058446700000001', 'remoteVolumeId': '1cda7af20000000d', 'remoteVolumeName': 'vol', 'replicationConsistencyGroupId': 'e2ce036b00000002', 'userRequestedPauseTransmitInitCopy': False}])
+ Details of the replication pairs of rcg.
+
+
+ id (, str, )
+ The ID of the replication pair.
+
+
+ name (, str, )
+ The name of the replication pair.
+
+
+ remoteId (, str, )
+ The ID of the remote replication pair.
+
+
+ localVolumeId (, str, )
+ The ID of the local volume.
+
+
+ localVolumeName (, str, )
+ The name of the local volume.
+
+
+ replicationConsistencyGroupId (, str, )
+ The ID of the replication consistency group.
+
+
+ copyType (, str, )
+ The copy type of the replication pair.
+
+
+ initialCopyState (, str, )
+ The inital copy state of the replication pair.
+
+
+ localActivityState (, str, )
+ The state of activity of the local replication pair.
+
+
+ remoteActivityState (, str, )
+ The state of activity of the remote replication pair.
+
+
+ initialCopyPriority (, int, )
+ Initial copy priority.
+
+
+ lifetimeState (, int, )
+ Lifetime state of replication pair.
+
+
+ peerSystemName (, int, )
+ Peer system name.
+
+
+ remoteCapacityInMB (, int, )
+ Remote Capacity in MB.
+
+
+ userRequestedPauseTransmitInitCopy (, int, )
+ Value of user requested pause transmit initial copy.
+
+
+ remoteVolumeId (, int, )
+ Remote Volume ID.
+
+
+ remoteVolumeName (, int, )
+ Remote Volume Name.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Jennifer John (@Jennifer-John) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/sdc.rst b/ansible_collections/dellemc/powerflex/docs/modules/sdc.rst
new file mode 100644
index 000000000..585267891
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/sdc.rst
@@ -0,0 +1,198 @@
+.. _sdc_module:
+
+
+sdc -- Manage SDCs on Dell PowerFlex
+====================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing SDCs on PowerFlex storage system includes getting details of SDC and renaming SDC.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ sdc_name (optional, str, None)
+ Name of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip* for get/rename operation.
+
+ Mutually exclusive with *sdc_id* and *sdc_ip*.
+
+
+ sdc_id (optional, str, None)
+ ID of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip* for get/rename operation.
+
+ Mutually exclusive with *sdc_name* and *sdc_ip*.
+
+
+ sdc_ip (optional, str, None)
+ IP of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip* for get/rename operation.
+
+ Mutually exclusive with *sdc_id* and *sdc_name*.
+
+
+ sdc_new_name (optional, str, None)
+ New name of the SDC. Used to rename the SDC.
+
+
+ state (True, str, None)
+ State of the SDC.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The *check_mode* is not supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get SDC details using SDC ip
+ dellemc.powerflex.sdc:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ sdc_ip: "{{sdc_ip}}"
+ state: "present"
+
+ - name: Rename SDC using SDC name
+ dellemc.powerflex.sdc:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ sdc_name: "centos_sdc"
+ sdc_new_name: "centos_sdc_renamed"
+ state: "present"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+sdc_details (When SDC exists, dict, {'id': '07335d3d00000006', 'installedSoftwareVersionInfo': 'R3_6.0.0', 'kernelBuildNumber': None, 'kernelVersion': '3.10.0', 'links': [{'href': '/api/instances/Sdc::07335d3d00000006', 'rel': 'self'}, {'href': '/api/instances/Sdc::07335d3d00000006/relationships/ Statistics', 'rel': '/api/Sdc/relationship/Statistics'}, {'href': '/api/instances/Sdc::07335d3d00000006/relationships/ Volume', 'rel': '/api/Sdc/relationship/Volume'}, {'href': '/api/instances/System::4a54a8ba6df0690f', 'rel': '/api/parent/relationship/systemId'}], 'mapped_volumes': [], 'mdmConnectionState': 'Disconnected', 'memoryAllocationFailure': None, 'name': 'LGLAP203', 'osType': 'Linux', 'peerMdmId': None, 'perfProfile': 'HighPerformance', 'sdcApproved': True, 'sdcApprovedIps': None, 'sdcGuid': 'F8ECB844-23B8-4629-92BB-B6E49A1744CB', 'sdcIp': 'N/A', 'sdcIps': None, 'sdcType': 'AppSdc', 'sdrId': None, 'socketAllocationFailure': None, 'softwareVersionInfo': 'R3_6.0.0', 'systemId': '4a54a8ba6df0690f', 'versionInfo': 'R3_6.0.0'})
+ Details of the SDC.
+
+
+ id (, str, )
+ The ID of the SDC.
+
+
+ name (, str, )
+ Name of the SDC.
+
+
+ sdcIp (, str, )
+ IP of the SDC.
+
+
+ osType (, str, )
+ OS type of the SDC.
+
+
+ mapped_volumes (, list, )
+ The details of the mapped volumes.
+
+
+ id (, str, )
+ The ID of the volume.
+
+
+ name (, str, )
+ The name of the volume.
+
+
+ volumeType (, str, )
+ Type of the volume.
+
+
+
+ sdcApproved (, bool, )
+ Indicates whether an SDC has approved access to the system.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Akash Shendge (@shenda1) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/sds.rst b/ansible_collections/dellemc/powerflex/docs/modules/sds.rst
new file mode 100644
index 000000000..81a1b3908
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/sds.rst
@@ -0,0 +1,516 @@
+.. _sds_module:
+
+
+sds -- Manage SDS on Dell PowerFlex
+===================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing SDS on PowerFlex storage system includes creating new SDS, getting details of SDS, adding/removing IP to/from SDS, modifying attributes of SDS, and deleting SDS.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ sds_name (optional, str, None)
+ The name of the SDS.
+
+ Mandatory for create operation.
+
+ It is unique across the PowerFlex array.
+
+ Mutually exclusive with *sds_id*.
+
+
+ sds_id (optional, str, None)
+ The ID of the SDS.
+
+ Except create operation, all other operations can be performed using *sds_id*.
+
+ Mutually exclusive with *sds_name*.
+
+
+ protection_domain_name (optional, str, None)
+ The name of the protection domain.
+
+ Mutually exclusive with *protection_domain_id*.
+
+
+ protection_domain_id (optional, str, None)
+ The ID of the protection domain.
+
+ Mutually exclusive with *protection_domain_name*.
+
+
+ sds_ip_list (optional, list, None)
+ Dictionary of IPs and their roles for the SDS.
+
+ At least one IP-role is mandatory while creating a SDS.
+
+ IP-roles can be updated as well.
+
+
+ ip (True, str, None)
+ IP address of the SDS.
+
+
+ role (True, str, None)
+ Role assigned to the SDS IP address.
+
+
+
+ sds_ip_state (optional, str, None)
+ State of IP with respect to the SDS.
+
+
+ rfcache_enabled (optional, bool, None)
+ Whether to enable the Read Flash cache.
+
+
+ rmcache_enabled (optional, bool, None)
+ Whether to enable the Read RAM cache.
+
+
+ rmcache_size (optional, int, None)
+ Read RAM cache size (in MB).
+
+ Minimum size is 128 MB.
+
+ Maximum size is 3911 MB.
+
+
+ sds_new_name (optional, str, None)
+ SDS new name.
+
+
+ performance_profile (optional, str, None)
+ Performance profile to apply to the SDS.
+
+ The HighPerformance profile configures a predefined set of parameters for very high performance use cases.
+
+ Default value by API is ``HighPerformance``.
+
+
+ state (True, str, None)
+ State of the SDS.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The maximum limit for the IPs that can be associated with an SDS is 8.
+ - There needs to be at least 1 IP for SDS communication and 1 for SDC communication.
+ - If only 1 IP exists, it must be with role 'all'; else 1 IP can be with role 'all'and other IPs with role 'sdcOnly'; or 1 IP must be with role 'sdsOnly' and others with role 'sdcOnly'.
+ - There can be 1 or more IPs with role 'sdcOnly'.
+ - There must be only 1 IP with SDS role (either with role 'all' or 'sdsOnly').
+ - SDS can be created with RF cache disabled, but, be aware that the RF cache is not always updated. In this case, the user should re-try the operation.
+ - The *check_mode* is not supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Create SDS
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_name: "node0"
+ protection_domain_name: "domain1"
+ sds_ip_list:
+ - ip: "198.10.xxx.xxx"
+ role: "all"
+ sds_ip_state: "present-in-sds"
+ state: "present"
+
+ - name: Create SDS with all parameters
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_name: "node1"
+ protection_domain_name: "domain1"
+ sds_ip_list:
+ - ip: "198.10.xxx.xxx"
+ role: "sdcOnly"
+ sds_ip_state: "present-in-sds"
+ rmcache_enabled: true
+ rmcache_size: 128
+ performance_profile: "HighPerformance"
+ state: "present"
+
+ - name: Get SDS details using name
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_name: "node0"
+ state: "present"
+
+ - name: Get SDS details using ID
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_id: "5718253c00000004"
+ state: "present"
+
+ - name: Modify SDS attributes using name
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_name: "node0"
+ sds_new_name: "node0_new"
+ rfcache_enabled: true
+ rmcache_enabled: true
+ rmcache_size: 256
+ performance_profile: "HighPerformance"
+ state: "present"
+
+ - name: Modify SDS attributes using ID
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_id: "5718253c00000004"
+ sds_new_name: "node0_new"
+ rfcache_enabled: true
+ rmcache_enabled: true
+ rmcache_size: 256
+ performance_profile: "HighPerformance"
+ state: "present"
+
+ - name: Add IP and role to an SDS
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_name: "node0"
+ sds_ip_list:
+ - ip: "198.10.xxx.xxx"
+ role: "sdcOnly"
+ sds_ip_state: "present-in-sds"
+ state: "present"
+
+ - name: Remove IP and role from an SDS
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_name: "node0"
+ sds_ip_list:
+ - ip: "198.10.xxx.xxx"
+ role: "sdcOnly"
+ sds_ip_state: "absent-in-sds"
+ state: "present"
+
+ - name: Delete SDS using name
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_name: "node0"
+ state: "absent"
+
+ - name: Delete SDS using ID
+ dellemc.powerflex.sds:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ sds_id: "5718253c00000004"
+ state: "absent"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+sds_details (When SDS exists, dict, {'authenticationError': 'None', 'certificateInfo': None, 'configuredDrlMode': 'Volatile', 'drlMode': 'Volatile', 'faultSetId': None, 'fglMetadataCacheSize': 0, 'fglMetadataCacheState': 'Disabled', 'fglNumConcurrentWrites': 1000, 'id': '8f3bb0cc00000002', 'ipList': [{'ip': '10.47.xxx.xxx', 'role': 'all'}], 'lastUpgradeTime': 0, 'links': [{'href': '/api/instances/Sds::8f3bb0cc00000002', 'rel': 'self'}, {'href': '/api/instances/Sds::8f3bb0cc00000002/relationships /Statistics', 'rel': '/api/Sds/relationship/Statistics'}, {'href': '/api/instances/Sds::8f3bb0cc00000002/relationships /SpSds', 'rel': '/api/Sds/relationship/SpSds'}, {'href': '/api/instances/Sds::8f3bb0cc00000002/relationships /Device', 'rel': '/api/Sds/relationship/Device'}, {'href': '/api/instances/ProtectionDomain::9300c1f900000000', 'rel': '/api/parent/relationship/protectionDomainId'}], 'maintenanceState': 'NoMaintenance', 'maintenanceType': 'NoMaintenance', 'mdmConnectionState': 'Connected', 'membershipState': 'Joined', 'name': 'node0', 'numOfIoBuffers': None, 'numRestarts': 2, 'onVmWare': True, 'perfProfile': 'HighPerformance', 'port': 7072, 'protectionDomainId': '9300c1f900000000', 'protectionDomainName': 'domain1', 'raidControllers': None, 'rfcacheEnabled': True, 'rfcacheErrorApiVersionMismatch': False, 'rfcacheErrorDeviceDoesNotExist': False, 'rfcacheErrorInconsistentCacheConfiguration': False, 'rfcacheErrorInconsistentSourceConfiguration': False, 'rfcacheErrorInvalidDriverPath': False, 'rfcacheErrorLowResources': False, 'rmcacheEnabled': True, 'rmcacheFrozen': False, 'rmcacheMemoryAllocationState': 'AllocationPending', 'rmcacheSizeInKb': 131072, 'rmcacheSizeInMb': 128, 'sdsConfigurationFailure': None, 'sdsDecoupled': None, 'sdsReceiveBufferAllocationFailures': None, 'sdsState': 'Normal', 'softwareVersionInfo': 'R3_6.0.0'})
+ Details of the SDS.
+
+
+ authenticationError (, str, )
+ Indicates authentication error.
+
+
+ certificateInfo (, str, )
+ Information about certificate.
+
+
+ configuredDrlMode (, str, )
+ Configured DRL mode.
+
+
+ drlMode (, str, )
+ DRL mode.
+
+
+ faultSetId (, str, )
+ Fault set ID.
+
+
+ fglMetadataCacheSize (, int, )
+ FGL metadata cache size.
+
+
+ fglMetadataCacheState (, str, )
+ FGL metadata cache state.
+
+
+ fglNumConcurrentWrites (, int, )
+ FGL concurrent writes.
+
+
+ id (, str, )
+ SDS ID.
+
+
+ ipList (, list, )
+ SDS IP list.
+
+
+ ip (, str, )
+ IP present in the SDS.
+
+
+ role (, str, )
+ Role of the SDS IP.
+
+
+
+ lastUpgradeTime (, str, )
+ Last time SDS was upgraded.
+
+
+ links (, list, )
+ SDS links.
+
+
+ href (, str, )
+ SDS instance URL.
+
+
+ rel (, str, )
+ SDS's relationship with different entities.
+
+
+
+ maintenanceState (, str, )
+ Maintenance state.
+
+
+ maintenanceType (, str, )
+ Maintenance type.
+
+
+ mdmConnectionState (, str, )
+ MDM connection state.
+
+
+ membershipState (, str, )
+ Membership state.
+
+
+ name (, str, )
+ Name of the SDS.
+
+
+ numOfIoBuffers (, int, )
+ Number of IO buffers.
+
+
+ numRestarts (, int, )
+ Number of restarts.
+
+
+ onVmWare (, bool, )
+ Presence on VMware.
+
+
+ perfProfile (, str, )
+ Performance profile.
+
+
+ port (, int, )
+ SDS port.
+
+
+ protectionDomainId (, str, )
+ Protection Domain ID.
+
+
+ protectionDomainName (, str, )
+ Protection Domain Name.
+
+
+ raidControllers (, int, )
+ Number of RAID controllers.
+
+
+ rfcacheEnabled (, bool, )
+ Whether RF cache is enabled or not.
+
+
+ rfcacheErrorApiVersionMismatch (, bool, )
+ RF cache error for API version mismatch.
+
+
+ rfcacheErrorDeviceDoesNotExist (, bool, )
+ RF cache error for device does not exist.
+
+
+ rfcacheErrorInconsistentCacheConfiguration (, bool, )
+ RF cache error for inconsistent cache configuration.
+
+
+ rfcacheErrorInconsistentSourceConfiguration (, bool, )
+ RF cache error for inconsistent source configuration.
+
+
+ rfcacheErrorInvalidDriverPath (, bool, )
+ RF cache error for invalid driver path.
+
+
+ rfcacheErrorLowResources (, bool, )
+ RF cache error for low resources.
+
+
+ rmcacheEnabled (, bool, )
+ Whether Read RAM cache is enabled or not.
+
+
+ rmcacheFrozen (, bool, )
+ RM cache frozen.
+
+
+ rmcacheMemoryAllocationState (, bool, )
+ RM cache memory allocation state.
+
+
+ rmcacheSizeInKb (, int, )
+ RM cache size in KB.
+
+
+ rmcacheSizeInMb (, int, )
+ RM cache size in MB.
+
+
+ sdsConfigurationFailure (, str, )
+ SDS configuration failure.
+
+
+ sdsDecoupled (, str, )
+ SDS decoupled.
+
+
+ sdsReceiveBufferAllocationFailures (, str, )
+ SDS receive buffer allocation failures.
+
+
+ sdsState (, str, )
+ SDS state.
+
+
+ softwareVersionInfo (, str, )
+ SDS software version information.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Rajshree Khare (@khareRajshree) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/snapshot.rst b/ansible_collections/dellemc/powerflex/docs/modules/snapshot.rst
new file mode 100644
index 000000000..dafed946d
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/snapshot.rst
@@ -0,0 +1,398 @@
+.. _snapshot_module:
+
+
+snapshot -- Manage Snapshots on Dell PowerFlex
+==============================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing snapshots on PowerFlex Storage System includes creating, getting details, mapping/unmapping to/from SDC, modifying the attributes and deleting snapshot.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ snapshot_name (optional, str, None)
+ The name of the snapshot.
+
+ Mandatory for create operation.
+
+ Specify either *snapshot_name* or *snapshot_id* (but not both) for any operation.
+
+
+ snapshot_id (optional, str, None)
+ The ID of the Snapshot.
+
+
+ vol_name (optional, str, None)
+ The name of the volume for which snapshot will be taken.
+
+ Specify either *vol_name* or *vol_id* while creating snapshot.
+
+
+ vol_id (optional, str, None)
+ The ID of the volume.
+
+
+ read_only (optional, bool, None)
+ Specifies whether mapping of the created snapshot volume will have read-write access or limited to read-only access.
+
+ If ``true``, snapshot is created with read-only access.
+
+ If ``false``, snapshot is created with read-write access.
+
+
+ size (optional, int, None)
+ The size of the snapshot.
+
+
+ cap_unit (optional, str, None)
+ The unit of the volume size. It defaults to ``GB``, if not specified.
+
+
+ snapshot_new_name (optional, str, None)
+ New name of the snapshot. Used to rename the snapshot.
+
+
+ allow_multiple_mappings (optional, bool, None)
+ Specifies whether to allow multiple mappings or not.
+
+
+ desired_retention (optional, int, None)
+ The retention value for the Snapshot.
+
+ If the desired_retention is not mentioned during creation, snapshot will be created with unlimited retention.
+
+ Maximum supported desired retention is 31 days.
+
+
+ retention_unit (optional, str, None)
+ The unit for retention. It defaults to ``hours``, if not specified.
+
+
+ sdc (optional, list, None)
+ Specifies SDC parameters.
+
+
+ sdc_name (optional, str, None)
+ Name of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip*.
+
+ Mutually exclusive with *sdc_id* and *sdc_ip*.
+
+
+ sdc_id (optional, str, None)
+ ID of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip*.
+
+ Mutually exclusive with *sdc_name* and *sdc_ip*.
+
+
+ sdc_ip (optional, str, None)
+ IP of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip*.
+
+ Mutually exclusive with *sdc_id* and *sdc_ip*.
+
+
+ access_mode (optional, str, None)
+ Define the access mode for all mappings of the snapshot.
+
+
+ bandwidth_limit (optional, int, None)
+ Limit of snapshot network bandwidth.
+
+ Need to mention in multiple of 1024 Kbps.
+
+ To set no limit, 0 is to be passed.
+
+
+ iops_limit (optional, int, None)
+ Limit of snapshot IOPS.
+
+ Minimum IOPS limit is 11 and specify 0 for unlimited iops.
+
+
+
+ sdc_state (optional, str, None)
+ Mapping state of the SDC.
+
+
+ remove_mode (optional, str, None)
+ Removal mode for the snapshot.
+
+ It defaults to ``ONLY_ME``, if not specified.
+
+
+ state (True, str, None)
+ State of the snapshot.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The *check_mode* is not supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Create snapshot
+ dellemc.powerflex.snapshot:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ snapshot_name: "ansible_snapshot"
+ vol_name: "ansible_volume"
+ read_only: False
+ desired_retention: 2
+ state: "present"
+
+ - name: Get snapshot details using snapshot id
+ dellemc.powerflex.snapshot:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ snapshot_id: "fe6cb28200000007"
+ state: "present"
+
+ - name: Map snapshot to SDC
+ dellemc.powerflex.snapshot:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ snapshot_id: "fe6cb28200000007"
+ sdc:
+ - sdc_ip: "198.10.xxx.xxx"
+ - sdc_id: "663ac0d200000001"
+ allow_multiple_mappings: True
+ sdc_state: "mapped"
+ state: "present"
+
+ - name: Modify the attributes of SDC mapped to snapshot
+ dellemc.powerflex.snapshot:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ snapshot_id: "fe6cb28200000007"
+ sdc:
+ - sdc_ip: "198.10.xxx.xxx"
+ iops_limit: 11
+ bandwidth_limit: 4096
+ - sdc_id: "663ac0d200000001"
+ iops_limit: 20
+ bandwidth_limit: 2048
+ allow_multiple_mappings: True
+ sdc_state: "mapped"
+ state: "present"
+
+ - name: Extend the size of snapshot
+ dellemc.powerflex.snapshot:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ snapshot_id: "fe6cb28200000007"
+ size: 16
+ state: "present"
+
+ - name: Unmap SDCs from snapshot
+ dellemc.powerflex.snapshot:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ snapshot_id: "fe6cb28200000007"
+ sdc:
+ - sdc_ip: "198.10.xxx.xxx"
+ - sdc_id: "663ac0d200000001"
+ sdc_state: "unmapped"
+ state: "present"
+
+ - name: Rename snapshot
+ dellemc.powerflex.snapshot:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ snapshot_id: "fe6cb28200000007"
+ snapshot_new_name: "ansible_renamed_snapshot_10"
+ state: "present"
+
+ - name: Delete snapshot
+ dellemc.powerflex.snapshot:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ snapshot_id: "fe6cb28200000007"
+ remove_mode: "ONLY_ME"
+ state: "absent"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+snapshot_details (When snapshot exists, dict, {'accessModeLimit': 'ReadOnly', 'ancestorVolumeId': 'cdd883cf00000002', 'ancestorVolumeName': 'ansible-volume-1', 'autoSnapshotGroupId': None, 'compressionMethod': 'Invalid', 'consistencyGroupId': '22f1e80c00000001', 'creationTime': 1631619229, 'dataLayout': 'MediumGranularity', 'id': 'cdd883d000000004', 'links': [{'href': '/api/instances/Volume::cdd883d000000004', 'rel': 'self'}, {'href': '/api/instances/Volume::cdd883d000000004/relationships /Statistics', 'rel': '/api/Volume/relationship/Statistics'}, {'href': '/api/instances/Volume::cdd883cf00000002', 'rel': '/api/parent/relationship/ancestorVolumeId'}, {'href': '/api/instances/VTree::6e86255c00000001', 'rel': '/api/parent/relationship/vtreeId'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000', 'rel': '/api/parent/relationship/storagePoolId'}], 'lockedAutoSnapshot': False, 'lockedAutoSnapshotMarkedForRemoval': False, 'managedBy': 'ScaleIO', 'mappedSdcInfo': None, 'name': 'ansible_vol_snap_1', 'notGenuineSnapshot': False, 'originalExpiryTime': 0, 'pairIds': None, 'replicationJournalVolume': False, 'replicationTimeStamp': 0, 'retentionInHours': 0, 'retentionLevels': [], 'secureSnapshotExpTime': 0, 'sizeInGb': 16, 'sizeInKb': 16777216, 'snplIdOfAutoSnapshot': None, 'snplIdOfSourceVolume': None, 'storagePoolId': 'e0d8f6c900000000', 'storagePoolName': 'pool1', 'timeStampIsAccurate': False, 'useRmcache': False, 'volumeReplicationState': 'UnmarkedForReplication', 'volumeType': 'Snapshot', 'vtreeId': '6e86255c00000001'})
+ Details of the snapshot.
+
+
+ ancestorVolumeId (, str, )
+ The ID of the root of the specified volume's V-Tree.
+
+
+ ancestorVolumeName (, str, )
+ The name of the root of the specified volume's V-Tree.
+
+
+ creationTime (, int, )
+ The creation time of the snapshot.
+
+
+ id (, str, )
+ The ID of the snapshot.
+
+
+ mappedSdcInfo (, dict, )
+ The details of the mapped SDC.
+
+
+ sdcId (, str, )
+ ID of the SDC.
+
+
+ sdcName (, str, )
+ Name of the SDC.
+
+
+ sdcIp (, str, )
+ IP of the SDC.
+
+
+ accessMode (, str, )
+ Mapping access mode for the specified snapshot.
+
+
+ limitIops (, int, )
+ IOPS limit for the SDC.
+
+
+ limitBwInMbps (, int, )
+ Bandwidth limit for the SDC.
+
+
+
+ name (, str, )
+ Name of the snapshot.
+
+
+ secureSnapshotExpTime (, int, )
+ Expiry time of the snapshot.
+
+
+ sizeInKb (, int, )
+ Size of the snapshot.
+
+
+ sizeInGb (, int, )
+ Size of the snapshot.
+
+
+ retentionInHours (, int, )
+ Retention of the snapshot in hours.
+
+
+ storagePoolId (, str, )
+ The ID of the Storage pool in which snapshot resides.
+
+
+ storagePoolName (, str, )
+ The name of the Storage pool in which snapshot resides.
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Akash Shendge (@shenda1) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/storagepool.rst b/ansible_collections/dellemc/powerflex/docs/modules/storagepool.rst
new file mode 100644
index 000000000..9037ef73c
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/storagepool.rst
@@ -0,0 +1,264 @@
+.. _storagepool_module:
+
+
+storagepool -- Managing Dell PowerFlex storage pool
+===================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Dell PowerFlex storage pool module includes getting the details of storage pool, creating a new storage pool, and modifying the attribute of a storage pool.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ storage_pool_name (optional, str, None)
+ The name of the storage pool.
+
+ If more than one storage pool is found with the same name then protection domain id/name is required to perform the task.
+
+ Mutually exclusive with *storage_pool_id*.
+
+
+ storage_pool_id (optional, str, None)
+ The id of the storage pool.
+
+ It is auto generated, hence should not be provided during creation of a storage pool.
+
+ Mutually exclusive with *storage_pool_name*.
+
+
+ protection_domain_name (optional, str, None)
+ The name of the protection domain.
+
+ During creation of a pool, either protection domain name or id must be mentioned.
+
+ Mutually exclusive with *protection_domain_id*.
+
+
+ protection_domain_id (optional, str, None)
+ The id of the protection domain.
+
+ During creation of a pool, either protection domain name or id must be mentioned.
+
+ Mutually exclusive with *protection_domain_name*.
+
+
+ media_type (optional, str, None)
+ Type of devices in the storage pool.
+
+
+ storage_pool_new_name (optional, str, None)
+ New name for the storage pool can be provided.
+
+ This parameter is used for renaming the storage pool.
+
+
+ use_rfcache (optional, bool, None)
+ Enable/Disable RFcache on a specific storage pool.
+
+
+ use_rmcache (optional, bool, None)
+ Enable/Disable RMcache on a specific storage pool.
+
+
+ state (True, str, None)
+ State of the storage pool.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - TRANSITIONAL media type is supported only during modification.
+ - The *check_mode* is not supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+
+ - name: Get the details of storage pool by name
+ dellemc.powerflex.storagepool:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ storage_pool_name: "sample_pool_name"
+ protection_domain_name: "sample_protection_domain"
+ state: "present"
+
+ - name: Get the details of storage pool by id
+ dellemc.powerflex.storagepool:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ storage_pool_id: "abcd1234ab12r"
+ state: "present"
+
+ - name: Create a new storage pool by name
+ dellemc.powerflex.storagepool:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ storage_pool_name: "ansible_test_pool"
+ protection_domain_id: "1c957da800000000"
+ media_type: "HDD"
+ state: "present"
+
+ - name: Modify a storage pool by name
+ dellemc.powerflex.storagepool:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ storage_pool_name: "ansible_test_pool"
+ protection_domain_id: "1c957da800000000"
+ use_rmcache: True
+ use_rfcache: True
+ state: "present"
+
+ - name: Rename storage pool by id
+ dellemc.powerflex.storagepool:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ storage_pool_id: "abcd1234ab12r"
+ storage_pool_new_name: "new_ansible_pool"
+ state: "present"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+storage_pool_details (When storage pool exists, dict, {'addressSpaceUsage': 'Normal', 'addressSpaceUsageType': 'DeviceCapacityLimit', 'backgroundScannerBWLimitKBps': 3072, 'backgroundScannerMode': 'DataComparison', 'bgScannerCompareErrorAction': 'ReportAndFix', 'bgScannerReadErrorAction': 'ReportAndFix', 'capacityAlertCriticalThreshold': 90, 'capacityAlertHighThreshold': 80, 'capacityUsageState': 'Normal', 'capacityUsageType': 'NetCapacity', 'checksumEnabled': False, 'compressionMethod': 'Invalid', 'dataLayout': 'MediumGranularity', 'externalAccelerationType': 'None', 'fglAccpId': None, 'fglExtraCapacity': None, 'fglMaxCompressionRatio': None, 'fglMetadataSizeXx100': None, 'fglNvdimmMetadataAmortizationX100': None, 'fglNvdimmWriteCacheSizeInMb': None, 'fglOverProvisioningFactor': None, 'fglPerfProfile': None, 'fglWriteAtomicitySize': None, 'fragmentationEnabled': True, 'id': 'e0d8f6c900000000', 'links': [{'href': '/api/instances/StoragePool::e0d8f6c900000000', 'rel': 'self'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/Statistics', 'rel': '/api/StoragePool/relationship/Statistics'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/SpSds', 'rel': '/api/StoragePool/relationship/SpSds'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/Volume', 'rel': '/api/StoragePool/relationship/Volume'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/Device', 'rel': '/api/StoragePool/relationship/Device'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000 /relationships/VTree', 'rel': '/api/StoragePool/relationship/VTree'}, {'href': '/api/instances/ProtectionDomain::9300c1f900000000', 'rel': '/api/parent/relationship/protectionDomainId'}], 'statistics': {'BackgroundScannedInMB': 3466920, 'activeBckRebuildCapacityInKb': 0, 'activeEnterProtectedMaintenanceModeCapacityInKb': 0, 'aggregateCompressionLevel': 'Uncompressed', 'atRestCapacityInKb': 1248256, 'backgroundScanCompareErrorCount': 0, 'backgroundScanFixedCompareErrorCount': 0, 'bckRebuildReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'bckRebuildWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'capacityAvailableForVolumeAllocationInKb': 369098752, 'capacityInUseInKb': 2496512, 'capacityInUseNoOverheadInKb': 2496512, 'capacityLimitInKb': 845783040, 'compressedDataCompressionRatio': 0.0, 'compressionRatio': 1.0, 'currentFglMigrationSizeInKb': 0, 'deviceIds': [], 'enterProtectedMaintenanceModeCapacityInKb': 0, 'enterProtectedMaintenanceModeReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'enterProtectedMaintenanceModeWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'exitProtectedMaintenanceModeReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'exitProtectedMaintenanceModeWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'exposedCapacityInKb': 0, 'failedCapacityInKb': 0, 'fwdRebuildReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'fwdRebuildWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'inMaintenanceCapacityInKb': 0, 'inMaintenanceVacInKb': 0, 'inUseVacInKb': 184549376, 'inaccessibleCapacityInKb': 0, 'logWrittenBlocksInKb': 0, 'maxCapacityInKb': 845783040, 'migratingVolumeIds': [], 'migratingVtreeIds': [], 'movingCapacityInKb': 0, 'netCapacityInUseInKb': 1248256, 'normRebuildCapacityInKb': 0, 'normRebuildReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'normRebuildWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'numOfDeviceAtFaultRebuilds': 0, 'numOfDevices': 3, 'numOfIncomingVtreeMigrations': 0, 'numOfVolumes': 8, 'numOfVolumesInDeletion': 0, 'numOfVtrees': 8, 'overallUsageRatio': 73.92289, 'pendingBckRebuildCapacityInKb': 0, 'pendingEnterProtectedMaintenanceModeCapacityInKb': 0, 'pendingExitProtectedMaintenanceModeCapacityInKb': 0, 'pendingFwdRebuildCapacityInKb': 0, 'pendingMovingCapacityInKb': 0, 'pendingMovingInBckRebuildJobs': 0, 'persistentChecksumBuilderProgress': 100.0, 'persistentChecksumCapacityInKb': 414720, 'primaryReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'primaryReadFromDevBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'primaryReadFromRmcacheBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'primaryVacInKb': 92274688, 'primaryWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'protectedCapacityInKb': 2496512, 'protectedVacInKb': 184549376, 'provisionedAddressesInKb': 2496512, 'rebalanceCapacityInKb': 0, 'rebalanceReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'rebalanceWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'rfacheReadHit': 0, 'rfacheWriteHit': 0, 'rfcacheAvgReadTime': 0, 'rfcacheAvgWriteTime': 0, 'rfcacheIoErrors': 0, 'rfcacheIosOutstanding': 0, 'rfcacheIosSkipped': 0, 'rfcacheReadMiss': 0, 'rmPendingAllocatedInKb': 0, 'rmPendingThickInKb': 0, 'rplJournalCapAllowed': 0, 'rplTotalJournalCap': 0, 'rplUsedJournalCap': 0, 'secondaryReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'secondaryReadFromDevBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'secondaryReadFromRmcacheBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'secondaryVacInKb': 92274688, 'secondaryWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'semiProtectedCapacityInKb': 0, 'semiProtectedVacInKb': 0, 'snapCapacityInUseInKb': 0, 'snapCapacityInUseOccupiedInKb': 0, 'snapshotCapacityInKb': 0, 'spSdsIds': ['abdfe71b00030001', 'abdce71d00040001', 'abdde71e00050001'], 'spareCapacityInKb': 84578304, 'targetOtherLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'targetReadLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'targetWriteLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'tempCapacityInKb': 0, 'tempCapacityVacInKb': 0, 'thickCapacityInUseInKb': 0, 'thinAndSnapshotRatio': 73.92289, 'thinCapacityAllocatedInKm': 184549376, 'thinCapacityInUseInKb': 0, 'thinUserDataCapacityInKb': 2496512, 'totalFglMigrationSizeInKb': 0, 'totalReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'totalWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'trimmedUserDataCapacityInKb': 0, 'unreachableUnusedCapacityInKb': 0, 'unusedCapacityInKb': 758708224, 'userDataCapacityInKb': 2496512, 'userDataCapacityNoTrimInKb': 2496512, 'userDataReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcReadLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcTrimLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcWriteLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataTrimBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'volMigrationReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'volMigrationWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'volumeAddressSpaceInKb': '922XXXXX', 'volumeAllocationLimitInKb': '3707XXXXX', 'volumeIds': ['456afc7900XXXXXXXX'], 'vtreeAddresSpaceInKb': 92274688, 'vtreeIds': ['32b1681bXXXXXXXX']}, 'mediaType': 'HDD', 'name': 'pool1', 'numOfParallelRebuildRebalanceJobsPerDevice': 2, 'persistentChecksumBuilderLimitKb': 3072, 'persistentChecksumEnabled': True, 'persistentChecksumState': 'Protected', 'persistentChecksumValidateOnRead': False, 'protectedMaintenanceModeIoPriorityAppBwPerDeviceThresholdInKbps': None, 'protectedMaintenanceModeIoPriorityAppIopsPerDeviceThreshold': None, 'protectedMaintenanceModeIoPriorityBwLimitPerDeviceInKbps': 10240, 'protectedMaintenanceModeIoPriorityNumOfConcurrentIosPerDevice': 1, 'protectedMaintenanceModeIoPriorityPolicy': 'limitNumOfConcurrentIos', 'protectedMaintenanceModeIoPriorityQuietPeriodInMsec': None, 'protectionDomainId': '9300c1f900000000', 'protectionDomainName': 'domain1', 'rebalanceEnabled': True, 'rebalanceIoPriorityAppBwPerDeviceThresholdInKbps': None, 'rebalanceIoPriorityAppIopsPerDeviceThreshold': None, 'rebalanceIoPriorityBwLimitPerDeviceInKbps': 10240, 'rebalanceIoPriorityNumOfConcurrentIosPerDevice': 1, 'rebalanceIoPriorityPolicy': 'favorAppIos', 'rebalanceIoPriorityQuietPeriodInMsec': None, 'rebuildEnabled': True, 'rebuildIoPriorityAppBwPerDeviceThresholdInKbps': None, 'rebuildIoPriorityAppIopsPerDeviceThreshold': None, 'rebuildIoPriorityBwLimitPerDeviceInKbps': 10240, 'rebuildIoPriorityNumOfConcurrentIosPerDevice': 1, 'rebuildIoPriorityPolicy': 'limitNumOfConcurrentIos', 'rebuildIoPriorityQuietPeriodInMsec': None, 'replicationCapacityMaxRatio': 32, 'rmcacheWriteHandlingMode': 'Cached', 'sparePercentage': 10, 'useRfcache': False, 'useRmcache': False, 'vtreeMigrationIoPriorityAppBwPerDeviceThresholdInKbps': None, 'vtreeMigrationIoPriorityAppIopsPerDeviceThreshold': None, 'vtreeMigrationIoPriorityBwLimitPerDeviceInKbps': 10240, 'vtreeMigrationIoPriorityNumOfConcurrentIosPerDevice': 1, 'vtreeMigrationIoPriorityPolicy': 'favorAppIos', 'vtreeMigrationIoPriorityQuietPeriodInMsec': None, 'zeroPaddingEnabled': True})
+ Details of the storage pool.
+
+
+ mediaType (, str, )
+ Type of devices in the storage pool.
+
+
+ useRfcache (, bool, )
+ Enable/Disable RFcache on a specific storage pool.
+
+
+ useRmcache (, bool, )
+ Enable/Disable RMcache on a specific storage pool.
+
+
+ id (, str, )
+ ID of the storage pool under protection domain.
+
+
+ name (, str, )
+ Name of the storage pool under protection domain.
+
+
+ protectionDomainId (, str, )
+ ID of the protection domain in which pool resides.
+
+
+ protectionDomainName (, str, )
+ Name of the protection domain in which pool resides.
+
+
+ statistics (, dict, )
+ Statistics details of the storage pool.
+
+
+ capacityInUseInKb (, str, )
+ Total capacity of the storage pool.
+
+
+ unusedCapacityInKb (, str, )
+ Unused capacity of the storage pool.
+
+
+ deviceIds (, list, )
+ Device Ids of the storage pool.
+
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- Arindam Datta (@dattaarindam) <ansible.team@dell.com>
+- P Srinivas Rao (@srinivas-rao5) <ansible.team@dell.com>
+
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/volume.rst b/ansible_collections/dellemc/powerflex/docs/modules/volume.rst
new file mode 100644
index 000000000..10cf8de84
--- /dev/null
+++ b/ansible_collections/dellemc/powerflex/docs/modules/volume.rst
@@ -0,0 +1,476 @@
+.. _volume_module:
+
+
+volume -- Manage volumes on Dell PowerFlex
+==========================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Managing volumes on PowerFlex storage system includes creating, getting details, modifying attributes and deleting volume.
+
+It also includes adding/removing snapshot policy, mapping/unmapping volume to/from SDC and listing associated snapshots.
+
+
+
+Requirements
+------------
+The below requirements are needed on the host that executes this module.
+
+- A Dell PowerFlex storage system version 3.5 or later.
+- Ansible-core 2.12 or later.
+- PyPowerFlex 1.6.0.
+- Python 3.9, 3.10 or 3.11.
+
+
+
+Parameters
+----------
+
+ vol_name (optional, str, None)
+ The name of the volume.
+
+ Mandatory for create operation.
+
+ It is unique across the PowerFlex array.
+
+ Mutually exclusive with *vol_id*.
+
+
+ vol_id (optional, str, None)
+ The ID of the volume.
+
+ Except create operation, all other operations can be performed using *vol_id*.
+
+ Mutually exclusive with *vol_name*.
+
+
+ storage_pool_name (optional, str, None)
+ The name of the storage pool.
+
+ Either name or the id of the storage pool is required for creating a volume.
+
+ During creation, if storage pool name is provided then either protection domain name or id must be mentioned along with it.
+
+ Mutually exclusive with *storage_pool_id*.
+
+
+ storage_pool_id (optional, str, None)
+ The ID of the storage pool.
+
+ Either name or the id of the storage pool is required for creating a volume.
+
+ Mutually exclusive with *storage_pool_name*.
+
+
+ protection_domain_name (optional, str, None)
+ The name of the protection domain.
+
+ During creation of a volume, if more than one storage pool exists with the same name then either protection domain name or id must be mentioned along with it.
+
+ Mutually exclusive with *protection_domain_id*.
+
+
+ protection_domain_id (optional, str, None)
+ The ID of the protection domain.
+
+ During creation of a volume, if more than one storage pool exists with the same name then either protection domain name or id must be mentioned along with it.
+
+ Mutually exclusive with *protection_domain_name*.
+
+
+ vol_type (optional, str, None)
+ Type of volume provisioning.
+
+
+ compression_type (optional, str, None)
+ Type of the compression method.
+
+
+ use_rmcache (optional, bool, None)
+ Whether to use RM Cache or not.
+
+
+ snapshot_policy_name (optional, str, None)
+ Name of the snapshot policy.
+
+ To remove/detach snapshot policy, empty *snapshot_policy_id*/*snapshot_policy_name* is to be passed along with *auto_snap_remove_type*.
+
+
+ snapshot_policy_id (optional, str, None)
+ ID of the snapshot policy.
+
+ To remove/detach snapshot policy, empty *snapshot_policy_id*/*snapshot_policy_name* is to be passed along with *auto_snap_remove_type*.
+
+
+ auto_snap_remove_type (optional, str, None)
+ Whether to remove or detach the snapshot policy.
+
+ To remove/detach snapshot policy, empty *snapshot_policy_id*/*snapshot_policy_name* is to be passed along with *auto_snap_remove_type*.
+
+ If the snapshot policy name/id is passed empty then *auto_snap_remove_type* is defaulted to ``detach``.
+
+
+ size (optional, int, None)
+ The size of the volume.
+
+ Size of the volume will be assigned as higher multiple of 8 GB.
+
+
+ cap_unit (optional, str, None)
+ The unit of the volume size. It defaults to 'GB'.
+
+
+ vol_new_name (optional, str, None)
+ New name of the volume. Used to rename the volume.
+
+
+ allow_multiple_mappings (optional, bool, None)
+ Specifies whether to allow or not allow multiple mappings.
+
+ If the volume is mapped to one SDC then for every new mapping *allow_multiple_mappings* has to be passed as True.
+
+
+ sdc (optional, list, None)
+ Specifies SDC parameters.
+
+
+ sdc_name (optional, str, None)
+ Name of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip*.
+
+ Mutually exclusive with *sdc_id* and *sdc_ip*.
+
+
+ sdc_id (optional, str, None)
+ ID of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip*.
+
+ Mutually exclusive with *sdc_name* and *sdc_ip*.
+
+
+ sdc_ip (optional, str, None)
+ IP of the SDC.
+
+ Specify either *sdc_name*, *sdc_id* or *sdc_ip*.
+
+ Mutually exclusive with *sdc_id* and *sdc_ip*.
+
+
+ access_mode (optional, str, None)
+ Define the access mode for all mappings of the volume.
+
+
+ bandwidth_limit (optional, int, None)
+ Limit of volume network bandwidth.
+
+ Need to mention in multiple of 1024 Kbps.
+
+ To set no limit, 0 is to be passed.
+
+
+ iops_limit (optional, int, None)
+ Limit of volume IOPS.
+
+ Minimum IOPS limit is 11 and specify 0 for unlimited iops.
+
+
+
+ sdc_state (optional, str, None)
+ Mapping state of the SDC.
+
+
+ delete_snapshots (optional, bool, None)
+ If ``True``, the volume and all its dependent snapshots will be deleted.
+
+ If ``False``, only the volume will be deleted.
+
+ It can be specified only when the *state* is ``absent``.
+
+ It defaults to ``False``, if not specified.
+
+
+ state (True, str, None)
+ State of the volume.
+
+
+ hostname (True, str, None)
+ IP or FQDN of the PowerFlex host.
+
+
+ username (True, str, None)
+ The username of the PowerFlex host.
+
+
+ password (True, str, None)
+ The password of the PowerFlex host.
+
+
+ validate_certs (optional, bool, True)
+ Boolean variable to specify whether or not to validate SSL certificate.
+
+ ``true`` - Indicates that the SSL certificate should be verified.
+
+ ``false`` - Indicates that the SSL certificate should not be verified.
+
+
+ port (optional, int, 443)
+ Port number through which communication happens with PowerFlex host.
+
+
+ timeout (False, int, 120)
+ Time after which connection will get terminated.
+
+ It is to be mentioned in seconds.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - The *check_mode* is not supported.
+ - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Create a volume
+ dellemc.powerflex.volume:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ vol_name: "sample_volume"
+ storage_pool_name: "pool_1"
+ protection_domain_name: "pd_1"
+ vol_type: "THICK_PROVISIONED"
+ compression_type: "NORMAL"
+ use_rmcache: True
+ size: 16
+ state: "present"
+
+ - name: Map a SDC to volume
+ dellemc.powerflex.volume:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ vol_name: "sample_volume"
+ allow_multiple_mappings: True
+ sdc:
+ - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764"
+ access_mode: "READ_WRITE"
+ sdc_state: "mapped"
+ state: "present"
+
+ - name: Unmap a SDC to volume
+ dellemc.powerflex.volume:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ vol_name: "sample_volume"
+ sdc:
+ - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764"
+ sdc_state: "unmapped"
+ state: "present"
+
+ - name: Map multiple SDCs to a volume
+ dellemc.powerflex.volume:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ vol_name: "sample_volume"
+ protection_domain_name: "pd_1"
+ sdc:
+ - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764"
+ access_mode: "READ_WRITE"
+ bandwidth_limit: 2048
+ iops_limit: 20
+ - sdc_ip: "198.10.xxx.xxx"
+ access_mode: "READ_ONLY"
+ allow_multiple_mappings: True
+ sdc_state: "mapped"
+ state: "present"
+
+ - name: Get the details of the volume
+ dellemc.powerflex.volume:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ vol_id: "fe6c8b7100000005"
+ state: "present"
+
+ - name: Modify the details of the Volume
+ dellemc.powerflex.volume:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ vol_name: "sample_volume"
+ storage_pool_name: "pool_1"
+ new_vol_name: "new_sample_volume"
+ size: 64
+ state: "present"
+
+ - name: Delete the Volume
+ dellemc.powerflex.volume:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ vol_name: "sample_volume"
+ delete_snapshots: False
+ state: "absent"
+
+ - name: Delete the Volume and all its dependent snapshots
+ dellemc.powerflex.volume:
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ vol_name: "sample_volume"
+ delete_snapshots: True
+ state: "absent"
+
+
+
+Return Values
+-------------
+
+changed (always, bool, false)
+ Whether or not the resource has changed.
+
+
+volume_details (When volume exists, dict, {'accessModeLimit': 'ReadWrite', 'ancestorVolumeId': None, 'autoSnapshotGroupId': None, 'compressionMethod': 'Invalid', 'consistencyGroupId': None, 'creationTime': 1631618520, 'dataLayout': 'MediumGranularity', 'id': 'cdd883cf00000002', 'links': [{'href': '/api/instances/Volume::cdd883cf00000002', 'rel': 'self'}, {'href': '/api/instances/Volume::cdd883cf00000002/relationships /Statistics', 'rel': '/api/Volume/relationship/Statistics'}, {'href': '/api/instances/VTree::6e86255c00000001', 'rel': '/api/parent/relationship/vtreeId'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000', 'rel': '/api/parent/relationship/storagePoolId'}], 'lockedAutoSnapshot': False, 'lockedAutoSnapshotMarkedForRemoval': False, 'managedBy': 'ScaleIO', 'mappedSdcInfo': None, 'name': 'ansible-volume-1', 'notGenuineSnapshot': False, 'originalExpiryTime': 0, 'pairIds': None, 'protectionDomainId': '9300c1f900000000', 'protectionDomainName': 'domain1', 'replicationJournalVolume': False, 'replicationTimeStamp': 0, 'retentionLevels': [], 'secureSnapshotExpTime': 0, 'sizeInGB': 16, 'sizeInKb': 16777216, 'snapshotPolicyId': None, 'snapshotPolicyName': None, 'snapshotsList': [{'accessModeLimit': 'ReadOnly', 'ancestorVolumeId': 'cdd883cf00000002', 'autoSnapshotGroupId': None, 'compressionMethod': 'Invalid', 'consistencyGroupId': '22f1e80c00000001', 'creationTime': 1631619229, 'dataLayout': 'MediumGranularity', 'id': 'cdd883d000000004', 'links': [{'href': '/api/instances/Volume::cdd883d000000004', 'rel': 'self'}, {'href': '/api/instances/Volume::cdd883d000000004 /relationships/Statistics', 'rel': '/api/Volume/relationship/Statistics'}, {'href': '/api/instances/Volume::cdd883cf00000002', 'rel': '/api/parent/relationship/ancestorVolumeId'}, {'href': '/api/instances/VTree::6e86255c00000001', 'rel': '/api/parent/relationship/vtreeId'}, {'href': '/api/instances/StoragePool::e0d8f6c900000000', 'rel': '/api/parent/relationship/storagePoolId'}], 'lockedAutoSnapshot': False, 'lockedAutoSnapshotMarkedForRemoval': False, 'managedBy': 'ScaleIO', 'mappedSdcInfo': None, 'name': 'ansible_vol_snap_1', 'notGenuineSnapshot': False, 'originalExpiryTime': 0, 'pairIds': None, 'replicationJournalVolume': False, 'replicationTimeStamp': 0, 'retentionLevels': [], 'secureSnapshotExpTime': 0, 'sizeInKb': 16777216, 'snplIdOfAutoSnapshot': None, 'snplIdOfSourceVolume': None, 'storagePoolId': 'e0d8f6c900000000', 'timeStampIsAccurate': False, 'useRmcache': False, 'volumeReplicationState': 'UnmarkedForReplication', 'volumeType': 'Snapshot', 'vtreeId': '6e86255c00000001'}], 'statistics': {'childVolumeIds': [], 'descendantVolumeIds': [], 'initiatorSdcId': None, 'mappedSdcIds': ['c42425XXXXXX'], 'numOfChildVolumes': 0, 'numOfDescendantVolumes': 0, 'numOfMappedSdcs': 1, 'registrationKey': None, 'registrationKeys': [], 'replicationJournalVolume': False, 'replicationState': 'UnmarkedForReplication', 'reservationType': 'NotReserved', 'rplTotalJournalCap': 0, 'rplUsedJournalCap': 0, 'userDataReadBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcReadLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcTrimLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataSdcWriteLatency': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataTrimBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}, 'userDataWriteBwc': {'numOccured': 0, 'numSeconds': 0, 'totalWeightInKb': 0}}, 'snplIdOfAutoSnapshot': None, 'snplIdOfSourceVolume': None, 'storagePoolId': 'e0d8f6c900000000', 'storagePoolName': 'pool1', 'timeStampIsAccurate': False, 'useRmcache': False, 'volumeReplicationState': 'UnmarkedForReplication', 'volumeType': 'ThinProvisioned', 'vtreeId': '6e86255c00000001'})
+ Details of the volume.
+
+
+ id (, str, )
+ The ID of the volume.
+
+
+ mappedSdcInfo (, dict, )
+ The details of the mapped SDC.
+
+
+ sdcId (, str, )
+ ID of the SDC.
+
+
+ sdcName (, str, )
+ Name of the SDC.
+
+
+ sdcIp (, str, )
+ IP of the SDC.
+
+
+ accessMode (, str, )
+ Mapping access mode for the specified volume.
+
+
+ limitIops (, int, )
+ IOPS limit for the SDC.
+
+
+ limitBwInMbps (, int, )
+ Bandwidth limit for the SDC.
+
+
+
+ name (, str, )
+ Name of the volume.
+
+
+ sizeInKb (, int, )
+ Size of the volume in Kb.
+
+
+ sizeInGb (, int, )
+ Size of the volume in Gb.
+
+
+ storagePoolId (, str, )
+ ID of the storage pool in which volume resides.
+
+
+ storagePoolName (, str, )
+ Name of the storage pool in which volume resides.
+
+
+ protectionDomainId (, str, )
+ ID of the protection domain in which volume resides.
+
+
+ protectionDomainName (, str, )
+ Name of the protection domain in which volume resides.
+
+
+ snapshotPolicyId (, str, )
+ ID of the snapshot policy associated with volume.
+
+
+ snapshotPolicyName (, str, )
+ Name of the snapshot policy associated with volume.
+
+
+ snapshotsList (, str, )
+ List of snapshots associated with the volume.
+
+
+ statistics (, dict, )
+ Statistics details of the storage pool.
+
+
+ numOfChildVolumes (, int, )
+ Number of child volumes.
+
+
+ numOfMappedSdcs (, int, )
+ Number of mapped Sdcs of the volume.
+
+
+
+
+
+
+
+Status
+------
+
+
+
+
+
+Authors
+~~~~~~~
+
+- P Srinivas Rao (@srinivas-rao5) <ansible.team@dell.com>
+