diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-18 05:52:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-18 05:52:22 +0000 |
commit | 38b7c80217c4e72b1d8988eb1e60bb6e77334114 (patch) | |
tree | 356e9fd3762877d07cde52d21e77070aeff7e789 /ansible_collections/dellemc/powerflex/docs/modules | |
parent | Adding upstream version 7.7.0+dfsg. (diff) | |
download | ansible-38b7c80217c4e72b1d8988eb1e60bb6e77334114.tar.xz ansible-38b7c80217c4e72b1d8988eb1e60bb6e77334114.zip |
Adding upstream version 9.4.0+dfsg.upstream/9.4.0+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/dellemc/powerflex/docs/modules')
13 files changed, 1068 insertions, 93 deletions
diff --git a/ansible_collections/dellemc/powerflex/docs/modules/device.rst b/ansible_collections/dellemc/powerflex/docs/modules/device.rst index 35ae246aa..4fcd82854 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/device.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/device.rst @@ -20,9 +20,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -134,6 +134,14 @@ Parameters State of the device. + force (optional, bool, False) + Using the Force flag to add a device. + + Use this flag, to overwrite existing data on the device. + + Use this flag with caution, because all data on the device will be destroyed. + + hostname (True, str, None) IP or FQDN of the PowerFlex host. @@ -201,6 +209,22 @@ Examples protection_domain_name: "domain1" external_acceleration_type: "ReadAndWrite" state: "present" + - name: Add a device with force flag + 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" + force: true + state: "present" - name: Get device details using device_id dellemc.powerflex.device: hostname: "{{hostname}}" @@ -232,23 +256,23 @@ Examples 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" + 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" + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + current_pathname: "/dev/sdb" + sds_name: "node1" + state: "absent" diff --git a/ansible_collections/dellemc/powerflex/docs/modules/fault_set.rst b/ansible_collections/dellemc/powerflex/docs/modules/fault_set.rst new file mode 100644 index 000000000..55b9972bc --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/modules/fault_set.rst @@ -0,0 +1,215 @@ +.. _fault_set_module: + + +fault_set -- Manage Fault Sets on Dell PowerFlex +================================================ + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- + +Managing fault sets on PowerFlex storage system includes creating, getting details, renaming and deleting a fault set. + + + +Requirements +------------ +The below requirements are needed on the host that executes this module. + +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. +- Python 3.9, 3.10 or 3.11. + + + +Parameters +---------- + + fault_set_name (optional, str, None) + Name of the Fault Set. + + Mutually exclusive with *fault_set_id*. + + + fault_set_id (optional, str, None) + ID of the Fault Set. + + Mutually exclusive with *fault_set_name*. + + + protection_domain_name (optional, str, None) + Name of protection domain. + + Mutually exclusive with *protection_domain_id*. + + + protection_domain_id (optional, str, None) + ID of the protection domain. + + Mutually exclusive with *protection_domain_name*. + + + fault_set_new_name (optional, str, None) + New name of the fault set. + + + state (optional, str, present) + State of the Fault Set. + + + 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. + - When *fault_set_name* is provided, *protection_domain_name* or *protection_domain_id* must be provided. + - 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 Fault Set on Protection Domain + dellemc.powerflex.fault_set: + hostname: "{{ hostname }}" + username: "{{ username }}" + password: "{{ password }}" + validate_certs: "{{ validate_certs }}" + fault_set_name: "{{ fault_set_name }}" + protection_domain_name: "{{ pd_name }}" + state: present + + - name: Rename Fault Set + dellemc.powerflex.fault_set: + hostname: "{{ hostname }}" + username: "{{ username }}" + password: "{{ password }}" + validate_certs: "{{ validate_certs }}" + fault_set_name: "{{ fault_set_name }}" + fault_set_new_name: "{{ fault_set_new_name }}" + state: present + + - name: Get details of a Fault Set + dellemc.powerflex.fault_set: + hostname: "{{ hostname }}" + username: "{{ username }}" + password: "{{ password }}" + validate_certs: "{{ validate_certs }}" + fault_set_id: "{{ fault_set_id }}" + state: present + + - name: Delete Fault Set + dellemc.powerflex.fault_set: + hostname: "{{ hostname }}" + username: "{{ username }}" + password: "{{ password }}" + validate_certs: "{{ validate_certs }}" + fault_set_id: "{{ fault_set_id }}" + state: absent + + + +Return Values +------------- + +changed (always, bool, false) + Whether or not the resource has changed. + + +fault_set_details (always, dict, {'protectionDomainId': 'da721a8300000000', 'protectionDomainName': 'sample-pd', 'name': 'fs_001', 'id': 'eb44b70500000000', 'links': []}) + Details of fault set. + + + protectionDomainId (, str, ) + Unique identifier of the protection domain. + + + protectionDomainName (, str, ) + Name of the protection domain. + + + name (, str, ) + Name of the fault set. + + + id (, str, ) + Unique identifier of the fault set. + + + SDS (, list, ) + List of SDS associated to the fault set. + + + links (, list, ) + Fault set links. + + + href (, str, ) + Fault Set instance URL. + + + rel (, str, ) + Relationship of fault set with different entities. + + + + + + + +Status +------ + + + + + +Authors +~~~~~~~ + +- Carlos Tronco (@ctronco) <ansible.team@dell.com> +- Trisha Datta (@trisha-dell) <ansible.team@dell.com> diff --git a/ansible_collections/dellemc/powerflex/docs/modules/info.rst b/ansible_collections/dellemc/powerflex/docs/modules/info.rst index 735fb04f4..ced8e0aaa 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/info.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/info.rst @@ -14,6 +14,8 @@ 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. +Gathering information about Dell PowerFlex Manager includes getting the list of managed devices, deployments and service templates. + Requirements @@ -21,8 +23,8 @@ 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. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.8.0. - Python 3.9, 3.10 or 3.11. @@ -51,6 +53,14 @@ Parameters Replication pairs - ``replication_pair``. + Fault Sets - ``fault_set``. + + Service templates - ``service_template``. + + Managed devices - ``managed_device``. + + Deployments - ``deployment``. + filters (optional, list, None) List of filters to support filtered output for storage entities. @@ -67,12 +77,60 @@ Parameters filter_operator (True, str, None) Operation to be performed on filter key. + Choice *'contains'* is supported for gather_subset keys *service_template*, *managed_device*, *deployment*. + filter_value (True, str, None) Value of the filter key. + limit (optional, int, 50) + Page limit. + + Supported for gather_subset keys *service_template*, *managed_device*, *deployment*. + + + offset (optional, int, 0) + Pagination offset. + + Supported for gather_subset keys *service_template*, *managed_device*, *deployment*. + + + sort (optional, str, None) + Sort the returned components based on specified field. + + Supported for gather_subset keys *service_template*, *managed_device*, *deployment*. + + The supported sort keys for the gather_subset can be referred from PowerFlex Manager API documentation in developer.dell.com. + + + include_devices (optional, bool, True) + Include devices in response. + + Applicable when gather_subset is *deployment*. + + + include_template (optional, bool, True) + Include service templates in response. + + Applicable when gather_subset is *deployment*. + + + full (optional, bool, False) + Specify if response is full or brief. + + Applicable when gather_subset is *deployment*, *service_template*. + + For *deployment* specify to use full templates including resources in response. + + + include_attachments (optional, bool, True) + Include attachments. + + Applicable when gather_subset is *service_template*. + + hostname (True, str, None) IP or FQDN of the PowerFlex host. @@ -111,6 +169,8 @@ Notes .. note:: - The *check_mode* is supported. + - The supported filter keys for the gather_subset can be referred from PowerFlex Manager API documentation in developer.dell.com. + - The *filter*, *sort*, *limit* and *offset* options will be ignored when more than one *gather_subset* is specified along with *service_template*, *managed_device* or *deployment*. - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. @@ -138,6 +198,7 @@ Examples - device - rcg - replication_pair + - fault_set - name: Get a subset list of PowerFlex volumes dellemc.powerflex.info: @@ -152,6 +213,35 @@ Examples filter_operator: "equal" filter_value: "ansible_test" + - name: Get deployment and resource provisioning info + dellemc.powerflex.info: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + gather_subset: + - managed_device + - deployment + - service_template + + - name: Get deployment with filter, sort, pagination + dellemc.powerflex.info: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + gather_subset: + - deployment + filters: + - filter_key: "name" + filter_operator: "contains" + filter_value: "partial" + sort: name + limit: 10 + offset: 10 + include_devices: true + include_template: true + Return Values @@ -638,6 +728,119 @@ Replication_pairs (Always, list, {'copyType': 'OnlineCopy', 'id': '23aa0bc900000 +Fault_Sets (always, list, [{'protectionDomainId': 'da721a8300000000', 'protectionDomainName': 'fault_set_1', 'name': 'at1zbs1t6cp2sds1d1fs1', 'SDS': [], 'id': 'eb44b70500000000', 'links': [{'rel': 'self', 'href': '/api/instances/FaultSet::eb44b70500000000'}, {'rel': '/api/FaultSet/relationship/Statistics', 'href': '/api/instances/FaultSet::eb44b70500000000/relationships/Statistics'}, {'rel': '/api/FaultSet/relationship/Sds', 'href': '/api/instances/FaultSet::eb44b70500000000/relationships/Sds'}, {'rel': '/api/parent/relationship/protectionDomainId', 'href': '/api/instances/ProtectionDomain::da721a8300000000'}]}, {'protectionDomainId': 'da721a8300000000', 'protectionDomainName': 'fault_set_2', 'name': 'at1zbs1t6cp2sds1d1fs3', 'SDS': [], 'id': 'eb44b70700000002', 'links': [{'rel': 'self', 'href': '/api/instances/FaultSet::eb44b70700000002'}, {'rel': '/api/FaultSet/relationship/Statistics', 'href': '/api/instances/FaultSet::eb44b70700000002/relationships/Statistics'}, {'rel': '/api/FaultSet/relationship/Sds', 'href': '/api/instances/FaultSet::eb44b70700000002/relationships/Sds'}, {'rel': '/api/parent/relationship/protectionDomainId', 'href': '/api/instances/ProtectionDomain::da721a8300000000'}]}]) + Details of fault sets. + + + protectionDomainId (, str, ) + The ID of the protection domain. + + + name (, str, ) + device name. + + + id (, str, ) + device id. + + + +ManagedDevices (when I(gather_subset) is I(managed_device), list, [{'refId': 'softwareOnlyServer-10.1.1.1', 'refType': None, 'ipAddress': '10.1.1.1', 'currentIpAddress': '10.1.1.1', 'serviceTag': 'VMware-42 15 a5 f9 65 e6 63 0e-36 79 59 73 7b 3a 68 cd-SW', 'model': 'VMware Virtual Platform', 'deviceType': 'SoftwareOnlyServer', 'discoverDeviceType': 'SOFTWAREONLYSERVER_CENTOS', 'displayName': 'vpi1011-c1n1', 'managedState': 'UNMANAGED', 'state': 'READY', 'inUse': False, 'serviceReferences': [], 'statusMessage': None, 'firmwareName': 'Default Catalog - PowerFlex 4.5.0.0', 'customFirmware': False, 'needsAttention': False, 'manufacturer': 'VMware, Inc.', 'systemId': None, 'health': 'RED', 'healthMessage': 'Inventory run failed.', 'operatingSystem': 'N/A', 'numberOfCPUs': 0, 'cpuType': None, 'nics': 0, 'memoryInGB': 0, 'infraTemplateDate': None, 'infraTemplateId': None, 'serverTemplateDate': None, 'serverTemplateId': None, 'inventoryDate': None, 'complianceCheckDate': '2024-02-05T18:31:31.213+00:00', 'discoveredDate': '2024-02-05T18:31:30.992+00:00', 'deviceGroupList': {'paging': None, 'deviceGroup': [{'link': None, 'groupSeqId': -1, 'groupName': 'Global', 'groupDescription': None, 'createdDate': None, 'createdBy': 'admin', 'updatedDate': None, 'updatedBy': None, 'managedDeviceList': None, 'groupUserList': None}]}, 'detailLink': {'title': 'softwareOnlyServer-10.1.1.1', 'href': '/AsmManager/ManagedDevice/softwareOnlyServer-10.1.1.1', 'rel': 'describedby', 'type': None}, 'credId': 'bc97cefb-5eb4-4c20-8e39-d1a2b809c9f5', 'compliance': 'NONCOMPLIANT', 'failuresCount': 0, 'chassisId': None, 'parsedFacts': None, 'config': None, 'hostname': 'vpi1011-c1n1', 'osIpAddress': None, 'osAdminCredential': None, 'osImageType': None, 'lastJobs': None, 'puppetCertName': 'red_hat-10.1.1.1', 'svmAdminCredential': None, 'svmName': None, 'svmIpAddress': None, 'svmImageType': None, 'flexosMaintMode': 0, 'esxiMaintMode': 0, 'vmList': []}]) + Details of all devices from inventory. + + + deviceType (, str, ) + Device Type. + + + serviceTag (, str, ) + Service Tag. + + + serverTemplateId (, str, ) + The ID of the server template. + + + state (, str, ) + The state of the device. + + + managedState (, str, ) + The managed state of the device. + + + compliance (, str, ) + The compliance state of the device. + + + systemId (, str, ) + The system ID. + + + +Deployments (when I(gather_subset) is I(deployment), list, [{'id': '8aaa80658cd602e0018cda8b257f78ce', 'deploymentName': 'Test-Update - K', 'deploymentDescription': 'Test-Update - K', 'deploymentValid': None, 'retry': False, 'teardown': False, 'teardownAfterCancel': False, 'removeService': False, 'createdDate': '2024-01-05T16:53:21.407+00:00', 'createdBy': 'admin', 'updatedDate': '2024-02-11T17:00:05.657+00:00', 'updatedBy': 'system', 'deploymentScheduledDate': None, 'deploymentStartedDate': '2024-01-05T16:53:22.886+00:00', 'deploymentFinishedDate': None, 'serviceTemplate': {'id': '8aaa80658cd602e0018cda8b257f78ce', 'templateName': 'block-only (8aaa80658cd602e0018cda8b257f78ce)', 'templateDescription': 'Storage - Software Only deployment', 'templateType': 'VxRack FLEX', 'templateVersion': '4.5.0.0', 'templateValid': {'valid': True, 'messages': []}, 'originalTemplateId': 'c44cb500-020f-4562-9456-42ec1eb5f9b2', 'templateLocked': False, 'draft': False, 'inConfiguration': False, 'createdDate': '2024-01-05T16:53:22.083+00:00', 'createdBy': None, 'updatedDate': '2024-02-09T06:00:09.602+00:00', 'lastDeployedDate': None, 'updatedBy': None, 'components': [{'id': '6def7edd-bae2-4420-93bf-9ceb051bbb65', 'componentID': 'component-scaleio-gateway-1', 'identifier': None, 'componentValid': {'valid': True, 'messages': []}, 'puppetCertName': 'scaleio-block-legacy-gateway', 'osPuppetCertName': None, 'name': 'block-legacy-gateway', 'type': 'SCALEIO', 'subType': 'STORAGEONLY', 'teardown': False, 'helpText': None, 'managementIpAddress': None, 'configFile': None, 'serialNumber': None, 'asmGUID': 'scaleio-block-legacy-gateway', 'relatedComponents': {'625b0e17-9b91-4bc0-864c-d0111d42d8d0': 'Node (Software Only)', '961a59eb-80c3-4a3a-84b7-2101e9831527': 'Node (Software Only)-2', 'bca710a5-7cdf-481e-b729-0b53e02873ee': 'Node (Software Only)-3'}, 'resources': [], 'refId': None, 'cloned': False, 'clonedFromId': None, 'manageFirmware': False, 'brownfield': False, 'instances': 1, 'clonedFromAsmGuid': None, 'ip': None}], 'category': 'block-only', 'allUsersAllowed': True, 'assignedUsers': [], 'manageFirmware': True, 'useDefaultCatalog': False, 'firmwareRepository': None, 'licenseRepository': None, 'configuration': None, 'serverCount': 3, 'storageCount': 1, 'clusterCount': 1, 'serviceCount': 0, 'switchCount': 0, 'vmCount': 0, 'sdnasCount': 0, 'brownfieldTemplateType': 'NONE', 'networks': [{'id': '8aaa80648cd5fb9b018cda46e4e50000', 'name': 'mgmt', 'description': '', 'type': 'SCALEIO_MANAGEMENT', 'vlanId': 850, 'static': True, 'staticNetworkConfiguration': {'gateway': '10.1.1.1', 'subnet': '1.1.1.0', 'primaryDns': '10.1.1.1', 'secondaryDns': '10.1.1.1', 'dnsSuffix': None, 'ipRange': [{'id': '8aaa80648cd5fb9b018cda46e5080001', 'startingIp': '10.1.1.1', 'endingIp': '10.1.1.1', 'role': None}], 'ipAddress': None, 'staticRoute': None}, 'destinationIpAddress': '10.1.1.1'}], 'blockServiceOperationsMap': {'scaleio-block-legacy-gateway': {'blockServiceOperationsMap': {}}}}, 'scheduleDate': None, 'status': 'complete', 'compliant': True, 'deploymentDevice': [{'refId': 'scaleio-block-legacy-gateway', 'refType': None, 'logDump': None, 'status': None, 'statusEndTime': None, 'statusStartTime': None, 'deviceHealth': 'GREEN', 'healthMessage': 'OK', 'compliantState': 'COMPLIANT', 'brownfieldStatus': 'NOT_APPLICABLE', 'deviceType': 'scaleio', 'deviceGroupName': None, 'ipAddress': 'block-legacy-gateway', 'currentIpAddress': '10.1.1.1', 'serviceTag': 'block-legacy-gateway', 'componentId': None, 'statusMessage': None, 'model': 'PowerFlex Gateway', 'cloudLink': False, 'dasCache': False, 'deviceState': 'READY', 'puppetCertName': 'scaleio-block-legacy-gateway', 'brownfield': False}], 'vms': None, 'updateServerFirmware': True, 'useDefaultCatalog': False, 'firmwareRepository': {'id': '8aaa80658cd602e0018cd996a1c91bdc', 'name': 'Intelligent Catalog 45.373.00', 'sourceLocation': None, 'sourceType': None, 'diskLocation': None, 'filename': None, 'md5Hash': None, 'username': None, 'password': None, 'downloadStatus': None, 'createdDate': None, 'createdBy': None, 'updatedDate': None, 'updatedBy': None, 'defaultCatalog': False, 'embedded': False, 'state': None, 'softwareComponents': [], 'softwareBundles': [], 'deployments': [], 'bundleCount': 0, 'componentCount': 0, 'userBundleCount': 0, 'minimal': False, 'downloadProgress': 0, 'extractProgress': 0, 'fileSizeInGigabytes': None, 'signedKeySourceLocation': None, 'signature': None, 'custom': False, 'needsAttention': False, 'jobId': None, 'rcmapproved': False}, 'firmwareRepositoryId': '8aaa80658cd602e0018cd996a1c91bdc', 'licenseRepository': None, 'licenseRepositoryId': None, 'individualTeardown': False, 'deploymentHealthStatusType': 'green', 'assignedUsers': [], 'allUsersAllowed': True, 'owner': 'admin', 'noOp': False, 'firmwareInit': False, 'disruptiveFirmware': False, 'preconfigureSVM': False, 'preconfigureSVMAndUpdate': False, 'servicesDeployed': 'NONE', 'precalculatedDeviceHealth': None, 'lifecycleModeReasons': [], 'jobDetails': None, 'numberOfDeployments': 0, 'operationType': 'NONE', 'operationStatus': None, 'operationData': None, 'deploymentValidationResponse': None, 'currentStepCount': None, 'totalNumOfSteps': None, 'currentStepMessage': None, 'customImage': 'os_sles', 'originalDeploymentId': None, 'currentBatchCount': None, 'totalBatchCount': None, 'templateValid': True, 'lifecycleMode': False, 'vds': False, 'scaleUp': False, 'brownfield': False, 'configurationChange': False}]) + Details of all deployments. + + + id (, str, ) + Deployment ID. + + + deploymentName (, str, ) + Deployment name. + + + status (, str, ) + The status of deployment. + + + firmwareRepository (, dict, ) + The firmware repository. + + + signature (, str, ) + The signature details. + + + downloadStatus (, str, ) + The download status. + + + rcmapproved (, bool, ) + If RCM approved. + + + + +ServiceTemplates (when I(gather_subset) is I(service_template), list, [{'id': '2434144f-7795-4245-a04b-6fcb771697d7', 'templateName': 'Storage- 100Gb', 'templateDescription': 'Storage Only 4 Node deployment with 100Gb networking', 'templateType': 'VxRack FLEX', 'templateVersion': '4.5-213', 'templateValid': {'valid': True, 'messages': []}, 'originalTemplateId': 'ff80808177f880fc0177f883bf1e0027', 'templateLocked': True, 'draft': False, 'inConfiguration': False, 'createdDate': '2024-01-04T19:47:23.534+00:00', 'createdBy': 'system', 'updatedDate': None, 'lastDeployedDate': None, 'updatedBy': None, 'components': [{'id': '43dec024-85a9-4901-9e8e-fa0d3c417f7b', 'componentID': 'component-scaleio-gateway-1', 'identifier': None, 'componentValid': {'valid': True, 'messages': []}, 'puppetCertName': None, 'osPuppetCertName': None, 'name': 'PowerFlex Cluster', 'type': 'SCALEIO', 'subType': 'STORAGEONLY', 'teardown': False, 'helpText': None, 'managementIpAddress': None, 'configFile': None, 'serialNumber': None, 'asmGUID': None, 'relatedComponents': {'c5c46733-012c-4dca-af9b-af46d73d045a': 'Storage Only Node'}, 'resources': [], 'refId': None, 'cloned': False, 'clonedFromId': None, 'manageFirmware': False, 'brownfield': False, 'instances': 1, 'clonedFromAsmGuid': None, 'ip': None}], 'category': 'Sample Templates', 'allUsersAllowed': False, 'assignedUsers': [], 'manageFirmware': True, 'useDefaultCatalog': True, 'firmwareRepository': None, 'licenseRepository': None, 'configuration': None, 'serverCount': 4, 'storageCount': 0, 'clusterCount': 1, 'serviceCount': 0, 'switchCount': 0, 'vmCount': 0, 'sdnasCount': 0, 'brownfieldTemplateType': 'NONE', 'networks': [{'id': 'ff80808177f8823b0177f8bb82d80005', 'name': 'flex-data2', 'description': '', 'type': 'SCALEIO_DATA', 'vlanId': 105, 'static': True, 'staticNetworkConfiguration': {'gateway': None, 'subnet': '1.1.1.0', 'primaryDns': None, 'secondaryDns': None, 'dnsSuffix': None, 'ipRange': None, 'ipAddress': None, 'staticRoute': None}, 'destinationIpAddress': '1.1.1.0'}], 'blockServiceOperationsMap': {}}]) + Details of all service templates. + + + templateName (, str, ) + Template name. + + + templateDescription (, str, ) + Template description. + + + templateType (, str, ) + Template type. + + + templateVersion (, str, ) + Template version. + + + category (, str, ) + The template category. + + + serverCount (, int, ) + Server count. + + + @@ -652,4 +855,6 @@ Authors ~~~~~~~ - Arindam Datta (@dattaarindam) <ansible.team@dell.com> +- Trisha Datta (@trisha-dell) <ansible.team@dell.com> +- Jennifer John (@Jennifer-John) <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 index 5131860e1..babb39b6c 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/mdm_cluster.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/mdm_cluster.rst @@ -22,9 +22,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -177,7 +177,7 @@ 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. + - 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. @@ -267,7 +267,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" mdm_name: "mdm_2" - is_primary: True + is_primary: true state: "present" - name: Modify performance profile @@ -300,7 +300,7 @@ Examples port: "{{port}}" mdm_name: "mdm_1" virtual_ip_interface: - - "ens224" + - "ens224" state: "present" - name: Clear virtual IP interface of the MDM @@ -311,7 +311,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" mdm_name: "mdm_1" - clear_interfaces: True + clear_interfaces: true state: "present" diff --git a/ansible_collections/dellemc/powerflex/docs/modules/protection_domain.rst b/ansible_collections/dellemc/powerflex/docs/modules/protection_domain.rst index ca47cb518..84c640ef4 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/protection_domain.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/protection_domain.rst @@ -20,9 +20,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. diff --git a/ansible_collections/dellemc/powerflex/docs/modules/replication_consistency_group.rst b/ansible_collections/dellemc/powerflex/docs/modules/replication_consistency_group.rst index ceaca0d39..76d959026 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/replication_consistency_group.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/replication_consistency_group.rst @@ -12,7 +12,7 @@ replication_consistency_group -- Manage replication consistency groups on Dell P 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. +Managing replication consistency groups on PowerFlex storage system includes getting details, creating, modifying, creating snapshots, pause, resume, freeze, unfreeze, activate, failover, reverse, restore, sync, switchover, inactivate and deleting a replication consistency group. @@ -20,9 +20,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -73,15 +73,41 @@ Parameters pause (optional, bool, None) Pause or resume the RCG. + This parameter is deprecated. Use rcg_state instead. + + + rcg_state (optional, str, None) + Specify an action for RCG. + + Failover the RCG. + + Reverse the RCG. + + Restore the RCG. + + Switchover the RCG. + + Pause or resume the RCG. + + Freeze or unfreeze the RCG. + + Synchronize the RCG. + + + force (optional, bool, None) + Force switchover the RCG. + freeze (optional, bool, None) Freeze or unfreeze the RCG. + This parameter is deprecated. Use rcg_state instead. + pause_mode (optional, str, None) Pause mode. - It is required if pause is set as True. + It is required if pause is set as true. target_volume_access_mode (optional, str, None) @@ -187,7 +213,7 @@ Notes - 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. + - 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. @@ -217,7 +243,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" rcg_id: "{{rcg_id}}" - create_snapshot: True + create_snapshot: true state: "present" - name: Create a replication consistency group @@ -250,7 +276,7 @@ Examples rpo: 60 target_volume_access_mode: "ReadOnly" activity_mode: "Inactive" - is_consistent: True + is_consistent: true - name: Rename replication consistency group dellemc.powerflex.replication_consistency_group: @@ -270,7 +296,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" rcg_name: "rcg_test" - pause: True + rcg_state: "pause" pause_mode: "StopDataTransfer" - name: Resume replication consistency group @@ -281,7 +307,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" rcg_name: "rcg_test" - pause: False + rcg_state: "resume" - name: Freeze replication consistency group dellemc.powerflex.replication_consistency_group: @@ -291,7 +317,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" rcg_name: "rcg_test" - freeze: True + rcg_state: "freeze" - name: UnFreeze replication consistency group dellemc.powerflex.replication_consistency_group: @@ -301,7 +327,57 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" rcg_name: "rcg_test" - freeze: False + rcg_state: "unfreeze" + + - name: Failover replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + rcg_state: "failover" + + - name: Reverse replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + rcg_state: "reverse" + + - name: Restore replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + rcg_state: "restore" + + - name: Switchover replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + rcg_state: "switchover" + + - name: Synchronize replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + rcg_state: "sync" - name: Delete replication consistency group dellemc.powerflex.replication_consistency_group: diff --git a/ansible_collections/dellemc/powerflex/docs/modules/replication_pair.rst b/ansible_collections/dellemc/powerflex/docs/modules/replication_pair.rst index c83241cd3..254a2eb1d 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/replication_pair.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/replication_pair.rst @@ -20,9 +20,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -174,8 +174,8 @@ Notes .. note:: - The *check_mode* is supported. + - In 4.0 the creation of replication pair fails when *copy_type* is specified as ``OfflineCopy``. - 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). @@ -186,7 +186,6 @@ Examples .. code-block:: yaml+jinja - - name: Get replication pair details dellemc.powerflex.replication_pair: hostname: "{{hostname}}" @@ -224,11 +223,11 @@ Examples copy_type: "OnlineCopy" name: "pair1" remote_peer: - hostname: "{{hostname}}" - username: "{{username}}" - password: "{{password}}" - validate_certs: "{{validate_certs}}" - port: "{{port}}" + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" - name: Pause replication pair dellemc.powerflex.replication_pair: @@ -238,7 +237,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" pair_name: "pair1" - pause: True + pause: true - name: Resume replication pair dellemc.powerflex.replication_pair: @@ -248,7 +247,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" pair_name: "pair1" - pause: False + pause: false - name: Delete replication pair dellemc.powerflex.replication_pair: diff --git a/ansible_collections/dellemc/powerflex/docs/modules/sdc.rst b/ansible_collections/dellemc/powerflex/docs/modules/sdc.rst index 585267891..ad375ebc7 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/sdc.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/sdc.rst @@ -20,9 +20,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -58,6 +58,12 @@ Parameters New name of the SDC. Used to rename the SDC. + performance_profile (optional, str, None) + Define the performance profile as *Compact* or *HighPerformance*. + + The high performance profile configures a predefined set of parameters for very high performance use cases. + + state (True, str, None) State of the SDC. @@ -130,6 +136,25 @@ Examples sdc_new_name: "centos_sdc_renamed" state: "present" + - name: Modify performance profile of SDC using SDC name + dellemc.powerflex.sdc: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + sdc_name: "centos_sdc" + performance_profile: "Compact" + state: "present" + + - name: Remove SDC using SDC name + dellemc.powerflex.sdc: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + sdc_name: "centos_sdc" + state: "absent" + Return Values diff --git a/ansible_collections/dellemc/powerflex/docs/modules/sds.rst b/ansible_collections/dellemc/powerflex/docs/modules/sds.rst index 81a1b3908..f5c29516f 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/sds.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/sds.rst @@ -20,9 +20,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -109,6 +109,18 @@ Parameters Default value by API is ``HighPerformance``. + fault_set_name (optional, str, None) + Name of the fault set. + + Mutually exclusive with *fault_set_id*. + + + fault_set_id (optional, str, None) + Unique identifier of the fault set. + + Mutually exclusive with *fault_set_name*. + + state (True, str, None) State of the SDS. @@ -156,7 +168,7 @@ Notes - 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 *check_mode* is supported. - The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. @@ -192,12 +204,14 @@ Examples port: "{{port}}" sds_name: "node1" protection_domain_name: "domain1" + fault_set_name: "faultset1" sds_ip_list: - ip: "198.10.xxx.xxx" role: "sdcOnly" sds_ip_state: "present-in-sds" rmcache_enabled: true rmcache_size: 128 + fault_set_name: "{{fault_set_name}}" performance_profile: "HighPerformance" state: "present" @@ -332,6 +346,9 @@ sds_details (When SDS exists, dict, {'authenticationError': 'None', 'certificate Fault set ID. + faultSetName (, str, ) + Name of the Fault set. + fglMetadataCacheSize (, int, ) FGL metadata cache size. @@ -513,4 +530,5 @@ Authors ~~~~~~~ - Rajshree Khare (@khareRajshree) <ansible.team@dell.com> +- Trisha Datta (@trisha-dell) <ansible.team@dell.com> diff --git a/ansible_collections/dellemc/powerflex/docs/modules/snapshot.rst b/ansible_collections/dellemc/powerflex/docs/modules/snapshot.rst index dafed946d..052453ad2 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/snapshot.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/snapshot.rst @@ -20,9 +20,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -206,7 +206,7 @@ Examples validate_certs: "{{validate_certs}}" snapshot_name: "ansible_snapshot" vol_name: "ansible_volume" - read_only: False + read_only: false desired_retention: 2 state: "present" @@ -227,9 +227,9 @@ Examples validate_certs: "{{validate_certs}}" snapshot_id: "fe6cb28200000007" sdc: - - sdc_ip: "198.10.xxx.xxx" - - sdc_id: "663ac0d200000001" - allow_multiple_mappings: True + - sdc_ip: "198.10.xxx.xxx" + - sdc_id: "663ac0d200000001" + allow_multiple_mappings: true sdc_state: "mapped" state: "present" @@ -241,13 +241,13 @@ Examples 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_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" diff --git a/ansible_collections/dellemc/powerflex/docs/modules/snapshot_policy.rst b/ansible_collections/dellemc/powerflex/docs/modules/snapshot_policy.rst new file mode 100644 index 000000000..deab7f050 --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/modules/snapshot_policy.rst @@ -0,0 +1,414 @@ +.. _snapshot_policy_module: + + +snapshot_policy -- Manage snapshot policies on Dell PowerFlex +============================================================= + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- + +Managing snapshot policies on PowerFlex storage system includes creating, getting details, modifying attributes, adding a source volume, removing a source volume and deleting a snapshot policy. + + + +Requirements +------------ +The below requirements are needed on the host that executes this module. + +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.8.0. +- Python 3.9, 3.10 or 3.11. + + + +Parameters +---------- + + snapshot_policy_name (optional, str, None) + The name of the snapshot policy. + + It is unique across the PowerFlex array. + + Mutually exclusive with *snapshot_policy_id*. + + + snapshot_policy_id (optional, str, None) + The unique identifier of the snapshot policy. + + Except create operation, all other operations can be performed using *snapshot_policy_id*. + + Mutually exclusive with *snapshot_policy_name*. + + + auto_snapshot_creation_cadence (optional, dict, None) + The auto snapshot creation cadence of the snapshot policy. + + + time (optional, int, None) + The time between creation of two snapshots. + + + unit (optional, str, Minute) + The unit of the auto snapshot creation cadence. + + + + num_of_retained_snapshots_per_level (optional, list, None) + Number of retained snapshots per level. + + + new_name (optional, str, None) + New name of the snapshot policy. + + + access_mode (optional, str, None) + Access mode of the snapshot policy. + + + secure_snapshots (optional, bool, None) + Whether to secure snapshots or not. + + Used only in the create operation. + + + source_volume (optional, list, None) + The source volume details to be added or removed. + + + id (optional, str, None) + The unique identifier of the source volume to be added or removed. + + Mutually exclusive with *name*. + + + name (optional, str, None) + The name of the source volume to be added or removed. + + Mutually exclusive with *id*. + + + auto_snap_removal_action (optional, str, None) + Ways to handle the snapshots created by the policy (auto snapshots). + + Must be provided when *state* is set to ``'absent'``. + + + detach_locked_auto_snapshots (optional, bool, None) + Whether to detach the locked auto snapshots during removal of source volume. + + + state (optional, str, present) + The state of the source volume. + + When ``present``, source volume will be added to the snapshot policy. + + When ``absent``, source volume will be removed from the snapshot policy. + + + + pause (optional, bool, None) + Whether to pause or resume the snapshot policy. + + + state (optional, str, present) + State of the snapshot policy. + + + 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: Create a snapshot policy + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "snapshot_policy_name_1" + access_mode: "READ_WRITE" + secure_snapshots: false + auto_snapshot_creation_cadence: + time: 1 + unit: "Hour" + num_of_retained_snapshots_per_level: + - 20 + state: "present" + + - name: Get snapshot policy details using name + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "snapshot_policy_name_1" + + - name: Get snapshot policy details using id + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_id: "snapshot_policy_id_1" + + - name: Modify a snapshot policy + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "snapshot_policy_name_1" + auto_snapshot_creation_cadence: + time: 2 + unit: "Hour" + num_of_retained_snapshots_per_level: + - 40 + + - name: Rename a snapshot policy + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "snapshot_policy_name_1" + new_name: "snapshot_policy_name_1_new" + + - name: Add source volume + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "snapshot_policy_name_1" + source_volume: + - name: "source_volume_name_1" + - id: "source_volume_id_2" + state: "present" + + - name: Remove source volume + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "{{snapshot_policy_name}}" + source_volume: + - name: "source_volume_name_1" + auto_snap_removal_action: 'Remove' + state: "absent" + - id: "source_volume_id_2" + auto_snap_removal_action: 'Remove' + detach_locked_auto_snapshots: true + state: "absent" + + - name: Pause a snapshot policy + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "{{snapshot_policy_name}}" + pause: true + + - name: Resume a snapshot policy + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "{{snapshot_policy_name}}" + pause: false + + - name: Delete a snapshot policy + dellemc.powerflex.snapshot_policy: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + snapshot_policy_name: "snapshot_policy_name" + state: "absent" + + + +Return Values +------------- + +changed (always, bool, false) + Whether or not the resource has changed. + + +snapshot_policy_details (When snapshot policy exists, dict, {'autoSnapshotCreationCadenceInMin': 120, 'id': '15ae842800000004', 'lastAutoSnapshotCreationFailureReason': 'NR', 'lastAutoSnapshotFailureInFirstLevel': False, 'links': [{'href': '/api/instances/SnapshotPolicy::15ae842800000004', 'rel': 'self'}, {'href': '/api/instances/SnapshotPolicy::15ae842800000004/relationships/Statistics', 'rel': '/api/SnapshotPolicy/relationship/Statistics'}, {'href': '/api/instances/SnapshotPolicy::15ae842800000004/relationships/SourceVolume', 'rel': '/api/SnapshotPolicy/relationship/SourceVolume'}, {'href': '/api/instances/SnapshotPolicy::15ae842800000004/relationships/AutoSnapshotVolume', 'rel': '/api/SnapshotPolicy/relationship/AutoSnapshotVolume'}, {'href': '/api/instances/System::0e7a082862fedf0f', 'rel': '/api/parent/relationship/systemId'}], 'maxVTreeAutoSnapshots': 40, 'name': 'Sample_snapshot_policy_1', 'nextAutoSnapshotCreationTime': 1683709201, 'numOfAutoSnapshots': 0, 'numOfCreationFailures': 0, 'numOfExpiredButLockedSnapshots': 0, 'numOfLockedSnapshots': 0, 'numOfRetainedSnapshotsPerLevel': [40], 'numOfSourceVolumes': 0, 'secureSnapshots': False, 'snapshotAccessMode': 'ReadWrite', 'snapshotPolicyState': 'Active', 'statistics': {'autoSnapshotVolIds': [], 'expiredButLockedSnapshotsIds': [], 'numOfAutoSnapshots': 0, 'numOfExpiredButLockedSnapshots': 0, 'numOfSrcVols': 0, 'srcVolIds': []}, 'systemId': '0e7a082862fedf0f', 'timeOfLastAutoSnapshot': 0, 'timeOfLastAutoSnapshotCreationFailure': 0}) + Details of the snapshot policy. + + + autoSnapshotCreationCadenceInMin (, int, ) + The snapshot rule of the snapshot policy. + + + id (, str, ) + The ID of the snapshot policy. + + + lastAutoSnapshotCreationFailureReason (, str, ) + The reason for the failure of last auto snapshot creation . + + + name (, str, ) + Name of the snapshot policy. + + + lastAutoSnapshotFailureInFirstLevel (, bool, ) + Whether the last auto snapshot in first level failed. + + + maxVTreeAutoSnapshots (, int, ) + Maximum number of VTree auto snapshots. + + + nextAutoSnapshotCreationTime (, int, ) + The time of creation of the next auto snapshot. + + + numOfAutoSnapshots (, int, ) + Number of auto snapshots. + + + numOfCreationFailures (, int, ) + Number of creation failures. + + + numOfExpiredButLockedSnapshots (, int, ) + Number of expired but locked snapshots. + + + numOfLockedSnapshots (, int, ) + Number of locked snapshots. + + + numOfRetainedSnapshotsPerLevel (, list, ) + Number of snapshots retained per level + + + numOfSourceVolumes (, int, ) + Number of source volumes. + + + secureSnapshots (, bool, ) + Whether the snapshots are secured. + + + snapshotAccessMode (, str, ) + Access mode of the snapshots. + + + snapshotPolicyState (, str, ) + State of the snapshot policy. + + + systemId (, str, ) + Unique identifier of the PowerFlex system. + + + timeOfLastAutoSnapshot (, str, ) + Time of the last auto snapshot creation. + + + timeOfLastAutoSnapshotCreationFailure (, str, ) + Time of the failure of the last auto snapshot creation. + + + statistics (, dict, ) + Statistics details of the snapshot policy. + + + autoSnapshotVolIds (, list, ) + Volume Ids of all the auto snapshots. + + + expiredButLockedSnapshotsIds (, list, ) + Ids of expired but locked snapshots. + + + numOfAutoSnapshots (, int, ) + Number of auto snapshots. + + + numOfExpiredButLockedSnapshots (, int, ) + Number of expired but locked snapshots. + + + numOfSrcVols (, int, ) + Number of source volumes. + + + srcVolIds (, list, ) + Ids of the source volumes. + + + + + + + +Status +------ + + + + + +Authors +~~~~~~~ + +- Trisha Datta (@trisha-dell) <ansible.team@dell.com> + diff --git a/ansible_collections/dellemc/powerflex/docs/modules/storagepool.rst b/ansible_collections/dellemc/powerflex/docs/modules/storagepool.rst index 9037ef73c..76d94966d 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/storagepool.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/storagepool.rst @@ -20,9 +20,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -134,7 +134,6 @@ Examples .. code-block:: yaml+jinja - - name: Get the details of storage pool by name dellemc.powerflex.storagepool: hostname: "{{hostname}}" @@ -173,8 +172,8 @@ Examples validate_certs: "{{validate_certs}}" storage_pool_name: "ansible_test_pool" protection_domain_id: "1c957da800000000" - use_rmcache: True - use_rfcache: True + use_rmcache: true + use_rfcache: true state: "present" - name: Rename storage pool by id diff --git a/ansible_collections/dellemc/powerflex/docs/modules/volume.rst b/ansible_collections/dellemc/powerflex/docs/modules/volume.rst index 10cf8de84..f3345a6d1 100644 --- a/ansible_collections/dellemc/powerflex/docs/modules/volume.rst +++ b/ansible_collections/dellemc/powerflex/docs/modules/volume.rst @@ -22,9 +22,9 @@ 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. +- A Dell PowerFlex storage system version 3.6 or later. +- Ansible-core 2.14 or later. +- PyPowerFlex 1.9.0. - Python 3.9, 3.10 or 3.11. @@ -133,7 +133,7 @@ Parameters 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. + 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) @@ -188,13 +188,13 @@ Parameters delete_snapshots (optional, bool, None) - If ``True``, the volume and all its dependent snapshots will be deleted. + If ``true``, the volume and all its dependent snapshots will be deleted. - If ``False``, only the volume 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. + It defaults to ``false``, if not specified. state (True, str, None) @@ -262,7 +262,7 @@ Examples protection_domain_name: "pd_1" vol_type: "THICK_PROVISIONED" compression_type: "NORMAL" - use_rmcache: True + use_rmcache: true size: 16 state: "present" @@ -274,7 +274,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" vol_name: "sample_volume" - allow_multiple_mappings: True + allow_multiple_mappings: true sdc: - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764" access_mode: "READ_WRITE" @@ -310,7 +310,7 @@ Examples iops_limit: 20 - sdc_ip: "198.10.xxx.xxx" access_mode: "READ_ONLY" - allow_multiple_mappings: True + allow_multiple_mappings: true sdc_state: "mapped" state: "present" @@ -345,7 +345,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" vol_name: "sample_volume" - delete_snapshots: False + delete_snapshots: false state: "absent" - name: Delete the Volume and all its dependent snapshots @@ -356,7 +356,7 @@ Examples validate_certs: "{{validate_certs}}" port: "{{port}}" vol_name: "sample_volume" - delete_snapshots: True + delete_snapshots: true state: "absent" |