From 66cec45960ce1d9c794e9399de15c138acb18aed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 18:03:42 +0200 Subject: Adding upstream version 7.3.0+dfsg. Signed-off-by: Daniel Baumann --- .../dellemc/powerflex/docs/ADOPTERS.md | 11 + .../dellemc/powerflex/docs/BRANCHING.md | 32 + .../dellemc/powerflex/docs/CODE_OF_CONDUCT.md | 137 + .../dellemc/powerflex/docs/COMMITTER_GUIDE.md | 49 + .../dellemc/powerflex/docs/CONTRIBUTING.md | 173 + .../dellemc/powerflex/docs/INSTALLATION.md | 106 + .../dellemc/powerflex/docs/ISSUE_TRIAGE.md | 306 ++ .../dellemc/powerflex/docs/MAINTAINERS.md | 19 + .../dellemc/powerflex/docs/MAINTAINER_GUIDE.md | 38 + .../dellemc/powerflex/docs/Product Guide.md | 5437 ++++++++++++++++++++ .../dellemc/powerflex/docs/Release Notes.md | 73 + .../dellemc/powerflex/docs/SECURITY.md | 22 + .../dellemc/powerflex/docs/SUPPORT.md | 12 + 13 files changed, 6415 insertions(+) create mode 100644 ansible_collections/dellemc/powerflex/docs/ADOPTERS.md create mode 100644 ansible_collections/dellemc/powerflex/docs/BRANCHING.md create mode 100644 ansible_collections/dellemc/powerflex/docs/CODE_OF_CONDUCT.md create mode 100644 ansible_collections/dellemc/powerflex/docs/COMMITTER_GUIDE.md create mode 100644 ansible_collections/dellemc/powerflex/docs/CONTRIBUTING.md create mode 100644 ansible_collections/dellemc/powerflex/docs/INSTALLATION.md create mode 100644 ansible_collections/dellemc/powerflex/docs/ISSUE_TRIAGE.md create mode 100644 ansible_collections/dellemc/powerflex/docs/MAINTAINERS.md create mode 100644 ansible_collections/dellemc/powerflex/docs/MAINTAINER_GUIDE.md create mode 100644 ansible_collections/dellemc/powerflex/docs/Product Guide.md create mode 100644 ansible_collections/dellemc/powerflex/docs/Release Notes.md create mode 100644 ansible_collections/dellemc/powerflex/docs/SECURITY.md create mode 100644 ansible_collections/dellemc/powerflex/docs/SUPPORT.md (limited to 'ansible_collections/dellemc/powerflex/docs') diff --git a/ansible_collections/dellemc/powerflex/docs/ADOPTERS.md b/ansible_collections/dellemc/powerflex/docs/ADOPTERS.md new file mode 100644 index 00000000..826b5cd7 --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/ADOPTERS.md @@ -0,0 +1,11 @@ + + +# List of adopters diff --git a/ansible_collections/dellemc/powerflex/docs/BRANCHING.md b/ansible_collections/dellemc/powerflex/docs/BRANCHING.md new file mode 100644 index 00000000..e244df70 --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/BRANCHING.md @@ -0,0 +1,32 @@ + + +# Branching strategy + +Ansible modules for Dell PowerFlex follows a scaled trunk branching strategy where short-lived branches are created off of the main branch. When coding is complete, the branch is merged back into main after being approved in a pull request code review. + +## Branch naming convention + +| Branch Type | Example | Comment | +|--------------|-----------------------------------|-------------------------------------------| +| main | main | | +| Release | release-1.0 | hotfix: release-1.1 patch: release-1.0.1 | +| Feature | feature-9-vol-support | "9" referring to GitHub issue ID | +| Bug Fix | bugfix-110-fix-duplicates-issue | "110" referring to GitHub issue ID | + + +## Steps for working on a release branch + +1. Fork the repository. +2. Create a branch off of the main branch. The branch name should follow [branch naming convention](#branch-naming-convention). +3. Make your changes and commit them to your branch. +4. If other code changes have merged into the upstream main branch, perform a rebase of those changes into your branch. +5. Open a [pull request](https://github.com/dell/ansible-powerflex/pulls) between your branch and the upstream main branch. +6. Once your pull request has merged, your branch can be deleted. diff --git a/ansible_collections/dellemc/powerflex/docs/CODE_OF_CONDUCT.md b/ansible_collections/dellemc/powerflex/docs/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..cfc4993c --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/CODE_OF_CONDUCT.md @@ -0,0 +1,137 @@ + + +# Code of conduct - contributor covenant + +## Our pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at ansible.team@dell.com +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary ban + +**Community impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent ban + +**Community impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. \ No newline at end of file diff --git a/ansible_collections/dellemc/powerflex/docs/COMMITTER_GUIDE.md b/ansible_collections/dellemc/powerflex/docs/COMMITTER_GUIDE.md new file mode 100644 index 00000000..8af0752e --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/COMMITTER_GUIDE.md @@ -0,0 +1,49 @@ + + +# Committer guidelines + +These are the guidelines for people with commit privileges on the GitHub repository. Committers act as members of the Core Team and not necessarily employees of Dell. + +These guidelines apply to everyone and as Committers you have been given access to commit changes because you exhibit good judgment and have demonstrated your commitment to the vision of the project. We trust that you will use these privileges wisely and not abuse it. + +If these privileges are abused in any way and the quality of the project is compromised, our trust will be diminished and you may be asked to not commit or lose these privileges all together. + +## General rules + +### Don't + +* Break the build. +* Commit directly. +* Compromise backward compatibility. +* Disrespect your Community Team members. Help them grow. +* Think it is someone elses job to test your code. Write tests for all the code you produce. +* Forget to keep thing simple. +* Create technical debt. Fix-in-place and make it the highest priority above everything else. + +### Do + +* Keep it simple. +* Good work, your best every time. +* Keep the design of your software clean and maintainable. +* Squash your commits, avoid merges. +* Be active. Committers that are not active may have their permissions suspended. +* Write tests for all your deliverables. +* Automate everything. +* Maintain a high code coverage. +* Keep an open communication with other Committers. +* Ask questions. +* Document your contributions and remember to keep it simple. + +## People + +| Name | GitHub ID | Nickname | +|-------|-------------|------------| +| | | | diff --git a/ansible_collections/dellemc/powerflex/docs/CONTRIBUTING.md b/ansible_collections/dellemc/powerflex/docs/CONTRIBUTING.md new file mode 100644 index 00000000..b01639f3 --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/CONTRIBUTING.md @@ -0,0 +1,173 @@ + + +# 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.5.0/CODE_OF_CONDUCT.md). + +## Table of contents + +* [Become a contributor](#Become-a-contributor) +* [Submitting issues](#Submitting-issues) +* [Triage issues](#Triage-issues) +* [Your first contribution](#Your-first-contribution) +* [Branching](#Branching) +* [Signing your commits](#Signing-your-commits) +* [Pull requests](#Pull-requests) +* [Code reviews](#Code-reviews) +* [TODOs in the code](#TODOs-in-the-code) + +## Become a contributor + +You can contribute to this project in several ways. Here are some examples: + +* Contribute to the Ansible modules for Dell PowerFlex documentation and codebase. +* Report and triage bugs. +* Feature requests. +* Write technical documentation and blog posts, for users and contributors. +* Help others by answering questions about this project. + +## Submitting issues + +All issues related to Ansible modules for Dell PowerFlex, regardless of the service/repository the issue belongs to (see table above), should be submitted [here](https://github.com/dell/ansible-powerflex/issues). Issues will be triaged and labels will be used to indicate the type of issue. This section outlines the types of issues that can be submitted. + +### Report bugs + +We aim to track and document everything related to Ansible modules for Dell PowerFlex via the Issues page. The code and documentation are released with no warranties or SLAs and are intended to be supported through a community driven process. + +Before submitting a new issue, make sure someone hasn't already reported the problem. Look through the [existing issues](https://github.com/dell/ansible-powerflex/issues) for similar issues. + +Report a bug by submitting a [bug report](https://github.com/dell/ansible-powerflex/issues/new?labels=type%2Fbug%2C+needs-triage&template=bug_report.md&title=%5BBUG%5D%3A). Make sure that you provide as much information as possible on how to reproduce the bug. + +When opening a Bug please include this information to help with debugging: + +1. Version of relevant software: this software, Ansible, Python, SDK, etc. +2. Details of the issue explaining the problem: what, when, where +3. The expected outcome that was not met (if any) +4. Supporting troubleshooting information. __Note: Do not provide private company information that could compromise your company's security.__ + +An Issue __must__ be created before submitting any pull request. Any pull request that is created should be linked to an Issue. + +### Feature request + +If you have an idea of how to improve this project, submit a [feature request](https://github.com/dell/ansible-powerflex/issues/new?labels=type%2Ffeature-request%2C+needs-triage&template=feature_request.md&title=%5BFEATURE%5D%3A). + +### Answering questions + +If you have a question and you can't find the answer in the documentation or issues, the next step is to submit a [question.](https://github.com/dell/ansible-powerflex/issues/new?labels=type%2Fquestion&template=ask-a-question.md&title=%5BQUESTION%5D%3A) + +We'd love your help answering questions being asked by other Ansible modules for Dell PowerFlex users. + +## Triage issues + +Triage helps ensure that issues resolve quickly by: + +* Ensuring the issue's intent and purpose is conveyed precisely. This is necessary because it can be difficult for an issue to explain how an end user experiences a problem and what actions they took. +* Giving a contributor the information they need before they commit to resolving an issue. +* Lowering the issue count by preventing duplicate issues. +* Streamlining the development process by preventing duplicate discussions. + +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.5.0/ISSUE_TRIAGE.md). + +## Your first contribution + +Unsure where to begin contributing? Start by browsing issues labeled `beginner friendly` or `help wanted`. + +* [Beginner-friendly](https://github.com/dell/ansible-powerflex/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22) issues are generally straightforward to complete. +* [Help wanted](https://github.com/dell/ansible-powerflex/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) issues are problems we would like the community to help us with regardless of complexity. + +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.5.0/BRANCHING.md) + +## Signing your commits + +We require that developers sign off their commits to certify that they have permission to contribute the code in a pull request. This way of certifying is commonly known as the [Developer Certificate of Origin (DCO)](https://developercertificate.org/). We encourage all contributors to read the DCO text before signing a commit and making contributions. + +GitHub will prevent a pull request from being merged if there are any unsigned commits. + +### Signing a commit + +GPG (GNU Privacy Guard) will be used to sign commits. Follow the instructions [here](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/signing-commits) to create a GPG key and configure your GitHub account to use that key. + +Make sure you have your user name and e-mail set. This will be required for your signed commit to be properly verified. Check this references: + +* Setting up your github user name [reference](https://help.github.com/articles/setting-your-username-in-git/) +* Setting up your e-mail address [reference](https://help.github.com/articles/setting-your-commit-email-address-in-git/) + +Once Git and your GitHub account have been properly configured, you can add the -S flag to the git commits: + +```console +$ git commit -S -m your commit message +# Creates a signed commit +``` + +### Commit message format + +Ansible modules for Dell PowerFlex uses the guidelines for commit messages outlined in [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/) + +## Pull requests + +If this is your first time contributing to an open-source project on GitHub, make sure you read about [Creating a pull request](https://help.github.com/en/articles/creating-a-pull-request). + +A pull request must always link to at least one GitHub issue. If that is not the case, create a GitHub issue and link it. + +To increase the chance of having your pull request accepted, make sure your pull request follows these guidelines: + +* Title and description matches the implementation. +* Commits within the pull request follow the formatting guidelines. +* The pull request closes one related issue. +* The pull request contains necessary tests that verify the intended behavior. +* If your pull request has conflicts, rebase your branch onto the main branch. + +If the pull request fixes a bug: + +* The pull request description must include `Fixes #`. +* To avoid regressions, the pull request should include tests that replicate the fixed bug. + +The team _squashes_ all commits into one when we accept a pull request. The title of the pull request becomes the subject line of the squashed commit message. We still encourage contributors to write informative commit messages, as they becomes a part of the Git commit body. + +We use the pull request title when we generate change logs for releases. As such, we strive to make the title as informative as possible. + +Make sure that the title for your pull request uses the same format as the subject line in the commit message. + +### 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.5.0/SUPPORT.md). + +#### Code sanitization + +[GitHub action](https://github.com/dell/ansible-powerflex/actions/workflows/ansible-test.yml) that analyzes source code to flag ansible sanity errors and runs Unit tests. + +## Code reviews + +All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more information on using pull requests. + +A pull request must satisfy following for it to be merged: + +* A pull request will require at least 2 maintainer approvals. +* Maintainers must perform a review to ensure the changes adhere to guidelines laid out in this document. +* If any commits are made after the PR has been approved, the PR approval will automatically be removed and the above process must happen again. + +## Code style + +Ensure the added code has the required documenation, examples and unit tests. + +### Sanity + +Run ansible-test sanity --docker default on your code to ensure sanity. Ensure the code does not have any Andersson script violations and not break any existing unit test workflows. + +### TODOs in the code + +We don't like TODOs in the code or documentation. It is really best if you sort out all issues you can see with the changes before we check the changes in. diff --git a/ansible_collections/dellemc/powerflex/docs/INSTALLATION.md b/ansible_collections/dellemc/powerflex/docs/INSTALLATION.md new file mode 100644 index 00000000..7cf4da17 --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/INSTALLATION.md @@ -0,0 +1,106 @@ + + +# Installation and execution of Ansible modules for Dell PowerFlex + +## Installation of SDK +* Install the python SDK named [PyPowerFlex](https://pypi.org/project/PyPowerFlex/). It can be installed using pip, based on appropriate python version. Execute this command: + + pip install PyPowerFlex +* Alternatively, Clone the repo "https://github.com/dell/python-powerflex" + using command: + + git clone https://github.com/dell/python-powerflex.git + * Go to the root directory of setup. + * Execute this command: + + pip install . + +## Building collections + * Use this command to build the collection from source code: + + ansible-galaxy collection build + + For more details on how to build a tar ball, please refer to: [Building the collection](https://docs.ansible.com/ansible/latest/dev_guide/developing_collections_distributing.html#building-your-collection-tarball) + +## Installing collections + +#### Online installation of collections + * Use this command to install the latest collection hosted in [galaxy portal](https://galaxy.ansible.com/dellemc/powerflex): + + ansible-galaxy collection install dellemc.powerflex -p + +#### Offline installation of collections + + * 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.5.0.tar.gz -p + + * Set the environment variable: + + export ANSIBLE_COLLECTIONS_PATHS=$ANSIBLE_COLLECTIONS_PATHS: + +## Using collections + + * In order to use any Ansible module, ensure that the importing of proper FQCN (Fully Qualified Collection Name) must be embedded in the playbook. + This example can be referred to: + + collections: + - dellemc.powerflex + + * In order to use installed collection in a specific task use a proper FQCN (Fully Qualified Collection Name). Refer to this example: + + tasks: + - name: Get Volume details + dellemc.powerflex.volume + + * For generating Ansible documentation for a specific module, embed the FQCN before the module name. Refer to this example: + + ansible-doc dellemc.powerflex.volume + + +## 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.5.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 + +* Copy the CA certificate to the "/etc/pki/ca-trust/source/anchors" path of the host by any external means. +* Set the "REQUESTS_CA_BUNDLE" environment variable to the path of the SSL certificate using the command: + + export REQUESTS_CA_BUNDLE=/etc/pki/ca-trust/source/anchors/<> +* Import the SSL certificate to host using the command: + + update-ca-trust extract +* If "TLS CA certificate bundle error" occurs, then follow these steps: + + cd /etc/pki/tls/certs/ + openssl x509 -in ca-bundle.crt -text -noout + +## Results +Each module returns the updated state and details of the entity, For example, if you are using the Volume module, all calls will return the updated details of the volume. Sample result is shown in each module's documentation. + +## Ansible execution environment +Ansible can also be installed in a container environment. Ansible Builder provides the ability to create reproducible, self-contained environments as container images that can be run as Ansible execution environments. +* Install the ansible builder package using: + + pip3 install ansible-builder +* Ensure the execution-environment.yml is at the root of collection and create the execution environment using: + + ansible-builder build --tag --container-runtime docker +* After the image is built, run the container using: + + docker run -it /bin/bash +* Verify collection installation using command: + + ansible-galaxy collection list +* The playbook can be run on the container using: + + docker run --rm -v $(pwd):/runner ansible-playbook info_test.yml diff --git a/ansible_collections/dellemc/powerflex/docs/ISSUE_TRIAGE.md b/ansible_collections/dellemc/powerflex/docs/ISSUE_TRIAGE.md new file mode 100644 index 00000000..f764df38 --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/ISSUE_TRIAGE.md @@ -0,0 +1,306 @@ + + +# Triage issues + +The main goal of issue triage is to categorize all incoming issues and make sure each issue has all basic information needed for anyone else to understand and be able to start working on it. + +> **Note:** This information is for project Maintainers, Owners, and Admins. If you are a Contributor, then you will not be able to perform most of the tasks in this topic. + +The core maintainers of this project are responsible for categorizing all incoming issues and delegating any critical or important issue to other maintainers. Triage provides an important way to contribute to an open source project. + +Triage helps ensure issues resolve quickly by: + +- Ensuring the issue's intent and purpose is conveyed precisely. This is necessary because it can be difficult for an issue to explain how an end user experiences a problem and what actions they took. +- Giving a contributor the information they need before they commit to resolving an issue. +- Lowering the issue count by preventing duplicate issues. +- Streamlining the development process by preventing duplicate discussions. + +If you don't have the knowledge or time to code, consider helping with triage. The community will thank you for saving them time by spending some of yours. + +## 1. Find issues that need triage + +The easiest way to find issues that haven't been triaged is to search for issues with the `needs-triage` label. + +## 2. Ensure the issue contains basic information + +Make sure that the issue's author provided the standard issue information. This project utilizes GitHub issue templates to guide contributors to provide standard information that must be included for each type of template or type of issue. + +### Standard issue information that must be included + +This section describes the various issue templates and the expected content. + +#### Bug reports + +Should explain what happened, what was expected and how to reproduce it together with any additional information that may help giving a complete picture of what happened such as screenshots, output and any environment related information that's applicable and/or maybe related to the reported problem: + + - Ansible Version: [e.g. 2.14] + - Python Version [e.g. 3.11] + - Ansible modules for Dell PowerFlex Version: [e.g. 1.5.0] + - PowerFlex SDK version: [e.g. PyPowerFlex 1.6.0] + - Any other additional information... + +#### Feature requests + +Should explain what feature that the author wants to be added and why that is needed. + +#### Ask a question requests + +In general, if the issue description and title is perceived as a question no more information is needed. + +### Good practices + +To make it easier for everyone to understand and find issues they're searching for it's suggested as a general rule of thumbs to: + +- Make sure that issue titles are named to explain the subject of the issue, has a correct spelling and doesn't include irrelevant information and/or sensitive information. +- Make sure that issue descriptions doesn't include irrelevant information. +- Make sure that issues do not contain sensitive information. +- Make sure that issues have all relevant fields filled in. +- Do your best effort to change title and description or request suggested changes by adding a comment. + +> **Note:** Above rules are applicable to both new and existing issues. + +### Dealing with missing information + +Depending on the issue, you might not feel all this information is needed. Use your best judgement. If you cannot triage an issue using what its author provided, explain kindly to the author that they must provide the above information to clarify the problem. Label issue with `triage/needs-information`. + +If the author provides the standard information but you are still unable to triage the issue, request additional information. Do this kindly and politely because you are asking for more of the author's time. Label issue with `triage/needs-information`. + +If the author does not respond to the requested information within the timespan of a week, close the issue with a kind note stating that the author can request for the issue to be reopened when the necessary information is provided. + +If you receive a notification with additional information provided but you are not anymore on issue triage and you feel you do not have time to handle it, you should delegate it to the current person on issue triage. + +## 3. Categorizing an issue + +### Duplicate issues + +Make sure it's not a duplicate by searching existing issues using related terms from the issue title and description. If you think you know there is an existing issue, but can't find it, please reach out to one of the maintainers and ask for help. If you identify that the issue is a duplicate of an existing issue: + +1. Add a comment `duplicate of #` +2. Add the `triage/duplicate` label + +### Bug reports + +If it's not perfectly clear that it's an actual bug, quickly try to reproduce it. + +**It's a bug/it can be reproduced:** + +1. Add a comment describing detailed steps for how to reproduce it, if applicable. +2. If you know that maintainers wont be able to put any resources into it for some time then label the issue with `help wanted` and optionally `beginner friendly` together with pointers on which code to update to fix the bug. This should signal to the community that we would appreciate any help we can get to resolve this. +3. Move on to [prioritizing the issue](#4-prioritization-of-issues). + +**It can't be reproduced:** + +1. Either [ask for more information](#2-ensure-the-issue-contains-basic-information) needed to investigate it more thoroughly. Provide details in a comment. +2. Either [delegate further investigations](#investigation-of-issues) to someone else. Provide details in a comment. + +**It works as intended/by design:** + +1. Kindly and politely add a comment explaining briefly why we think it works as intended and close the issue. +2. Label the issue `triage/works-as-intended`. +3. Remove the `needs-triage` label. + +**It does not work as intended/by design:** + +### Feature requests + +1. If the feature request does not align with the product vision, add a comment indicating so, remove the `needs-triage` label and close the issue +2. Otherwise, move on to [prioritizing the issue](#4-prioritization-of-issues). Assign the appropriate priority label to the issue, add the appropriate comments to the issue, and remove the `needs-triage` label. + +## 4. Prioritization of issues + +In general bugs and feature request issues should be labeled with a priority. + +Adding priority levels can be difficult. Ensure you have the knowledge, context, and the experience before prioritizing any issue. + +If you have any uncertainty as to which priority level to assign, please ask the maintainers for help. + +| Label | Description | +| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| `priority/critical` | Highest priority. Must be actively worked on as someone's top priority immediately. | +| `priority/high` | Must be worked on soon, ideally in time for the next release. | +| `priority/low` | Lowest priority. Possibly useful, but not yet enough interest in it. | + +### Critical priority + +1. If an issue has been categorized and any of this criteria apply, the issue should be labeled as critical and must be actively worked on as someone's top priority immediately. + + - Results in any data loss + - Critical security or performance issues + - Problem that makes a feature unusable + - Multiple users experience a severe problem affecting their business, users etc. + +2. Label the issue `priority/critical`. +3. Escalate the problem to the maintainers. +4. Assign or ask a maintainer for help assigning someone to make this issue their top priority immediately. +5. Add the issue to the next upcoming release milestone. + +### High priority + +1. Label the issue `priority/high`. +2. Add the issue to the next upcoming release milestone. +3. Prioritize it or assign someone to work on it now or very soon. +4. Consider requesting [help from the community](#5-requesting-help-from-the-community). + +### Low priority + +1. If the issue is deemed possibly useful but a low priority label the issue `priority/low`. +2. The amount of interest in the issue will determine if the priority elevated. +3. Consider requesting [help from the community](#5-requesting-help-from-the-community). + +## 5. Requesting help from the community + +Depending on the issue and/or priority, it's always a good idea to consider signalling to the community that help from community is appreciated and needed in case an issue is not prioritized to be worked on by maintainers. Use your best judgement. In general, requesting help from the community means that a contribution has a good chance of getting accepted and merged. + +In many cases the issue author or community as a whole is more suitable to contribute changes since they're experts in their domain. It's also quite common that someone has tried to get something to work using the documentation without success and made an effort to get it to work and/or reached out to the community to get the missing information. + +1. Kindly and politely add a comment to alert update subscribers. + - Explain the issue and need for resolution. Be sure and detail that the issue has not been prioritized and that the issue has not been scheduled for work by the maintainers. + - If possible or applicable, add pointers and references to the code/files that need to be revised. Provide any idea as to the solution. This will help the maintainers get started on resolving the issue. +2. Label the issue with `help wanted`. +3. If applicable, label the issue with `beginner friendly` to denote that the issue is suitable for a beginner to work on. + +## Investigation of issues + +When an issue has all basic information provided, but the reported problem cannot be reproduced at a first glance, the issue is labeled `triage/needs-information`. Depending on the perceived severity and/or number of [upvotes](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments), the investigation will either be delegated to another maintainer for further investigation or put on hold until someone else (maintainer or contributor) picks it up and eventually starts investigating it. + +Even if you don't have the time or knowledge to investigate an issue we highly recommend that you [upvote](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments) the issue if you happen to have the same problem. If you have further details that may help investigating the issue please provide as much information as possible. + +## External pull requests + +Part of issue triage should also be triaging of external PRs. Main goal should be to make sure PRs from external contributors have an owner/reviewer and are not forgotten. + +1. Check new external PRs which do not have a reviewer. +1. Check if there is a link to an existing issue. +1. If not and you know which issue it is solving, add the link yourself, otherwise ask the author to link the issue or create one. +1. Assign a reviewer based on who was handling the linked issue or what code or feature does the PR touches (look at who was the last to make changes there if all else fails). + +## GitHub issue management workflow + +This section describes the triage workflow for new GitGHub issues that get created. + +### GitHub Issue: Bug + +This workflow starts off with a GitHub issue of type bug being created. + +1. Collaborator or maintainer creates a GitHub bug using the appropriate GitHub issue template +2. By default a bug will be created with the `type/bug` and `needs-triage` labels + +The following flow chart outlines the triage process for bugs. + + +``` + +--------------------------+ + | New bug issue opened/more| + | information added | + +-------------|------------+ + | + | + +----------------------------------+ NO +--------------|-------------+ + | label: triage/needs-information --------- All required information | + | | | contained in issue? | + +-----------------------------|----+ +--------------|-------------+ + | | YES + | | + +--------------------------+ | +---------------------+ YES +---------------------------------------+ + |label: | | | Dupicate Issue? ------- Comment `Duplicate of #` + |triage/needs-investigation| | NO | | | Remove needs-triage label | + +------|-------------------+ | +----------|----------+ | label: triage/duplicate | + | | | NO +-----------------|---------------------+ + YES | | | | + | +---------------|----+ NO +------------|------------+ | + | |Needs investigation?|---------- Can it be reproduced? | | + |------- | +------------|------------+ | + +--------------------+ | YES | + | +----------|----------+ + +-------------------------+ +------------|------------+ | Close Issue | + | Add release-found label |------------------ Works as intended? | | | + | label: release-found/* | NO | | +----------|----------+ + +------------|------------+ +------------|------------+ | + | | | + | | YES | + +-----------------------------+ +----------------|----------------+ | + | Add area label | | Add comment | | + | label: area/* | | Remove needs-triage label ------------------| + +------------|----------------+ | label: triage/works-as-intended | + | +---------------------------------+ + | + +------------|-------------+ +----------+ + | Add priority label | | Done ---------------------------------------- + | label: priority/* | +----|-----+ | + +------------|-------------+ |NO | + | | +------------------|------------------+ + +------------|-------------+ +----|----------------+ YES | Add details to issue | + | ------------ Signal Community? ---------- label: help wanted | + |Remove needs-triage label | | | | label: beginner friendly (optional)| + +--------------------------+ +---------------------+ +-------------------------------------+ + +``` + +If the author does not respond to a request for more information within the timespan of a week, close the issue with a kind note stating that the author can request for the issue to be reopened when the necessary information is provided. + +### GitHub issue: feature request + +This workflow starts off with a GitHub issue of type feature request being created. + +1. Collaborator or maintainer creates a GitHub feature request using the appropriate GitHub issue template +2. By default a feature request will be created with the `type/feature-request` and `needs-triage` labels + +This flow chart outlines the triage process for feature requests. + + +``` + +---------------------------------+ + |New feature request issue opened/| + |more information added | + +----------------|----------------+ + | + | + +---------------------------------+ NO +-------------|------------+ + | label: triage/needs-information ---------- All required information | + | | | contained in issue? | + +---------------------------------+ +-------------|------------+ + | + | + +---------------------------------------+ | + |Comment `Duplicate of #` | YES +----------|----------+ + |Remove needs-triage label ------- Duplicate issue? | + |label: triage/duplicate | | | + +-----|---------------------------------+ +-----------|---------+ + | |NO + | +-------------------------+ NO +-----------------------------+ + | |Add comment |-------- Does feature request align | + | |Remove needs-triage label| | with product vision? | + | +------|------------------+ +--------------|--------------+ + | | | YES + | | +-----------------|----------------+ + | | |Change feature-request to feature | + | | |Remove label: type/feature-request| + | | |Add label: type/feature | + | | +-----------------|----------------+ + | | | + | | +--------------|--------------+ + | | | Add area label | + | | | label: area/* | + | | +--------------|--------------+ + | | | + +-|---------|---+ +--------+ +--------------|--------------+ + | Close issue | | Done --------- Add priority label | + | | | | | label: priority/* | + +---------------+ +--------+ +-----------------------------+ +``` + +If the author does not respond to a request for more information within the timespan of a week, close the issue with a kind note stating that the author can request for the issue to be reopened when the necessary information is provided. + +In some cases you may receive a request you do not wish to accept. Perhaps the request doesn't align with the project scope or vision. It is important to tactfully handle contributions that don't meet the project standards. + +1. Acknowledge the person behind the contribution and thank them for their interest and contribution +2. Explain why it didn't fit into the scope of the project or vision +3. Don't leave an unwanted contributions open. Immediately close the contribution you do not wish to accept diff --git a/ansible_collections/dellemc/powerflex/docs/MAINTAINERS.md b/ansible_collections/dellemc/powerflex/docs/MAINTAINERS.md new file mode 100644 index 00000000..24ab255d --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/MAINTAINERS.md @@ -0,0 +1,19 @@ + + +# Maintainers + +* Ananthu Kuttattu (kuttattz) +* Bhavneet Sharma (Bhavneet-Sharma) +* Jennifer John (Jennifer-John) +* Meenakshi Dembi (meenakshidembi691) +* Pavan Mudunuri (Pavan-Mudunuri) +* Previnkumar G (Previnkumar-G) +* Trisha Datta (trisha-dell) diff --git a/ansible_collections/dellemc/powerflex/docs/MAINTAINER_GUIDE.md b/ansible_collections/dellemc/powerflex/docs/MAINTAINER_GUIDE.md new file mode 100644 index 00000000..b99e5b22 --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/MAINTAINER_GUIDE.md @@ -0,0 +1,38 @@ + + +# Maintainer guidelines + +As a Maintainer of this project you have the responsibility of keeping true to the vision of the project with a high-degree quality. Being part of this group is a privilege that requires dedication and time to attend to the daily activities that are associated with the maintenance of this project. + +## Becoming a maintainer + +Most Maintainers started as Contributors that have demonstrated their commitment to the success of the project. Contributors wishing to become Maintainers, must demonstrate commitment to the success of the project by contributing code, reviewing others' work, and triaging issues on a regular basis for at least three months. + +The contributions alone don't make you a Maintainer. You need to earn the trust of the current Maintainers and other project Contributors, that your decisions and actions are in the best interest of the project. + +Periodically, the existing Maintainers curate a list of Contributors who have shown regular activity on the project over the prior months. It is from this list that Maintainer candidates are selected. + +After a candidate is selected, the existing Maintainers discuss the candidate over the next 5 business days, provide feedback, and vote. At least 75% of the current Maintainers must vote in the affirmative for a candidate to be moved to the role of Maintainer. + +If a candidate is approved, a Maintainer contacts the candidate to invite them to open a pull request that adds the contributor to the MAINTAINERS file. The candidate becomes a Maintainer once the pull request is merged. + +## Maintainer policies + +* Lead by example +* Follow the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/1.5.0/CODE_OF_CONDUCT.md) and the guidelines in the [Contributing](https://github.com/dell/ansible-powerflex/blob/1.5.0/CONTRIBUTING.md) and [Committer](https://github.com/dell/ansible-powerflex/blob/1.5.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. +* Clearly mark optional suggestions as such. Best practice, start your comment with *At your option: …* + +## Project decision making + +All project decisions should contribute to successfully executing on the project roadmap. Project milestones are established for each release. \ No newline at end of file diff --git a/ansible_collections/dellemc/powerflex/docs/Product Guide.md b/ansible_collections/dellemc/powerflex/docs/Product Guide.md new file mode 100644 index 00000000..b255917e --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/Product Guide.md @@ -0,0 +1,5437 @@ +# Ansible Modules for Dell Technologies PowerFlex +## Product Guide 1.5.0 +© 2022 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. + +-------------- +## Contents +* [Device Module](#device-module) + * [Synopsis](#synopsis) + * [Parameters](#parameters) + * [Notes](#notes) + * [Examples](#examples) + * [Return Values](#return-values) + * [Authors](#authors) +* [Info Module](#info-module) + * [Synopsis](#synopsis-1) + * [Parameters](#parameters-1) + * [Notes](#notes-1) + * [Examples](#examples-1) + * [Return Values](#return-values-1) + * [Authors](#authors-1) +* [MDM Cluster Module](#mdm-cluster-module) + * [Synopsis](#synopsis-2) + * [Parameters](#parameters-2) + * [Notes](#notes-2) + * [Examples](#examples-2) + * [Return Values](#return-values-2) + * [Authors](#authors-2) +* [Protection Domain Module](#protection-domain-module) + * [Synopsis](#synopsis-3) + * [Parameters](#parameters-3) + * [Notes](#notes-3) + * [Examples](#examples-3) + * [Return Values](#return-values-3) + * [Authors](#authors-3) +* [Replication Consistency Group Module](#replication-consistency-group-module) + * [Synopsis](#synopsis-4) + * [Parameters](#parameters-4) + * [Notes](#notes-4) + * [Examples](#examples-4) + * [Return Values](#return-values-4) + * [Authors](#authors-4) +* [SDC Module](#sdc-module) + * [Synopsis](#synopsis-5) + * [Parameters](#parameters-5) + * [Notes](#notes-5) + * [Examples](#examples-5) + * [Return Values](#return-values-5) + * [Authors](#authors-5) +* [SDS Module](#sds-module) + * [Synopsis](#synopsis-6) + * [Parameters](#parameters-6) + * [Notes](#notes-6) + * [Examples](#examples-6) + * [Return Values](#return-values-6) + * [Authors](#authors-6) +* [Storage Pool Module](#storage-pool-module) + * [Synopsis](#synopsis-7) + * [Parameters](#parameters-7) + * [Notes](#notes-7) + * [Examples](#examples-7) + * [Return Values](#return-values-7) + * [Authors](#authors-7) +* [Volume Module](#volume-module) + * [Synopsis](#synopsis-8) + * [Parameters](#parameters-8) + * [Notes](#notes-8) + * [Examples](#examples-8) + * [Return Values](#return-values-8) + * [Authors](#authors-8) + +-------------- + +# Device Module + +Manage device on Dell PowerFlex + +### Synopsis + Managing device on PowerFlex storage system includes adding new device, getting details of device, and removing a device. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
current_pathname str
Full path of the device to be added.
Required while adding a device.
device_name str
Device name.
Mutually exclusive with device_id.
device_id str
Device ID.
Mutually exclusive with device_name.
sds_name str
The name of the SDS.
Required while adding a device.
Mutually exclusive with sds_id.
sds_id str
The ID of the SDS.
Required while adding a device.
Mutually exclusive with sds_name.
storage_pool_name str
Storage Pool name.
Used while adding a storage device.
Mutually exclusive with storage_pool_id, acceleration_pool_id and acceleration_pool_name.
storage_pool_id str
Storage Pool ID.
Used while adding a storage device.
Media type supported are SSD and HDD.
Mutually exclusive with storage_pool_name, acceleration_pool_id and acceleration_pool_name.
acceleration_pool_name str
Acceleration Pool Name.
Used while adding an acceleration device.
Media type supported are SSD and NVDIMM.
Mutually exclusive with storage_pool_id, storage_pool_name and acceleration_pool_name.
acceleration_pool_id str
Acceleration Pool ID.
Used while adding an acceleration device.
Media type supported are SSD and NVDIMM.
Mutually exclusive with acceleration_pool_name, storage_pool_name and storage_pool_id.
protection_domain_name str
Protection domain name.
Used while identifying a storage pool along with storage_pool_name.
Mutually exclusive with protection_domain_id.
protection_domain_id str
Protection domain ID.
Used while identifying a storage pool along with storage_pool_name.
Mutually exclusive with protection_domain_name.
external_acceleration_type str
  • Invalid
  • None
  • Read
  • Write
  • ReadAndWrite

Device external acceleration types.
Used while adding a device.
media_type str
  • HDD
  • SSD
  • NVDIMM

Device media types.
Required while adding a device.
state str True
  • present
  • absent

State of the device.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### Notes +* The value for device_id is generated only after successful addition of the device. +* To uniquely identify a device, either device_id can be passed or one of current_pathname or device_name must be passed with sds_id or sds_name. +* It is recommended to install Rfcache driver for SSD device on SDS in order to add it to an acceleration pool. +* The check_mode is not supported. +* The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. + +### Examples +``` +- name: Add a device + dellemc.powerflex.device: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + current_pathname: "/dev/sdb" + sds_name: "node1" + media_type: "HDD" + device_name: "device2" + storage_pool_name: "pool1" + protection_domain_name: "domain1" + external_acceleration_type: "ReadAndWrite" + state: "present" +- name: Get device details using device_id + dellemc.powerflex.device: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + device_id: "d7fe088900000000" + state: "present" +- name: Get device details using (current_pathname, sds_name) + dellemc.powerflex.device: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + current_pathname: "/dev/sdb" + sds_name: "node0" + state: "present" +- name: Get device details using (current_pathname, sds_id) + dellemc.powerflex.device: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + current_pathname: "/dev/sdb" + sds_id: "5717d71800000000" + state: "present" +- name: Remove a device using device_id + dellemc.powerflex.device: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + device_id: "76eb7e2f00010000" + state: "absent" +- name: Remove a device using (current_pathname, sds_id) + dellemc.powerflex.device: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + current_pathname: "/dev/sdb" + sds_name: "node1" + state: "absent" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
device_details dict When device exists Details of the device.
  accelerationPoolId str success Acceleration pool ID.
  accelerationPoolName str success Acceleration pool name.
  accelerationProps str success Indicates acceleration props.
  aggregatedState str success Indicates aggregated state.
  ataSecurityActive bool success Indicates ATA security active state.
  autoDetectMediaType str success Indicates auto detection of media type.
  cacheLookAheadActive bool success Indicates cache look ahead active state.
  capacity int success Device capacity.
  capacityLimitInKb int success Device capacity limit in KB.
  deviceCurrentPathName str success Device current path name.
  deviceOriginalPathName str success Device original path name.
  deviceState str success Indicates device state.
  deviceType str success Indicates device type.
  errorState str success Indicates error state.
  externalAccelerationType str success Indicates external acceleration type.
  fglNvdimmMetadataAmortizationX100 int success Indicates FGL NVDIMM meta data amortization value.
  fglNvdimmWriteCacheSize int success Indicates FGL NVDIMM write cache size.
  firmwareVersion str success Indicates firmware version.
  id str success Device ID.
  ledSetting str success Indicates LED setting.
  links list success Device links.
   href str success Device instance URL.
   rel str success Relationship of device with different entities.
  logicalSectorSizeInBytes int success Logical sector size in bytes.
  longSuccessfulIos list success Indicates long successful IOs.
  maxCapacityInKb int success Maximum device capacity limit in KB.
  mediaFailing bool success Indicates media failing.
  mediaType str success Indicates media type.
  modelName str success Indicates model name.
  name str success Device name.
  persistentChecksumState str success Indicates persistent checksum state.
  physicalSectorSizeInBytes int success Physical sector size in bytes.
  protectionDomainId str success Protection domain ID.
  protectionDomainName str success Protection domain name.
  raidControllerSerialNumber str success RAID controller serial number.
  rfcacheErrorDeviceDoesNotExist bool success Indicates RF cache error device does not exist.
  rfcacheProps str success RF cache props.
  sdsId str success SDS ID.
  sdsName str success SDS name.
  serialNumber str success Indicates Serial number.
  spSdsId str success Indicates SPs SDS ID.
  ssdEndOfLifeState str success Indicates SSD end of life state.
  storagePoolId str success Storage Pool ID.
  storagePoolName str success Storage Pool name.
  storageProps list success Storage props.
  temperatureState str success Indicates temperature state.
  vendorName str success Indicates vendor name.
  writeCacheActive bool success Indicates write cache active.
+ +### Authors +* Rajshree Khare (@khareRajshree) + +-------------------------------- +# Info Module + +Gathering information about Dell PowerFlex + +### 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. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
gather_subset list
elements: str
  • vol
  • storage_pool
  • protection_domain
  • sdc
  • sds
  • snapshot_policy
  • device
  • rcg

List of string variables to specify the Powerflex storage system entities for which information is required.
Volumes - vol.
Storage pools - storage_pool.
Protection domains - protection_domain.
SDCs - sdc.
SDSs - sds.
Snapshot policies - snapshot_policy.
Devices - device.
Replication consistency groups - rcg.
filters list
elements: dict

List of filters to support filtered output for storage entities.
Each filter is a list of filter_key, filter_operator, filter_value.
Supports passing of multiple filters.
  filter_key str True
Name identifier of the filter.
  filter_operator str True
  • equal

Operation to be performed on filter key.
  filter_value str True
Value of the filter key.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### Notes +* 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 +``` +- name: Get detailed list of PowerFlex entities + dellemc.powerflex.info: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + gather_subset: + - vol + - storage_pool + - protection_domain + - sdc + - sds + - snapshot_policy + - device + - rcg + +- name: Get a subset list of PowerFlex volumes + dellemc.powerflex.info: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + gather_subset: + - vol + filters: + - filter_key: "name" + filter_operator: "equal" + filter_value: "ansible_test" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
API_Version str always API version of PowerFlex API Gateway.
Array_Details dict always System entities of PowerFlex storage array.
  addressSpaceUsage str success Address space usage.
  authenticationMethod str success Authentication method.
  capacityAlertCriticalThresholdPercent int success Capacity alert critical threshold percentage.
  capacityAlertHighThresholdPercent int success Capacity alert high threshold percentage.
  capacityTimeLeftInDays str success Capacity time left in days.
  cliPasswordAllowed bool success CLI password allowed.
  daysInstalled int success Days installed.
  defragmentationEnabled bool success Defragmentation enabled.
  enterpriseFeaturesEnabled bool success Enterprise features enabled.
  id str success The ID of the system.
  installId str success installation Id.
  isInitialLicense bool success Initial license.
  lastUpgradeTime int success Last upgrade time.
  managementClientSecureCommunicationEnabled bool success Management client secure communication enabled.
  maxCapacityInGb dict success Maximum capacity in GB.
  mdmCluster dict success MDM cluster details.
  mdmExternalPort int success MDM external port.
  mdmManagementPort int success MDM management port.
  mdmSecurityPolicy str success MDM security policy.
  showGuid bool success Show guid.
  swid str success SWID.
  systemVersionName str success System version and name.
  tlsVersion str success TLS version.
  upgradeState str success Upgrade state.
Devices list always Details of devices.
  id str success device id.
  name str success device name.
Protection_Domains list always Details of all protection domains.
  id str success protection domain id.
  name str success protection domain name.
Replication_Consistency_Groups list always Details of rcgs.
  abstractState str success The abstract state of the replication consistency group.
  activeLocal bool success Whether the local replication consistency group is active.
  activeRemote bool success Whether the remote replication consistency group is active
  currConsistMode str success The current consistency mode of the replication consistency group.
  disasterRecoveryState str success The state of disaster recovery of the local replication consistency group.
  error int success The error code of the replication consistency group.
  failoverState str success The state of failover of the replication consistency group.
  failoverType str success The type of failover of the replication consistency group.
  freezeState str success The freeze state of the replication consistency group.
  id str success The ID of the replication consistency group.
  inactiveReason int success The reason for the inactivity of the replication consistency group.
  lastSnapCreationRc int success The return code of the last snapshot of the replication consistency group.
  lastSnapGroupId str success ID of the last snapshot of the replication consistency group.
  lifetimeState str success The Lifetime state of the replication consistency group.
  localActivityState str success The state of activity of the local replication consistency group.
  name str success The name of the replication consistency group.
  pauseMode str success The Lifetime state of the replication consistency group.
  peerMdmId str success The ID of the peer MDM of the replication consistency group.
  protectionDomainId str success The Protection Domain ID of the replication consistency group.
  remoteActivityState str success The state of activity of the remote replication consistency group..
  remoteDisasterRecoveryState str success The state of disaster recovery of the remote replication consistency group.
  remoteId str success The ID of the remote replication consistency group.
  remoteMdmId str success The ID of the remote MDM of the replication consistency group.
  remoteProtectionDomainId str success The ID of the remote Protection Domain.
  remoteProtectionDomainName str success The Name of the remote Protection Domain.
  replicationDirection str success The direction of the replication of the replication consistency group.
  rpoInSeconds int success The RPO value of the replication consistency group in seconds.
  snapCreationInProgress bool success Whether the process of snapshot creation of the replication consistency group is in progress or not.
  targetVolumeAccessMode str success The access mode of the target volume of the replication consistency group.
  type str success The type of the replication consistency group.
SDCs list always Details of storage data clients.
  id str success storage data client id.
  name str success storage data client name.
SDSs list always Details of storage data servers.
  id str success storage data server id.
  name str success storage data server name.
Snapshot_Policies list always Details of snapshot policies.
  id str success snapshot policy id.
  name str success snapshot policy name.
Storage_Pools list always Details of storage pools.
  id str success ID of the storage pool under protection domain.
  mediaType str success Type of devices in the storage pool.
  name str success Name of the storage pool under protection domain.
  protectionDomainId str success ID of the protection domain in which pool resides.
  protectionDomainName str success Name of the protection domain in which pool resides.
  statistics dict success Statistics details of the storage pool.
   capacityInUseInKb str success Total capacity of the storage pool.
   deviceIds list success Device Ids of the storage pool.
   unusedCapacityInKb str success Unused capacity of the storage pool.
  useRfcache bool success Enable/Disable RFcache on a specific storage pool.
  useRmcache bool success Enable/Disable RMcache on a specific storage pool.
Volumes list always Details of volumes.
  id str success The ID of the volume.
  mappedSdcInfo dict success The details of the mapped SDC.
   accessMode str success mapping access mode for the specified volume.
   limitBwInMbps int success Bandwidth limit for the SDC.
   limitIops int success IOPS limit for the SDC.
   sdcId str success ID of the SDC.
   sdcIp str success IP of the SDC.
   sdcName str success Name of the SDC.
  name str success Name of the volume.
  protectionDomainId str success ID of the protection domain in which volume resides.
  protectionDomainName str success Name of the protection domain in which volume resides.
  sizeInGb int success Size of the volume in Gb.
  sizeInKb int success Size of the volume in Kb.
  snapshotPolicyId str success ID of the snapshot policy associated with volume.
  snapshotPolicyName str success Name of the snapshot policy associated with volume.
  snapshotsList str success List of snapshots associated with the volume.
  statistics dict success Statistics details of the storage pool.
   numOfChildVolumes int success Number of child volumes.
   numOfMappedSdcs int success Number of mapped Sdcs of the volume.
  storagePoolId str success ID of the storage pool in which volume resides.
  storagePoolName str success Name of the storage pool in which volume resides.
changed bool always Whether or not the resource has changed.
+ +### Authors +* Arindam Datta (@dattaarindam) + +-------------------------------- +# MDM Cluster Module + +Manage MDM cluster on Dell PowerFlex + +### Synopsis + Managing MDM cluster and MDMs on PowerFlex storage system includes adding/removing standby MDM, modify MDM name and virtual interface. + It also includes getting details of MDM cluster, modify MDM cluster ownership, cluster mode, and performance profile. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
mdm_name str
The name of the MDM. It is unique across the PowerFlex array.
Mutually exclusive with mdm_id.
If mdm_name passed in add standby operation, then same name will be assigned to the new standby mdm.
mdm_id str
The ID of the MDM.
Mutually exclusive with mdm_name.
mdm_new_name str
To rename the MDM.
standby_mdm dict
Specifies add standby MDM parameters.
  mdm_ips list
elements: str
True
List of MDM IPs that will be assigned to new MDM. It can contain IPv4 addresses.
  role str True
  • Manager
  • TieBreaker

Role of new MDM.
  management_ips list
elements: str

List of management IPs to manage MDM. It can contain IPv4 addresses.
  port int
Specifies the port of new MDM.
  allow_multiple_ips bool
Allow the added node to have different number of IPs from the primary node.
  virtual_interfaces list
elements: str

List of NIC interfaces that will be used for virtual IP addresses.
is_primary bool
Set is_primary as True to change MDM cluster ownership from the current master MDM to different MDM.
Set is_primary as False, will return MDM cluster details.
New owner MDM must be an MDM with a manager role.
cluster_mode str
  • OneNode
  • ThreeNodes
  • FiveNodes

Mode of the cluster.
mdm list
elements: dict

Specifies parameters to add/remove MDMs to/from the MDM cluster.
  mdm_id str
ID of MDM that will be added/removed to/from the cluster.
  mdm_name str
Name of MDM that will be added/removed to/from the cluster.
  mdm_type str True
  • Secondary
  • TieBreaker

Type of the MDM.
Either mdm_id or mdm_name must be passed with mdm_type.
mdm_state str
  • present-in-cluster
  • absent-in-cluster

Mapping state of MDM.
virtual_ip_interfaces list
elements: str

List of interfaces to be used for virtual IPs.
The order of interfaces must be matched with virtual IPs assigned to the cluster.
Interfaces of the primary and secondary type MDMs are allowed to modify.
The virtual_ip_interfaces is mutually exclusive with clear_interfaces.
clear_interfaces bool
Clear all virtual IP interfaces.
The clear_interfaces is mutually exclusive with virtual_ip_interfaces.
performance_profile str
  • Compact
  • HighPerformance

Apply performance profile to cluster MDMs.
state str True
  • present
  • absent

State of the MDM cluster.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### Notes +* Parameters mdm_name or mdm_id are mandatory for rename and modify virtual IP interfaces. +* Parameters mdm_name or mdm_id are not required while modifying performance profile. +* For change MDM cluster ownership operation, only changed as True will be returned and for idempotency case MDM cluster details will be returned. +* Reinstall all SDC after changing ownership to some newly added MDM. +* To add manager standby MDM, MDM package must be installed with manager role. +* The check_mode is supported. +* The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. + +### Examples +``` +- name: Add a standby MDM + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + mdm_name: "mdm_1" + standby_mdm: + mdm_ips: + - "10.x.x.x" + role: "TieBreaker" + management_ips: + - "10.x.y.z" + state: "present" + +- name: Remove a standby MDM + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + mdm_name: "mdm_1" + state: "absent" + +- name: Switch cluster mode from 3 node to 5 node MDM cluster + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + cluster_mode: "FiveNodes" + mdm: + - mdm_id: "5f091a8a013f1100" + mdm_type: "Secondary" + - mdm_name: "mdm_1" + mdm_type: "TieBreaker" + sdc_state: "present-in-cluster" + state: "present" + +- name: Switch cluster mode from 5 node to 3 node MDM cluster + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + cluster_mode: "ThreeNodes" + mdm: + - mdm_id: "5f091a8a013f1100" + mdm_type: "Secondary" + - mdm_name: "mdm_1" + mdm_type: "TieBreaker" + sdc_state: "absent-in-cluster" + state: "present" + +- name: Get the details of the MDM cluster + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + state: "present" + +- name: Change ownership of MDM cluster + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + mdm_name: "mdm_2" + is_primary: True + state: "present" + +- name: Modify performance profile + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + performance_profile: "HighPerformance" + state: "present" + +- name: Rename the MDM + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + mdm_name: "mdm_1" + mdm_new_name: "new_mdm_1" + state: "present" + +- name: Modify virtual IP interface of the MDM + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + mdm_name: "mdm_1" + virtual_ip_interface: + - "ens224" + state: "present" + +- name: Clear virtual IP interface of the MDM + dellemc.powerflex.mdm_cluster: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + mdm_name: "mdm_1" + clear_interfaces: True + state: "present" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
mdm_cluster_details dict When MDM cluster exists Details of the MDM cluster.
  clusterMode str success Mode of the MDM cluster.
  clusterState str success State of the MDM cluster.
  goodNodesNum int success Number of Nodes in MDM cluster.
  goodReplicasNum int success Number of nodes for Replication.
  id str success The ID of the MDM cluster.
  master dict success The details of the master MDM.
   id str success ID of the MDM.
   ips list success List of IPs for master MDM.
   managementIPs list success List of management IPs for master MDM.
   name str success Name of the MDM.
   opensslVersion str success OpenSSL version.
   port str success Port of the MDM.
   role str success Role of MDM.
   status str success Status of MDM.
   versionInfo str success Version of MDM.
   virtualInterfaces list success List of virtual interfaces
  name str success Name of MDM cluster.
  slaves list success The list of the secondary MDMs.
   id str success ID of the MDM.
   ips list success List of IPs for secondary MDM.
   managementIPs list success List of management IPs for secondary MDM.
   name str success Name of the MDM.
   opensslVersion str success OpenSSL version.
   port str success Port of the MDM.
   role str success Role of MDM.
   status str success Status of MDM.
   versionInfo str success Version of MDM.
   virtualInterfaces list success List of virtual interfaces
  standbyMDMs list success The list of the standby MDMs.
   id str success ID of the MDM.
   ips list success List of IPs for MDM.
   managementIPs list success List of management IPs for MDM.
   name str success Name of the MDM.
   opensslVersion str success OpenSSL version.
   port str success Port of the MDM.
   role str success Role of MDM.
   status str success Status of MDM.
   versionInfo str success Version of MDM.
   virtualInterfaces list success List of virtual interfaces.
  tieBreakers list success The list of the TieBreaker MDMs.
   id str success ID of the MDM.
   ips list success List of IPs for tie-breaker MDM.
   managementIPs list success List of management IPs for tie-breaker MDM.
   name str success Name of the MDM.
   opensslVersion str success OpenSSL version.
   port str success Port of the MDM.
   role str success Role of MDM.
   status str success Status of MDM.
   versionInfo str success Version of MDM.
  virtualIps list success List of virtual IPs.
+ +### Authors +* Bhavneet Sharma (@sharmb5) + +-------------------------------- +# Protection Domain Module + +Manage Protection Domain on Dell PowerFlex + +### Synopsis + Managing Protection Domain on PowerFlex storage system includes creating, modifying attributes, deleting and getting details of Protection Domain. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
protection_domain_name str
The name of the protection domain.
Mandatory for create operation.
It is unique across the PowerFlex array.
Mutually exclusive with protection_domain_id.
protection_domain_id str
The ID of the protection domain.
Except for create operation, all other operations can be performed using protection_domain_id.
Mutually exclusive with protection_domain_name.
protection_domain_new_name str
Used to rename the protection domain.
is_active bool
Used to activate or deactivate the protection domain.
network_limits dict
Network bandwidth limit used by all SDS in protection domain.
  rebuild_limit int
Limit the network bandwidth for rebuild.
  rebalance_limit int
Limit the network bandwidth for rebalance.
  vtree_migration_limit int
Limit the network bandwidth for vtree migration.
  overall_limit int
Limit the overall network bandwidth.
  bandwidth_unit str KBps
  • KBps
  • MBps
  • GBps

Unit for network bandwidth limits.
rf_cache_limits dict
Used to set the RFcache parameters of the protection domain.
  is_enabled bool
Used to enable or disable RFcache in the protection domain.
  page_size int
Used to set the cache page size in KB.
  max_io_limit int
Used to set cache maximum I/O limit in KB.
  pass_through_mode str
  • None
  • Read
  • Write
  • ReadAndWrite
  • WriteMiss

Used to set the cache mode.
state str True
  • present
  • absent

State of the protection domain.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### Notes +* The protection domain can only be deleted if all its related objects have been dissociated from the protection domain. +* If the protection domain set to inactive, then no operation can be performed on protection domain. +* The check_mode is not supported. +* The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. + +### Examples +``` +- name: Create protection domain + dellemc.powerflex.protection_domain: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + protection_domain_name: "domain1" + state: "present" + +- name: Create protection domain with all parameters + dellemc.powerflex.protection_domain: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + protection_domain_name: "domain1" + is_active: true + network_limits: + rebuild_limit: 10 + rebalance_limit: 17 + vtree_migration_limit: 14 + overall_limit: 20 + bandwidth_unit: "MBps" + rf_cache_limits: + is_enabled: true + page_size: 16 + max_io_limit: 128 + pass_through_mode: "Read" + state: "present" + +- name: Get protection domain details using name + dellemc.powerflex.protection_domain: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + protection_domain_name: "domain1" + state: "present" + +- name: Get protection domain details using ID + dellemc.powerflex.protection_domain: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + protection_domain_id: "5718253c00000004" + state: "present" + +- name: Modify protection domain attributes + dellemc.powerflex.protection_domain: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + protection_domain_name: "domain1" + protection_domain_new_name: "domain1_new" + network_limits: + rebuild_limit: 14 + rebalance_limit: 20 + overall_limit: 25 + bandwidth_unit: "MBps" + rf_cache_limits: + page_size: 64 + pass_through_mode: "WriteMiss" + state: "present" + +- name: Delete protection domain using name + dellemc.powerflex.protection_domain: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + protection_domain_name: "domain1_new" + state: "absent" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
protection_domain_details dict When protection domain exists Details of the protection domain.
  fglDefaultMetadataCacheSize int success FGL metadata cache size.
  fglDefaultNumConcurrentWrites str success FGL concurrent writes.
  fglMetadataCacheEnabled bool success Whether FGL cache enabled.
  id str success Protection domain ID.
  links list success Protection domain links.
   href str success Protection domain instance URL.
   rel str success Protection domain's relationship with different entities.
  mdmSdsNetworkDisconnectionsCounterParameters dict success MDM's SDS counter parameter.
   longWindow int success Long window for Counter Parameters.
   mediumWindow int success Medium window for Counter Parameters.
   shortWindow int success Short window for Counter Parameters.
  name str success Name of the protection domain.
  overallIoNetworkThrottlingEnabled bool success Whether overall network throttling enabled.
  overallIoNetworkThrottlingInKbps int success Overall network throttling in KBps.
  protectedMaintenanceModeNetworkThrottlingEnabled bool success Whether protected maintenance mode network throttling enabled.
  protectedMaintenanceModeNetworkThrottlingInKbps int success Protected maintenance mode network throttling in KBps.
  protectionDomainState int success State of protection domain.
  rebalanceNetworkThrottlingEnabled int success Whether rebalance network throttling enabled.
  rebalanceNetworkThrottlingInKbps int success Rebalance network throttling in KBps.
  rebuildNetworkThrottlingEnabled int success Whether rebuild network throttling enabled.
  rebuildNetworkThrottlingInKbps int success Rebuild network throttling in KBps.
  rfcacheAccpId str success Id of RF cache acceleration pool.
  rfcacheEnabled bool success Whether RF cache is enabled or not.
  rfcacheMaxIoSizeKb int success RF cache maximum I/O size in KB.
  rfcacheOpertionalMode str success RF cache operational mode.
  rfcachePageSizeKb bool success RF cache page size in KB.
  sdrSdsConnectivityInfo dict success Connectivity info of SDR and SDS.
   clientServerConnStatus str success Connectivity status of client and server.
   disconnectedClientId str success Disconnected client ID.
   disconnectedClientName str success Disconnected client name.
   disconnectedServerId str success Disconnected server ID.
   disconnectedServerIp str success Disconnected server IP.
   disconnectedServerName str success Disconnected server name.
  sdsSdsNetworkDisconnectionsCounterParameters dict success Counter parameter for SDS-SDS network.
   longWindow int success Long window for Counter Parameters.
   mediumWindow int success Medium window for Counter Parameters.
   shortWindow int success Short window for Counter Parameters.
  storagePool list success List of storage pools.
  systemId str success ID of system.
  vtreeMigrationNetworkThrottlingEnabled bool success Whether V-Tree migration network throttling enabled.
  vtreeMigrationNetworkThrottlingInKbps int success V-Tree migration network throttling in KBps.
+ +### Authors +* Bhavneet Sharma (@sharmb5) + +-------------------------------- +# Replication Consistency Group Module + +Manage replication consistency groups on Dell PowerFlex + +### 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. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
rcg_name str
The name of the replication consistency group.
It is unique across the PowerFlex array.
Mutually exclusive with rcg_id.
rcg_id str
The ID of the replication consistency group.
Mutually exclusive with rcg_name.
create_snapshot bool
Whether to create the snapshot of the replication consistency group.
rpo int
Desired RPO in seconds.
protection_domain_id str
Protection domain id.
Mutually exclusive with protection_domain_name.
protection_domain_name str
Protection domain name.
Mutually exclusive with protection_domain_id.
activity_mode str
  • Active
  • Inactive

Activity mode of RCG.
This parameter is supported for version 3.6 and above.
pause bool
Pause or resume the RCG.
freeze bool
Freeze or unfreeze the RCG.
pause_mode str
  • StopDataTransfer
  • OnlyTrackChanges

Pause mode.
It is required if pause is set as True.
target_volume_access_mode str
  • ReadOnly
  • NoAccess

Target volume access mode.
is_consistent bool
Consistency of RCG.
new_rcg_name str
Name of RCG to rename to.
remote_peer dict
Remote peer system.
  hostname str True
IP or FQDN of the remote peer host.
  username str True
The username of the remote peer host.
  password str True
The password of the remote peer host.
  validate_certs 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 int 443
Port number through which communication happens with remote peer host.
  timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
  protection_domain_id str
Remote protection domain id.
Mutually exclusive with protection_domain_name.
  protection_domain_name str
Remote protection domain name.
Mutually exclusive with protection_domain_id.
state str present
  • present
  • absent

State of the replication consistency group.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### 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. +* The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. + +### Examples +``` +- name: Get RCG details + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "{{rcg_name}}" + +- name: Create a snapshot of the RCG + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_id: "{{rcg_id}}" + create_snapshot: True + state: "present" + +- name: Create a replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + rpo: 60 + protection_domain_name: "domain1" + activity_mode: "active" + remote_peer: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + protection_domain_name: "domain1" + +- name: Modify replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + rpo: 60 + target_volume_access_mode: "ReadOnly" + activity_mode: "Inactive" + is_consistent: True + +- name: Rename replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + new_rcg_name: "rcg_test_rename" + +- name: Pause replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + action: "pause" + pause_mode: "StopDataTransfer" + +- name: Resume replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + action: "resume" + +- name: Freeze replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + action: "freeze" + +- name: UnFreeze replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + action: "unfreeze" + +- name: Delete replication consistency group + dellemc.powerflex.replication_consistency_group: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + rcg_name: "rcg_test" + state: "absent" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
replication_consistency_group_details dict When replication consistency group exists Details of the replication consistency group.
  abstractState str success The abstract state of the replication consistency group.
  activeLocal bool success Whether the local replication consistency group is active.
  activeRemote bool success Whether the remote replication consistency group is active
  currConsistMode str success The current consistency mode of the replication consistency group.
  disasterRecoveryState str success The state of disaster recovery of the local replication consistency group.
  error int success The error code of the replication consistency group.
  failoverState str success The state of failover of the replication consistency group.
  failoverType str success The type of failover of the replication consistency group.
  freezeState str success The freeze state of the replication consistency group.
  id str success The ID of the replication consistency group.
  inactiveReason int success The reason for the inactivity of the replication consistency group.
  lastSnapCreationRc int success The return code of the last snapshot of the replication consistency group.
  lastSnapGroupId str success ID of the last snapshot of the replication consistency group.
  lifetimeState str success The Lifetime state of the replication consistency group.
  localActivityState str success The state of activity of the local replication consistency group.
  name str success The name of the replication consistency group.
  pauseMode str success The Lifetime state of the replication consistency group.
  peerMdmId str success The ID of the peer MDM of the replication consistency group.
  protectionDomainId str success The Protection Domain ID of the replication consistency group.
  remoteActivityState str success The state of activity of the remote replication consistency group..
  remoteDisasterRecoveryState str success The state of disaster recovery of the remote replication consistency group.
  remoteId str success The ID of the remote replication consistency group.
  remoteMdmId str success The ID of the remote MDM of the replication consistency group.
  remoteProtectionDomainId str success The ID of the remote Protection Domain.
  remoteProtectionDomainName str success The Name of the remote Protection Domain.
  replicationDirection str success The direction of the replication of the replication consistency group.
  rpoInSeconds int success The RPO value of the replication consistency group in seconds.
  snapCreationInProgress bool success Whether the process of snapshot creation of the replication consistency group is in progress or not.
  targetVolumeAccessMode str success The access mode of the target volume of the replication consistency group.
  type str success The type of the replication consistency group.
+ +### Authors +* Trisha Datta (@Trisha-Datta) +* Jennifer John (@Jennifer-John) + +-------------------------------- +# SDC Module + +Manage SDCs on Dell PowerFlex + +### Synopsis + Managing SDCs on PowerFlex storage system includes getting details of SDC and renaming SDC. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
sdc_name str
Name of the SDC.
Specify either sdc_name, sdc_id or sdc_ip for get/rename operation.
Mutually exclusive with sdc_id and sdc_ip.
sdc_id str
ID of the SDC.
Specify either sdc_name, sdc_id or sdc_ip for get/rename operation.
Mutually exclusive with sdc_name and sdc_ip.
sdc_ip str
IP of the SDC.
Specify either sdc_name, sdc_id or sdc_ip for get/rename operation.
Mutually exclusive with sdc_id and sdc_name.
sdc_new_name str
New name of the SDC. Used to rename the SDC.
state str True
  • present
  • absent

State of the SDC.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### Notes +* The check_mode is not supported. +* The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. + +### Examples +``` +- name: Get SDC details using SDC ip + dellemc.powerflex.sdc: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + sdc_ip: "{{sdc_ip}}" + state: "present" + +- name: Rename SDC using SDC name + dellemc.powerflex.sdc: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + sdc_name: "centos_sdc" + sdc_new_name: "centos_sdc_renamed" + state: "present" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
sdc_details dict When SDC exists Details of the SDC.
  id str success The ID of the SDC.
  mapped_volumes list success The details of the mapped volumes.
   id str success The ID of the volume.
   name str success The name of the volume.
   volumeType str success Type of the volume.
  name str success Name of the SDC.
  osType str success OS type of the SDC.
  sdcApproved bool success Indicates whether an SDC has approved access to the system.
  sdcIp str success IP of the SDC.
+ +### Authors +* Akash Shendge (@shenda1) + +-------------------------------- +# SDS Module + +Manage SDS on Dell PowerFlex + +### Synopsis + Managing SDS on PowerFlex storage system includes creating new SDS, getting details of SDS, adding/removing IP to/from SDS, modifying attributes of SDS, and deleting SDS. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
sds_name str
The name of the SDS.
Mandatory for create operation.
It is unique across the PowerFlex array.
Mutually exclusive with sds_id.
sds_id str
The ID of the SDS.
Except create operation, all other operations can be performed using sds_id.
Mutually exclusive with sds_name.
protection_domain_name str
The name of the protection domain.
Mutually exclusive with protection_domain_id.
protection_domain_id str
The ID of the protection domain.
Mutually exclusive with protection_domain_name.
sds_ip_list list
elements: dict

Dictionary of IPs and their roles for the SDS.
At least one IP-role is mandatory while creating a SDS.
IP-roles can be updated as well.
  ip str True
IP address of the SDS.
  role str True
  • sdsOnly
  • sdcOnly
  • all

Role assigned to the SDS IP address.
sds_ip_state str
  • present-in-sds
  • absent-in-sds

State of IP with respect to the SDS.
rfcache_enabled bool
Whether to enable the Read Flash cache.
rmcache_enabled bool
Whether to enable the Read RAM cache.
rmcache_size int
Read RAM cache size (in MB).
Minimum size is 128 MB.
Maximum size is 3911 MB.
sds_new_name str
SDS new name.
performance_profile str
  • Compact
  • HighPerformance

Performance profile to apply to the SDS.
The HighPerformance profile configures a predefined set of parameters for very high performance use cases.
Default value by API is HighPerformance.
state str True
  • present
  • absent

State of the SDS.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### Notes +* The maximum limit for the IPs that can be associated with an SDS is 8. +* There needs to be at least 1 IP for SDS communication and 1 for SDC communication. +* If only 1 IP exists, it must be with role 'all'; else 1 IP can be with role 'all'and other IPs with role 'sdcOnly'; or 1 IP must be with role 'sdsOnly' and others with role 'sdcOnly'. +* There can be 1 or more IPs with role 'sdcOnly'. +* There must be only 1 IP with SDS role (either with role 'all' or 'sdsOnly'). +* SDS can be created with RF cache disabled, but, be aware that the RF cache is not always updated. In this case, the user should re-try the operation. +* The check_mode is not supported. +* The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. + +### Examples +``` +- name: Create SDS + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_name: "node0" + protection_domain_name: "domain1" + sds_ip_list: + - ip: "198.10.xxx.xxx" + role: "all" + sds_ip_state: "present-in-sds" + state: "present" + +- name: Create SDS with all parameters + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_name: "node1" + protection_domain_name: "domain1" + sds_ip_list: + - ip: "198.10.xxx.xxx" + role: "sdcOnly" + sds_ip_state: "present-in-sds" + rmcache_enabled: true + rmcache_size: 128 + performance_profile: "HighPerformance" + state: "present" + +- name: Get SDS details using name + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_name: "node0" + state: "present" + +- name: Get SDS details using ID + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_id: "5718253c00000004" + state: "present" + +- name: Modify SDS attributes using name + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_name: "node0" + sds_new_name: "node0_new" + rfcache_enabled: true + rmcache_enabled: true + rmcache_size: 256 + performance_profile: "HighPerformance" + state: "present" + +- name: Modify SDS attributes using ID + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_id: "5718253c00000004" + sds_new_name: "node0_new" + rfcache_enabled: true + rmcache_enabled: true + rmcache_size: 256 + performance_profile: "HighPerformance" + state: "present" + +- name: Add IP and role to an SDS + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_name: "node0" + sds_ip_list: + - ip: "198.10.xxx.xxx" + role: "sdcOnly" + sds_ip_state: "present-in-sds" + state: "present" + +- name: Remove IP and role from an SDS + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_name: "node0" + sds_ip_list: + - ip: "198.10.xxx.xxx" + role: "sdcOnly" + sds_ip_state: "absent-in-sds" + state: "present" + +- name: Delete SDS using name + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_name: "node0" + state: "absent" + +- name: Delete SDS using ID + dellemc.powerflex.sds: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + sds_id: "5718253c00000004" + state: "absent" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
sds_details dict When SDS exists Details of the SDS.
  authenticationError str success Indicates authentication error.
  certificateInfo str success Information about certificate.
  configuredDrlMode str success Configured DRL mode.
  drlMode str success DRL mode.
  faultSetId str success Fault set ID.
  fglMetadataCacheSize int success FGL metadata cache size.
  fglMetadataCacheState str success FGL metadata cache state.
  fglNumConcurrentWrites int success FGL concurrent writes.
  id str success SDS ID.
  ipList list success SDS IP list.
   ip str success IP present in the SDS.
   role str success Role of the SDS IP.
  lastUpgradeTime str success Last time SDS was upgraded.
  links list success SDS links.
   href str success SDS instance URL.
   rel str success SDS's relationship with different entities.
  maintenanceState str success Maintenance state.
  maintenanceType str success Maintenance type.
  mdmConnectionState str success MDM connection state.
  membershipState str success Membership state.
  name str success Name of the SDS.
  numOfIoBuffers int success Number of IO buffers.
  numRestarts int success Number of restarts.
  onVmWare bool success Presence on VMware.
  perfProfile str success Performance profile.
  port int success SDS port.
  protectionDomainId str success Protection Domain ID.
  protectionDomainName str success Protection Domain Name.
  raidControllers int success Number of RAID controllers.
  rfcacheEnabled bool success Whether RF cache is enabled or not.
  rfcacheErrorApiVersionMismatch bool success RF cache error for API version mismatch.
  rfcacheErrorDeviceDoesNotExist bool success RF cache error for device does not exist.
  rfcacheErrorInconsistentCacheConfiguration bool success RF cache error for inconsistent cache configuration.
  rfcacheErrorInconsistentSourceConfiguration bool success RF cache error for inconsistent source configuration.
  rfcacheErrorInvalidDriverPath bool success RF cache error for invalid driver path.
  rfcacheErrorLowResources bool success RF cache error for low resources.
  rmcacheEnabled bool success Whether Read RAM cache is enabled or not.
  rmcacheFrozen bool success RM cache frozen.
  rmcacheMemoryAllocationState bool success RM cache memory allocation state.
  rmcacheSizeInKb int success RM cache size in KB.
  rmcacheSizeInMb int success RM cache size in MB.
  sdsConfigurationFailure str success SDS configuration failure.
  sdsDecoupled str success SDS decoupled.
  sdsReceiveBufferAllocationFailures str success SDS receive buffer allocation failures.
  sdsState str success SDS state.
  softwareVersionInfo str success SDS software version information.
+ +### Authors +* Rajshree Khare (@khareRajshree) + +-------------------------------- +# Storage Pool Module + +Managing Dell PowerFlex storage pool + +### Synopsis + Dell PowerFlex storage pool module includes getting the details of storage pool, creating a new storage pool, and modifying the attribute of a storage pool. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
storage_pool_name str
The name of the storage pool.
If more than one storage pool is found with the same name then protection domain id/name is required to perform the task.
Mutually exclusive with storage_pool_id.
storage_pool_id str
The id of the storage pool.
It is auto generated, hence should not be provided during creation of a storage pool.
Mutually exclusive with storage_pool_name.
protection_domain_name str
The name of the protection domain.
During creation of a pool, either protection domain name or id must be mentioned.
Mutually exclusive with protection_domain_id.
protection_domain_id str
The id of the protection domain.
During creation of a pool, either protection domain name or id must be mentioned.
Mutually exclusive with protection_domain_name.
media_type str
  • HDD
  • SSD
  • TRANSITIONAL

Type of devices in the storage pool.
storage_pool_new_name str
New name for the storage pool can be provided.
This parameter is used for renaming the storage pool.
use_rfcache bool
Enable/Disable RFcache on a specific storage pool.
use_rmcache bool
Enable/Disable RMcache on a specific storage pool.
state str True
  • present
  • absent

State of the storage pool.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### Notes +* TRANSITIONAL media type is supported only during modification. +* The check_mode is not supported. +* The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. + +### Examples +``` +- name: Get the details of storage pool by name + dellemc.powerflex.storagepool: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + storage_pool_name: "sample_pool_name" + protection_domain_name: "sample_protection_domain" + state: "present" + +- name: Get the details of storage pool by id + dellemc.powerflex.storagepool: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + storage_pool_id: "abcd1234ab12r" + state: "present" + +- name: Create a new storage pool by name + dellemc.powerflex.storagepool: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + storage_pool_name: "ansible_test_pool" + protection_domain_id: "1c957da800000000" + media_type: "HDD" + state: "present" + +- name: Modify a storage pool by name + dellemc.powerflex.storagepool: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + storage_pool_name: "ansible_test_pool" + protection_domain_id: "1c957da800000000" + use_rmcache: True + use_rfcache: True + state: "present" + +- name: Rename storage pool by id + dellemc.powerflex.storagepool: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + storage_pool_id: "abcd1234ab12r" + storage_pool_new_name: "new_ansible_pool" + state: "present" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
storage_pool_details dict When storage pool exists Details of the storage pool.
  id str success ID of the storage pool under protection domain.
  mediaType str success Type of devices in the storage pool.
  name str success Name of the storage pool under protection domain.
  protectionDomainId str success ID of the protection domain in which pool resides.
  protectionDomainName str success Name of the protection domain in which pool resides.
  statistics dict success Statistics details of the storage pool.
   capacityInUseInKb str success Total capacity of the storage pool.
   deviceIds list success Device Ids of the storage pool.
   unusedCapacityInKb str success Unused capacity of the storage pool.
  useRfcache bool success Enable/Disable RFcache on a specific storage pool.
  useRmcache bool success Enable/Disable RMcache on a specific storage pool.
+ +### Authors +* Arindam Datta (@dattaarindam) +* P Srinivas Rao (@srinivas-rao5) + +-------------------------------- +# Volume Module + +Manage volumes on Dell PowerFlex + +### Synopsis + Managing volumes on PowerFlex storage system includes creating, getting details, modifying attributes and deleting volume. + It also includes adding/removing snapshot policy, mapping/unmapping volume to/from SDC and listing associated snapshots. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
vol_name str
The name of the volume.
Mandatory for create operation.
It is unique across the PowerFlex array.
Mutually exclusive with vol_id.
vol_id str
The ID of the volume.
Except create operation, all other operations can be performed using vol_id.
Mutually exclusive with vol_name.
storage_pool_name str
The name of the storage pool.
Either name or the id of the storage pool is required for creating a volume.
During creation, if storage pool name is provided then either protection domain name or id must be mentioned along with it.
Mutually exclusive with storage_pool_id.
storage_pool_id str
The ID of the storage pool.
Either name or the id of the storage pool is required for creating a volume.
Mutually exclusive with storage_pool_name.
protection_domain_name str
The name of the protection domain.
During creation of a volume, if more than one storage pool exists with the same name then either protection domain name or id must be mentioned along with it.
Mutually exclusive with protection_domain_id.
protection_domain_id str
The ID of the protection domain.
During creation of a volume, if more than one storage pool exists with the same name then either protection domain name or id must be mentioned along with it.
Mutually exclusive with protection_domain_name.
vol_type str
  • THICK_PROVISIONED
  • THIN_PROVISIONED

Type of volume provisioning.
compression_type str
  • NORMAL
  • NONE

Type of the compression method.
use_rmcache bool
Whether to use RM Cache or not.
snapshot_policy_name str
Name of the snapshot policy.
To remove/detach snapshot policy, empty snapshot_policy_id/snapshot_policy_name is to be passed along with auto_snap_remove_type.
snapshot_policy_id str
ID of the snapshot policy.
To remove/detach snapshot policy, empty snapshot_policy_id/snapshot_policy_name is to be passed along with auto_snap_remove_type.
auto_snap_remove_type str
  • remove
  • detach

Whether to remove or detach the snapshot policy.
To remove/detach snapshot policy, empty snapshot_policy_id/snapshot_policy_name is to be passed along with auto_snap_remove_type.
If the snapshot policy name/id is passed empty then auto_snap_remove_type is defaulted to detach.
size int
The size of the volume.
Size of the volume will be assigned as higher multiple of 8 GB.
cap_unit str
  • GB
  • TB

The unit of the volume size. It defaults to 'GB'.
vol_new_name str
New name of the volume. Used to rename the volume.
allow_multiple_mappings bool
Specifies whether to allow or not allow multiple mappings.
If the volume is mapped to one SDC then for every new mapping allow_multiple_mappings has to be passed as True.
sdc list
elements: dict

Specifies SDC parameters.
  sdc_name str
Name of the SDC.
Specify either sdc_name, sdc_id or sdc_ip.
Mutually exclusive with sdc_id and sdc_ip.
  sdc_id str
ID of the SDC.
Specify either sdc_name, sdc_id or sdc_ip.
Mutually exclusive with sdc_name and sdc_ip.
  sdc_ip str
IP of the SDC.
Specify either sdc_name, sdc_id or sdc_ip.
Mutually exclusive with sdc_id and sdc_ip.
  access_mode str
  • READ_WRITE
  • READ_ONLY
  • NO_ACCESS

Define the access mode for all mappings of the volume.
  bandwidth_limit int
Limit of volume network bandwidth.
Need to mention in multiple of 1024 Kbps.
To set no limit, 0 is to be passed.
  iops_limit int
Limit of volume IOPS.
Minimum IOPS limit is 11 and specify 0 for unlimited iops.
sdc_state str
  • mapped
  • unmapped

Mapping state of the SDC.
delete_snapshots bool
If True, the volume and all its dependent snapshots will be deleted.
If False, only the volume will be deleted.
It can be specified only when the state is absent.
It defaults to False, if not specified.
state str True
  • present
  • absent

State of the volume.
hostname str True
IP or FQDN of the PowerFlex host.
username str True
The username of the PowerFlex host.
password str True
The password of the PowerFlex host.
validate_certs 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 int 443
Port number through which communication happens with PowerFlex host.
timeout int 120
Time after which connection will get terminated.
It is to be mentioned in seconds.
+ +### Notes +* The check_mode is not supported. +* The modules present in the collection named as 'dellemc.powerflex' are built to support the Dell PowerFlex storage platform. + +### Examples +``` +- name: Create a volume + dellemc.powerflex.volume: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + vol_name: "sample_volume" + storage_pool_name: "pool_1" + protection_domain_name: "pd_1" + vol_type: "THICK_PROVISIONED" + compression_type: "NORMAL" + use_rmcache: True + size: 16 + state: "present" + +- name: Map a SDC to volume + dellemc.powerflex.volume: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + vol_name: "sample_volume" + allow_multiple_mappings: True + sdc: + - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764" + access_mode: "READ_WRITE" + sdc_state: "mapped" + state: "present" + +- name: Unmap a SDC to volume + dellemc.powerflex.volume: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + vol_name: "sample_volume" + sdc: + - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764" + sdc_state: "unmapped" + state: "present" + +- name: Map multiple SDCs to a volume + dellemc.powerflex.volume: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + vol_name: "sample_volume" + protection_domain_name: "pd_1" + sdc: + - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764" + access_mode: "READ_WRITE" + bandwidth_limit: 2048 + iops_limit: 20 + - sdc_ip: "198.10.xxx.xxx" + access_mode: "READ_ONLY" + allow_multiple_mappings: True + sdc_state: "mapped" + state: "present" + +- name: Get the details of the volume + dellemc.powerflex.volume: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + vol_id: "fe6c8b7100000005" + state: "present" + +- name: Modify the details of the Volume + dellemc.powerflex.volume: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + vol_name: "sample_volume" + storage_pool_name: "pool_1" + new_vol_name: "new_sample_volume" + size: 64 + state: "present" + +- name: Delete the Volume + dellemc.powerflex.volume: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + vol_name: "sample_volume" + delete_snapshots: False + state: "absent" + +- name: Delete the Volume and all its dependent snapshots + dellemc.powerflex.volume: + hostname: "{{hostname}}" + username: "{{username}}" + password: "{{password}}" + validate_certs: "{{validate_certs}}" + port: "{{port}}" + vol_name: "sample_volume" + delete_snapshots: True + state: "absent" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
volume_details dict When volume exists Details of the volume.
  id str success The ID of the volume.
  mappedSdcInfo dict success The details of the mapped SDC.
   accessMode str success Mapping access mode for the specified volume.
   limitBwInMbps int success Bandwidth limit for the SDC.
   limitIops int success IOPS limit for the SDC.
   sdcId str success ID of the SDC.
   sdcIp str success IP of the SDC.
   sdcName str success Name of the SDC.
  name str success Name of the volume.
  protectionDomainId str success ID of the protection domain in which volume resides.
  protectionDomainName str success Name of the protection domain in which volume resides.
  sizeInGb int success Size of the volume in Gb.
  sizeInKb int success Size of the volume in Kb.
  snapshotPolicyId str success ID of the snapshot policy associated with volume.
  snapshotPolicyName str success Name of the snapshot policy associated with volume.
  snapshotsList str success List of snapshots associated with the volume.
  statistics dict success Statistics details of the storage pool.
   numOfChildVolumes int success Number of child volumes.
   numOfMappedSdcs int success Number of mapped Sdcs of the volume.
  storagePoolId str success ID of the storage pool in which volume resides.
  storagePoolName str success Name of the storage pool in which volume resides.
+ +### Authors +* P Srinivas Rao (@srinivas-rao5) + +-------------------------------- diff --git a/ansible_collections/dellemc/powerflex/docs/Release Notes.md b/ansible_collections/dellemc/powerflex/docs/Release Notes.md new file mode 100644 index 00000000..562937fb --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/Release Notes.md @@ -0,0 +1,73 @@ +**Ansible Modules for Dell Technologies PowerFlex** +========================================= +### Release notes 1.5.0 + +> © 2022 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. + +Contents +------- +These release notes contain supplemental information about Ansible +Modules for Dell Technologies (Dell) PowerFlex. + +- [Revision History](#revision-history) +- [Product Description](#product-description) +- [New Features](#new-features-and-enhancements) +- [Known issues](#known-issues) +- [Limitations](#limitations) +- [Distribution](#distribution) +- [Documentation](#documentation) + +Revision history +---------------- +The table in this section lists the revision history of this document. + +Table 1. Revision history + +| Revision | Date | Description | +|----------|----------------|-------------------------------------------------------------| +| 01 | December 2022 | Current release of Ansible Modules for Dell PowerFlex 1.5.0 | + +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, devices, protection domain and MDM +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. + +New features and enhancements +----------------------------- +Along with the previous release deliverables, this release supports following features - +- Info module is enhanced to support the listing replication consistency groups. +- Added New module for replication consistency groups. +- Updated modules to adhere with ansible community guidelines. +- Renamed gateway_host to hostname +- Renamed verifycert to validate_certs. + +Known issues +------------ +- Setting the RF cache and performance profile of the SDS during its creation fails intermittently on PowerFlex version 3.5 + +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.5.0) page. + +Documentation +------------- +The documentation is available on [Ansible Modules for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/1.5.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 new file mode 100644 index 00000000..d8bf879f --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/SECURITY.md @@ -0,0 +1,22 @@ + + +# Security policy + +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.5.0/docs/CONTRIBUTING.md#Pull-requests) for more information. + +## Reporting a vulnerability + +Have you discovered a security vulnerability in this project? +We ask you to alert the maintainers by sending an email, describing the issue, impact, and fix - if applicable. + +You can reach the Ansible modules for Dell PowerFlex maintainers at ansible.team@dell.com. diff --git a/ansible_collections/dellemc/powerflex/docs/SUPPORT.md b/ansible_collections/dellemc/powerflex/docs/SUPPORT.md new file mode 100644 index 00000000..26e6f159 --- /dev/null +++ b/ansible_collections/dellemc/powerflex/docs/SUPPORT.md @@ -0,0 +1,12 @@ + + +## Support +For all your support needs you can interact with us on [GitHub](https://github.com/dell/ansible-powerflex) by creating a [GitHub Issue](https://github.com/dell/ansible-powerflex/issues) or through the [Ansible Community](https://www.dell.com/community/Automation/bd-p/Automation). -- cgit v1.2.3