diff options
Diffstat (limited to 'ansible_collections/dellemc/powerflex/docs')
19 files changed, 1099 insertions, 122 deletions
diff --git a/ansible_collections/dellemc/powerflex/docs/CONTRIBUTING.md b/ansible_collections/dellemc/powerflex/docs/CONTRIBUTING.md index 642f94d23..726c931d0 100644 --- a/ansible_collections/dellemc/powerflex/docs/CONTRIBUTING.md +++ b/ansible_collections/dellemc/powerflex/docs/CONTRIBUTING.md @@ -1,5 +1,5 @@ <!-- -Copyright (c) 2022 Dell Inc., or its subsidiaries. All Rights Reserved. +Copyright (c) 2024 Dell Inc., or its subsidiaries. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -10,7 +10,7 @@ You may obtain a copy of the License at # How to contribute -Become one of the contributors to this project! We thrive to build a welcoming and open community for anyone who wants to use the project or contribute to it. There are just a few small guidelines you need to follow. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/1.6.0/CODE_OF_CONDUCT.md). +Become one of the contributors to this project! We thrive to build a welcoming and open community for anyone who wants to use the project or contribute to it. There are just a few small guidelines you need to follow. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/2.2.0/CODE_OF_CONDUCT.md). ## Table of contents @@ -76,7 +76,7 @@ Triage helps ensure that issues resolve quickly by: If you don't have the knowledge or time to code, consider helping with _issue triage_. The Ansible modules for Dell PowerFlex community will thank you for saving them time by spending some of yours. -Read more about the ways you can [Triage issues](https://github.com/dell/ansible-powerflex/blob/1.6.0/ISSUE_TRIAGE.md). +Read more about the ways you can [Triage issues](https://github.com/dell/ansible-powerflex/blob/2.2.0/ISSUE_TRIAGE.md). ## Your first contribution @@ -89,7 +89,7 @@ When you're ready to contribute, it's time to create a pull request. ## Branching -* [Branching Strategy for Ansible modules for Dell PowerFlex](https://github.com/dell/ansible-powerflex/blob/1.6.0/BRANCHING.md) +* [Branching Strategy for Ansible modules for Dell PowerFlex](https://github.com/dell/ansible-powerflex/blob/2.2.0/BRANCHING.md) ## Signing your commits @@ -144,7 +144,7 @@ Make sure that the title for your pull request uses the same format as the subje ### Quality gates for pull requests -GitHub Actions are used to enforce quality gates when a pull request is created or when any commit is made to the pull request. These GitHub Actions enforce our minimum code quality requirement for any code that get checked into the repository. If any of the quality gates fail, it is expected that the contributor will look into the check log, understand the problem and resolve the issue. If help is needed, please feel free to reach out the maintainers of the project for [support](https://github.com/dell/ansible-powerflex/blob/1.6.0/SUPPORT.md). +GitHub Actions are used to enforce quality gates when a pull request is created or when any commit is made to the pull request. These GitHub Actions enforce our minimum code quality requirement for any code that get checked into the repository. If any of the quality gates fail, it is expected that the contributor will look into the check log, understand the problem and resolve the issue. If help is needed, please feel free to reach out the maintainers of the project for [support](https://github.com/dell/ansible-powerflex/blob/2.2.0/SUPPORT.md). #### Code sanitization diff --git a/ansible_collections/dellemc/powerflex/docs/INSTALLATION.md b/ansible_collections/dellemc/powerflex/docs/INSTALLATION.md index 1dff703ec..86861574b 100644 --- a/ansible_collections/dellemc/powerflex/docs/INSTALLATION.md +++ b/ansible_collections/dellemc/powerflex/docs/INSTALLATION.md @@ -1,5 +1,5 @@ <!-- -Copyright (c) 2022 Dell Inc., or its subsidiaries. All Rights Reserved. +Copyright (c) 2024 Dell Inc., or its subsidiaries. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -41,7 +41,7 @@ You may obtain a copy of the License at * Download the latest tar build from any of the available distribution channel [Ansible Galaxy](https://galaxy.ansible.com/dellemc/powerflex) /[Automation Hub](https://console.redhat.com/ansible/automation-hub/repo/published/dellemc/powerflex) and use this command to install the collection anywhere in your system: - ansible-galaxy collection install dellemc-powerflex-1.6.0.tar.gz -p <install_path> + ansible-galaxy collection install dellemc-powerflex-2.2.0.tar.gz -p <install_path> * Set the environment variable: @@ -68,7 +68,7 @@ You may obtain a copy of the License at ## Ansible modules execution -The Ansible server must be configured with Python library for PowerFlex to run the Ansible playbooks. The [Documents](https://github.com/dell/ansible-powerflex/blob/1.6.0/docs/) provide information on different Ansible modules along with their functions and syntax. The parameters table in the Product Guide provides information on various parameters which needs to be configured before running the modules. +The Ansible server must be configured with Python library for PowerFlex to run the Ansible playbooks. The [Documents](https://github.com/dell/ansible-powerflex/blob/2.2.0/docs/) provide information on different Ansible modules along with their functions and syntax. The parameters table in the Product Guide provides information on various parameters which needs to be configured before running the modules. ## SSL certificate validation diff --git a/ansible_collections/dellemc/powerflex/docs/ISSUE_TRIAGE.md b/ansible_collections/dellemc/powerflex/docs/ISSUE_TRIAGE.md index 18423aa1e..8871da8e3 100644 --- a/ansible_collections/dellemc/powerflex/docs/ISSUE_TRIAGE.md +++ b/ansible_collections/dellemc/powerflex/docs/ISSUE_TRIAGE.md @@ -1,5 +1,5 @@ <!-- -Copyright (c) 2022 Dell Inc., or its subsidiaries. All Rights Reserved. +Copyright (c) 2024 Dell Inc., or its subsidiaries. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -43,8 +43,8 @@ Should explain what happened, what was expected and how to reproduce it together - Ansible Version: [e.g. 2.14] - Python Version [e.g. 3.11] - - Ansible modules for Dell PowerFlex Version: [e.g. 1.6.0] - - PowerFlex SDK version: [e.g. PyPowerFlex 1.7.0] + - Ansible modules for Dell PowerFlex Version: [e.g. 2.2.0] + - PowerFlex SDK version: [e.g. PyPowerFlex 1.9.0] - Any other additional information... #### Feature requests diff --git a/ansible_collections/dellemc/powerflex/docs/MAINTAINER_GUIDE.md b/ansible_collections/dellemc/powerflex/docs/MAINTAINER_GUIDE.md index b92cebabe..e2d1d90e0 100644 --- a/ansible_collections/dellemc/powerflex/docs/MAINTAINER_GUIDE.md +++ b/ansible_collections/dellemc/powerflex/docs/MAINTAINER_GUIDE.md @@ -1,5 +1,5 @@ <!-- -Copyright (c) 2022 Dell Inc., or its subsidiaries. All Rights Reserved. +Copyright (c) 2024 Dell Inc., or its subsidiaries. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ If a candidate is approved, a Maintainer contacts the candidate to invite them t ## Maintainer policies * Lead by example -* Follow the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/1.6.0/CODE_OF_CONDUCT.md) and the guidelines in the [Contributing](https://github.com/dell/ansible-powerflex/blob/1.6.0/CONTRIBUTING.md) and [Committer](https://github.com/dell/ansible-powerflex/blob/1.6.0/COMMITTER_GUIDE.md) guides +* Follow the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/2.2.0/CODE_OF_CONDUCT.md) and the guidelines in the [Contributing](https://github.com/dell/ansible-powerflex/blob/2.2.0/CONTRIBUTING.md) and [Committer](https://github.com/dell/ansible-powerflex/blob/2.2.0/COMMITTER_GUIDE.md) guides * Promote a friendly and collaborative environment within our community * Be actively engaged in discussions, answering questions, updating defects, and reviewing pull requests * Criticize code, not people. Ideally, tell the contributor a better way to do what they need. diff --git a/ansible_collections/dellemc/powerflex/docs/Release Notes.md b/ansible_collections/dellemc/powerflex/docs/Release Notes.md index a45d82eb7..9ce24b6d0 100644 --- a/ansible_collections/dellemc/powerflex/docs/Release Notes.md +++ b/ansible_collections/dellemc/powerflex/docs/Release Notes.md @@ -1,8 +1,8 @@ **Ansible Modules for Dell Technologies PowerFlex** ========================================= -### Release notes 1.6.0 +### Release notes 2.2.0 -> © 2023 Dell Inc. or its subsidiaries. All rights reserved. Dell +> © 2024 Dell Inc. or its subsidiaries. All rights reserved. Dell > and other trademarks are trademarks of Dell Inc. or its > subsidiaries. Other trademarks may be trademarks of their respective > owners. @@ -26,9 +26,9 @@ The table in this section lists the revision history of this document. Table 1. Revision history -| Revision | Date | Description | -|----------|----------------|-------------------------------------------------------------| -| 01 | March 2023 | Current release of Ansible Modules for Dell PowerFlex 1.6.0 | +| Revision | Date | Description | +|----------|-----------------|-------------------------------------------------------------| +| 01 | February 2024 | Current release of Ansible Modules for Dell PowerFlex 2.2.0 | Product description ------------------- @@ -36,7 +36,7 @@ Product description The Ansible modules for Dell PowerFlex are used to automate and orchestrate the deployment, configuration, and management of Dell PowerFlex storage systems. The capabilities of Ansible modules are managing volumes, -storage pools, SDCs, snapshots, SDSs, replication consistency groups, replication pairs, devices, protection domain and MDM +storage pools, SDCs, snapshots, snapshot policy, SDSs, replication consistency groups, replication pairs, devices, protection domain, MDM and fault sets. cluster, and obtaining high-level information about a PowerFlex system information. The modules use playbooks to list, show, create, delete, and modify each of the entities. @@ -44,28 +44,30 @@ each of the entities. New features and enhancements ----------------------------- Along with the previous release deliverables, this release supports following features - -- Info module is enhanced to support the listing of replication pairs. -- Added new module for replication pairs. +- Fault set module is introduced to create, get details, rename and delete fault sets. +- The SDS module has been enhanced to facilitate SDS creation within a fault set. +- The Info module is enhanced to retrieve lists related to fault sets, service templates, deployments, and managed devices. Known issues ------------ -- Setting the RF cache and performance profile of the SDS during its creation fails intermittently on PowerFlex version 3.5 -- The creation of replication pair fails when copy_type is specified as OfflineCopy on PowerFlex version 4.0 +- Setting the RF cache and performance profile of the SDS during its creation fails intermittently on PowerFlex version 3.5. +- The creation of replication pair fails when copy_type is specified as OfflineCopy on PowerFlex version 4.0. +- Pagination in info module with offset and limit fetches more than expected records when listing service templates or deployments. +- Templates are fetched using the info module in spite of setting include_templates to false when listing deployments. Limitations ----------- -- The API is accepting a negative integer value for overall_limit in the network_limits for a specific protection domain. + Distribution ------------ The software package is available for download from the [Ansible Modules -for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/1.6.0) page. +for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/2.2.0) page. Documentation ------------- -The documentation is available on [Ansible Modules for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/1.6.0/docs) +The documentation is available on [Ansible Modules for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/2.2.0/docs) page. It includes the following: - README - Release Notes (this document) - - Product Guide diff --git a/ansible_collections/dellemc/powerflex/docs/SECURITY.md b/ansible_collections/dellemc/powerflex/docs/SECURITY.md index e34152322..77323e456 100644 --- a/ansible_collections/dellemc/powerflex/docs/SECURITY.md +++ b/ansible_collections/dellemc/powerflex/docs/SECURITY.md @@ -1,5 +1,5 @@ <!-- -Copyright (c) 2022 Dell Inc., or its subsidiaries. All Rights Reserved. +Copyright (c) 2024 Dell Inc., or its subsidiaries. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -12,7 +12,7 @@ You may obtain a copy of the License at The Ansible modules for Dell PowerFlex repository are inspected for security vulnerabilities via blackduck scans and static code analysis. -In addition to this, there are various security checks that get executed against a branch when a pull request is created/updated. Please refer to [pull request](https://github.com/dell/ansible-powerflex/blob/1.6.0/docs/CONTRIBUTING.md#Pull-requests) for more information. +In addition to this, there are various security checks that get executed against a branch when a pull request is created/updated. Please refer to [pull request](https://github.com/dell/ansible-powerflex/blob/2.2.0/docs/CONTRIBUTING.md#Pull-requests) for more information. ## Reporting a vulnerability 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" |