From 1f9abc3cf2a101cc11533d4839bef8bb903f389a Mon Sep 17 00:00:00 2001 From: Datta Date: Tue, 13 Dec 2022 19:32:21 +0530 Subject: [PATCH 1/3] Release Version 1.8.0 --- CHANGELOG.rst | 149 + README.md | 84 +- changelogs/changelog.yaml | 164 + changelogs/config.yaml | 33 + docs/BRANCHING.md | 8 +- docs/CONTRIBUTING.md | 8 +- docs/INSTALLATION.md | 4 +- docs/ISSUE_TRIAGE.md | 19 +- docs/MAINTAINERS.md | 12 +- docs/MAINTAINER_GUIDE.md | 4 +- docs/Product Guide.md | 11574 ++++++++-------- docs/Release Notes.md | 45 +- docs/SECURITY.md | 2 +- galaxy.yml | 33 +- meta/runtime.yml | 96 +- plugins/doc_fragments/powerscale.py | 2 +- plugins/modules/nfs.py | 95 +- plugins/modules/smartquota.py | 2 +- tests/requirements.txt | 1 + .../{ignore-2.11.txt => ignore-2.14.txt} | 9 +- .../module_utils/mock_nfs_export_api.py | 134 + tests/unit/plugins/module_utils/test_utils.py | 2 +- .../unit/plugins/modules/test_networkrule.py | 6 +- tests/unit/plugins/modules/test_nfs_export.py | 215 + 24 files changed, 6403 insertions(+), 6298 deletions(-) create mode 100644 CHANGELOG.rst create mode 100644 changelogs/changelog.yaml create mode 100644 changelogs/config.yaml rename tests/sanity/{ignore-2.11.txt => ignore-2.14.txt} (88%) create mode 100644 tests/unit/plugins/module_utils/mock_nfs_export_api.py create mode 100644 tests/unit/plugins/modules/test_nfs_export.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst new file mode 100644 index 00000000..ca888331 --- /dev/null +++ b/CHANGELOG.rst @@ -0,0 +1,149 @@ +================================ +Dellemc.Powerscale Change Logs +================================ + +.. contents:: Topics + + +v1.8.0 +====== + +Minor Changes +------------- + +- Added support for security flavors while creating and modifying NFS export. + +v1.7.0 +====== + +Minor Changes +------------- + +- Access Zone, SMB, SmartQuota, User and Group module is enhanced to support NIS authentication provider. +- Info module is enhanced to support listing of NFS aliases. +- Support to create and modify additional parameters of an SMB share in SMB module. +- SyncIQ Policy module is enhanced to support accelerated_failback and restrict_target_network of a policy. + +New Modules +----------- + +- dellemc.powerscale.nfs_alias - Manage NFS aliases on a PowerScale Storage System + +v1.6.0 +====== + +Minor Changes +------------- + +- Added execution environment manifest file to support building an execution environment with ansible-builder. +- Added files required for Ansible execution environment. +- Check mode is supported for Info, Filepool Policy and Storagepool Tier modules. +- Filesystem module is enhanced to support ACL and container parameter. +- Info module is enhanced to support NodePools and Storagepool Tiers Subsets. +- SmartQuota module is enhanced to support container parameter. + +New Modules +----------- + +- dellemc.powerscale.filepoolpolicy - Manages file pool policy on PowerScale +- dellemc.powerscale.storagepooltier - Manages storage pool tier on PowerScale + +v1.5.0 +====== + +Minor Changes +------------- + +- ADS module is enhanced to support machine_account & organizational_unit parameters while creating ADS provider. +- Added rotating file handler for log files. +- Removal of dellemc_powerscale prefix from all the modules name. +- SmartQuota module is enhanced to support float values for Quota Parameters. +- Support for recursive force deletion of filesystem directories. + +New Modules +----------- + +- dellemc.powerscale.networksettings - Manages Network Settings on PowerScale Storage System +- dellemc.powerscale.smartpoolsettings - Manages Smartpool Settings on PowerScale Storage System + +v1.4.0 +====== + +Minor Changes +------------- + +- Access zone module is enhanced to support creation of an access zone. +- Gather facts module is enhanced to list network groupnets, network subnets, network pools, network rules and network interfaces. +- Support to retrieve and modify email settings in Settings module. +- Support to retrieve, add and remove NTP servers in Settings module. + +New Modules +----------- + +- dellemc.powerscale.groupnet - Manages groupnet configuration on PowerScale +- dellemc.powerscale.networkpool - Manages Network Pools on PowerScale Storage System +- dellemc.powerscale.networkrule - Manages Network provisioning rules for PowerScale Storage System +- dellemc.powerscale.settings - Manages general settings for PowerScale storage system +- dellemc.powerscale.subnet - Manages subnet configuration on PowerScale + +v1.3.0 +====== + +Minor Changes +------------- + +- Added dual licensing. +- Gather facts module is enhanced to list SyncIQ policies, SyncIQ Performance rules, SyncIQ reports, SyncIQ target reports, SyncIQ target cluster certificates. + +New Modules +----------- + +- dellemc.powerscale.synciqjob - Manage SyncIQ jobs on PowerScale +- dellemc.powerscale.synciqpolicy - Manage SyncIQ policies on PowerScale +- dellemc.powerscale.synciqreports - Provides the SyncIQ reports for PowerScale Storage System +- dellemc.powerscale.synciqrules - Manage SyncIQ performance rules on PowerScale Storage System. +- dellemc.powerscale.synciqtargetreports - Provides the SyncIQ target reports for PowerScale Storage System + +v1.2.0 +====== + +Minor Changes +------------- + +- Filesystem module is enhanced to support additional quota parameters. +- Gather facts module is enhanced to list Nodes, NFS Exports, SMB shares and Active clients. +- Map or unmap authentication providers to/from an access zone +- Rebranded Isilon to PowerScale. +- SmartQuota module is enhanced to support CRUD operations for default-user and default-group quotas. +- Support extended for OneFS version 9.1.0. + +New Modules +----------- + +- dellemc.powerscale.ads - Manages the ADS authentication provider on PowerScale +- dellemc.powerscale.ldap - Manage LDAP authentication provider on PowerScale +- dellemc.powerscale.node - Get node info of PowerScale Storage System. + +v1.1.0 +====== + +New Modules +----------- + +- dellemc.powerscale.smartquota - Manage Smart Quotas on PowerScale + +v1.0.0 +====== + +New Modules +----------- + +- dellemc.powerscale.accesszone - Manages access zones on PowerScale +- dellemc.powerscale.filesystem - Manage Filesystems on PowerScale +- dellemc.powerscale.group - Manage Groups on the PowerScale Storage System +- dellemc.powerscale.info - Gathering information about PowerScale Storage +- dellemc.powerscale.nfs - Manage NFS exports on a PowerScale Storage System +- dellemc.powerscale.smb - Manage SMB shares on PowerScale Storage System. You can perform these operations +- dellemc.powerscale.snapshot - Manage snapshots on PowerScale +- dellemc.powerscale.snapshotschedule - Manage snapshot schedules on PowerScale +- dellemc.powerscale.user - Manage users on the PowerScale Storage System diff --git a/README.md b/README.md index 11b5fb76..c709d7e7 100644 --- a/README.md +++ b/README.md @@ -29,15 +29,15 @@ The tasks can be executed by running simple playbooks written in yaml syntax. ## Table of contents -* [Code of conduct](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/CODE_OF_CONDUCT.md) -* [Maintainer guide](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/MAINTAINER_GUIDE.md) -* [Committer guide](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/COMMITTER_GUIDE.md) -* [Contributing guide](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/CONTRIBUTING.md) -* [Branching strategy](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/BRANCHING.md) -* [List of adopters](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/ADOPTERS.md) -* [Maintainers](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/MAINTAINERS.md) -* [Support](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/SUPPORT.md) -* [Security](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/SECURITY.md) +* [Code of conduct](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/CODE_OF_CONDUCT.md) +* [Maintainer guide](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/MAINTAINER_GUIDE.md) +* [Committer guide](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/COMMITTER_GUIDE.md) +* [Contributing guide](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/CONTRIBUTING.md) +* [Branching strategy](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/BRANCHING.md) +* [List of adopters](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/ADOPTERS.md) +* [Maintainers](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/MAINTAINERS.md) +* [Support](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/SUPPORT.md) +* [Security](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/SECURITY.md) * [License](#license) * [Supported platforms](#supported-platforms) * [Prerequisites](#prerequisites) @@ -46,7 +46,7 @@ The tasks can be executed by running simple playbooks written in yaml syntax. * [Maintanence](#maintanence) ## License -Ansible collection for PowerScale is released and licensed under the GPL-3.0 license. See [LICENSE](https://github.com/dell/ansible-powerscale/blob/1.7.0/LICENSE) for the full terms. Ansible modules and modules utilities that are part of the Ansible collection for PowerScale are released and licensed under the Apache 2.0 license. See [MODULE-LICENSE](https://github.com/dell/ansible-powerscale/blob/1.7.0/MODULE-LICENSE) for the full terms. +Ansible collection for PowerScale is released and licensed under the GPL-3.0 license. See [LICENSE](https://github.com/dell/ansible-powerscale/blob/1.8.0/LICENSE) for the full terms. Ansible modules and modules utilities that are part of the Ansible collection for PowerScale are released and licensed under the Apache 2.0 license. See [MODULE-LICENSE](https://github.com/dell/ansible-powerscale/blob/1.8.0/MODULE-LICENSE) for the full terms. ## Supported platforms * Dell PowerScale OneFS versions 9.2.x, 9.3.x and 9.4.x @@ -54,44 +54,44 @@ Ansible collection for PowerScale is released and licensed under the GPL-3.0 lic ## Prerequisites This table provides information about the software prerequisites for the Ansible Modules for Dell PowerScale. -| **Ansible Modules** | **OneFS Version** | **Red Hat Enterprise Linux** | **Python version** | **Python SDK version** | **Ansible** | -|---------------------|-----------------------|------------------------------|--------------------|----------------------------|-------------| -| v1.7.0 | 9.2.x
9.3.x
9.4.x | 8.4
8.5 | 3.6
3.9
3.10 | 9.1.0 | 2.11
2.12
2.13 | +| **Ansible Modules** | **OneFS Version** | **Python version** | **Python SDK version** | **Ansible** | +|---------------------|-----------------------|--------------------|----------------------------|--------------------------| +| v1.8.0 | 9.2.x
9.3.x
9.4.x | 3.9
3.10
3.11 | 9.1.0 | 2.12
2.13
2.14 | # List of Ansible modules for Dell PowerScale - * [File System Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#file-system-module) - * [Access Zone Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#access-zone-module) - * [Users Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#user-module) - * [Groups Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#group-module) - * [Snapshot Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#snapshot-module) - * [Snapshot Schedule Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#snapshot-schedule-module) - * [NFS Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#nfs-module) - * [SMB Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#smb-module) - * [Smart Quota Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#smb-module) - * [Info Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#info-module) - * [Active Directory Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#ads-module) - * [LDAP Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#ldap-module) - * [Node Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#node-module) - * [SyncIQ Policy Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#synciq-policy-module) - * [SyncIQ Jobs Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#synciq-job-module) - * [SyncIQ Performance Rules Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#synciq-rules-module) - * [SyncIQ Reports Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#synciq-reports-module) - * [SyncIQ Target Reports Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#synciq-target-reports-module) - * [Groupnet Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#groupnet-module) - * [Subnet Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#subnet-module) - * [Network Pool Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#network-pool-module) - * [Network Rule Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#network-rule-module) - * [NFS Alias Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#nfs-alias-module) - * [Settings Module](https://github.com/dell/ansible-powerscale/tree/1.7.0/docs/Product%20Guide.md#settings-module) - * [Network Setting Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#network-settings-module) - * [Smart Pool Setting Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#smartpool-settings-module) - * [Filepool Plicy Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#filepool-module) - * [Storagepool Tier Module](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/Product%20Guide.md#storagepool-tier-module) + * [File System Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#file-system-module) + * [Access Zone Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#access-zone-module) + * [Users Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#user-module) + * [Groups Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#group-module) + * [Snapshot Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#snapshot-module) + * [Snapshot Schedule Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#snapshot-schedule-module) + * [NFS Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#nfs-module) + * [SMB Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#smb-module) + * [Smart Quota Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#smb-module) + * [Info Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#info-module) + * [Active Directory Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#ads-module) + * [LDAP Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#ldap-module) + * [Node Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#node-module) + * [SyncIQ Policy Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#synciq-policy-module) + * [SyncIQ Jobs Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#synciq-job-module) + * [SyncIQ Performance Rules Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#synciq-rules-module) + * [SyncIQ Reports Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#synciq-reports-module) + * [SyncIQ Target Reports Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#synciq-target-reports-module) + * [Groupnet Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#groupnet-module) + * [Subnet Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#subnet-module) + * [Network Pool Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#network-pool-module) + * [Network Rule Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#network-rule-module) + * [NFS Alias Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#nfs-alias-module) + * [Settings Module](https://github.com/dell/ansible-powerscale/tree/1.8.0/docs/Product%20Guide.md#settings-module) + * [Network Setting Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#network-settings-module) + * [Smart Pool Setting Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#smartpool-settings-module) + * [Filepool Plicy Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#filepool-module) + * [Storagepool Tier Module](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/Product%20Guide.md#storagepool-tier-module) ## Installation and execution of Ansible modules for Dell PowerScale -The installation and execution steps of Ansible modules for Dell PowerScale can be found [here](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/INSTALLATION.md) +The installation and execution steps of Ansible modules for Dell PowerScale can be found [here](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/INSTALLATION.md). ## Maintanence Ansible Modules for Dell Technologies PowerScale deprecation cycle is aligned with [Ansible](https://docs.ansible.com/ansible/latest/dev_guide/module_lifecycle.html). diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml new file mode 100644 index 00000000..556a4167 --- /dev/null +++ b/changelogs/changelog.yaml @@ -0,0 +1,164 @@ +ancestor: null +releases: + 1.0.0: + modules: + - description: Manages access zones on PowerScale + name: accesszone + namespace: '' + - description: Manage Filesystems on PowerScale + name: filesystem + namespace: '' + - description: Manage Groups on the PowerScale Storage System + name: group + namespace: '' + - description: Gathering information about PowerScale Storage + name: info + namespace: '' + - description: Manage NFS exports on a PowerScale Storage System + name: nfs + namespace: '' + - description: Manage SMB shares on PowerScale Storage System. You can perform + these operations + name: smb + namespace: '' + - description: Manage snapshots on PowerScale + name: snapshot + namespace: '' + - description: Manage snapshot schedules on PowerScale + name: snapshotschedule + namespace: '' + - description: Manage users on the PowerScale Storage System + name: user + namespace: '' + release_date: '2020-03-19' + 1.1.0: + modules: + - description: Manage Smart Quotas on PowerScale + name: smartquota + namespace: '' + release_date: '2020-06-12' + 1.2.0: + changes: + minor_changes: + - Filesystem module is enhanced to support additional quota parameters. + - Gather facts module is enhanced to list Nodes, NFS Exports, SMB shares and + Active clients. + - Map or unmap authentication providers to/from an access zone + - Rebranded Isilon to PowerScale. + - SmartQuota module is enhanced to support CRUD operations for default-user + and default-group quotas. + - Support extended for OneFS version 9.1.0. + modules: + - description: Manages the ADS authentication provider on PowerScale + name: ads + namespace: '' + - description: Manage LDAP authentication provider on PowerScale + name: ldap + namespace: '' + - description: Get node info of PowerScale Storage System. + name: node + namespace: '' + release_date: '2021-06-25' + 1.3.0: + changes: + minor_changes: + - Added dual licensing. + - Gather facts module is enhanced to list SyncIQ policies, SyncIQ Performance + rules, SyncIQ reports, SyncIQ target reports, SyncIQ target cluster certificates. + modules: + - description: Manage SyncIQ jobs on PowerScale + name: synciqjob + namespace: '' + - description: Manage SyncIQ policies on PowerScale + name: synciqpolicy + namespace: '' + - description: Provides the SyncIQ reports for PowerScale Storage System + name: synciqreports + namespace: '' + - description: Manage SyncIQ performance rules on PowerScale Storage System. + name: synciqrules + namespace: '' + - description: Provides the SyncIQ target reports for PowerScale Storage System + name: synciqtargetreports + namespace: '' + release_date: '2021-09-23' + 1.4.0: + changes: + minor_changes: + - Access zone module is enhanced to support creation of an access zone. + - Gather facts module is enhanced to list network groupnets, network subnets, + network pools, network rules and network interfaces. + - Support to retrieve and modify email settings in Settings module. + - Support to retrieve, add and remove NTP servers in Settings module. + modules: + - description: Manages groupnet configuration on PowerScale + name: groupnet + namespace: '' + - description: Manages Network Pools on PowerScale Storage System + name: networkpool + namespace: '' + - description: Manages Network provisioning rules for PowerScale Storage System + name: networkrule + namespace: '' + - description: Manages general settings for PowerScale storage system + name: settings + namespace: '' + - description: Manages subnet configuration on PowerScale + name: subnet + namespace: '' + release_date: '2021-12-16' + 1.5.0: + changes: + minor_changes: + - ADS module is enhanced to support machine_account & organizational_unit parameters + while creating ADS provider. + - Added rotating file handler for log files. + - Removal of dellemc_powerscale prefix from all the modules name. + - SmartQuota module is enhanced to support float values for Quota Parameters. + - Support for recursive force deletion of filesystem directories. + modules: + - description: Manages Network Settings on PowerScale Storage System + name: networksettings + namespace: '' + - description: Manages Smartpool Settings on PowerScale Storage System + name: smartpoolsettings + namespace: '' + release_date: '2022-03-25' + 1.6.0: + changes: + minor_changes: + - Added execution environment manifest file to support building an execution + environment with ansible-builder. + - Added files required for Ansible execution environment. + - Check mode is supported for Info, Filepool Policy and Storagepool Tier modules. + - Filesystem module is enhanced to support ACL and container parameter. + - Info module is enhanced to support NodePools and Storagepool Tiers Subsets. + - SmartQuota module is enhanced to support container parameter. + modules: + - description: Manages file pool policy on PowerScale + name: filepoolpolicy + namespace: '' + - description: Manages storage pool tier on PowerScale + name: storagepooltier + namespace: '' + release_date: '2022-06-28' + 1.7.0: + changes: + minor_changes: + - Access Zone, SMB, SmartQuota, User and Group module is enhanced to support + NIS authentication provider. + - Info module is enhanced to support listing of NFS aliases. + - Support to create and modify additional parameters of an SMB share in SMB + module. + - SyncIQ Policy module is enhanced to support accelerated_failback and restrict_target_network + of a policy. + modules: + - description: Manage NFS aliases on a PowerScale Storage System + name: nfs_alias + namespace: '' + release_date: '2022-09-27' + 1.8.0: + changes: + minor_changes: + - Added support for security flavors while creating and modifying NFS export. + release_date: '2022-12-20' diff --git a/changelogs/config.yaml b/changelogs/config.yaml new file mode 100644 index 00000000..a51e74fb --- /dev/null +++ b/changelogs/config.yaml @@ -0,0 +1,33 @@ +--- +changelog_filename_template: ../CHANGELOG.rst +changelog_filename_version_depth: 0 +changes_file: changelog.yaml +changes_format: combined +ignore_other_fragment_extensions: true +keep_fragments: false +mention_ancestor: true +new_plugins_after_name: removed_features +notesdir: fragments +prelude_section_name: release_summary +prelude_section_title: Release Summary +sanitize_changelog: true +sections: + - - major_changes + - Major Changes + - - minor_changes + - Minor Changes + - - breaking_changes + - Breaking Changes / Porting Guide + - - deprecated_features + - Deprecated Features + - - removed_features + - Removed Features (previously deprecated) + - - security_fixes + - Security Fixes + - - bugfixes + - Bugfixes + - - known_issues + - Known Issues +title: Dellemc.Powerscale +trivial_section_name: trivial +use_fqcn: true diff --git a/docs/BRANCHING.md b/docs/BRANCHING.md index 79591a17..adfb792b 100644 --- a/docs/BRANCHING.md +++ b/docs/BRANCHING.md @@ -16,7 +16,7 @@ Ansible modules for Dell PowerScale follows a scaled trunk branching strategy wh | Branch Type | Example | Comment | |--------------|-----------------------------------|-------------------------------------------| -| master | master | | +| 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 | @@ -25,8 +25,8 @@ Ansible modules for Dell PowerScale follows a scaled trunk branching strategy wh ## Steps for working on a release branch 1. Fork the repository. -2. Create a branch off of the master branch. The branch name should follow [branch naming convention](#branch-naming-convention). +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 master branch, perform a rebase of those changes into your branch. -5. Open a [pull request](https://github.com/dell/ansible-powerscale/pulls) between your branch and the upstream master 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-powerscale/pulls) between your branch and the upstream main branch. 6. Once your pull request has merged, your branch can be deleted. diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 34744493..3259e5e6 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -10,7 +10,7 @@ You may obtain a copy of the License at # How to contribute -Become one of the contributors to this project! We thrive to build a welcoming and open community for anyone who wants to use the project or contribute to it. There are just a few small guidelines you need to follow. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](https://github.com/dell/ansible-powerscale/blob/1.7.0/CODE_OF_CONDUCT.md). +Become one of the contributors to this project! We thrive to build a welcoming and open community for anyone who wants to use the project or contribute to it. There are just a few small guidelines you need to follow. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](https://github.com/dell/ansible-powerscale/blob/1.8.0/CODE_OF_CONDUCT.md). ## Table of contents @@ -76,7 +76,7 @@ Triage helps ensure that issues resolve quickly by: If you don't have the knowledge or time to code, consider helping with _issue triage_. The Ansible modules for Dell PowerScale 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-powerscale/blob/1.7.0/ISSUE_TRIAGE.md). +Read more about the ways you can [Triage issues](https://github.com/dell/ansible-powerscale/blob/1.8.0/ISSUE_TRIAGE.md). ## Your first contribution @@ -89,7 +89,7 @@ When you're ready to contribute, it's time to create a pull request. ## Branching -* [Branching Strategy for Ansible modules for Dell PowerScale](https://github.com/dell/ansible-powerscale/blob/1.7.0/BRANCHING.md) +* [Branching Strategy for Ansible modules for Dell PowerScale](https://github.com/dell/ansible-powerscale/blob/1.8.0/BRANCHING.md) ## Signing your commits @@ -144,7 +144,7 @@ Make sure that the title for your pull request uses the same format as the subje ### Quality gates for pull requests -GitHub Actions are used to enforce quality gates when a pull request is created or when any commit is made to the pull request. These GitHub Actions enforce our minimum code quality requirement for any code that get checked into the repository. If any of the quality gates fail, it is expected that the contributor will look into the check log, understand the problem and resolve the issue. If help is needed, please feel free to reach out the maintainers of the project for [support](https://github.com/dell/ansible-powerscale/blob/1.7.0/SUPPORT.md). +GitHub Actions are used to enforce quality gates when a pull request is created or when any commit is made to the pull request. These GitHub Actions enforce our minimum code quality requirement for any code that get checked into the repository. If any of the quality gates fail, it is expected that the contributor will look into the check log, understand the problem and resolve the issue. If help is needed, please feel free to reach out the maintainers of the project for [support](https://github.com/dell/ansible-powerscale/blob/1.8.0/SUPPORT.md). #### Code sanitization diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 27147d93..69e505c4 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -38,7 +38,7 @@ Based on which PowerScale OneFS version is being used, use this procedure to ins #### Offline installation of collections 1. Download the latest tar build from either of the available distribution channels [Ansible Galaxy](https://galaxy.ansible.com/dellemc/powerscale) /[Automation Hub](https://console.redhat.com/ansible/automation-hub/repo/published/dellemc/powerscale) and use this command to install the collection anywhere in your system: - ansible-galaxy collection install dellemc-powerscale-1.7.0.tar.gz -p + ansible-galaxy collection install dellemc-powerscale-1.8.0.tar.gz -p 2. Set the environment variable: @@ -65,7 +65,7 @@ Based on which PowerScale OneFS version is being used, use this procedure to ins ## Ansible modules execution -The Ansible server must be configured with Python library for OneFS to run the Ansible playbooks. The [Documents](https://github.com/dell/ansible-powerscale/blob/1.7.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 need to be configured before running the modules. +The Ansible server must be configured with Python library for OneFS to run the Ansible playbooks. The [Documents](https://github.com/dell/ansible-powerscale/blob/1.8.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 need to be configured before running the modules. ## SSL certificate validation diff --git a/docs/ISSUE_TRIAGE.md b/docs/ISSUE_TRIAGE.md index 7e08d610..3c36f9dc 100644 --- a/docs/ISSUE_TRIAGE.md +++ b/docs/ISSUE_TRIAGE.md @@ -43,7 +43,7 @@ Should explain what happened, what was expected and how to reproduce it together - Ansible Version: [e.g. 2.13] - Python Version [e.g. 3.10] - - Ansible modules for Dell PowerScale Version: [e.g. 1.7.0] + - Ansible modules for Dell PowerScale Version: [e.g. 1.8.0] - PowerScale SDK version: [e.g. isi-sdk-9-1-0] - Any other additional information... @@ -118,7 +118,7 @@ If it's not perfectly clear that it's an actual bug, quickly try to reproduce it In general bugs and feature request issues should be labeled with a priority. -This is the most difficult thing with triaging issues since it requires a lot of knowledge, context and experience before being able to think of and start feel comfortable adding a certain priority label. +Adding priority levels can be difficult. Ensure you have the knowledge, context, and the experience before prioritizing any issues. If you have any uncertainty as to which priority level to assign, please ask the maintainers for help. The key here is asking for help and discuss issues to understand how more experienced project members think and reason. By doing that you learn more and eventually be more and more comfortable with prioritizing issues. @@ -126,13 +126,13 @@ In case there is an uncertainty around the prioritization of an issue, please as | Label | Description | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -| `priority/critical` | Highest priority. Must be actively worked on as someone's top priority right now. | +| `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 right now. +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 @@ -141,7 +141,7 @@ In case there is an uncertainty around the prioritization of an issue, please as 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 right now. +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 @@ -154,7 +154,7 @@ In case there is an uncertainty around the prioritization of an issue, please as ### 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 changes to be higher. +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 @@ -163,9 +163,10 @@ Depending on the issue and/or priority, it's always a good idea to consider sign 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 signal to users subscribed to updates of the issue. - - Explain that the issue would be nice to get resolved, but it isn't prioritized to work on by maintainers for an unforeseen future. - - If possible or applicable, try to help contributors getting starting by adding pointers and references to what code/files need to be changed and/or ideas of a good way to solve/implement the issue. +1. Kindly and politely add a comment to alert update subscribers. + - Explain the issue and the 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 ideas 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. diff --git a/docs/MAINTAINERS.md b/docs/MAINTAINERS.md index 72fac72f..24ab255d 100644 --- a/docs/MAINTAINERS.md +++ b/docs/MAINTAINERS.md @@ -10,8 +10,10 @@ You may obtain a copy of the License at # Maintainers -* @ananthu-kuttattu -* @bhavneet-sharma -* @jennifer-john -* @pavan-mudunuri -* @trisha-datta +* 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/docs/MAINTAINER_GUIDE.md b/docs/MAINTAINER_GUIDE.md index 7a601b4f..ade25c40 100644 --- a/docs/MAINTAINER_GUIDE.md +++ b/docs/MAINTAINER_GUIDE.md @@ -10,7 +10,7 @@ You may obtain a copy of the License at # Maintainer guidelines -As a Maintainer of this project you have the responsibility of keeping true to the vision of the project with unprecedented 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. +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 @@ -27,7 +27,7 @@ If a candidate is approved, a Maintainer contacts the candidate to invite them t ## Maintainer policies * Lead by example -* Follow the [Code of Conduct](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/CODE_OF_CONDUCT.md) and the guidelines in the [Contributing](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/CONTRIBUTING.md) and [Committer](https://github.com/dell/ansible-powerscale/blob/1.7.0/docs/COMMITTER_GUIDE.md) guides +* Follow the [Code of Conduct](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/CODE_OF_CONDUCT.md) and the guidelines in the [Contributing](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/CONTRIBUTING.md) and [Committer](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/COMMITTER_GUIDE.md) guides * Promote a friendly and collaborative environment within our community * Be actively engaged in discussions, answering questions, updating defects, and reviewing pull requests * Criticize code, not people. Ideally, tell the contributor a better way to do what they need. diff --git a/docs/Product Guide.md b/docs/Product Guide.md index eea2c194..596f540d 100644 --- a/docs/Product Guide.md +++ b/docs/Product Guide.md @@ -1,24 +1,24 @@ # Ansible Modules for Dell Technologies PowerScale -## Product Guide 1.7.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. +## Product Guide 1.8.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 -* [Smart Pool Setting Module](#smart-pool-setting-module) +* [Access Zone Module](#access-zone-module) * [Synopsis](#synopsis) * [Parameters](#parameters) * [Notes](#notes) * [Examples](#examples) * [Return Values](#return-values) * [Authors](#authors) -* [SyncIQ Jobs Module](#synciq-jobs-module) +* [Active Directory Module](#active-directory-module) * [Synopsis](#synopsis-1) * [Parameters](#parameters-1) * [Notes](#notes-1) * [Examples](#examples-1) * [Return Values](#return-values-1) * [Authors](#authors-1) -* [NFS Alias Module](#nfs-alias-module) +* [File Pool Policy Module](#file-pool-policy-module) * [Synopsis](#synopsis-2) * [Parameters](#parameters-2) * [Notes](#notes-2) @@ -32,14 +32,14 @@ * [Examples](#examples-3) * [Return Values](#return-values-3) * [Authors](#authors-3) -* [Smart Quota Module](#smart-quota-module) +* [Group Module](#group-module) * [Synopsis](#synopsis-4) * [Parameters](#parameters-4) * [Notes](#notes-4) * [Examples](#examples-4) * [Return Values](#return-values-4) * [Authors](#authors-4) -* [SyncIQ Performance Rules Module](#synciq-performance-rules-module) +* [GroupNet Module](#groupnet-module) * [Synopsis](#synopsis-5) * [Parameters](#parameters-5) * [Notes](#notes-5) @@ -53,105 +53,105 @@ * [Examples](#examples-6) * [Return Values](#return-values-6) * [Authors](#authors-6) -* [SyncIQ Policy Module](#synciq-policy-module) +* [Network Pool Module](#network-pool-module) * [Synopsis](#synopsis-7) * [Parameters](#parameters-7) * [Notes](#notes-7) * [Examples](#examples-7) * [Return Values](#return-values-7) * [Authors](#authors-7) -* [Filepool Policy Module](#filepool-policy-module) +* [Network Rule Module](#network-rule-module) * [Synopsis](#synopsis-8) * [Parameters](#parameters-8) * [Notes](#notes-8) * [Examples](#examples-8) * [Return Values](#return-values-8) * [Authors](#authors-8) -* [Storagepool Tier Module](#storagepool-tier-module) +* [Network Settings Module](#network-settings-module) * [Synopsis](#synopsis-9) * [Parameters](#parameters-9) * [Notes](#notes-9) * [Examples](#examples-9) * [Return Values](#return-values-9) * [Authors](#authors-9) -* [Users Module](#users-module) +* [NFS Export Module](#nfs-export-module) * [Synopsis](#synopsis-10) * [Parameters](#parameters-10) * [Notes](#notes-10) * [Examples](#examples-10) * [Return Values](#return-values-10) * [Authors](#authors-10) -* [Groupnet Module](#groupnet-module) +* [NFS Alias Module](#nfs-alias-module) * [Synopsis](#synopsis-11) * [Parameters](#parameters-11) * [Notes](#notes-11) * [Examples](#examples-11) * [Return Values](#return-values-11) * [Authors](#authors-11) -* [SMB Module](#smb-module) +* [Node Module](#node-module) * [Synopsis](#synopsis-12) * [Parameters](#parameters-12) * [Notes](#notes-12) * [Examples](#examples-12) * [Return Values](#return-values-12) * [Authors](#authors-12) -* [Snapshot Module](#snapshot-module) +* [Settings Module](#settings-module) * [Synopsis](#synopsis-13) * [Parameters](#parameters-13) * [Notes](#notes-13) * [Examples](#examples-13) * [Return Values](#return-values-13) * [Authors](#authors-13) -* [Active Directory Module](#active-directory-module) +* [Smart Pool Settings Module](#smart-pool-settings-module) * [Synopsis](#synopsis-14) * [Parameters](#parameters-14) * [Notes](#notes-14) * [Examples](#examples-14) * [Return Values](#return-values-14) * [Authors](#authors-14) -* [Info Module](#info-module) +* [Smart Quota Module](#smart-quota-module) * [Synopsis](#synopsis-15) * [Parameters](#parameters-15) * [Notes](#notes-15) * [Examples](#examples-15) * [Return Values](#return-values-15) * [Authors](#authors-15) -* [Groups Module](#groups-module) +* [SMB Module](#smb-module) * [Synopsis](#synopsis-16) * [Parameters](#parameters-16) * [Notes](#notes-16) * [Examples](#examples-16) * [Return Values](#return-values-16) * [Authors](#authors-16) -* [Subnet Module](#subnet-module) +* [Snapshot Schedule Module](#snapshot-schedule-module) * [Synopsis](#synopsis-17) * [Parameters](#parameters-17) * [Notes](#notes-17) * [Examples](#examples-17) * [Return Values](#return-values-17) * [Authors](#authors-17) -* [Network Rule Module](#network-rule-module) +* [Storage Pool Tier Module](#storage-pool-tier-module) * [Synopsis](#synopsis-18) * [Parameters](#parameters-18) * [Notes](#notes-18) * [Examples](#examples-18) * [Return Values](#return-values-18) * [Authors](#authors-18) -* [Network Setting Module](#network-setting-module) +* [SubNet Module](#subnet-module) * [Synopsis](#synopsis-19) * [Parameters](#parameters-19) * [Notes](#notes-19) * [Examples](#examples-19) * [Return Values](#return-values-19) * [Authors](#authors-19) -* [Network Pool Module](#network-pool-module) +* [SyncIQ Job Module](#synciq-job-module) * [Synopsis](#synopsis-20) * [Parameters](#parameters-20) * [Notes](#notes-20) * [Examples](#examples-20) * [Return Values](#return-values-20) * [Authors](#authors-20) -* [Access Zone Module](#access-zone-module) +* [SyncIQ Policy Module](#synciq-policy-module) * [Synopsis](#synopsis-21) * [Parameters](#parameters-21) * [Notes](#notes-21) @@ -165,56 +165,42 @@ * [Examples](#examples-22) * [Return Values](#return-values-22) * [Authors](#authors-22) -* [Node Module](#node-module) +* [SyncIQ Performance Rules Module](#synciq-performance-rules-module) * [Synopsis](#synopsis-23) * [Parameters](#parameters-23) * [Notes](#notes-23) * [Examples](#examples-23) * [Return Values](#return-values-23) * [Authors](#authors-23) -* [NFS Module](#nfs-module) +* [SyncIQ Target Reorts Module](#synciq-target-reorts-module) * [Synopsis](#synopsis-24) * [Parameters](#parameters-24) * [Notes](#notes-24) * [Examples](#examples-24) * [Return Values](#return-values-24) * [Authors](#authors-24) -* [Snapshot Schedule Module](#snapshot-schedule-module) +* [User Module](#user-module) * [Synopsis](#synopsis-25) * [Parameters](#parameters-25) * [Notes](#notes-25) * [Examples](#examples-25) * [Return Values](#return-values-25) * [Authors](#authors-25) -* [Settings Module](#settings-module) - * [Synopsis](#synopsis-26) - * [Parameters](#parameters-26) - * [Notes](#notes-26) - * [Examples](#examples-26) - * [Return Values](#return-values-26) - * [Authors](#authors-26) -* [SyncIQ Target Reports Module](#synciq-target-reports-module) - * [Synopsis](#synopsis-27) - * [Parameters](#parameters-27) - * [Notes](#notes-27) - * [Examples](#examples-27) - * [Return Values](#return-values-27) - * [Authors](#authors-27) -------------- -# Smart Pool Setting Module +# Access Zone Module -Manages Smartpool Settings on PowerScale Storage System +Manages access zones on PowerScale ### Synopsis - Managing Smartpool Settings on the PowerScale Storage System includes modifying and retrieving details of Smartpool settings. + Managing access zones on the PowerScale storage system includes getting details of the access zone and modifying the smb and nfs settings. ### Parameters - + - + @@ -222,271 +208,232 @@ Manages Smartpool Settings on PowerScale Storage System - - - - - - - - - - - - - - - - - + - - + + - + - - + + - + - + - + - + - - - - - - - - - + - - - + + - - -
ParameterParameter Type Required DefaultDescription
virtual_hot_spare_hide_spare bool
Hide reserved virtual hot spare space from free space counts.
virtual_hot_spare_limit_percent int
The percent space to reserve for the virtual hot spare, from 0-20.
state az_name str True
  • present

State of smartpool settings.

The name of the access zone.
onefs_host path str True
IP address or FQDN of the PowerScale cluster.

Specifies the access zone base directory path.
port_no groupnet str 8080 groupnet0
Port number of the PowerScale cluster.It defaults to 8080 if not specified.

Name of the groupnet for create access zone.
verify_ssl create_path bool True
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user str True
username of the PowerScale cluster.

Determines if a path is created when a path does not exist.
api_password str True smb dict
the password of the PowerScale cluster.
- -### Notes -* The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. - -### Examples -``` - - name: Get SmartPool settings - dellemc.powerscale.smartpoolsettings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - state: "{{state_present}}" - - - name: Modify SmartPool setting - dellemc.powerscale.smartpoolsettings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - virtual_hot_spare_limit_percent: 10 - virtual_hot_spare_hide_spare: True - state: "present" -``` - -### Return Values - - - - - - - - - - - - - - - - - - - + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - + + + + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + -
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
smartpool_settings complex always Details of the smartpool settings
Specifies the default SMB setting parameters of access zone.
  automatically_manage_io_optimization str success Automatically manage IO optimization settings on files. create_permissions str default acl
  • default acl
  • Inherit mode bits
  • Use create mask and mode

Sets the default source permissions to apply when a file or directory is created.
  automatically_manage_protection str success Automatically manage protection settings on files. directory_create_mask str
Specifies the UNIX mask bits (octal) that are removed when a directory is created, restricting permissions.
Mask bits are applied before mode bits are applied.
  global_namespace_acceleration_enabled bool success Optimize namespace operations by storing metadata on SSDs. directory_create_mode str
Specifies the UNIX mode bits (octal) that are added when a directory is created, enabling permissions.
  global_namespace_acceleration_state str success Whether or not namespace operation optimizations are currently in effect. file_create_mask str
Specifies the UNIX mask bits (octal) that are removed when a file is created, restricting permissions.
  protect_directories_one_level_higher bool success Automatically add additional protection level to all directories. file_create_mode str
Specifies the UNIX mode bits (octal) that are added when a file is created, enabling permissions.
  spillover_enabled bool success Spill writes into other pools as needed. access_based_enumeration bool
Allows access based enumeration only on the files and folders that the requesting user can access.
  spillover_target dict success Target pool for spilled writes. access_based_enumeration_root_only bool
Access-based enumeration on only the root directory of the share.
  ssd_l3_cache_default_enabled bool success The L3 Cache default enabled state. This specifies whether L3 Cache should be enabled on new node pools. ntfs_acl_support bool
Allows ACLs to be stored and edited from SMB clients.
  ssd_qab_mirrors str success Controls number of mirrors of QAB blocks to place on SSDs. oplocks bool
An oplock allows clients to provide performance improvements by using locally-cached information.
nfs dict
Specifies the default NFS setting parameters of access zone.
  ssd_system_btree_mirrors str success Controls number of mirrors of system B-tree blocks to place on SSDs. commit_asynchronous bool
Set to True if NFS commit requests execute asynchronously.
  ssd_system_delta_mirrors str success Controls number of mirrors of system delta blocks to place on SSDs. nfsv4_domain str
Specifies the domain or realm through which users and groups are associated.
  virtual_hot_spare_deny_writes bool success Deny writes into reserved virtual hot spare space. nfsv4_allow_numeric_ids bool
If true, sends owners and groups as UIDs and GIDs when look up fails or if the 'nfsv4_no_name' property is set to 1.
  virtual_hot_spare_hide_spare bool success Hide reserved virtual hot spare space from free space counts. nfsv4_no_domain bool
If true, sends owners and groups without a domain name.
  virtual_hot_spare_limit_drives int success The number of drives to reserve for the virtual hot spare, from 0-4. nfsv4_no_domain_uids bool
If true, sends UIDs and GIDs without a domain name.
  virtual_hot_spare_limit_percent int success The percent space to reserve for the virtual hot spare, from 0-20. nfsv4_no_names bool
If true, sends owners and groups as UIDs and GIDs.
- -### Authors -* Meenakshi Dembi (@dembim) - --------------------------------- -# SyncIQ Jobs Module - -Manage SyncIQ jobs on PowerScale - -### Synopsis - Managing SyncIQ jobs on PowerScale storage system includes retrieving and modifying details of a SyncIQ job. - -### Parameters - - - - - - - - - - - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + - - + + - + @@ -494,7 +441,7 @@ Manage SyncIQ jobs on PowerScale - + @@ -502,7 +449,7 @@ Manage SyncIQ jobs on PowerScale - + @@ -510,7 +457,7 @@ Manage SyncIQ jobs on PowerScale - + @@ -518,7 +465,7 @@ Manage SyncIQ jobs on PowerScale - + @@ -528,152 +475,299 @@ Manage SyncIQ jobs on PowerScale
ParameterTypeRequiredDefaultChoicesDescription
job_id
provider_state str True
Specifies the id or name of the policy job.
  • add
  • remove

Defines whether the auth providers should be added or removed from access zone.
If auth_providers are given, then provider_state should also be specified.
add - indicates that the auth providers should be added to the access zone.
remove - indicates that auth providers should be removed from the access zone.
job_state str auth_providers list
elements: dict
  • run
  • pause
  • cancel

Specifies the state of the job.

Specifies the auth providers which need to be added or removed from access zone.
If auth_providers are given, then provider_state should also be specified.
state
  provider_name str True
Specifies the auth provider name which needs to be added or removed from access zone.
  provider_type str True
  • local
  • file
  • ldap
  • ads
  • nis

Specifies the auth provider type which needs to be added or removed from access zone.
state str True
  • absent
  • present

The state of the SyncIQ job after the task is performed.
present - indicates that the SyncIQ job should exist on the system.
absent - indicates that the SyncIQ job should not exist on the system.
  • present
  • absent

Defines whether the access zone should exist or not.
present - indicates that the access zone should exist on the system.
absent - indicates that the access zone should not exist on the system.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* There is delay in the actual state change of the SyncIQ job. The state change of jobs in 'scheduled' state is not supported. +* Deletion of access zone is not allowed through the Ansible module. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` -- name: Get SyncIQ job details - dellemc.powerscale.synciqjob: +- name: Get details of access zone including smb and nfs settings + dellemc.powerscale.accesszone: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - job_id: "Test_SSL" + az_name: "{{access zone}}" state: "present" -- name: Pause a SyncIQ job when in running state - dellemc.powerscale.synciqjob: +- name: Modify smb settings of access zone + dellemc.powerscale.accesszone: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - job_id: "Test_SSL" - job_state: "pause" + az_name: "{{access zone}}" + state: "present" + smb: + create_permissions: 'default acl' + directory_create_mask: '777' + directory_create_mode: '700' + file_create_mask: '700' + file_create_mode: '100' + access_based_enumeration: true + access_based_enumeration_root_only: false + ntfs_acl_support: true + oplocks: true + +- name: Modify nfs settings of access zone + dellemc.powerscale.accesszone: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + az_name: "{{access zone}}" state: "present" + nfs: + commit_asynchronous: false + nfsv4_allow_numeric_ids: false + nfsv4_domain: 'localhost' + nfsv4_no_domain: false + nfsv4_no_domain_uids: false + nfsv4_no_names: false -- name: Resume a SyncIQ job when in paused state - dellemc.powerscale.synciqjob: +- name: Modify smb and nfs settings of access zone + dellemc.powerscale.accesszone: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - job_id: "Test_SSL" - job_state: "run" + az_name: "{{access zone}}" state: "present" + smb: + create_permissions: 'default acl' + directory_create_mask: '777' + directory_create_mode: '700' + file_create_mask: '700' + file_create_mode: '100' + access_based_enumeration: true + access_based_enumeration_root_only: false + ntfs_acl_support: true + oplocks: true + nfs: + commit_asynchronous: false + nfsv4_allow_numeric_ids: false + nfsv4_domain: 'localhost' + nfsv4_no_domain: false + nfsv4_no_domain_uids: false + nfsv4_no_names: false -- name: Cancel a SyncIQ job - dellemc.powerscale.synciqjob: +- name: Add Auth Providers to the access zone + dellemc.powerscale.accesszone: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - job_id: "Test_SSL" - job_state: "cancel" - state: "absent" + az_name: "{{access zone}}" + provider_state: "add" + auth_providers: + - provider_name: "System" + provider_type: "file" + - provider_name: "ldap-prashant" + provider_type: "ldap" + state: "present" + +- name: Remove Auth Providers from the access zone + dellemc.powerscale.accesszone: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + az_name: "{{access zone}}" + provider_state: "remove" + auth_providers: + - provider_name: "System" + provider_type: "file" + state: "present" + +- name: Create New Access Zone + dellemc.powerscale.accesszone: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + az_name: "{{access zone}}" + path: "/ifs/test_dir" + groupnet: "groupnet1" + create_path: True + provider_state: "add" + auth_providers: + - provider_name: "System" + provider_type: "file" + state: "present" ``` ### Return Values - + - + - - - - - - - + - - + + - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - -
KeyKey Type Returned Description
changed bool always Whether or not the resource has changed.
job_details access_zone_details complex When SyncIQ job exists The SyncIQ job details. When access zone exists The access zone details.
  action str success The action to be taken by this job.
  id str nfs_settings complex success A unique identifier for this object. NFS settings of access zone
  policy_id str success The id of the policy from which the job is triggered.
  policy_name str success The name of the policy from which this job is triggered.
  state str success The state of the job.
   export_settings complex success Default values for NFS exports
    commit_asynchronous bool success Set to True if NFS commit requests execute asynchronously
   zone_settings complex success NFS server settings for this zone
    nfsv4_allow_numeric_ids bool success If true, sends owners and groups as UIDs and GIDs when look up fails or if the 'nfsv4_no_name' property is set to 1
    nfsv4_domain str success Specifies the domain or realm through which users and groups are associated
    nfsv4_no_domain bool success If true, sends owners and groups without a domain name
    nfsv4_no_domain_uids bool success If true, sends UIDs and GIDs without a domain name
    nfsv4_no_names bool success If true, sends owners and groups as UIDs and GIDs
  sync_type str smb_settings complex success The type of sync being performed by this job. SMB settings of access zone
modified_job complex When SyncIQ job is modified The modified SyncIQ job details.
   directory_create_mask(octal) str success UNIX mask bits for directory in octal format
   directory_create_mode(octal) str success UNIX mode bits for directory in octal format
   file_create_mask(octal) str success UNIX mask bits for file in octal format
   file_create_mode(octal) str success UNIX mode bits for file in octal format
access_zone_modify_flag bool on success Whether auth providers linked to access zone has changed.
  id str success A unique identifier for this object.
  state str success The state of the job.
+ + changed + bool + always + Whether or not the resource has changed. + + + nfs_modify_flag + bool + on success + Whether or not the default NFS settings of access zone has changed. + + + smb_modify_flag + bool + on success + Whether or not the default SMB settings of access zone has changed. + + ### Authors -* Jennifer John (@johnj9) +* Akash Shendge (@shenda1) -------------------------------- -# NFS Alias Module +# Active Directory Module -Manage NFS aliases on a PowerScale Storage System +Manages the ADS authentication provider on PowerScale ### Synopsis - Managing NFS aliases on an PowerScale system includes creating NFS alias for NFS export, Getting details of an NFS alias, Modifying different attributes of the NFS alias and Deleting an NFS alias. + Manages the Active Directory authentication provider on the PowerScale storage system. This includes creating, modifying, deleting and retreiving the details of an ADS provider. ### Parameters - + - + @@ -681,187 +775,226 @@ Manage NFS aliases on a PowerScale Storage System - - - - - - - - - + - - - - - - - - - + - + - - - - - - - - - + - + - - - - - - - - - + - + - - - - - - - - - + - - - + + - - - - - - - - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterParameter Type Required DefaultDescription
nfs_alias_name str True
Name of an NFS alias.
path domain_name str
Specifies the path to which the alias points.
It is the absolute path for System access zone and it is relative if using non-system access zone.
If your access zone is System, and you have 'directory1' in the access zone, the path provided should be '/ifs/directory1'.
The directory on the path must exist, the NFS alias module will not create the directory.
access_zone str System
Specifies the zone in which the alias is valid.
Access zone once set cannot be changed.

Specifies the domain name of an Active Directory provider.
This parameter is mandatory during create.
scope instance_name str effective
  • effective
  • user

When specified as 'effective', or not specified, all fields are returned.
When specified as 'user', only fields with non-default values are shown.
check bool False
Check for conflicts when viewing alias.

Specifies the instance name of Active Directory provider.
This is an optional parameter during create, and defaults to the provider name if it is not specified during the create operation.
Get, modify and delete operations can also be performed through instance_name.
It is mutually exclusive with domain_name for get, modify and delete operations.
new_alias_name ads_user str
New name of the alias.
state str present
  • absent
  • present

Defines whether the NFS alias should exist or not.
Present indicates that the NFS alias should exist in system.
Absent indicates that the NFS alias should not exist in system.

Specifies the user name that has permission to join a machine to the given domain.
This parameter is mandatory during create.
onefs_host ads_password str True
IP address or FQDN of the PowerScale cluster.
port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.

Specifies the password used during domain join.
This parameter is mandatory during create.
verify_ssl bool True ads_parameters dict
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user str True
username of the PowerScale cluster.

Specify additional parameters to configure ADS domain.
api_password str True
  groupnet str
Groupnet identifier.
This is an optional parameter and defaults to groupnet0.
  home_directory_template str
Specifies the path to the home directory template.
This is an optional parameter and defaults to '/ifs/home/%D/%U'.
  login_shell str
  • /bin/sh
  • /bin/csh
  • /bin/tcsh
  • /bin/zsh
  • /bin/bash
  • /bin/rbash
  • /sbin/nologin

Specifies the login shell path.
This is an optional parameter and defaults to '/bin/zsh'.
  machine_account str
Specifies the machine account name when creating a SAM account with Active Directory.
The default cluster name is called 'default'.
  organizational_unit str
Specifies the organizational unit.
state str True
  • absent
  • present

The state of the ads provider after the task is performed.
present - indicates that the ADS provider should exist on the system.
absent - indicates that the ADS provider should not exist on the system.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl bool True
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user str True
username of the PowerScale cluster.
api_password str True
the password of the PowerScale cluster.
### Notes -* The check_mode is supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Create NFS alias - check mode - dellemc.powerscale.nfs_alias: +- name: Add an Active Directory provider + dellemc.powerscale.ads: onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - nfs_alias_name: "/sample_alias_2" - path: "/ifs" - access_zone: 'System' + verify_ssl: "{{verify_ssl}}" + domain_name: "ansibleneo.com" + instance_name: "ansibleneo.com" + ads_user: "administrator" + ads_password: "*****" + ads_parameters: + groupnet: "groupnet5" + home_directory_template: "/ifs/home/%D/%U" + login_shell: "/bin/zsh" + machine_account: "test_account" + organizational_unit: "org/sub_org" state: "present" - check_mode: True - - name: Create NFS alias - dellemc.powerscale.nfs_alias: +- name: Modify an Active Directory provider with domain name + dellemc.powerscale.ads: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - nfs_alias_name: "/sample_alias_2" - path: "/ifs" - access_zone: 'System' + domain_name: "ansibleneo.com" + ads_parameters: + home_directory_template: "/ifs/usr_home/%D/%U" + login_shell: "/bin/rbash" state: "present" - - name: Get NFS alias by name - dellemc.powerscale.nfs_alias: +- name: Modify an Active Directory provider with instance name + dellemc.powerscale.ads: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - nfs_alias_name: "/sample_alias_2" - scope: "effective" - check: True + instance_name: "ansibleneo.com" + ads_parameters: + home_directory_template: "/ifs/usr_home/%D/%U" + login_shell: "/bin/rbash" + state: "present" - - name: Modify NFS alias - check mode - dellemc.powerscale.nfs_alias: +- name: Get Active Directory provider details with domain name + dellemc.powerscale.ads: onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - nfs_alias_name: "/sample_alias_2" - new_alias_name: "/Renamed_alias_2" - path: "/ifs/Test" + verify_ssl: "{{verify_ssl}}" + domain_name: "ansibleneo.com" state: "present" - check_mode: True - - name: Modify NFS alias - dellemc.powerscale.nfs_alias: +- name: Get Active Directory provider details with instance name + dellemc.powerscale.ads: onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - nfs_alias_name: "/sample_alias_2" - new_alias_name: "/Renamed_alias_2" - path: "/ifs/Test" + verify_ssl: "{{verify_ssl}}" + instance_name: "ansibleneo.com" state: "present" - - name: Delete NFS alias - check mode - dellemc.powerscale.nfs_alias: +- name: Delete an Active Directory provider with domain name + dellemc.powerscale.ads: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - nfs_alias_name: "/Renamed_alias_2" + domain_name: "ansibleneo.com" state: "absent" - check_mode: True - - name: Delete NFS alias - dellemc.powerscale.nfs_alias: +- name: Delete an Active Directory provider with instance name + dellemc.powerscale.ads: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - nfs_alias_name: "/Renamed_alias_2" + instance_name: "ansibleneo.com" state: "absent" ``` ### Return Values - + @@ -870,70 +1003,84 @@ Manage NFS aliases on a PowerScale Storage System - - - - - - - + - - + + - + - + + + + + + + + - + - + + + + + + + + - + - + - + - + - + -
KeyDescription
changed bool always A boolean indicating if the task had to make changes.
nfs_alias_details ads_provider_details complex always The NFS alias details. When Active Directory provider exists The Active Directory provider details.
  health groupnet str success The health of the NFS alias. Groupnet identifier.
  home_directory_template str success Specifies the path to the home directory template.
  id str success The ID of the NFS alias. Specifies the ID of the Active Directory provider instance.
  name linked_access_zones list success List of access zones linked to the authentication provider.
  login_shell str success The name of the NFS alias. Specifies the login shell path.
  path machine_account str success The path of the NFS alias. Specifies the machine account name when creating a SAM account with Active Directory.
  zone name str success Specifies the zone in which the NFS alias is valid. Specifies the Active Directory provider name.
+ + changed + bool + always + Whether or not the resource has changed. + + ### Authors -* Trisha Datta(@Trisha-Datta) +* Jennifer John (@johnj9) -------------------------------- -# File System Module +# File Pool Policy Module -Manage Filesystems on PowerScale +Manages file pool policy on PowerScale ### Synopsis - Managing Filesystems on PowerScale Storage System includes Create a new Filesystem, Delete a Filesystem, Get details of a filesystem, Modify a Filesystem (Quota, ACLs). + Managing file pool policy on PowerScale Storage System. This includes creating a new file pool policy, deleting a file pool policy and retrieving the details of a file pool policy. ### Parameters - + - + @@ -941,220 +1088,150 @@ Manage Filesystems on PowerScale - + - - - - - - - - - + - - + + - + - - + + - + - - + + - + - + - + - - - + + - + + - + - + - - - + + + - + + + + + + + + + - - + + - - + + - + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + - - + + + + + + + + + + + + - - - - - - - - - + - + @@ -1162,7 +1239,7 @@ Manage Filesystems on PowerScale - + @@ -1170,7 +1247,7 @@ Manage Filesystems on PowerScale - + @@ -1178,7 +1255,7 @@ Manage Filesystems on PowerScale - + @@ -1186,7 +1263,7 @@ Manage Filesystems on PowerScale - + @@ -1196,306 +1273,165 @@ Manage Filesystems on PowerScale
ParameterParameter Type Required DefaultDescription
path policy_id str True
This is the directory path. It is the absolute path for System access zone and is relative if using a non-System access zone. For example, if your access zone is 'Ansible' and it has a base path '/ifs/ansible' and the path specified is '/user1', then the effective path would be '/ifs/ansible/user1'. If your access zone is System, and you have 'directory1' in the access zone, the path provided should be '/ifs/directory1'.
access_zone str System
The access zone. If no Access Zone is specified, the 'System' access zone would be taken by default.

Unique Id of the file pool policy.
It is mutually exclusive with policy_name.
owner dict policy_name str
The owner of the Filesystem.
This parameter is required when creating a Filesystem.
The following sub-options are supported for Owner. - name(str), - provider_type(str).
If you specify owner, then the corresponding name is mandatory.
The provider_type is optional and it defaults to 'local'.
The supported values for provider_type are 'local', 'file', 'ldap' and 'ads'.

Unique name of the file pool policy.
It is mutually exclusive with policy_id.
Mandatory for file pool policy creation.
group dict description str
The group of the Filesystem.
The following sub-options are supported for Group. - name(str), - provider_type(str).
If you specify a group, then the corresponding name is mandatory.
The provider_type is optional, it defaults to 'local'.
The supported values for provider_type are 'local', 'file', 'ldap' and 'ads'.

A description of the file pool policy.
access_control str apply_order int
The ACL value for the directory.
At the time of creation, users can either provide input such as 'private_read' , 'private' , 'public_read', 'public_read_write', 'public' or in POSIX format (eg 0700).
Modification of ACL is only supported from POSIX to POSIX mode.
This field is mutually exclusive with access_control_rights.

The order in which the policy should be applied.
It is relative to other policies.
access_control_rights apply_data_storage_policy dict
Manage user rights and set ACL permissions for files and directories.

Action to move files to storage pool or tier.
  access_rights list
elements: str
ssd_strategy str
Provides the list of access rights that are defined for the directory.
  • SSD_metadata_read_acceleration
  • SSD_metadata_read_write_acceleration
  • avoid_SSD
  • SSD_for_metadata_and_data

Strategy for ssd.
  access_type storagepool str True
  • allow
  • deny

Allows or denies access to the directory based on the access rights set for the trustee.
anywhere
Name of the storage pool.
apply_snapshot_storage_policy dict
Action to move snapshots to storage pool or tier.
  inherit_flags list
elements: str
ssd_strategy str
  • object_inherit
  • container_inherit
  • inherit_only
  • no_prop_inherit
  • inherited_ace

Provides the inherit flags set for the directory.
  • SSD_metadata_read_acceleration
  • SSD_metadata_read_write_acceleration
  • avoid_SSD
  • SSD_for_metadata_and_data

Strategy for ssd.
  trustee dict True storagepool str anywhere
Provides the trustee (user or group) name and trustee provider_type.

Name of the storage pool.
access_control_rights_state
set_requested_protection str
  • add
  • remove

Specifies if the access rights are to be added or deleted for the trustee.
It is required together with access_control_rights.
  • default_protection_of_node_pool_or_tier
  • tolerate_failure_of_1_drive_or_1_node
  • tolerate_failure_of_2_drives_or_1_node
  • tolerate_failure_of_2_drives_or_2_nodes
  • tolerate_failure_of_3_drives_or_1_node
  • tolerate_failure_of_3_drives_or_(1_node_and_1drive)
  • tolerate_failure_of_3_drives_or_3_nodes
  • tolerate_failure_of_4_drives_or_1_node
  • tolerate_failure_of_4_drives_or_2_nodes
  • tolerate_failure_of_4_drives_or_4_nodes
  • mirrored_over_2_nodes
  • mirrored_over_3_nodes
  • mirrored_over_4_nodes
  • mirrored_over_5_nodes
  • mirrored_over_6_nodes
  • mirrored_over_7_nodes
  • mirrored_over_8_nodes

Action to change requested protection.
recursive bool set_data_access_pattern str True
Creates intermediate folders recursively when set to true.
  • random
  • concurrency
  • streaming

Action to set data access pattern optimization.
recursive_force_delete bool set_write_performance_optimization str False
Deletes sub files and folders recursively when set to true even if the filesystem is not empty.
  • enable_smartcache
  • disable_smartcache

Action to set write performance optimization.
quota file_matching_pattern dict
The Smart Quota for the filesystem. Only directory Quotas are supported.
The following sub-options are supported for Quota.

The file matching rules for the policy.
  include_snap_data bool False
Whether to include the snapshots in the quota or not.
  include_data_protection_overhead bool
Whether to include the data protection overheads in the quota or not.
If not passed during quota creation then quota will be created excluding the overheads.
This parameter is supported for SDK 8.1.1
  thresholds_on str
  • app_logical_size
  • fs_logical_size
  • physical_size

For SDK 9.1.0 the parameter include_overheads is deprecated and thresholds_on is used.
  advisory_limit_size int
The threshold value after which the advisory notification will be sent.
  soft_limit_size int
Threshold value after which the soft limit exceeded notification will be sent and the soft_grace period will start.
Write access will be restricted after the grace period expires.
Both soft_grace_period and soft_limit_size are required to modify soft threshold for the quota.
  hard_limit_size int
Threshold value after which a hard limit exceeded notification will be sent.
Write access will be restricted after the hard limit is exceeded.
  cap_unit str
  • GB
  • TB

Unit of storage for the hard, soft and advisory limits.
This parameter is required if any of the hard, soft or advisory limits is specified.
  container bool False
If true, SMB shares using the quota directory see the quota thresholds as share size.
  quota_state str or_criteria list
elements: dict
True
  • absent
  • present

Defines whether the quota should exist or not

or criteria conditions for the file policy.
Maximum of 3 criteria's is possible.
state
   and_criteria list
elements: dict
True
and criteria conditions for the file policy.
Maximum of 5 criteria is possible.
state str True
  • absent
  • present

Defines whether the Filesystem should exist or not.
A filesystem with NFS exports or SMB shares cannot be deleted.
Any Quotas on the Filesystem need to be removed before deleting the filesystem.
list_snapshots bool False
If set to true, the filesystem's snapshots are returned.

The state option is used to mention the existence of file pool policy.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* While deleting a filesystem when recursive_force_delete is set as True it deletes all sub files and folders recursively. This is true even if the filesystem is not empty. -* Modification of inherit_flags of filesystem ACL is successful only if access_rights is also specified in the access_control_rights dictionary. -* Check_mode is not supported. +* Modifying a file pool policy is not supported. +* The check_mode is supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Create Filesystem with Quota in given access zone - dellemc.powerscale.filesystem: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - path: "" - access_zone: "{{access_zone}}" - owner: - name: 'ansible_user' - provider_type: 'ldap' - group: - name: 'ansible_group' - provider_type: 'ldap' - access_control: "{{access_control}}" - quota: - include_snap_data: False - include_data_protection_overhead: False - advisory_limit_size: 2 - soft_limit_size: 5 - hard_limit_size: 10 - cap_unit: "GB" - quota_state: "present" - container: True - recursive: "{{recursive}}" - state: "{{state_present}}" - - - name: Create Filesystem in default (system) access zone, without Quota - dellemc.powerscale.filesystem: +- name: Get a file pool policy + dellemc.powerscale.filepoolpolicy: onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - path: "" - owner: - name: 'ansible_user' - provider_type: 'ldap' - state: "{{state_present}}" + policy_name: "test_11" + state: 'present' - - name: Get filesystem details - dellemc.powerscale.filesystem: +- name: Delete a file pool policy + dellemc.powerscale.filepoolpolicy: onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - access_zone: "{{access_zone}}" - path: "" - state: "{{state_present}}" + policy_name: "test_11" + state: 'absent' - - name: Get filesystem details with snapshots - dellemc.powerscale.filesystem: +- name: Create a file pool policy + dellemc.powerscale.filepoolpolicy: onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - access_zone: "{{access_zone}}" - path: "" - list_snapshots: "{{list_snapshots_true}}" - state: "{{state_present}}" - - - name: Modify Filesystem Hard Quota - dellemc.powerscale.filesystem: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - path: "" - access_zone: "{{access_zone}}" - quota: - hard_limit_size: 15 - cap_unit: "GB" - quota_state: "present" - container: True - state: "{{state_present}}" - - - name: Modify Filesystem Owner, Group and ACL - dellemc.powerscale.filesystem: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - path: "" - access_zone: "{{access_zone}}" - owner: - name: 'ansible_user' - provider_type: 'ldap' - group: - name: 'ansible_group' - provider_type: 'ldap' - access_control: "{{new_access_control}}" - state: "{{state_present}}" - - - name: Modify Filesystem to add access control rights - dellemc.powerscale.filesystem: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - path: "/ifs/test" - access_zone: "{{access_zone}}" - access_control_rights: - access_type: "allow" - access_rights: - - dir_gen_all - inherit_flags: - - container_inherit - trustee: - name: test_user - provider_type: "ldap" - access_control_rights_state: "add" - state: "present" - - - name: Modify Filesystem to remove access control rights - dellemc.powerscale.filesystem: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - path: "/ifs/test" - access_zone: "{{access_zone}}" - access_control_rights: - access_type: "allow" - access_rights: - - dir_gen_all - inherit_flags: - - container_inherit - trustee: - name: test_user - provider_type: "ldap" - access_control_rights_state: "remove" - state: "present" - - - name: Remove Quota from FS - dellemc.powerscale.filesystem: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - path: "" - access_zone: "{{access_zone}}" - quota: - quota_state: "absent" - state: "{{state_present}}" - - - name: Delete filesystem - dellemc.powerscale.filesystem: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{user}}" - api_password: "{{api_password}}" - access_zone: "{{access_zone}}" - path: "" - recursive_force_delete: "{{recursive_force_delete}}" - state: "{{state_absent}}" -``` + policy_name: "test_policy_1" + description: 'Creating a policy' + apply_order: 1 + apply_data_storage_policy: + ssd_strategy: "SSD_metadata_read_acceleration" + storagepool: "test_tier" + set_data_access_pattern: "concurrency" + set_requested_protection: "mirrored_over_3_nodes" + set_write_performance_optimization: "enable_smartcache" + file_matching_pattern: + or_criteria: + - and_criteria: + - type: "file_name" + condition: "does_not_match" + value: "file_name_test" + case_sensitive: True + - type: "accessed" + condition: "after" + datetime_value: "2022-04-04 23:30" + - type: "created" + condition: "is_newer_than" + relative_datetime_count: + time_value: 12 + time_unit: "years" + - and_criteria: + - type: "size" + condition: "not_equal" + size_info: + size_value: 60 + size_unit: "MB" + - type: "file_attribute" + condition: "does_not_match" + field: "test_field" + value: "uni" + - type: "file_attribute" + condition: "exists" + field: "test" + state: 'present' +``` ### Return Values - + - + - + - - - - - - - - - - - - - - + - - + + - - - - - - - - - + + - + - + - - - - - - - - + - + - - - - - - - - - - - - - - + - - + + - + - + + + + + + + + + - - + + - + - + - - - - - - - - +
KeyKey Type Returned Description
changed changed bool always Whether or not the resource has changed.
filesystem_details complex When Filesystem exists. The filesystem details.
  attrs dict success The attributes of the filesystem.
filesystem_snapshots filepool_policy_details complex When list_snapshots is True. The filesystem snapshot details. When a Policy exists Policy details.
  created int success The creation timestamp.
  expires int actions list success The expiration timestamp. List of action's available for the policy.
  id apply_order int success The id of the snapshot.
  name str success The name of the snapshot. The order in which policy is present with respect to other policies.
  path description str success The path of the snapshot.
quota_details complex When Quota exists. The quota details.
  container bool success If true, SMB shares using the quota directory see the quota thresholds as share size. Description of the policy.
  enforced bool file_matching_pattern complex success Whether the Quota is enforced. File matching pattern of the policy.
   or_criteria list success or criteria conditions for the file policy.
  id str id int success The ID of the Quota. Unique ID of the policy.
  type name str success The type of Quota.
  usage dict success The Quota usage. Unique name of the policy.
### Authors -* Prashant Rakheja (@prashant-dell) +* Ananthu S Kuttattu (@kuttattz) -------------------------------- -# Smart Quota Module +# File System Module -Manage Smart Quotas on PowerScale +Manage Filesystems on PowerScale ### Synopsis - Manages Smart Quotas on a PowerScale storage system. This includes getting details, modifying, creating and deleting Smart Quotas. + Managing Filesystems on PowerScale Storage System includes Create a new Filesystem, Delete a Filesystem, Get details of a filesystem, Modify a Filesystem (Quota, ACLs). ### Parameters - + - + @@ -1503,161 +1439,250 @@ Manage Smart Quotas on PowerScale - + - + - + - - - + + + - - + + - + - - + + - + - + - - - - - - - - - + - + - + - - + + - - + + - + - - + + + + + + + + + + - + + - + - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - - + + - + - + - + + + + + + + + + + - + - + - - + + - - + + - + - - + + - + - + - + - + - + - - + + + + + + + + + + + - + - + + + + + + + + + @@ -1665,7 +1690,7 @@ Manage Smart Quotas on PowerScale - + @@ -1673,7 +1698,7 @@ Manage Smart Quotas on PowerScale - + @@ -1681,7 +1706,7 @@ Manage Smart Quotas on PowerScale - + @@ -1689,7 +1714,7 @@ Manage Smart Quotas on PowerScale - + @@ -1699,139 +1724,180 @@ Manage Smart Quotas on PowerScale
ParameterParameter Type Required DefaultDescription
path path str True
The path on which the quota will be imposed.
For system access zone, the path is absolute. For all other access zones, the path is a relative path from the base of the access zone.

This is the directory path. It is the absolute path for System access zone and is relative if using a non-System access zone. For example, if your access zone is 'Ansible' and it has a base path '/ifs/ansible' and the path specified is '/user1', then the effective path would be '/ifs/ansible/user1'. If your access zone is System, and you have 'directory1' in the access zone, the path provided should be '/ifs/directory1'.
quota_type access_zone str True
  • user
  • group
  • directory
  • default-user
  • default-group

The type of quota which will be imposed on the path.
System
The access zone. If no Access Zone is specified, the 'System' access zone would be taken by default.
user_name str owner dict
The name of the user account for which quota operations will be performed.

The owner of the Filesystem.
This parameter is required when creating a Filesystem.
The following sub-options are supported for Owner. - name(str), - provider_type(str).
If you specify owner, then the corresponding name is mandatory.
The provider_type is optional and it defaults to 'local'.
The supported values for provider_type are 'local', 'file', 'ldap' and 'ads'.
group_name str group dict
The name of the group for which quota operations will be performed.

The group of the Filesystem.
The following sub-options are supported for Group. - name(str), - provider_type(str).
If you specify a group, then the corresponding name is mandatory.
The provider_type is optional, it defaults to 'local'.
The supported values for provider_type are 'local', 'file', 'ldap' and 'ads'.
access_zone access_control str system
This option mentions the zone in which the user/group exists.
For a non-system access zone, the path relative to the non-system Access Zone's base directory has to be given.
For a system access zone, the absolute path has to be given.
provider_type str local
  • local
  • file
  • ldap
  • ads
  • nis

This option defines the type which is used to authenticate the user/group.
If the provider_type is 'ads' then the domain name of the Active Directory Server has to be mentioned in the user_name. The format for the user_name should be 'DOMAIN_NAME\user_name' or "DOMAIN_NAME\\user_name".
This option acts as a filter for all operations except creation.

The ACL value for the directory.
At the time of creation, users can either provide input such as 'private_read' , 'private' , 'public_read', 'public_read_write', 'public' or in POSIX format (eg 0700).
Modification of ACL is only supported from POSIX to POSIX mode.
This field is mutually exclusive with access_control_rights.
quota access_control_rights dict
Specifies Smart Quota parameters.

Manage user rights and set ACL permissions for files and directories.
  include_snapshots bool access_rights list
elements: str
False
Whether to include the snapshots in the quota or not.

Provides the list of access rights that are defined for the directory.
  include_overheads bool access_type str True
  • allow
  • deny

Allows or denies access to the directory based on the access rights set for the trustee.
  inherit_flags list
elements: str

Whether to include the data protection overheads in the quota or not.
If not passed during quota creation then quota will be created excluding the overheads.
This parameter is supported for SDK 8.1.1
  • object_inherit
  • container_inherit
  • inherit_only
  • no_prop_inherit
  • inherited_ace

Provides the inherit flags set for the directory.
  thresholds_on str trustee dict True
  • app_logical_size
  • fs_logical_size
  • physical_size

For SDK 9.0.0 the parameter include_overheads is deprecated and thresholds_on is used.

Provides the trustee (user or group) name and trustee provider_type.
   name str True
Provides the trustee (user or group) name.
   type str user
  • user
  • group

Provides the trustee type.
   provider_type str local
The provider_type is optional and it defaults to 'local'.
The supported values for provider_type are 'local', 'file', 'ldap' and 'ads'.
access_control_rights_state str
  • add
  • remove

Specifies if the access rights are to be added or deleted for the trustee.
It is required together with access_control_rights.
recursive bool True
Creates intermediate folders recursively when set to true.
recursive_force_delete bool False
Deletes sub files and folders recursively when set to true even if the filesystem is not empty.
quota dict
The Smart Quota for the filesystem. Only directory Quotas are supported.
The following sub-options are supported for Quota.
  advisory_limit_size float include_snap_data bool False
The threshold value after which the advisory notification will be sent.

Whether to include the snapshots in the quota or not.
  soft_limit_size float include_data_protection_overhead bool
Threshold value after which the soft limit exceeded notification will be sent and the soft_grace period will start.
Write access will be restricted after the grace period expires.
Both soft_grace_period and soft_limit_size are required to modify soft threshold for the quota.

Whether to include the data protection overheads in the quota or not.
If not passed during quota creation then quota will be created excluding the overheads.
This parameter is supported for SDK 8.1.1
  soft_grace_period thresholds_on str
  • app_logical_size
  • fs_logical_size
  • physical_size

For SDK 9.1.0 the parameter include_overheads is deprecated and thresholds_on is used.
  advisory_limit_size int
Grace Period after the soft limit for quota is exceeded.
After the grace period, the write access to the quota will be restricted.
Both soft_grace_period and soft_limit_size are required to modify soft threshold for the quota.

The threshold value after which the advisory notification will be sent.
  period_unit str soft_limit_size int
  • days
  • weeks
  • months

Unit of the time period for soft_grace_period.
For months the number of days is assumed to be 30 days.
This parameter is required only if the soft_grace_period, is specified.

Threshold value after which the soft limit exceeded notification will be sent and the soft_grace period will start.
Write access will be restricted after the grace period expires.
Both soft_grace_period and soft_limit_size are required to modify soft threshold for the quota.
  hard_limit_size float hard_limit_size int
Threshold value after which a hard limit exceeded notification will be sent.
Write access will be restricted after the hard limit is exceeded.
  cap_unit cap_unit str
  • GB
  • TB

Unit of storage for the hard, soft and advisory limits.
This parameter is required if any of the hard, soft or advisory limits is specified.
  container container bool False
If true, SMB shares using the quota directory see the quota thresholds as share size.

If true, SMB shares using the quota directory see the quota thresholds as share size.
state
  quota_state str
  • absent
  • present

Defines whether the quota should exist or not
state str True
  • absent
  • present

Define whether the Smart Quota should exist or not.
present - indicates that the Smart Quota should exist on the system.
absent - indicates that the Smart Quota should not exist on the system.

Defines whether the Filesystem should exist or not.
A filesystem with NFS exports or SMB shares cannot be deleted.
Any Quotas on the Filesystem need to be removed before deleting the filesystem.
onefs_host list_snapshots bool False
If set to true, the filesystem's snapshots are returned.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* To perform any operation, path, quota_type and state are mandatory parameters. -* There can be two quotas for each type per directory, one with snapshots included and one without snapshots included. -* Once the limits are assigned, then the quota cannot be converted to accounting. Only modification to the threshold limits is permitted. +* While deleting a filesystem when recursive_force_delete is set as True it deletes all sub files and folders recursively. This is true even if the filesystem is not empty. +* Modification of inherit_flags of filesystem ACL is successful only if access_rights is also specified in the access_control_rights dictionary. +* Check_mode is not supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Create a Quota for a User excluding snapshot. - dellemc.powerscale.smartquota: + - name: Create Filesystem with Quota in given access zone + dellemc.powerscale.filesystem: onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" path: "" - quota_type: "user" - user_name: "{{user_name}}" - access_zone: "sample-zone" - provider_type: "local" + access_zone: "{{access_zone}}" + owner: + name: 'ansible_user' + provider_type: 'ldap' + group: + name: 'ansible_group' + provider_type: 'ldap' + access_control: "{{access_control}}" quota: - include_overheads: False - advisory_limit_size: "{{advisory_limit_size}}" - soft_limit_size: "{{soft_limit_size}}" - soft_grace_period: "{{soft_grace_period}}" - period_unit: "{{period_unit}}" - hard_limit_size: "{{hard_limit_size}}" - cap_unit: "{{cap_unit}}" - state: "present" + include_snap_data: False + include_data_protection_overhead: False + advisory_limit_size: 2 + soft_limit_size: 5 + hard_limit_size: 10 + cap_unit: "GB" + quota_state: "present" + container: True + recursive: "{{recursive}}" + state: "{{state_present}}" - - name: Create a Quota for a Directory for accounting includes snapshots and data protection overheads. - dellemc.powerscale.smartquota: + - name: Create Filesystem in default (system) access zone, without Quota + dellemc.powerscale.filesystem: onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" path: "" - quota_type: "directory" - quota: - include_snapshots: "True" - include_overheads: True - state: "present" + owner: + name: 'ansible_user' + provider_type: 'ldap' + state: "{{state_present}}" - - name: Create default-user Quota for a Directory with snaps and overheads - dellemc.powerscale.smartquota: + - name: Get filesystem details + dellemc.powerscale.filesystem: onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" + access_zone: "{{access_zone}}" path: "" - quota_type: "default-user" - quota: - include_snapshots: "True" - include_overheads: True - state: "present" + state: "{{state_present}}" - - name: Get a Quota Details for a Group - dellemc.powerscale.smartquota: + - name: Get filesystem details with snapshots + dellemc.powerscale.filesystem: onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" + access_zone: "{{access_zone}}" path: "" - quota_type: "group" - group_name: "{{user_name}}" - access_zone: "sample-zone" - provider_type: "local" - quota: - include_snapshots: "True" - state: "present" + list_snapshots: "{{list_snapshots_true}}" + state: "{{state_present}}" - - name: Update Quota for a User - dellemc.powerscale.smartquota: + - name: Modify Filesystem Hard Quota + dellemc.powerscale.filesystem: onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" path: "" - quota_type: "user" - user_name: "{{user_name}}" - access_zone: "sample-zone" - provider_type: "local" + access_zone: "{{access_zone}}" quota: - include_snapshots: "True" - include_overheads: True - advisory_limit_size: "{{new_advisory_limit_size}}" - hard_limit_size: "{{new_hard_limit_size}}" - cap_unit: "{{cap_unit}}" - state: "present" + hard_limit_size: 15 + cap_unit: "GB" + quota_state: "present" + container: True + state: "{{state_present}}" - - name: Modify Soft Limit and Grace period of default-user Quota - dellemc.powerscale.smartquota: + - name: Modify Filesystem Owner, Group and ACL + dellemc.powerscale.filesystem: onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" path: "" - quota_type: "default-user" - access_zone: "sample-zone" - quota: - include_snapshots: "True" - include_overheads: True - soft_limit_size: "{{soft_limit_size}}" - cap_unit: "{{cap_unit}}" - soft_grace_period: "{{soft_grace_period}}" - period_unit: "{{period_unit}}" - state: "present" + access_zone: "{{access_zone}}" + owner: + name: 'ansible_user' + provider_type: 'ldap' + group: + name: 'ansible_group' + provider_type: 'ldap' + access_control: "{{new_access_control}}" + state: "{{state_present}}" - - name: Delete a Quota for a Directory - dellemc.powerscale.smartquota: + - name: Modify Filesystem to add access control rights + dellemc.powerscale.filesystem: onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - path: "" - quota_type: "directory" - quota: - include_snapshots: "True" - state: "absent" + path: "/ifs/test" + access_zone: "{{access_zone}}" + access_control_rights: + access_type: "allow" + access_rights: + - dir_gen_all + inherit_flags: + - container_inherit + trustee: + name: test_user + provider_type: "ldap" + access_control_rights_state: "add" + state: "present" - - name: Delete Quota for a default-group - dellemc.powerscale.smartquota: + - name: Modify Filesystem to remove access control rights + dellemc.powerscale.filesystem: + onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + path: "/ifs/test" + access_zone: "{{access_zone}}" + access_control_rights: + access_type: "allow" + access_rights: + - dir_gen_all + inherit_flags: + - container_inherit + trustee: + name: test_user + provider_type: "ldap" + access_control_rights_state: "remove" + state: "present" + + - name: Remove Quota from FS + dellemc.powerscale.filesystem: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" path: "" - quota_type: "default-group" + access_zone: "{{access_zone}}" quota: - include_snapshots: "True" - state: "absent" + quota_state: "absent" + state: "{{state_present}}" + + - name: Delete filesystem + dellemc.powerscale.filesystem: + onefs_host: "{{onefs_host}}" + port_no: "{{powerscaleport}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{user}}" + api_password: "{{api_password}}" + access_zone: "{{access_zone}}" + path: "" + recursive_force_delete: "{{recursive_force_delete}}" + state: "{{state_absent}}" ``` ### Return Values - + @@ -1846,6 +1912,60 @@ Manage Smart Quotas on PowerScale + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1863,7 +1983,7 @@ Manage Smart Quotas on PowerScale - + @@ -1871,13 +1991,6 @@ Manage Smart Quotas on PowerScale - - - - - - - @@ -1896,21 +2009,21 @@ Manage Smart Quotas on PowerScale
Key Whether or not the resource has changed.
filesystem_details complex When Filesystem exists. The filesystem details.
  attrs dict success The attributes of the filesystem.
filesystem_snapshots complex When list_snapshots is True. The filesystem snapshot details.
  created int success The creation timestamp.
  expires int success The expiration timestamp.
  id int success The id of the snapshot.
  name str success The name of the snapshot.
  path str success The path of the snapshot.
quota_details complex When Quota exists. enforced bool success Whether the limits are enforced on Quota or not. Whether the Quota is enforced.
  str success The ID of the Quota.
  thresholds dict success Includes information about all the limits imposed on quota. The limits are mentioned in bytes and soft_grace is in seconds.
 
### Authors -* P Srinivas Rao (@srinivas-rao5) +* Prashant Rakheja (@prashant-dell) -------------------------------- -# SyncIQ Performance Rules Module +# Group Module -Manage SyncIQ performance rules on PowerScale Storage System. +Manage Groups on the PowerScale Storage System ### Synopsis - Managing SyncIQ performance rules on PowerScale includes create a SyncIQ performance rule, modify a SyncIQ performance rule, get details of a SyncIQ performance rule, delete a SyncIQ performance rule. + Managing Groups on the PowerScale Storage System includes create group, delete group, get group, add users and remove users. ### Parameters - + - + @@ -1918,90 +2031,63 @@ Manage SyncIQ performance rules on PowerScale Storage System. - + - - + + - + - + - - - + + + - + - + - - - + + + - - - - + + + - + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + - + @@ -2009,7 +2095,7 @@ Manage SyncIQ performance rules on PowerScale Storage System. - + @@ -2017,7 +2103,7 @@ Manage SyncIQ performance rules on PowerScale Storage System. - + @@ -2025,7 +2111,7 @@ Manage SyncIQ performance rules on PowerScale Storage System. - + @@ -2033,7 +2119,7 @@ Manage SyncIQ performance rules on PowerScale Storage System. - + @@ -2043,151 +2129,224 @@ Manage SyncIQ performance rules on PowerScale Storage System.
ParameterParameter Type Required DefaultDescription
rule_type group_name str
  • bandwidth
  • file_count
  • cpu
  • worker

The type of system resource this rule limits.
This is mandatory parameter while creating/deleting a performance rule.
This cannot be modified.

The name of the group.
Required at the time of group creation, for the rest of the operations either group_name or group_id is required.
sync_rule_id group_id str
This is an auto generated ID at the time of creation of SyncIQ performance rule.
For get/modify/delete operations sync_rule_id is required.
The ID of a performance rule is not absolute to a particular existing rule configuration. The IDs are auto-sequenced during creation/deletion of a performance rule.

The group_id is auto generated at the time of creation.
For all other operations either group_name or group_id is needed.
limit int access_zone str system
It tells the amount the specified system resource type is limited by this rule.
Units are kb/s for bandwidth, files/s for file-count, processing percentage used for cpu, or percentage of maximum available workers.
This is a mandatory parameter while creating/deleting a performance rule.

This option mentions the zone in which a group is created.
For creation, access_zone acts as an attribute for the group.
For all other operations access_zone acts as a filter.
description provider_type str
User entered description of the performance rule.
local
  • local
  • file
  • ldap
  • ads
  • nis

This option defines the type which will be used to authenticate the group members.
Creation, Deletion and Modification is allowed only for local group.
Details of groups of all provider types can be fetched.
If the provider_type is 'ads' then the domain name of the Active Directory Server has to be mentioned in the group_name. The format for the group_name should be 'DOMAIN_NAME\group_name' or "DOMAIN_NAME\\group_name".
This option acts as a filter for all operations except creation.
enabled bool state str True
Indicates whether the performance rule is currently in effect during its specified interval.
This mandatory while creating/deleting a performance rule.
  • absent
  • present

The state option is used to determine whether the group will exist or not.
schedule dict users list
elements: dict

A schedule defining when during a week this performance rule is in effect.
It is mandatory to enter schedule while creating/deleting a performance rule.

Either user_name or user_id is needed to add or remove the user from the group.
Users can be part of multiple groups.
  begin str
Start time for this schedule, during its specified days.
It is of the format hh:mm (24 hour format).
  end str
End time for this schedule, during its specified days.
It is of the format hh:mm (24 hour format).
  days_of_week list
elements: str
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday

The days in a week when the performance rule is effective.
state user_state str True
  • absent
  • present

The state option is used to determine whether the performance rule exists or not.
  • present-in-group
  • absent-in-group

The user_state option is used to determine whether the users will exist for a particular group or not.
It is required when users are added or removed from a group.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* Operations performed in parallel from other interfaces apart from playbook cannot guarantee desirable results. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Create SyncIQ performance rule - dellemc.powerscale.synciqrules: + - name: Create a Group + dellemc.powerscale.group: onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - description: "Create a rule" - enabled: True - schedule: - begin: "00:00" - end: "13:30" - days_of_week: - - "monday" - - "tuesday" - - "sunday" - rule_type: "cpu" - limit: "80" + verify_ssl: "{{verify_ssl}}" + access_zone: "{{access_zone}}" + provider_type: "{{provider_type}}" + group_name: "{{group_name}}" state: "present" - - name: Modify SyncIQ performance rule - dellemc.powerscale.synciqrules: + - name: Create Group with Users + dellemc.powerscale.group: onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - sync_rule_id: "cpu-0" - limit: "85" - description: "Modify the performance rule" + verify_ssl: "{{verify_ssl}}" + provider_type: "{{provider_type}}" + access_zone: "{{access_zone}}" + group_name: "{{group_name}}" + users: + - user_name: "{{user_name}}" + - user_id: "{{user_id}}" + - user_name: "{{user_name_2}}" + user_state: "present-in-group" state: "present" - - name: Get SyncIQ performance rule details - dellemc.powerscale.synciqrules: + - name: Get Details of the Group using Group Id + dellemc.powerscale.group: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - sync_rule_id: "cpu-0" + provider_type: "{{provider_type}}" + access_zone: "{{access_zone}}" + group_id: "{{group_id}}" state: "present" - - name: Delete SyncIQ performance rule - dellemc.powerscale.synciqrules: + - name: Delete the Group using Group Name + dellemc.powerscale.group: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - sync_rule_id: "cpu-0" - enabled: True - schedule: - begin: "00:00" - end: "13:30" - days_of_week: - - "monday" - - "tuesday" - - "sunday" - rule_type: "bandwidth" - limit: "85" + provider_type: "{{provider_type}}" + access_zone: "{{access_zone}}" + group_name: "{{group_name}}" state: "absent" + + - name: Add Users to a Group + dellemc.powerscale.group: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + provider_type: "{{provider_type}}" + access_zone: "{{access_zone}}" + group_id: "{{group_id}}" + users: + - user_name: "{{user_name}}" + - user_id: "{{user_id}}" + - user_name: "{{user_name_2}}" + user_state: "present-in-group" + state: "present" + + - name: Remove Users from a Group + dellemc.powerscale.group: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + provider_type: "{{provider_type}}" + access_zone: "{{access_zone}}" + group_id: "{{group_id}}" + users: + - user_name: "{{user_name_1}}" + - user_id: "{{user_id}}" + - user_name: "{{user_name_2}}" + user_state: "absent-in-group" + state: "present" ``` ### Return Values - + - + - + - + - - + + - - + + - + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + - + - - + + - + - + + + + + + + + + + + + + + + - +
KeyKey Type Returned Description
changed changed bool always Whether or not the resource has changed.
sync_rule_details hostgroup_details complex When SyncIQ performance rule exists Details of the SyncIQ performance rule. When host group exist. Details of the host group.
  description str consistent_lun bool success Description of the performance rule. Flag for consistent LUN in the host group.
  enabled bool disabled_flags list success Indicates whether performance rule is enabled List of any disabled port flags overridden by the initiator.
  id enabled_flags list success List of any enabled port flags overridden by the initiator.
  host list success List of hosts present in the host group.
   hostId str success Unique identifier for the host.
   initiator list success List of initiators present in the host.
  hostGroupId str success ID of the performance rule. Host group ID.
  limit maskingview list success Masking view in which host group is present.
  num_of_hosts int success Amount the specified system resource type is limited by this rule Number of hosts in the host group.
  schedule str num_of_initiators int success Duration when performance rule is effective Number of initiators in the host group.
  type num_of_masking_views int success Number of masking views associated with the host group.
  port_flags_override bool success Whether any of the initiator's port flags are overridden.
  type str success Type of performance rule Type of initiator of the hosts of the host group.
### Authors -* Spandita Panigrahi (@panigs7) +* P Srinivas Rao (@srinivas-rao5) -------------------------------- -# LDAP Module +# GroupNet Module -Manage LDAP authentication provider on PowerScale +Manages groupnet configuration on PowerScale ### Synopsis - Managing LDAP authentication provider on PowerScale storage system includes creating, modifying, deleting and retrieving details of LDAP provider. + Manages the groupnet configuration on the PowerScale storage system. This includes creating, modifying, deleting and retrieving the details of the groupnet. ### Parameters - + @@ -2195,82 +2354,71 @@ Manage LDAP authentication provider on PowerScale - + - + - - + + - + - + - - + + - - + + - + - - + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - + - - + + - + @@ -2278,7 +2426,7 @@ Manage LDAP authentication provider on PowerScale - + @@ -2286,7 +2434,7 @@ Manage LDAP authentication provider on PowerScale - + @@ -2294,7 +2442,7 @@ Manage LDAP authentication provider on PowerScale - + @@ -2302,7 +2450,7 @@ Manage LDAP authentication provider on PowerScale - + @@ -2312,86 +2460,106 @@ Manage LDAP authentication provider on PowerScale
ParameterParameter Type Required DefaultDescription
ldap_name groupnet_name str True
Specifies the name of the LDAP provider.

The name of the groupnet.
server_uris list
elements: str
description str
Specifies the server URIs.
This parameter is mandatory during create.
Server_uris should begin with ldap:// or ldaps:// if not validation error will be displayed.

A description of the groupnet.
server_uri_state new_groupnet_name str
  • present-in-ldap
  • absent-in-ldap

Specifies if the server_uris need to be added or removed from the provider.
This parameter is mandatory if server_uris is specified.
While creating LDAP provider, this parameter value should be specified as 'present-in-ldap'.

Name of the groupnet when renaming an existing groupnet.
base_dn str dns_servers list
elements: str

Specifies the root of the tree in which to search identities.
This parameter is mandatory during create.

List of Domain Name Server IP addresses.
ldap_parameters dict dns_server_state str
  • add
  • remove

Specifies if the dns_servers should be added or removed from the groupnet.
dns_search_suffix list
elements: str

Specify additional parameters to configure LDAP domain.

List of DNS search suffixes.
  groupnet str
Groupnet identifier.
This is an optional parameter and defaults to groupnet0.
  bind_dn str
Specifies the distinguished name for binding to the LDAP server.
dns_search_suffix_state str
  • add
  • remove

Specifies if the dns search suffix should be added or removed from the groupnet.
  bind_password str
Specifies the password for the distinguished name for binding to the LDAP server.
state state str True
  • absent
  • present

The state of the LDAP provider after the task is performed.
present - indicates that the LDAP provider should exist on the system.
absent - indicates that the LDAP provider should not exist on the system.
  • present
  • absent

The state of the groupnet after the task is performed.
present - indicates that the groupnet should exist on the system.
absent - indicates that the groupnet should not exist on the system.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* This module does not support modification of bind_password of LDAP provider. The value specified for bind_password will be ignored during modify. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` -- name: Add an LDAP provider - dellemc.powerscale.ldap: +- name: Create a groupnet + dellemc.powerscale.groupnet: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - ldap_name: "ldap_test" - server_uris: - - "{{server_uri_1}}" - - "{{server_uri_2}}" - server_uri_state: 'present-in-ldap' - base_dn: "DC=ansildap,DC=com" - ldap_parameters: - groupnet: "groupnet_ansildap" - bind_dn: "cn=admin,dc=example,dc=com" - bind_password: "{{bind_password}}" + groupnet_name: "groupnet_test" + description: "Test Groupnet" + dns_servers: + - '198.10.**.***' + dns_server_state: 'add' + dns_search_suffix: + - 'samplesearch.com' + dns_search_suffix_state: 'add' state: "present" -- name: Add server_uris to an LDAP provider - dellemc.powerscale.ldap: +- name: Add dns_servers to a groupnet + dellemc.powerscale.groupnet: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - ldap_name: "ldap_test" - server_uris: - - "{{server_uri_1}}" - server_uri_state: "present-in-ldap" - state: "present" + groupnet_name: "groupnet_test" + dns_servers: + - '198.10.**.***' + dns_server_state: 'add' + state: "present" -- name: Remove server_uris from an LDAP provider - dellemc.powerscale.ldap: +- name: Remove dns_servers from a groupnet + dellemc.powerscale.groupnet: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - ldap_name: "ldap_test" - server_uris: - - "{{server_uri_1}}" - server_uri_state: "absent-in-ldap" + groupnet_name: "groupnet_test" + dns_servers: + - '198.10.**.***' + dns_server_state: 'remove' state: "present" -- name: Modify LDAP provider - dellemc.powerscale.ldap: +- name: Add dns_search_suffix to a groupnet + dellemc.powerscale.groupnet: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - ldap_name: "ldap_test" - base_dn: "DC=ansi_ldap,DC=com" - ldap_parameters: - bind_dn: "cn=admin,dc=test,dc=com" + groupnet_name: "groupnet_test" + dns_search_suffix: + - 'samplesearch.com' + dns_search_suffix_state: 'add' state: "present" -- name: Get LDAP provider details - dellemc.powerscale.ldap: +- name: Remove dns_search_suffix from a groupnet + dellemc.powerscale.groupnet: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - ldap_name: "ldap_test" + groupnet_name: "groupnet_test" + dns_search_suffix: + - 'samplesearch.com' + dns_search_suffix_state: 'remove' state: "present" -- name: Delete a LDAP provider - dellemc.powerscale.ldap: +- name: Rename a groupnet + dellemc.powerscale.groupnet: onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - ldap_name: "ldap_test" + groupnet_name: "groupnet_test" + new_groupnet_name: "groupnet_test_rename" + +- name: Get groupnet details + dellemc.powerscale.groupnet: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet_test" + state: "present" + +- name: Delete a groupnet + dellemc.powerscale.groupnet: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet_test" state: "absent" ``` ### Return Values - + @@ -2406,59 +2574,45 @@ Manage LDAP authentication provider on PowerScale - + - - + + - - - - - - - - - - - - - - - - + + - + - + - + - + - + - + - + - - + + - +
Key Whether or not the resource has changed.
ldap_provider_details groupnet_details complex When LDAP provider exists The LDAP provider details. When a groupnet exists Groupnet details.
  base_dn str success Specifies the root of the tree in which to search identities.
  bind_dn str success Specifies the distinguished name for binding to the LDAP server.
  groupnet str dns_search list success Groupnet identifier. List of DNS search suffixes
  linked_access_zones dns_servers list success List of access zones linked to the authentication provider. List of Domain Name Server IP addresses
  name id str success Specifies the name of the LDAP provider. Unique Groupnet ID.
  server_uris name str success Specifies the server URIs. Name of groupnet
  status str subnets list success Specifies the status of the provider. List of names of the subnets in the groupnet
@@ -2466,15 +2620,15 @@ Manage LDAP authentication provider on PowerScale * Jennifer John (@johnj9) -------------------------------- -# SyncIQ Policy Module +# LDAP Module -Manage SyncIQ policies on PowerScale +Manage LDAP authentication provider on PowerScale ### Synopsis - Managing SyncIQ policies on PowerScale includes create a SyncIQ policy, modify a SyncIQ policy, get details of a SyncIQ policy, creating jobs on SyncIQ policy. + Managing LDAP authentication provider on PowerScale storage system includes creating, modifying, deleting and retrieving details of LDAP provider. ### Parameters - + @@ -2485,310 +2639,526 @@ Manage SyncIQ policies on PowerScale - - - - - - - - - + + - - + - - + + - + - + - - - - - - - - - - + + - + - + - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + - + + - - - - - - - - - - - - - - - - - - + - + + - - + - + + - - - + + - + + - - + - - - + + + - + + +
ParameterDescription
policy_name str
The name of the policy.
Required at the time of policy creation, for the rest of the operations either policy_name or policy_id is required.
policy_id ldap_name str True
The policy_id is auto generated at the time of creation.
For get/modify operations either policy_name or policy_id is needed.
Parameters policy_name and policy_id are mutually exclusive.

Specifies the name of the LDAP provider.
new_policy_name str server_uris list
elements: str

The new name of the policy while renaming an existing policy.
policy_name or policy_id is required together with new_policy_name.

Specifies the server URIs.
This parameter is mandatory during create.
Server_uris should begin with ldap:// or ldaps:// if not validation error will be displayed.
action server_uri_state str
  • sync
  • copy

Indicates type of replication action to be performed on the source.
state str True
  • absent
  • present

The state option is used to determine whether the policy exists or not.
  • present-in-ldap
  • absent-in-ldap

Specifies if the server_uris need to be added or removed from the provider.
This parameter is mandatory if server_uris is specified.
While creating LDAP provider, this parameter value should be specified as 'present-in-ldap'.
description base_dn str
Description of the policy.

Specifies the root of the tree in which to search identities.
This parameter is mandatory during create.
enabled bool ldap_parameters dict
Indicates whether policy is enabled or disabled.

Specify additional parameters to configure LDAP domain.
run_job
  groupnet str
Groupnet identifier.
This is an optional parameter and defaults to groupnet0.
  bind_dn str
Specifies the distinguished name for binding to the LDAP server.
  bind_password str
Specifies the password for the distinguished name for binding to the LDAP server.
state str True
  • on-schedule
  • when-source-modified
  • when-snapshot-taken

Types of scheduling a job on the policy.
job_delay int
If run_job is set to when-source-modified, job_delay is the duration to wait before triggering a job once there is modification on source.
  • absent
  • present

The state of the LDAP provider after the task is performed.
present - indicates that the LDAP provider should exist on the system.
absent - indicates that the LDAP provider should not exist on the system.
job_delay_unit onefs_host str True seconds
  • seconds
  • minutes
  • hours
  • days

Unit for job_delay.
rpo_alert int
If run_job is set to 'on-schedule' it is set to time/date, an alert is created if the specified RPO for this policy is exceeded.
The default value is 0, which will not generate RPO alerts.
rpo_alert_unit str minutes
  • minutes
  • hours
  • days
  • weeks
  • months
  • years

Unit for rpo_alert.

IP address or FQDN of the PowerScale cluster.
snapshot_sync_pattern port_no str 8080
The naming pattern that a snapshot must match to trigger a sync when the schedule is when-snapshot-taken.

Port number of the PowerScale cluster.It defaults to 8080 if not specified.
skip_when_source_unmodified verify_ssl bool True
If true and schedule is set , the policy will not run if no changes have been made to the contents of the source directory since the last job successfully completed.
Option modifiable when run_job is "on_schedule".
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
schedule api_user str True
Schedule set when run_policy is 'on-schedule'.
It must be in isidate format.
If the format is not proper an error will be thrown.

username of the PowerScale cluster.
source_cluster dict api_password str True
Defines the details of source_cluster.

the password of the PowerScale cluster.
+ +### Notes +* This module does not support modification of bind_password of LDAP provider. The value specified for bind_password will be ignored during modify. +* The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. + +### Examples +``` +- name: Add an LDAP provider + dellemc.powerscale.ldap: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ldap_name: "ldap_test" + server_uris: + - "{{server_uri_1}}" + - "{{server_uri_2}}" + server_uri_state: 'present-in-ldap' + base_dn: "DC=ansildap,DC=com" + ldap_parameters: + groupnet: "groupnet_ansildap" + bind_dn: "cn=admin,dc=example,dc=com" + bind_password: "{{bind_password}}" + state: "present" + +- name: Add server_uris to an LDAP provider + dellemc.powerscale.ldap: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ldap_name: "ldap_test" + server_uris: + - "{{server_uri_1}}" + server_uri_state: "present-in-ldap" + state: "present" + +- name: Remove server_uris from an LDAP provider + dellemc.powerscale.ldap: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ldap_name: "ldap_test" + server_uris: + - "{{server_uri_1}}" + server_uri_state: "absent-in-ldap" + state: "present" + +- name: Modify LDAP provider + dellemc.powerscale.ldap: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ldap_name: "ldap_test" + base_dn: "DC=ansi_ldap,DC=com" + ldap_parameters: + bind_dn: "cn=admin,dc=test,dc=com" + state: "present" + +- name: Get LDAP provider details + dellemc.powerscale.ldap: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ldap_name: "ldap_test" + state: "present" + +- name: Delete a LDAP provider + dellemc.powerscale.ldap: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ldap_name: "ldap_test" + state: "absent" +``` + +### Return Values + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - + + + + - + - - - - - - + + + + - + - - - - - - + + + + - + - - - - - - + + + + - - - - - - - - - + - - - - - - + + + + - + - - - - - - + + + + - + - - - - - - + + + + - - - +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
  source_root_path str
The root directory on the source cluster where the files will be synced from.
Source root path should begin with /ifs. For example, if we want to create a synciq policy for the directory 'source' in the base path /ifs, then the source_root_path will be '/ifs/source'.
  source_exclude_directories list
elements: str

List of path to the directories that should be excluded while running a policy.
For example, if we want to exclude directory 'exclude1' at location '/ifs/source', then the source_exclude_directories will be '/ifs/source/exclude1'.
  source_include_directories list
elements: str

List of path to the directories that should be included while running a policy
For example, if we want to include directory 'include1' at location '/ifs/source', then the source_exclude_directories will be '/ifs/source/include1'.
  source_network dict
Run the policy only on nodes in the specified subnet and pool.
target_cluster dict
Details of the target cluster.
ldap_provider_details complex When LDAP provider exists The LDAP provider details.
  target_host str
Host IP or FQDN where we want to replicate the source.
base_dn str success Specifies the root of the tree in which to search identities.
  target_path str
The directory location to have the replicated source data.
bind_dn str success Specifies the distinguished name for binding to the LDAP server.
  target_certificate_id str
The ID of the target cluster certificate being used for encryption
This parameter is not supported by isi_sdk_8_1_1
groupnet str success Groupnet identifier.
  target_certificate_name str
The name of the target cluster certificate being used for encryption
Parameters target_certficate_name and target_certificate_id are mutually exclusive
This parameter is not supported by isi_sdk_8_1_1
linked_access_zones list success List of access zones linked to the authentication provider.
target_snapshot dict
Details of snapshots to be created at the target.
  target_snapshot_archive bool
Indicates whether to take snapshot of the target.
name str success Specifies the name of the LDAP provider.
  target_snapshot_expiration int
Expiration time of snapshot.
Value 0 means no expiration.
server_uris str success Specifies the server URIs.
  exp_time_unit str years
  • years
  • months
  • weeks
  • days

Unit of target_snapshot expiration time.
status str success Specifies the status of the provider.
job_params dict
+ +### Authors +* Jennifer John (@johnj9) + +-------------------------------- +# Network Pool Module + +Manages Network Pools on PowerScale Storage System + +### Synopsis + Managing Network Pools on the PowerScale Storage System includes creating, modifying, deleting and reterving details of network pool. + +### Parameters + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - - + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2796,7 +3166,7 @@ Manage SyncIQ policies on PowerScale - + @@ -2804,7 +3174,7 @@ Manage SyncIQ policies on PowerScale - + @@ -2812,7 +3182,7 @@ Manage SyncIQ policies on PowerScale - + @@ -2820,7 +3190,7 @@ Manage SyncIQ policies on PowerScale - + @@ -2830,167 +3200,89 @@ Manage SyncIQ policies on PowerScale
ParameterTypeRequiredDefaultChoicesDescription
pool_name str True
The Name of the pool.
new_pool_name str
Specifies the parameters to create a job on SyncIQ policy.

Name of the pool when renaming an existing pool.
  action str True
  • run
  • resync_prep
  • allow_write
  • allow_write_revert

The action to be taken by this job.
  wait_for_completion bool False groupnet_name str True
The name of the groupnet.
subnet_name str True
The name of the subnet.
description str
Description of the pool.
access_zone str
Name of access zone to be associated with pool.
state str True
  • absent
  • present

The state option is used to mention the existence of pool.
additional_pool_params dict
Define additional parameters for pool.
  ranges list
elements: dict

Specifies if the job should run synchronously or asynchronously. By default the job is created to run asynchronously.

List of IP address ranges in this pool.
   low str
Lower limit.
   high str
Upper limit.
  source_snapshot range_state str
An optional snapshot to copy/sync from.
  • add
  • remove

This signifies if range needs to be added or removed.
  workers_per_node int ifaces list
elements: dict

Specifies the desired workers per node. This parameter is valid for allow_write, and allow_write_revert operation. This is an optional parameter and it defaults to 3.

List of Pool interface members.
accelerated_failback bool
If set to true, SyncIQ will perform failback configuration tasks during the next job run, rather than waiting to perform those tasks during the failback process. Performing these tasks ahead of time will increase the speed of failback operations.
It defaults to True, if not specified.
restrict_target_network bool
   iface str
Pool interface members
   lnn int
Logical Node Number
  iface_state str
  • add
  • remove

This signifies if interface needs to be added or removed.
sc_params dict
If set to true then replication policies will connect only to nodes in the specified SmartConnect zone. If set to false, replication policies are not restricted to specific nodes on the target cluster.

SmartConnect Parameters.
onefs_host
  sc_dns_zone str
SmartConnect zone name for the pool.
  sc_subnet str
Name of SmartConnect service subnet for this pool.
  sc_connect_policy str
  • round_robin
  • conn_count
  • throughput
  • cpu_usage

SmartConnect client connection balancing policy.
  sc_failover_policy str
  • round_robin
  • conn_count
  • throughput
  • cpu_usage

SmartConnect IP failover policy.
  rebalance_policy str
  • auto
  • manual

Rebalance policy.
  alloc_method str
  • dynamic
  • static

Specifies how IP address allocation is done among pool members.
  sc_auto_unsuspend_delay int
Time delay in seconds before a node which has been automatically unsuspended becomes usable in SmartConnect responses for pool zones.
  sc_ttl int
Time to live value for SmartConnect DNS query responses in seconds.
  aggregation_mode str
  • roundrobin
  • failover
  • lacp
  • fec

OneFS supports the following NIC aggregation modes.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* There is a delay to view the jobs running on the policy. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Create SyncIQ policy - dellemc.powerscale.synciqpolicy: + - name: Create Network Pool + dellemc.powerscale.networkpool: onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - action: "copy" - description: "Creating a policy" - enabled: True - policy_name: "New_policy" - run_job: "on-schedule" - schedule: "every 1 days at 12:00 PM" - skip_when_source_unmodified: True - rpo_alert: 100 - source_cluster: - source_root_path: "" - source_exclude_directories: "" - source_include_directories: "" - source_network: - pool: "pool0" - subnet: "subnet0" - target_cluster: - target_host: "198.10.xxx.xxx" - target_path: "" - target_certificate_id: "7sdgvejkiau7629903048hdjdkljsbwgsuasj7169823kkckll" - target_snapshot: - target_snapshot_archive: True - target_snapshot_expiration: 90 - exp_time_unit: "day" - accelerated_failback: False - restrict_target_network: True - state: "present" - - - name: Modify SyncIQ policy - dellemc.powerscale.synciqpolicy: - onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - policy_name: "New_policy" - action: "sync" - description: "Creating a policy" - enabled: False - run_job: "when-snapshot-taken" - snapshot_sync_patten: "^snapshot\\-$latest" - source_cluster: - source_root_path: "" - source_exclude_directories: "" - source_include_directories: "" - source_network: - pool: "pool1" - subnet: "subnet1" - target_cluster: - target_host: "198.10.xxx.xxx" - target_path: "" - target_certificate_id: "7sdgvejkiau7629903048hdjdkljsbwgsuasj716iuhywthsjk" - target_snapshot: - target_snapshot_archive: False - accelerated_failback: True - restrict_target_network: False + groupnet: "groupnet0" + subnet: "subnet0" + pool: "Test_Pool_2" + access_zone: "system" state: "present" - - name: Rename a SyncIQ policy - dellemc.powerscale.synciqpolicy: + - name: Get Network Pool + dellemc.powerscale.networkpool: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - policy_id: "d63b079d34adf2d2ec3ce92f15bfc730" - new_policy_name: "Policy_Rename" + groupnet: "groupnet0" + subnet: "subnet0" + pool: "Test_Pool_2" state: "present" - - name: Get SyncIQ policy details - dellemc.powerscale.synciqpolicy: + - name: Modify Network Pool + dellemc.powerscale.networkpool: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - policy_name: "Policy_rename" - state: "present" - - - name: Create a job on SyncIQ policy - dellemc.powerscale.synciqpolicy: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - policy_name: "Test_SSL" - job_params: - action: "run" - source_snapshot: "TestSIQ-snapshot" - wait_for_completion: False - state: "present" - - - name: Create a resync_prep job on SyncIQ policy - dellemc.powerscale.synciqpolicy: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - policy_name: "Test_SSL" - job_params: - action: "resync_prep" - source_snapshot: "TestSIQ-snapshot" - wait_for_completion: False - state: "present" - - - name: Allow writes on target of SyncIQ policy - dellemc.powerscale.synciqpolicy: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - policy_name: "Test_SSL" - job_params: - action: "allow_write" - source_snapshot: "TestSIQ-snapshot" - workers_per_node: 3 - wait_for_completion: False - state: "present" - - - name: Disallow writes on target of SyncIQ policy - dellemc.powerscale.synciqpolicy: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - policy_name: "Test_SSL" - job_params: - action: "allow_write_revert" - source_snapshot: "TestSIQ-snapshot" - workers_per_node: 3 - wait_for_completion: False + groupnet: "groupnet0" + subnet: "subnet0" + pool: "Test_Pool_2" + additional_pool_params: + ranges: + - low: "10.230.**.***" + high: "10.230.**.***" + range_state: "add" + ifaces: + - iface: "ext-1" + lnn: 1 + iface_state: "add" + sc_params: + sc_dns_zone: "10.230.**.***" + sc_connect_policy: "throughput" + sc_failover_policy: "throughput" + rebalance_policy: "auto" + alloc_method: "static" + sc_auto_unsuspend_delay: 200 + sc_ttl: 200 + aggregation_mode: "fec" + description: "Pool Created by Ansible Modify" state: "present" - - name: Delete SyncIQ policy by policy name - dellemc.powerscale.synciqpolicy: + - name: Delete Network Pool + dellemc.powerscale.networkpool: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - policy_name: "Policy_rename" + groupnet: "groupnet0" + subnet: "subnet0" + pool: "Test_Pool_2" state: "absent" - - name: Delete SyncIQ policy by policy ID - dellemc.powerscale.synciqpolicy: + - name: Rename a network Pool + dellemc.powerscale.networkpool: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - policy_id: "d63b079d34adf2d2ec3ce92f15bfc730" - state: "absent" + groupnet_name: "groupnet0" + subnet_name: "subnet0" + pool_name: "Test_Pool" + new_pool_name: "Test_Pool_Rename" + state: "present" ``` ### Return Values - + @@ -3005,119 +3297,179 @@ Manage SyncIQ policies on PowerScale - + - - + + - + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - + - + - + - + - + + + + + + + + - + - + - + - - - - - - - + - + + + + + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + - +
Key Whether or not the resource has changed.
synciq_policy_details pools complex When SyncIQ policy exists Details of the SyncIQ policy. always Details of the network pool.
  action access_zone str success Type of action for the policy Name of a valid access zone to map IP address pool to the zone.
  enabled bool addr_family str success Indicates whether policy is enabled IP address format.
  aggregation_mode str success OneFS supports the following NIC aggregation modes.
  alloc_method str success Specifies how IP address allocation is done among pool members.
  description str success A description of the pool.
  groupnet str success Name of the groupnet this pool belongs to.
  id str success ID of the policy. Unique Pool ID.
  jobs list ifaces str success List of jobs running on the policy List of interface members in this pool.
  name str success The name of the policy. The name of the pool. It must be unique throughout the given subnet. It's a required field with POST method.
  schedule ranges str success Type of schedule chosen to run a policy List of IP address ranges in this pool.
  source_root_path rebalance_policy str success The path to the source directory to be replicated Rebalance policy.
  target_host sc_auto_unsuspend_delay int success Time delay in seconds before a node which has been automatically unsuspended becomes usable in SmartConnect responses for pool zones.
  sc_connect_policy str success The IP/FQDN of the host where source is replicated SmartConnect client connection balancing policy.
  target_path sc_dns_zone str success The target directory where source is replicated SmartConnect zone name for the pool.
target_synciq_policy_details complex When failover/failback is performed on target cluster Details of the target SyncIQ policy.
  failover_failback_state sc_dns_zone_aliases list success List of SmartConnect zone aliases (DNS names) to the pool.
  sc_failover_policy str success The state of the policy with respect to sync failover/failback. SmartConnect IP failover policy.
  id sc_subnet str success ID of the policy. Name of SmartConnect service subnet for this pool.
  name sc_suspended_nodes list success List of LNNs showing currently suspended nodes in SmartConnect.
  sc_ttl int success Time to live value for SmartConnect DNS query responses in seconds.
  static_routes list success List of interface members in this pool.
  subnet str success The name of the policy. The name of the subnet.
### Authors -* Spandita Panigrahi (@panigs7) +* Meenakshi Dembi (@dembim) -------------------------------- -# Filepool Policy Module +# Network Rule Module -Manages file pool policy on PowerScale +Manages Network provisioning rules for PowerScale Storage System ### Synopsis - Managing file pool policy on PowerScale Storage System. This includes creating a new file pool policy, deleting a file pool policy and retrieving the details of a file pool policy. + Modify an existing network provisioning rule. + Create a new network provisioning rule. + Delete a network provisioning rule. + View the details of a network provisioning rule. ### Parameters - + - + @@ -3125,140 +3477,79 @@ Manages file pool policy on PowerScale - + - + - + + - - + - + - + - - - + + - + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + - + - - + + - + + - - + - - - - - - - - - - - - - - - - - - + - + - + @@ -3266,7 +3557,7 @@ Manages file pool policy on PowerScale - + @@ -3274,7 +3565,7 @@ Manages file pool policy on PowerScale - + @@ -3282,7 +3573,7 @@ Manages file pool policy on PowerScale - + @@ -3290,7 +3581,7 @@ Manages file pool policy on PowerScale - + @@ -3300,162 +3591,161 @@ Manages file pool policy on PowerScale
ParameterParameter Type Required DefaultDescription
policy_id description str
Unique Id of the file pool policy.
It is mutually exclusive with policy_name.

Description for rule.
It can be no more than 128 bytes in length.
policy_name groupnet_name str True
Unique name of the file pool policy.
It is mutually exclusive with policy_id.
Mandatory for file pool policy creation.

Groupnet name to which this provisioning rule applies.
description iface str
A description of the file pool policy.

Interface to which the rule applies.
apply_order int node_type str
The order in which the policy should be applied.
It is relative to other policies.
  • any
  • storage
  • accelerator
  • backup-accelerator

Node types to which the provisioning rule applies.
apply_data_storage_policy dict pool_name str True
Action to move files to storage pool or tier.

Pool to which this provisioning rule applies.
  ssd_strategy str
  • SSD_metadata_read_acceleration
  • SSD_metadata_read_write_acceleration
  • avoid_SSD
  • SSD_for_metadata_and_data

Strategy for ssd.
  storagepool str anywhere
Name of the storage pool.
apply_snapshot_storage_policy dict
Action to move snapshots to storage pool or tier.
  ssd_strategy str
  • SSD_metadata_read_acceleration
  • SSD_metadata_read_write_acceleration
  • avoid_SSD
  • SSD_for_metadata_and_data

Strategy for ssd.
  storagepool str anywhere
Name of the storage pool.
set_requested_protection rule_name str True
  • default_protection_of_node_pool_or_tier
  • tolerate_failure_of_1_drive_or_1_node
  • tolerate_failure_of_2_drives_or_1_node
  • tolerate_failure_of_2_drives_or_2_nodes
  • tolerate_failure_of_3_drives_or_1_node
  • tolerate_failure_of_3_drives_or_(1_node_and_1drive)
  • tolerate_failure_of_3_drives_or_3_nodes
  • tolerate_failure_of_4_drives_or_1_node
  • tolerate_failure_of_4_drives_or_2_nodes
  • tolerate_failure_of_4_drives_or_4_nodes
  • mirrored_over_2_nodes
  • mirrored_over_3_nodes
  • mirrored_over_4_nodes
  • mirrored_over_5_nodes
  • mirrored_over_6_nodes
  • mirrored_over_7_nodes
  • mirrored_over_8_nodes

A
c
t
i
o
n

t
o

c
h
a
n
g
e

r
e
q
u
e
s
t
e
d

p
r
o
t
e
c
t
i
o
n
.

Name of provisioning rule.
set_data_access_pattern new_rule_name str
  • random
  • concurrency
  • streaming

Action to set data access pattern optimization.

Name of provisioning rule when renaming an existing rule.
set_write_performance_optimization subnet_name str True
  • enable_smartcache
  • disable_smartcache

Action to set write performance optimization.

Name of the subnet to which this provisioning rule applies.
file_matching_pattern dict
The file matching rules for the policy.
  or_criteria list
elements: dict
True
or criteria conditions for the file policy.
Maximum of 3 criteria's is possible.
state state str True
  • absent
  • present

The state option is used to mention the existence of file pool policy.

State of provisioning rule.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* Modifying a file pool policy is not supported. -* The check_mode is supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` -- name: Get a file pool policy - dellemc.powerscale.filepoolpolicy: + - name: Get the details of a network rule + dellemc.powerscale.networkrule: onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" + port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - policy_name: "test_11" - state: 'present' + verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet1" + subnet_name: "subnet1" + pool_name: "pool1" + rule_name: "rule1" + state: "present" -- name: Delete a file pool policy - dellemc.powerscale.filepoolpolicy: + - name: Create a new network provisioning rule + dellemc.powerscale.networkrule: onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" + port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - policy_name: "test_11" - state: 'absent' + verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet1" + subnet_name: "subnet1" + pool_name: "pool1" + rule_name: "new_rule" + description: "Rename existing rule" + iface: "ext1" + node_type: "storage" + state: "present" -- name: Create a file pool policy - dellemc.powerscale.filepoolpolicy: + - name: Modifying an existing network provisioning rule + dellemc.powerscale.networkrule: onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet1" + subnet_name: "subnet1" + pool_name: "pool1" + rule_name: "rule_name" + description: "Modify rule" + iface: "ext1" + node_type: "storage" + state: "present" + + - name: Delete a network provisioning rule + dellemc.powerscale.networkrule: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - policy_name: "test_policy_1" - description: 'Creating a policy' - apply_order: 1 - apply_data_storage_policy: - ssd_strategy: "SSD_metadata_read_acceleration" - storagepool: "test_tier" - set_data_access_pattern: "concurrency" - set_requested_protection: "mirrored_over_3_nodes" - set_write_performance_optimization: "enable_smartcache" - file_matching_pattern: - or_criteria: - - and_criteria: - - type: "file_name" - condition: "does_not_match" - value: "file_name_test" - case_sensitive: True - - type: "accessed" - condition: "after" - datetime_value: "2022-04-04 23:30" - - type: "created" - condition: "is_newer_than" - relative_datetime_count: - time_value: 12 - time_unit: "years" - - and_criteria: - - type: "size" - condition: "not_equal" - size_info: - size_value: 60 - size_unit: "MB" - - type: "file_attribute" - condition: "does_not_match" - field: "test_field" - value: "uni" - - type: "file_attribute" - condition: "exists" - field: "test" - state: 'present' + verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet1" + subnet_name: "subnet1" + pool_name: "pool1" + rule_name: "rule" + state: absent ``` ### Return Values - + - + - + - + - + - - + + - - + + - + - - + + - + - + - + - - + + - + - - - - - - - - - + - - + + - + - + - + + + + + + + + + + + + + + +
KeyKey Type Returned Description
changed changed bool always Always Whether or not the resource has changed.
filepool_policy_details network_rule_details complex When a Policy exists Policy details. When a network provisioning rule exists Network provisioning rule details.
  actions list description str success List of action's available for the policy. Description of network provisioning rule
  apply_order int groupnet str success The order in which policy is present with respect to other policies. Name of groupnet to which this rule belongs
  description id str success Description of the policy. Unique ID for network provisioning rule
  file_matching_pattern complex iface str success File matching pattern of the policy. ['Interface name to which this rule belongs', 'For example, ext-1']
   or_criteria list success or criteria conditions for the file policy.
  id int name str success Unique ID of the policy. Name of network provisioning rule
  name node_type str success Unique name of the policy. ['Node type to which the provisioning rule applies']
  pool str success Name of pool to which this rule belongs
  subnet str success Name of subnet to which this rule belongs
### Authors -* Ananthu S Kuttattu (@kuttattz) +* Spandita Panigrahi (@panigs7) -------------------------------- -# Storagepool Tier Module +# Network Settings Module -Manages storage pool tier on PowerScale +Manages Network Settings on PowerScale Storage System ### Synopsis - Managing storage pool tier on PowerScale Storage System. This includes creating a new storage pool tier, deleting a storage pool tier and retrieving the details of a storage pool tier. + Managing Network Settings on the PowerScale Storage System includes modifying and retrieving details of network settings. ### Parameters - + @@ -3466,36 +3756,20 @@ Manages storage pool tier on PowerScale - - - - - - - - - - - - - - - - - - + + - + - - + + @@ -3540,40 +3814,35 @@ Manages storage pool tier on PowerScale
ParameterDescription
tier_id int
Unique Id of the storage pool tier.
It is mutually exclusive with tier_name.
tier_name str
Unique name of the storage pool tier.
It is mutually exclusive with tier_id.
Mandatory for storage pool tier creation.
nodepools list
elements: str
enable_source_routing bool
List of names of the nodepool's.

The value for enabling or disabling source based routing.
state str True
  • absent
  • present

The state option is used to mention the existence of storage pool tier.
  • present

State of network settings.
onefs_host
### Notes -* Modifying a storage pool tier is not supported. -* The check_mode is supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` -- name: Get storage pool tier details - dellemc.powerscale.storagepooltier: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - tier_name: "test_tier" - state: 'present' + - name: Get Network settings + dellemc.powerscale.networksettings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + state: "{{state_present}}" -- name: Create a storage pool tier - dellemc.powerscale.storagepooltier: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - tier_name: "test_tier" - nodepools: - - "test_nodepool" - state: 'present' + - name: Enable source based routing + dellemc.powerscale.networksettings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + enable_source_routing: True + state: "{{state_present}}" -- name: Delete a storage pool tier - dellemc.powerscale.storagepooltier: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - tier_name: "test_tier" - state: 'absent' + - name: Disable source based routing + dellemc.powerscale.networksettings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + enable_source_routing: False + state: "{{state_present}}" ``` ### Return Values @@ -3592,54 +3861,54 @@ Manages storage pool tier on PowerScale Whether or not the resource has changed. - storage_pool_tier_details + network_settings complex - When a tier exists - Storage pool tier details. + always + Details of the network settings.   - children - list + default_groupnet + str success - Nodepool's of the storage pool tier. + Default client-side DNS settings for non-multitenancy aware programs.   - id - int + sbr + str success - Unique ID of the storage pool tier. + Enable or disable source based routing.   - lnns - list + sc_rebalance_delay + int success - The nodes that are part of this tier. + Delay in seconds for IP rebalance.   - name - str + tcp_ports + list success - Unique name of the storage pool tier. + List of client TCP ports. ### Authors -* Ananthu S Kuttattu (@kuttattz) +* Meenakshi Dembi (@dembim) -------------------------------- -# Users Module +# NFS Export Module -Manage users on the PowerScale Storage System +Manage NFS exports on a PowerScale Storage System ### Synopsis - Managing Users on the PowerScale Storage System includes create user, delete user, update user, get user, add role and remove role. + Managing NFS exports on an PowerScale system includes retrieving details of NFS export, creating NFS export in specified access zone, adding or removing clients, modifying and deleting NFS export. ### Parameters - + @@ -3650,92 +3919,76 @@ Manage users on the PowerScale Storage System - - - - - - - - - + + - - + - + + - - + - - + + - - - - - - - - - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - + - + @@ -3743,23 +3996,23 @@ Manage users on the PowerScale Storage System - + - + - - + + - - + + - - + + @@ -3804,262 +4057,217 @@ Manage users on the PowerScale Storage System
ParameterDescription
user_name str
The name of the user account.
Required at the time of user creation, for rest of the operations either user_name or user_id is required.
user_id path str True
The user_id is auto generated at the time of creation.
For all other operations either user_name or user_id is needed.

Specifies the filesystem path. It is the absolute path for System access zone and it is relative if using non-system access zone.
For example, if your access zone is 'Ansible' and it has a base path '/ifs/ansible' and the path specified is '/user1', then the effective path would be '/ifs/ansible/user1'.
If your access zone is System, and you have 'directory1' in the access zone, the path provided should be '/ifs/directory1'.
The directory on the path must exist - the NFS module will not create the directory.
Ansible module will only support exports with a unique path.
If there are multiple exports present with the same path, fetching details, creation, modification or deletion of such exports will fail.
password access_zone str System
The password for the user account.
Required only in the creation of a user account.
If given in other operations then the password will be ignored.

Specifies the zone in which the export is valid.
Access zone once set cannot be changed.
access_zone str clients list
elements: str
system
This option mentions the zone in which a user is created.
For creation, access_zone acts as an attribute for the user.
For all other operations access_zone acts as a filter.
provider_type str local
  • local
  • file
  • ldap
  • ads
  • nis

This option defines the type which will be used to authenticate the user.
Creation, Modification and Deletion is allowed for local users.
Adding and removing roles is allowed for all users of the system access zone.
Getting user details is allowed for all users.
If the provider_type is 'ads' then domain name of the Active Directory Server has to be mentioned in the user_name. The format for the user_name should be 'DOMAIN_NAME\user_name' or "DOMAIN_NAME\\user_name".
This option acts as a filter for all operations except creation.

Specifies the clients to the export. The type of access to clients in this list is determined by the 'read_only' parameter.
This list can be changed anytime during the lifetime of the NFS export.
enabled bool root_clients list
elements: str

Enabled is a bool variable which is used to enable or disable the user account.

Specifies the clients with root access to the export.
This list can be changed anytime during the lifetime of the NFS export.
primary_group str read_only_clients list
elements: str

A user can be member of multiple groups of which one group has to be assigned as primary group.
This group will be used for access checks and can also be used when creating files.
A user can be added to the group using Group Name.

Specifies the clients with read-only access to the export, even when the export is read/write.
This list can be changed anytime during the lifetime of the NFS export.
home_directory str read_write_clients list
elements: str

The path specified in this option acts as a home directory for the user.
The directory which is given should not be already in use.
For a user in a system access zone, the absolute path has to be given.
For users in a non-system access zone, the path relative to the non-system Access Zone's base directory has to be given.

Specifies the clients with both read and write access to the export, even when the export is set to read-only.
This list can be changed anytime during the lifetime of the NFS export.
shell str read_only bool
This option is for choosing the type of shell for the user account.

Specifies whether the export is read-only or read-write. This parameter only has effect on the 'clients' list and not the other three types of clients.
This setting can be modified any time. If it is not set at the time of creation, the export will be of type read/write.
full_name str sub_directories_mountable bool
The additional information about the user can be provided using full_name option.

True if all directories under the specified paths are mountable. If not set, sub-directories will not be mountable.
This setting can be modified any time.
email description str
The email id of the user can be added using email option.
The email id can be set at the time of creation and modified later.

Optional description field for the NFS export.
Can be modified by passing a new value.
state True
  • absent
  • present

The state option is used to mention the existence of the user account.

Defines whether the NFS export should exist or not.
Value present indicates that the NFS export should exist in system.
Value absent indicates that the NFS export should not exist in system.
role_name client_state str
The name of the role which a user will be assigned.
User can be added to multiple roles.
  • present-in-export
  • absent-in-export

Defines whether the clients can access the NFS export.
Value present-in-export indicates that the clients can access the NFS export.
Value absent-in-export indicates that the client cannot access the NFS export.
Required when adding or removing access of clients from the export.
While removing clients, only the specified clients will be removed from the export, others will remain as is.
role_state str security_flavors list
elements: str
  • present-for-user
  • absent-for-user

The role_state option is used to mention the existence of the role for a particular user.
It is required when a role is added or removed from user.
  • unix
  • kerberos
  • kerberos_integrity
  • kerberos_privacy

Specifies the authentication types that are supported for this export.
onefs_host
### Notes +* The check_mode is not supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Get User Details using user name - dellemc.powerscale.user: + - name: Create NFS Export + dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" + path: "" access_zone: "{{access_zone}}" - provider_type: "{{provider_type}}" - user_name: "{{account_name}}" - state: "present" + read_only_clients: + - "{{client1}}" + - "{{client2}}" + read_only: True + clients: ["{{client3}}"] + client_state: 'present-in-export' + state: 'present' - - name: Create User - dellemc.powerscale.user: + - name: Get NFS Export + dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" + path: "" access_zone: "{{access_zone}}" - provider_type: "{{provider_type}}" - user_name: "{{account_name}}" - password: "{{account_password}}" - primary_group: "{{primary_group}}" - enabled: "{{enabled}}" - email: "{{email}}" - full_name: "{{full_name}}" - home_directory: "{{home_directory}}" - shell: "{{shell}}" - role_name: "{{role_name}}" - role_state: "present-for-user" - state: "present" + state: 'present' - - name: Update User's Full Name and email using user name - dellemc.powerscale.user: + - name: Add a root client + dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" + path: "" access_zone: "{{access_zone}}" - provider_type: "{{provider_type}}" - user_name: "{{account_name}}" - email: "{{new_email}}" - full_name: "{{full_name}}" - state: "present" + root_clients: + - "{{client4}}" + client_state: 'present-in-export' + state: 'present' - - name: Disable User Account using User Id - dellemc.powerscale.user: + - name: Set sub_directories_mountable flag to True + dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" + path: "" access_zone: "{{access_zone}}" - provider_type: "{{provider_type}}" - user_id: "{{id}}" - enabled: "False" - state: "present" + sub_directories_mountable: True + state: 'present' - - name: Add user to a role using Username - dellemc.powerscale.user: + - name: Remove a root client + dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - user_name: "{{account_name}}" - provider_type: "{{provider_type}}" - role_name: "{{role_name}}" - role_state: "present-for-user" - state: "present" + path: "" + access_zone: "{{access_zone}}" + root_clients: + - "{{client4}}" + client_state: 'absent-in-export' + state: 'present' - - name: Remove user from a role using User id - dellemc.powerscale.user: + - name: Modify NFS Export + dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - user_id: "{{id}}" - role_name: "{{role_name}}" - role_state: "absent-for-user" - state: "present" + path: "" + access_zone: "{{access_zone}}" + description: "new description" + security_flavors: + - "kerberos_integrity" + - "kerberos" + state: 'present' - - name: Delete User using user name - dellemc.powerscale.user: + - name: Set read_only flag to False + dellemc.powerscale.nfs: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + path: "" + access_zone: "{{access_zone}}" + read_only: False + state: 'present' + + - name: Delete NFS Export + dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" + path: "" access_zone: "{{access_zone}}" - provider_type: "{{provider_type}}" - user_name: "{{account_name}}" - state: "absent" + state: 'absent' ``` ### Return Values - + - + - - - - - - - + - - + + - - + + - + - - + + - + - + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - + + - + - - + + - + - + - + - - + + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - -
KeyKey Type Returned Description
changed bool always Whether or not the resource has changed.
user_details NFS_export_details complex When user exists Details of the user. always The updated NFS Export details.
  email str all_dirs bool success The email of the user. sub_directories_mountable flag value.
  enabled bool clients list success Enabled is a bool variable which is used to enable or disable the user account. The list of clients for the NFS Export.
  gecos description str success The full description of the user. Description for the export.
  gid complex id int success The details of the primary group for the user. The ID of the NFS Export, generated by the array.
   id str success The id of the primary group.
   name str success The name of the primary group.
   type str success The resource's type is mentioned.
  home_directory str paths list success The directory path acts as the home directory for the user's account. The filesystem path.
  name str read_only bool success The name of the user. Specifies whether the export is read-only or read-write.
  provider str read_only_clients list success The provider contains the provider type and access zone. The list of read only clients for the NFS Export.
  roles read_write_clients list success The list of all the roles of which user is a member. The list of read write clients for the NFS Export.
  shell str root_clients list success The type of shell for the user account. The list of root clients for the NFS Export.
  uid complex zone str success Details about the id and name of the user. Specifies the zone in which the export is valid.
   id str success The id of the user.
   name str success The name of the user.
   type str success The resource's type is mentioned.
+ + changed + bool + always + A boolean indicating if the task had to make changes. + + ### Authors -* P Srinivas Rao (@srinivas-rao5) +* Manisha Agrawal(@agrawm3) +* Bhavneet Sharma(@Bhavneet-Sharma) -------------------------------- -# Groupnet Module +# NFS Alias Module -Manages groupnet configuration on PowerScale +Manage NFS aliases on a PowerScale Storage System ### Synopsis - Manages the groupnet configuration on the PowerScale storage system. This includes creating, modifying, deleting and retrieving the details of the groupnet. + Managing NFS aliases on an PowerScale system includes creating NFS alias for NFS export, Getting details of an NFS alias, Modifying different attributes of the NFS alias and Deleting an NFS alias. ### Parameters - + @@ -4070,68 +4278,60 @@ Manages groupnet configuration on PowerScale - + - + - + - + - + + - - - - - - - - - - + - + - - - + + + - - - + + + - + - + - - + + - - - + + + @@ -4176,101 +4376,84 @@ Manages groupnet configuration on PowerScale
ParameterDescription
groupnet_name nfs_alias_name str True
The name of the groupnet.

Name of an NFS alias.
description path str
A description of the groupnet.

Specifies the path to which the alias points.
It is the absolute path for System access zone and it is relative if using non-system access zone.
If your access zone is System, and you have 'directory1' in the access zone, the path provided should be '/ifs/directory1'.
The directory on the path must exist, the NFS alias module will not create the directory.
new_groupnet_name access_zone str System
Name of the groupnet when renaming an existing groupnet.
dns_servers list
elements: str

List of Domain Name Server IP addresses.

Specifies the zone in which the alias is valid.
Access zone once set cannot be changed.
dns_server_state scope str
  • add
  • remove

Specifies if the dns_servers should be added or removed from the groupnet.
effective
  • effective
  • user

When specified as 'effective', or not specified, all fields are returned.
When specified as 'user', only fields with non-default values are shown.
dns_search_suffix list
elements: str
check bool False
List of DNS search suffixes.

Check for conflicts when viewing alias.
dns_search_suffix_state new_alias_name str
  • add
  • remove

Specifies if the dns search suffix should be added or removed from the groupnet.

New name of the alias.
state str True
  • present
  • absent

The state of the groupnet after the task is performed.
present - indicates that the groupnet should exist on the system.
absent - indicates that the groupnet should not exist on the system.
present
  • absent
  • present

Defines whether the NFS alias should exist or not.
Present indicates that the NFS alias should exist in system.
Absent indicates that the NFS alias should not exist in system.
onefs_host
### Notes +* The check_mode is supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` -- name: Create a groupnet - dellemc.powerscale.groupnet: + - name: Create NFS alias - check mode + dellemc.powerscale.nfs_alias: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - description: "Test Groupnet" - dns_servers: - - '198.10.**.***' - dns_server_state: 'add' - dns_search_suffix: - - 'samplesearch.com' - dns_search_suffix_state: 'add' + nfs_alias_name: "/sample_alias_2" + path: "/ifs" + access_zone: 'System' state: "present" + check_mode: True -- name: Add dns_servers to a groupnet - dellemc.powerscale.groupnet: + - name: Create NFS alias + dellemc.powerscale.nfs_alias: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - dns_servers: - - '198.10.**.***' - dns_server_state: 'add' + nfs_alias_name: "/sample_alias_2" + path: "/ifs" + access_zone: 'System' state: "present" -- name: Remove dns_servers from a groupnet - dellemc.powerscale.groupnet: + - name: Get NFS alias by name + dellemc.powerscale.nfs_alias: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - dns_servers: - - '198.10.**.***' - dns_server_state: 'remove' - state: "present" + nfs_alias_name: "/sample_alias_2" + scope: "effective" + check: True -- name: Add dns_search_suffix to a groupnet - dellemc.powerscale.groupnet: + - name: Modify NFS alias - check mode + dellemc.powerscale.nfs_alias: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - dns_search_suffix: - - 'samplesearch.com' - dns_search_suffix_state: 'add' + nfs_alias_name: "/sample_alias_2" + new_alias_name: "/Renamed_alias_2" + path: "/ifs/Test" state: "present" + check_mode: True -- name: Remove dns_search_suffix from a groupnet - dellemc.powerscale.groupnet: + - name: Modify NFS alias + dellemc.powerscale.nfs_alias: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - dns_search_suffix: - - 'samplesearch.com' - dns_search_suffix_state: 'remove' + nfs_alias_name: "/sample_alias_2" + new_alias_name: "/Renamed_alias_2" + path: "/ifs/Test" state: "present" -- name: Rename a groupnet - dellemc.powerscale.groupnet: + - name: Delete NFS alias - check mode + dellemc.powerscale.nfs_alias: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - new_groupnet_name: "groupnet_test_rename" - -- name: Get groupnet details - dellemc.powerscale.groupnet: - onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - state: "present" + nfs_alias_name: "/Renamed_alias_2" + state: "absent" + check_mode: True -- name: Delete a groupnet - dellemc.powerscale.groupnet: + - name: Delete NFS alias + dellemc.powerscale.nfs_alias: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" + nfs_alias_name: "/Renamed_alias_2" state: "absent" ``` @@ -4287,71 +4470,67 @@ Manages groupnet configuration on PowerScale changed bool always - Whether or not the resource has changed. + A boolean indicating if the task had to make changes. - groupnet_details + nfs_alias_details complex - When a groupnet exists - Groupnet details. + always + The NFS alias details.   - dns_search - list + health + str success - List of DNS search suffixes + The health of the NFS alias.   - dns_servers - list + id + str success - List of Domain Name Server IP addresses + The ID of the NFS alias.   - id + name str success - Unique Groupnet ID. + The name of the NFS alias.   - name + path str success - Name of groupnet + The path of the NFS alias.   - subnets - list + zone + str success - List of names of the subnets in the groupnet + Specifies the zone in which the NFS alias is valid. ### Authors -* Jennifer John (@johnj9) +* Trisha Datta(@Trisha-Datta) -------------------------------- -# SMB Module +# Node Module -Manage SMB shares on PowerScale Storage System. You can perform these operations +Get node info of PowerScale Storage System. ### Synopsis - Managing SMB share on PowerScale. - Create a new SMB share. - Modify an existing SMB share. - Get details of an existing SMB share. - Delete an existing SMB share. + Get information of a node belonging to the PowerScale cluster. ### Parameters - + - + @@ -4359,310 +4538,210 @@ Manage SMB shares on PowerScale Storage System. You can perform these operations - - + + - - - - - - - - - + - + + - - - + + - + + - - + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + - - - + + - + + - - + - + + - - + - - - - - - - +
ParameterParameter Type Required DefaultDescription
share_name str node_id int True
The name of the SMB share.
path str
The path of the SMB share. This parameter will be mandatory only for the create operation. This is the absolute path for System Access Zone and the relative path for non-System Access Zone.

The Logical node Number of a PowerScale cluster node.
access_zone state str True System
Access zone which contains this share. If not specified it will be considered as a System Access Zone.
For a non-System Access Zone the effective path where the SMB is created will be determined by the base path of the Access Zone and the path provided by the user in the playbook.
For a System Access Zone the effective path will be the absolute path provided by the user in the playbook.
  • absent
  • present

Defines whether the node should exist or not.
new_share_name onefs_host str True
The new name of the SMB share.

IP address or FQDN of the PowerScale cluster.
description port_no str 8080
Description of the SMB share.
permissions list
elements: dict

Specifies permission for specific user, group, or trustee. Valid options read, write, and full.
This is a list of dictionaries. Each dictionry entry has 3 mandatory values as listed below.
1)'user_name'/'group_name'/'wellknown' can have actual name of the trustee like 'user'/'group'/'wellknown'.
2)'permission' can be 'read'/''write'/'full'.
3)'permission_type' can be 'allow'/'deny'.
The fourth entry 'provider_type' is optional (default is 'local').
4)'provider_type' can be 'local'/'file'/'ads'/'ldap'/'nis'.
access_based_enumeration bool
Only enumerates files and folders for the requesting user has access to.
access_based_enumeration_root_only bool
Access-based enumeration on only the root directory of the share.
browsable bool
Share is visible in net view and the browse list.

Port number of the PowerScale cluster.It defaults to 8080 if not specified.
ntfs_acl_support verify_ssl bool True
Support NTFS ACLs on files and directories.
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
directory_create_mask api_user str True
Directory creates mask bits. Octal value for owner, group, and others against read, write, and execute.

username of the PowerScale cluster.
directory_create_mode api_password str True
Directory creates mode bits. Octal value for owner, group, and others against read, write, and execute.

the password of the PowerScale cluster.
file_create_mask str
File creates mask bits. Octal value for owner, group, and others against read, write, and execute.
+ +### Notes +* The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. + +### Examples +``` +- name: Get node info of the PowerScale cluster node + dellemc.powerscale.node: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + node_id: "{{cluster_node_id}}" + state: "present" +``` + +### Return Values + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - + + + + - + - - - - - - + + + + - + - - - - - - + + + + - - - + + + + + + + + +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
file_create_mode str
File creates mode bits. Octal value for owner, group, and others against read, write, and execute.
create_path bool
Create path if does not exist.
allow_variable_expansion bool
Allow automatic expansion of variables for home directories.
auto_create_directory bool
Automatically create home directories.
continuously_available bool
Specify if persistent opens are allowed on the share.
file_filter_extension dict
Details of file filter extensions.
cluster_node_details complex When cluster node exists The cluster node details.
  extensions list
elements: str

Specifies the list of file extensions.
id int success Node id (device number) of a node.
  type str deny
  • allow
  • deny

Specifies if filter list is for deny or allow. Default is deny.
lnn int success Logical Node Number (LNN) of a node.
  state str
  • present-in-share
  • absent-in-share

State of the file filter extensions.
partitions complex success Node partition information.
file_filtering_enabled bool
   count int success Count of how many partitions are included.
+ +### Authors +* Ganesh Prabhu(@prabhg5) > + +-------------------------------- +# Settings Module + +Manages general settings for PowerScale storage system + +### Synopsis + Managing general settings on the PowerScale storage system which includes get and update operations for email settings and add, remove and get operations for NTP servers. + +### Parameters + + + + + + + + + + + + + - + - - + + - + - - - - - - - - - - - - - - - - - - - - + + - + - + - - - - - - - - - - - - - - - - - + - - + + - + - + + - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -4670,7 +4749,7 @@ Manage SMB shares on PowerScale Storage System. You can perform these operations - + @@ -4678,7 +4757,7 @@ Manage SMB shares on PowerScale Storage System. You can perform these operations - + @@ -4686,7 +4765,7 @@ Manage SMB shares on PowerScale Storage System. You can perform these operations - + @@ -4694,7 +4773,7 @@ Manage SMB shares on PowerScale Storage System. You can perform these operations - + @@ -4704,197 +4783,100 @@ Manage SMB shares on PowerScale Storage System. You can perform these operations
ParameterTypeRequiredDefaultChoicesDescription
mail_relay str
Enables file filtering on this zone.

The address of the SMTP server to be used for relaying the notification messages.
An SMTP server is required in order to send notifications.
If this str is empty, no emails will be sent.
ca_timeout dict mail_sender str
Continuosly available timeout for the SMB share.

The full email address that will appear as the sender of notification messages.
  value int
Persistent open timeout for the share.
  unit str seconds
  • seconds
  • minutes
  • hours

Unit of the ca_timeout.
strict_ca_lockout bool mail_subject str
Specifies if persistent opens would do strict lockout on the share.

The subject line for notification messages from this cluster.
smb3_encryption_enabled email_settings bool
Enables SMB3 encryption for the share.
ca_write_integrity str
  • none
  • full
  • write-read-coherent

Specify the level of write-integrity on continuously available shares.
change_notify str
  • all
  • norecurse
  • none

Level of change notification alerts on the share.

This is an addition flag to view the email settings.
oplocks bool ntp_servers list
elements: str

Support oplocks.

List of NTP servers which need to be configured.
impersonate_guest state str True
  • always
  • never
  • bad_user

Specify the condition in which user access is done as the guest account.
  • absent
  • present

The state option is used to mention the existence of pool.
impersonate_user ntp_server_id str
User account to be used as guest account.
host_acls list
elements: dict

An ACL expressing which hosts are allowed access. A deny clause must be the final entry.
  name str True
Name of the host ACL.
  access_type str True
The access type of the host ACL.
state str True
  • absent
  • present

Defines whether the SMB share should exist or not.

ID of NTP server.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* The check_mode is not supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Create SMB share for non system access zone - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - path: "" - access_zone: "{{non_system_access_zone}}" - state: "present" + - name: Get email settings + dellemc.powerscale.settings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + email_settings: "{{email_settings}}" + state: "{{state_present}}" - - name: Create SMB share for system access zone - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - path: "{{system_az_path}}" - description: "{{description}}" - create_path: False - allow_variable_expansion: True - auto_create_directory: True - continuously_available: True - file_filter_extension: - extensions: - - "sample_extension_1" - type: "allow" - state: "present-in-share" - file_filtering_enabled: True - ca_timeout: - value: 60 - unit: "minutes" - strict_ca_lockout: True - smb3_encryption_enabled: True - ca_write_integrity: "write-read-coherent" - change_notify: "all" - oplocks: True - impersonate_guest: "never" - impersonate_user: "sample_user" - host_acls: - - name: "sample_host_acl_1" - access_type: "allow" - - name: "sample_host_acl_2" - access_type: "deny" - state: "present" - - - name: Create SMB share for system access zone - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - path: "" - description: "{{description}}" - permissions: - - user_name: "{{system_az_user}}" - permission: "full" - permission_type: "allow" - - group_name: "{{system_az_group}}" - permission: "read" - permission_type: "allow" - - wellknown: "everyone" - permission: "read" - permission_type: "allow" - state: "present" - - - name: Modify multiple params for an existing SMB share - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - path: "/ifs" - allow_variable_expansion: False - auto_create_directory: False - file_filter_extension: - extensions: - - 'sample_extension_2' - type: "allow" - state: "absent-in-share" - file_filtering_enabled: True - ca_timeout: - value: 15 - unit: "minutes" - strict_ca_lockout: False - change_notify: "norecurse" - oplocks: False - impersonate_guest: "always" - impersonate_user: "new_user_2" - host_acls: - - name: "sample_host_acl_1" - access_type: "deny" - - name: "sample_host_acl_2" - access_type: "allow" - state: "present" + - name: Update email settings + dellemc.powerscale.settings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + state: "{{state_present}}" + mail_relay: "mailrelay.itp.dell.com" + mail_sender: "lab-a2@dell.com" + mail_subject: "lab-a2-alerts" - - name: Modify user permission for SMB share - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - path: "" - description: "{{description}}" - permissions: - - user_name: "{{system_az_user}}" - permission: "full" - permission_type: "allow" - - group_name: "{{system_az_group}}" - permission: "write" - permission_type: "allow" - - wellknown: "everyone" - permission: "write" - permission_type: "deny" - state: "present" + - name: Add NTP server + dellemc.powerscale.settings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ntp_servers: + - "10.106.**.***" + - "10.106.**.***" + state: "{{state_present}}" - - name: Delete system access zone SMB share - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - state: "absent" + - name: Add NTP server - Idempotency + dellemc.powerscale.settings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ntp_servers: + - "10.106.**.***" + - "10.106.**.***" + state: "{{state_present}}" - - name: Get SMB share details - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - state: "present" + - name: Get NTP server + dellemc.powerscale.settings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ntp_server_id: "10.106.**.***" + state: "{{state_present}}" - - name: Create SMB share for non system access zone - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - path: "" - access_zone: "{{non_system_access_zone}}" - description: "{{description}}" - permissions: - - user_name: "{{non_system_az_user}}" - permission: "full" - permission_type: "allow" - - group_name: "{{non_system_az_group}}" - permission: "read" - permission_type: "allow" - - wellknown: "everyone" - permission: "read" - permission_type: "allow" - state: "present" + - name: Remove NTP server + dellemc.powerscale.settings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ntp_servers: + - "10.106.**.***" + - "10.106.**.***" + state: "{{state_absent}}" - - name: Modify description for an non system access zone SMB share - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - access_zone: "{{non_system_access_zone}}" - description: "new description" - state: "present" + - name: Remove NTP server - Idempotency + dellemc.powerscale.settings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + ntp_servers: + - "10.106.**.***" + - "10.106.**.***" + state: "{{state_absent}}" - - name: Modify name for an existing non system access zone SMB share - dellemc.powerscale.smb: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - share_name: "{{name}}" - new_share_name: "{{new_name}}" - access_zone: "{{non_system_access_zone}}" - description: "new description" - state: "present" + - name: Update email settings and add NTP server + dellemc.powerscale.settings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + state: "{{state_present}}" + mail_relay: "mailrelay.itp.dell.com" + mail_sender: "lab-a2@dell.com" + mail_subject: "lab-a2-alerts" + ntp_servers: + - "10.106.**.***" + - "10.106.**.***" ``` ### Return Values - + @@ -4906,133 +4888,57 @@ Manage SMB shares on PowerScale Storage System. You can perform these operations - + - + - + - - + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - +
Key changed bool always A boolean indicating if the task had to make changes. Whether or not the resource has changed.
smb_details network_settings complex always Details of the SMB Share. Details of the network settings.
  browsable bool default_groupnet str success Share is visible in net view and the browse list Default client-side DNS settings for non-multitenancy aware programs.
  description sbr str success Description of the SMB Share Enable or disable source based routing.
  directory_create_mask sc_rebalance_delay int success Directory create mask bit for SMB Share Delay in seconds for IP rebalance.
  directory_create_mask(octal) str success Directory create mask bit for SMB Share in octal format
  directory_create_mode int success Directory create mode bit for SMB Share
  directory_create_mode(octal) str success Directory create mode bit for SMB Share in octal format
  file_create_mask int success File create mask bit for SMB Share
  file_create_mask(octal) str success File create mask bit for SMB Share in octal format
  file_create_mode int success File create mode bit for SMB Share
  file_create_mode(octal) str success File create mode bit for SMB Share in octal format
  id str success Id of the SMB Share
  name str success Name of the SMB Share
  path str success Path of the SMB Share
  permission tcp_ports list success permission on the of the SMB Share for user/group/wellknown List of client TCP ports.
### Authors -* Arindam Datta (@dattaarindam) -* Trisha Datta (@Trisha-Datta) +* Meenakshi Dembi (@dembim) -------------------------------- -# Snapshot Module +# Smart Pool Settings Module -Manage snapshots on PowerScale +Manages Smartpool Settings on PowerScale Storage System ### Synopsis - You can perform the following operations. - Managing snapshots on PowerScale. - Create a filesystem snapshot. - Modify a filesystem snapshot. - Get details of a filesystem snapshot. - Delete a filesystem snapshot. + Managing Smartpool Settings on the PowerScale Storage System includes modifying and retrieving details of Smartpool settings. ### Parameters - + @@ -5043,76 +4949,28 @@ Manage snapshots on PowerScale - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - + - - + + - + - - + + @@ -5161,92 +5019,27 @@ Manage snapshots on PowerScale ### Examples ``` - - name: Create a filesystem snapshot on PowerScale - dellemc.powerscale.snapshot: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - path: "" - access_zone: "{{access_zone}}" - snapshot_name: "{{snapshot_name}}" - desired_retention: "{{desired_retention}}" - retention_unit: "{{retention_unit_days}}" - alias: "{{ansible_snap_alias}}" - state: "{{present}}" - - - name: Get details of a filesystem snapshot - dellemc.powerscale.snapshot: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - snapshot_name: "{{snapshot_name}}" - state: "{{present}}" - - - name: Modify filesystem snapshot desired retention - dellemc.powerscale.snapshot: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - snapshot_name: "{{snapshot_name}}" - desired_retention: "{{desired_retention_new}}" - retention_unit: "{{retention_unit_days}}" - state: "{{present}}" - - - name: Modify filesystem snapshot expiration timestamp - dellemc.powerscale.snapshot: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - snapshot_name: "{{snapshot_name}}" - expiration_timestamp: "{{expiration_timestamp_new}}" - state: "{{present}}" - - - name: Modify filesystem snapshot alias - dellemc.powerscale.snapshot: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - snapshot_name: "{{snapshot_name}}" - alias: "{{ansible_snap_alias_new}}" - state: "{{present}}" - - - name: Delete snapshot alias - dellemc.powerscale.snapshot: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - snapshot_name: "{{snapshot_name}}" - alias: "" - state: "{{present}}" - - - name: Rename filesystem snapshot - dellemc.powerscale.snapshot: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - snapshot_name: "{{snapshot_name}}" - new_snapshot_name: "{{new_snapshot_name}}" - state: "{{present}}" + - name: Get SmartPool settings + dellemc.powerscale.smartpoolsettings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + state: "{{state_present}}" - - name: Delete filesystem snapshot - dellemc.powerscale.snapshot: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - snapshot_name: "{{new_snapshot_name}}" - state: "{{absent}}" + - name: Modify SmartPool setting + dellemc.powerscale.smartpoolsettings: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + virtual_hot_spare_limit_percent: 10 + virtual_hot_spare_hide_spare: True + state: "present" ``` ### Return Values - +
ParameterDescription
snapshot_name str True
The name of the snapshot.
path str
Specifies the filesystem path. It is the absolute path for System access zone and it is relative if using non-System access zone. For example, if your access zone is 'Ansible' and it has a base path '/ifs/ansible' and the path specified is '/user1', then the effective path would be '/ifs/ansible/user1'. If your access zone is System, and you have 'directory1' in the access zone, the path provided should be '/ifs/directory1'.
access_zone str System
The effective path where the Snapshot is created will be determined by the base path of the Access Zone and the path provided by the user in the playbook.
new_snapshot_name str
The new name of the snapshot.
expiration_timestamp str
The timestamp on which the snapshot will expire (UTC format).
Either this or desired retention can be specified, but not both.
desired_retention str virtual_hot_spare_hide_spare bool
The number of days for which the snapshot can be retained.
Either this or expiration timestamp can be specified, but not both.
retention_unit str
  • hours
  • days

The retention unit for the snapshot.
The default value is hours.

Hide reserved virtual hot spare space from free space counts.
alias str virtual_hot_spare_limit_percent int
The alias for the snapshot.

The percent space to reserve for the virtual hot spare, from 0-20.
state str True
  • absent
  • present

Defines whether the snapshot should exist or not.
  • present

State of smartpool settings.
onefs_host
@@ -5261,117 +5054,131 @@ Manage snapshots on PowerScale - + - - + + - + - + - - + + - + - - + + - + + + + + + + + - + - + - - + + - + - - + + - + - + + + + + + + + - + - - + + - + - - + + - + - - + + - + - - + + - + - + - + - - + + - +
Key Whether or not the resource has changed.
snapshot_details smartpool_settings complex When snapshot exists. The snapshot details. always Details of the smartpool settings
  alias automatically_manage_io_optimization str success Snapshot alias. Automatically manage IO optimization settings on files.
  created int automatically_manage_protection str success The creation timestamp. Automatically manage protection settings on files.
  expires int global_namespace_acceleration_enabled bool success The expiration timestamp. Optimize namespace operations by storing metadata on SSDs.
  global_namespace_acceleration_state str success Whether or not namespace operation optimizations are currently in effect.
  has_locks protect_directories_one_level_higher bool success Whether the snapshot has locks. Automatically add additional protection level to all directories.
  id int spillover_enabled bool success The snapshot ID. Spill writes into other pools as needed.
  name str spillover_target dict success The name of the snapshot. Target pool for spilled writes.
  path ssd_l3_cache_default_enabled bool success The L3 Cache default enabled state. This specifies whether L3 Cache should be enabled on new node pools.
  ssd_qab_mirrors str success The directory path whose snapshot has been taken. Controls number of mirrors of QAB blocks to place on SSDs.
  pct_filesystem float ssd_system_btree_mirrors str success The percentage of filesystem used. Controls number of mirrors of system B-tree blocks to place on SSDs.
  pct_reserve float ssd_system_delta_mirrors str success The percentage of filesystem reserved. Controls number of mirrors of system delta blocks to place on SSDs.
  size int virtual_hot_spare_deny_writes bool success The snapshot size. Deny writes into reserved virtual hot spare space.
  state str virtual_hot_spare_hide_spare bool success The state of the snapshot. Hide reserved virtual hot spare space from free space counts.
  target_id virtual_hot_spare_limit_drives int success target ID of snapshot whose alias it is. The number of drives to reserve for the virtual hot spare, from 0-4.
  target_name str virtual_hot_spare_limit_percent int success target name of snapshot whose alias it is. The percent space to reserve for the virtual hot spare, from 0-20.
### Authors -* Prashant Rakheja (@prashant-dell) +* Meenakshi Dembi (@dembim) -------------------------------- -# Active Directory Module +# Smart Quota Module -Manages the ADS authentication provider on PowerScale +Manage Smart Quotas on PowerScale ### Synopsis - Manages the Active Directory authentication provider on the PowerScale storage system. This includes creating, modifying, deleting and retreiving the details of an ADS provider. + Manages Smart Quotas on a PowerScale storage system. This includes getting details, modifying, creating and deleting Smart Quotas. ### Parameters - + @@ -5382,97 +5189,158 @@ Manages the ADS authentication provider on PowerScale - + + + + + + + + - + + - + - + - + - + - + + + + + + + - + + + - + - + - - + + + + + + + + + + + - + - + - + + + + + + + + + + - + - + - - + + - - + + - + - + + + + + + + + + + + + + + + + + + + - + - + - + + + + + + + + + + - + - + - + @@ -5517,91 +5385,139 @@ Manages the ADS authentication provider on PowerScale
ParameterDescription
domain_name path str True
The path on which the quota will be imposed.
For system access zone, the path is absolute. For all other access zones, the path is a relative path from the base of the access zone.
quota_type str True
Specifies the domain name of an Active Directory provider.
This parameter is mandatory during create.
  • user
  • group
  • directory
  • default-user
  • default-group

The type of quota which will be imposed on the path.
instance_name user_name str
Specifies the instance name of Active Directory provider.
This is an optional parameter during create, and defaults to the provider name if it is not specified during the create operation.
Get, modify and delete operations can also be performed through instance_name.
It is mutually exclusive with domain_name for get, modify and delete operations.

The name of the user account for which quota operations will be performed.
ads_user group_name str
Specifies the user name that has permission to join a machine to the given domain.
This parameter is mandatory during create.

The name of the group for which quota operations will be performed.
ads_password access_zone str system
This option mentions the zone in which the user/group exists.
For a non-system access zone, the path relative to the non-system Access Zone's base directory has to be given.
For a system access zone, the absolute path has to be given.
provider_type str
Specifies the password used during domain join.
This parameter is mandatory during create.
local
  • local
  • file
  • ldap
  • ads
  • nis

This option defines the type which is used to authenticate the user/group.
If the provider_type is 'ads' then the domain name of the Active Directory Server has to be mentioned in the user_name. The format for the user_name should be 'DOMAIN_NAME\user_name' or "DOMAIN_NAME\\user_name".
This option acts as a filter for all operations except creation.
ads_parameters quota dict
Specify additional parameters to configure ADS domain.

Specifies Smart Quota parameters.
  groupnet str include_snapshots bool False
Whether to include the snapshots in the quota or not.
  include_overheads bool
Groupnet identifier.
This is an optional parameter and defaults to groupnet0.

Whether to include the data protection overheads in the quota or not.
If not passed during quota creation then quota will be created excluding the overheads.
This parameter is supported for SDK 8.1.1
  home_directory_template thresholds_on str
  • app_logical_size
  • fs_logical_size
  • physical_size

For SDK 9.0.0 the parameter include_overheads is deprecated and thresholds_on is used.
  advisory_limit_size float
Specifies the path to the home directory template.
This is an optional parameter and defaults to '/ifs/home/%D/%U'.

The threshold value after which the advisory notification will be sent.
  login_shell str soft_limit_size float
  • /bin/sh
  • /bin/csh
  • /bin/tcsh
  • /bin/zsh
  • /bin/bash
  • /bin/rbash
  • /sbin/nologin

Specifies the login shell path.
This is an optional parameter and defaults to '/bin/zsh'.

Threshold value after which the soft limit exceeded notification will be sent and the soft_grace period will start.
Write access will be restricted after the grace period expires.
Both soft_grace_period and soft_limit_size are required to modify soft threshold for the quota.
  machine_account soft_grace_period int
Grace Period after the soft limit for quota is exceeded.
After the grace period, the write access to the quota will be restricted.
Both soft_grace_period and soft_limit_size are required to modify soft threshold for the quota.
  period_unit str
  • days
  • weeks
  • months

Unit of the time period for soft_grace_period.
For months the number of days is assumed to be 30 days.
This parameter is required only if the soft_grace_period, is specified.
  hard_limit_size float
Specifies the machine account name when creating a SAM account with Active Directory.
The default cluster name is called 'default'.

Threshold value after which a hard limit exceeded notification will be sent.
Write access will be restricted after the hard limit is exceeded.
  organizational_unit cap_unit str
  • GB
  • TB

Unit of storage for the hard, soft and advisory limits.
This parameter is required if any of the hard, soft or advisory limits is specified.
  container bool False
Specifies the organizational unit.

If true, SMB shares using the quota directory see the quota thresholds as share size.
state str True
  • absent
  • present

The state of the ads provider after the task is performed.
present - indicates that the ADS provider should exist on the system.
absent - indicates that the ADS provider should not exist on the system.

Define whether the Smart Quota should exist or not.
present - indicates that the Smart Quota should exist on the system.
absent - indicates that the Smart Quota should not exist on the system.
onefs_host
### Notes +* To perform any operation, path, quota_type and state are mandatory parameters. +* There can be two quotas for each type per directory, one with snapshots included and one without snapshots included. +* Once the limits are assigned, then the quota cannot be converted to accounting. Only modification to the threshold limits is permitted. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` -- name: Add an Active Directory provider - dellemc.powerscale.ads: + - name: Create a Quota for a User excluding snapshot. + dellemc.powerscale.smartquota: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - domain_name: "ansibleneo.com" - instance_name: "ansibleneo.com" - ads_user: "administrator" - ads_password: "*****" - ads_parameters: - groupnet: "groupnet5" - home_directory_template: "/ifs/home/%D/%U" - login_shell: "/bin/zsh" - machine_account: "test_account" - organizational_unit: "org/sub_org" + path: "" + quota_type: "user" + user_name: "{{user_name}}" + access_zone: "sample-zone" + provider_type: "local" + quota: + include_overheads: False + advisory_limit_size: "{{advisory_limit_size}}" + soft_limit_size: "{{soft_limit_size}}" + soft_grace_period: "{{soft_grace_period}}" + period_unit: "{{period_unit}}" + hard_limit_size: "{{hard_limit_size}}" + cap_unit: "{{cap_unit}}" state: "present" -- name: Modify an Active Directory provider with domain name - dellemc.powerscale.ads: + - name: Create a Quota for a Directory for accounting includes snapshots and data protection overheads. + dellemc.powerscale.smartquota: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - domain_name: "ansibleneo.com" - ads_parameters: - home_directory_template: "/ifs/usr_home/%D/%U" - login_shell: "/bin/rbash" + path: "" + quota_type: "directory" + quota: + include_snapshots: "True" + include_overheads: True state: "present" -- name: Modify an Active Directory provider with instance name - dellemc.powerscale.ads: + - name: Create default-user Quota for a Directory with snaps and overheads + dellemc.powerscale.smartquota: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - instance_name: "ansibleneo.com" - ads_parameters: - home_directory_template: "/ifs/usr_home/%D/%U" - login_shell: "/bin/rbash" + path: "" + quota_type: "default-user" + quota: + include_snapshots: "True" + include_overheads: True state: "present" -- name: Get Active Directory provider details with domain name - dellemc.powerscale.ads: + - name: Get a Quota Details for a Group + dellemc.powerscale.smartquota: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - domain_name: "ansibleneo.com" + path: "" + quota_type: "group" + group_name: "{{user_name}}" + access_zone: "sample-zone" + provider_type: "local" + quota: + include_snapshots: "True" state: "present" -- name: Get Active Directory provider details with instance name - dellemc.powerscale.ads: + - name: Update Quota for a User + dellemc.powerscale.smartquota: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" + path: "" + quota_type: "user" + user_name: "{{user_name}}" + access_zone: "sample-zone" + provider_type: "local" + quota: + include_snapshots: "True" + include_overheads: True + advisory_limit_size: "{{new_advisory_limit_size}}" + hard_limit_size: "{{new_hard_limit_size}}" + cap_unit: "{{cap_unit}}" + state: "present" + + - name: Modify Soft Limit and Grace period of default-user Quota + dellemc.powerscale.smartquota: + onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" - instance_name: "ansibleneo.com" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + path: "" + quota_type: "default-user" + access_zone: "sample-zone" + quota: + include_snapshots: "True" + include_overheads: True + soft_limit_size: "{{soft_limit_size}}" + cap_unit: "{{cap_unit}}" + soft_grace_period: "{{soft_grace_period}}" + period_unit: "{{period_unit}}" state: "present" -- name: Delete an Active Directory provider with domain name - dellemc.powerscale.ads: + - name: Delete a Quota for a Directory + dellemc.powerscale.smartquota: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - domain_name: "ansibleneo.com" + path: "" + quota_type: "directory" + quota: + include_snapshots: "True" state: "absent" -- name: Delete an Active Directory provider with instance name - dellemc.powerscale.ads: + - name: Delete Quota for a default-group + dellemc.powerscale.smartquota: onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - instance_name: "ansibleneo.com" + path: "" + quota_type: "default-group" + quota: + include_snapshots: "True" state: "absent" ``` ### Return Values - + @@ -5610,84 +5526,81 @@ Manages the ADS authentication provider on PowerScale - + + + + + + + - - + + - - + + - + - - + + - + - - - - - - - - + - - + + - + - + - + - - + + - + - - - - - - -
KeyDescription
ads_provider_details changed bool always Whether or not the resource has changed.
quota_details complex When Active Directory provider exists The Active Directory provider details. When Quota exists. The quota details.
  groupnet str container bool success Groupnet identifier. If true, SMB shares using the quota directory see the quota thresholds as share size.
  home_directory_template str enforced bool success Specifies the path to the home directory template. Whether the limits are enforced on Quota or not.
  id str success Specifies the ID of the Active Directory provider instance.
  linked_access_zones list success List of access zones linked to the authentication provider. The ID of the Quota.
  login_shell str thresholds dict success Specifies the login shell path. Includes information about all the limits imposed on quota. The limits are mentioned in bytes and soft_grace is in seconds.
  machine_account type str success Specifies the machine account name when creating a SAM account with Active Directory. The type of Quota.
  name str usage dict success Specifies the Active Directory provider name. The Quota usage.
changed bool always Whether or not the resource has changed.
+ ### Authors -* Jennifer John (@johnj9) +* P Srinivas Rao (@srinivas-rao5) -------------------------------- -# Info Module +# SMB Module -Gathering information about PowerScale Storage +Manage SMB shares on PowerScale Storage System. You can perform these operations ### Synopsis - Gathering information about PowerScale Storage System includes Get attributes of the PowerScale cluster, Get list of access zones in the PowerScale cluster, Get list of nodes in the PowerScale cluster, Get list of authentication providers for all access zones or a specific access zone, Get list of users and groups for an access zone. Get list of smb_shares in the PowerScale cluster, Get list of nfs_exports in the PowerScale cluster, Get list of nfs_aliases in the PowerScale cluster, Get list of active clients in the PowerScale cluster, Get list of SyncIQ reports in the PowerScale cluster, Get list of SyncIQ target reports in the PowerScale cluster, Get list of SyncIQ target cluster certificates in the PowerScale cluster, Get list of SyncIQ policies in the PowerScale cluster. Get list of SyncIQ performance rules in the PowerScale cluster. Get list of network groupnets of the PowerScale cluster. Get list of network pools for all access zones or a specific access zone of the PowerScale cluster. Get list of network rules of the PowerScale cluster. Get list of network subnets of the PowerScale cluster. Get list of network interfaces of the PowerScale cluster. Get list of node pools of PowerScale cluster. Get list of storage pool tiers of PowerScale cluster. + Managing SMB share on PowerScale. + Create a new SMB share. + Modify an existing SMB share. + Get details of an existing SMB share. + Delete an existing SMB share. ### Parameters - + - + @@ -5695,381 +5608,310 @@ Gathering information about PowerScale Storage - - + + + + + + + + + - + + - + - + - - - + + - - + + + - + - - + + - - + + - - + + - + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + -
ParameterParameter Type Required DefaultDescription
include_all_access_zones bool share_name str True
The name of the SMB share.
path str
Specifies if requested component details need to be fetched from all access zones.
It is mutually exclusive with access_zone.

The path of the SMB share. This parameter will be mandatory only for the create operation. This is the absolute path for System Access Zone and the relative path for non-System Access Zone.
access_zone access_zone str System
The access zone. If no Access Zone is specified, the 'System' access zone would be taken by default.

Access zone which contains this share. If not specified it will be considered as a System Access Zone.
For a non-System Access Zone the effective path where the SMB is created will be determined by the base path of the Access Zone and the path provided by the user in the playbook.
For a System Access Zone the effective path will be the absolute path provided by the user in the playbook.
gather_subset list
elements: str
True new_share_name str
  • attributes
  • access_zones
  • nodes
  • providers
  • users
  • groups
  • smb_shares
  • nfs_exports
  • nfs_aliases
  • clients
  • synciq_reports
  • synciq_target_reports
  • synciq_policies
  • synciq_target_cluster_certificates
  • synciq_performance_rules
  • network_groupnets
  • network_subnets
  • network_pools
  • network_rules
  • network_interfaces
  • node_pools
  • storagepool_tiers

List of string variables to specify the PowerScale Storage System entities for which information is required.
List of all PowerScale Storage System entities supported by the module -
attributes
access_zones
nodes
providers
users
groups
smb_shares
nfs_exports
nfs_aliases
clients
synciq_reports
synciq_target_reports
synciq_policies
synciq_target_cluster_certificates
synciq_performance_rules
network_groupnets
network_pools
network_rules
network_interfaces
network_subnets
node_pools
storagepool_tiers
The list of attributes, access_zones and nodes is for the entire PowerScale cluster
The list of providers for the entire PowerScale cluster
The list of users and groups is specific to the specified access zone
The list of syncIQ reports and syncIQ target reports for the entire PowerScale cluster
The list of syncIQ policies, syncIQ target cluster certificates and syncIQ performance rules for the entire PowerScale cluster
The list of network pools is specific to the specified access zone or for all access zones
The list of network groupnets, network subnets, network rules and network interfaces is for the entire PowerScale cluster

The new name of the SMB share.
onefs_host description str True
IP address or FQDN of the PowerScale cluster.

Description of the SMB share.
port_no str permissions list
elements: dict
8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.

Specifies permission for specific user, group, or trustee. Valid options read, write, and full.
This is a list of dictionaries. Each dictionry entry has 3 mandatory values as listed below.
1)'user_name'/'group_name'/'wellknown' can have actual name of the trustee like 'user'/'group'/'wellknown'.
2)'permission' can be 'read'/''write'/'full'.
3)'permission_type' can be 'allow'/'deny'.
The fourth entry 'provider_type' is optional (default is 'local').
4)'provider_type' can be 'local'/'file'/'ads'/'ldap'/'nis'.
verify_ssl access_based_enumeration bool True
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.

Only enumerates files and folders for the requesting user has access to.
api_user access_based_enumeration_root_only bool
Access-based enumeration on only the root directory of the share.
browsable bool
Share is visible in net view and the browse list.
ntfs_acl_support bool
Support NTFS ACLs on files and directories.
directory_create_mask str True
username of the PowerScale cluster.

Directory creates mask bits. Octal value for owner, group, and others against read, write, and execute.
api_password directory_create_mode str True
the password of the PowerScale cluster.

Directory creates mode bits. Octal value for owner, group, and others against read, write, and execute.
- -### Notes -* The parameters access_zone and include_all_access_zones are mutually exclusive. -* Listing of SyncIQ target cluster certificates is not supported by isi_sdk_8_1_1 version. -* The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. - -### Examples -``` - - name: Get attributes of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - attributes - - - name: Get access_zones of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - access_zones - - - name: Get nodes of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - nodes - - - name: Get list of authentication providers for all access zones of the - PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - providers - - - name: Get list of users for an access zone of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - access_zone: "{{access_zone}}" - gather_subset: - - users - - - name: Get list of groups for an access zone of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - access_zone: "{{access_zone}}" - gather_subset: - - groups - - - name: Get list of smb shares in the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - access_zone: "{{access_zone}}" - gather_subset: - - smb_shares - - - name: Get list of nfs exports in the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - access_zone: "{{access_zone}}" - gather_subset: - - nfs_exports - - - name: Get list of nfs aliases in the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - access_zone: "{{access_zone}}" - gather_subset: - - nfs_aliases - - - name: Get list of clients in the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - clients - - - name: Get list of SyncIQ reports and SyncIQ target Reports in the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - synciq_reports - - synciq_target_reports - - - name: Get list of SyncIQ policies in the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - synciq_policies - - - name: Get list of SyncIQ target cluster certificates in the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - synciq_target_cluster_certificates - - - name: Get list of SyncIQ performance rules in the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - port_no: "{{powerscaleport}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - synciq_performance_rules - - - name: Get list of network groupnets of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - network_groupnets - - - name: Get list of network pools of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - network_pools - - - name: Get list of network pools for all access zones of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - include_all_access_zones: True - gather_subset: - - network_pools - - - name: Get list of network rules of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - network_rules - - - name: Get list of network interfaces of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - network_interfaces - - - name: Get list of network subnets of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - network_subnets - - - name: Get list of node pools of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - node_pools - register: subset_result - - - name: Get list of storage pool tiers of the PowerScale cluster - dellemc.powerscale.info: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - gather_subset: - - storagepool_tiers - register: subset_result -``` - -### Authors -* Ambuj Dubey (@AmbujDube) -* Spandita Panigrahi(@panigs7) - --------------------------------- -# Groups Module - -Manage Groups on the PowerScale Storage System - -### Synopsis - Managing Groups on the PowerScale Storage System includes create group, delete group, get group, add users and remove users. - -### Parameters - - - - - - - - - - - - + + - + - + - + - - + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - + + + - - + + - + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6077,7 +5919,7 @@ Manage Groups on the PowerScale Storage System - + @@ -6085,7 +5927,7 @@ Manage Groups on the PowerScale Storage System - + @@ -6093,7 +5935,7 @@ Manage Groups on the PowerScale Storage System - + @@ -6101,7 +5943,7 @@ Manage Groups on the PowerScale Storage System - + @@ -6111,218 +5953,338 @@ Manage Groups on the PowerScale Storage System
ParameterTypeRequiredDefaultChoicesDescription
group_name
file_create_mask str
The name of the group.
Required at the time of group creation, for the rest of the operations either group_name or group_id is required.

File creates mask bits. Octal value for owner, group, and others against read, write, and execute.
group_id file_create_mode str
The group_id is auto generated at the time of creation.
For all other operations either group_name or group_id is needed.

File creates mode bits. Octal value for owner, group, and others against read, write, and execute.
access_zone str create_path bool system
This option mentions the zone in which a group is created.
For creation, access_zone acts as an attribute for the group.
For all other operations access_zone acts as a filter.

Create path if does not exist.
provider_type allow_variable_expansion bool
Allow automatic expansion of variables for home directories.
auto_create_directory bool
Automatically create home directories.
continuously_available bool
Specify if persistent opens are allowed on the share.
file_filter_extension dict
Details of file filter extensions.
  extensions list
elements: str

Specifies the list of file extensions.
  type str deny
  • allow
  • deny

Specifies if filter list is for deny or allow. Default is deny.
  state str
  • present-in-share
  • absent-in-share

State of the file filter extensions.
file_filtering_enabled bool
Enables file filtering on this zone.
ca_timeout dict
Continuosly available timeout for the SMB share.
  value int
Persistent open timeout for the share.
  unit str seconds
  • seconds
  • minutes
  • hours

Unit of the ca_timeout.
strict_ca_lockout bool
Specifies if persistent opens would do strict lockout on the share.
smb3_encryption_enabled bool
Enables SMB3 encryption for the share.
ca_write_integrity str local
  • local
  • file
  • ldap
  • ads
  • nis

This option defines the type which will be used to authenticate the group members.
Creation, Deletion and Modification is allowed only for local group.
Details of groups of all provider types can be fetched.
If the provider_type is 'ads' then the domain name of the Active Directory Server has to be mentioned in the group_name. The format for the group_name should be 'DOMAIN_NAME\group_name' or "DOMAIN_NAME\\group_name".
This option acts as a filter for all operations except creation.
  • none
  • full
  • write-read-coherent

Specify the level of write-integrity on continuously available shares.
state change_notify str True
  • absent
  • present

The state option is used to determine whether the group will exist or not.
  • all
  • norecurse
  • none

Level of change notification alerts on the share.
users list
elements: dict
oplocks bool
Either user_name or user_id is needed to add or remove the user from the group.
Users can be part of multiple groups.

Support oplocks.
user_state impersonate_guest str
  • present-in-group
  • absent-in-group

The user_state option is used to determine whether the users will exist for a particular group or not.
It is required when users are added or removed from a group.
  • always
  • never
  • bad_user

Specify the condition in which user access is done as the guest account.
onefs_host impersonate_user str
User account to be used as guest account.
host_acls list
elements: dict

An ACL expressing which hosts are allowed access. A deny clause must be the final entry.
  name str True
Name of the host ACL.
  access_type str True
The access type of the host ACL.
state str True
  • absent
  • present

Defines whether the SMB share should exist or not.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes +* The check_mode is not supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Create a Group - dellemc.powerscale.group: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - access_zone: "{{access_zone}}" - provider_type: "{{provider_type}}" - group_name: "{{group_name}}" - state: "present" + - name: Create SMB share for non system access zone + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + path: "" + access_zone: "{{non_system_access_zone}}" + state: "present" - - name: Create Group with Users - dellemc.powerscale.group: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - provider_type: "{{provider_type}}" - access_zone: "{{access_zone}}" - group_name: "{{group_name}}" - users: - - user_name: "{{user_name}}" - - user_id: "{{user_id}}" - - user_name: "{{user_name_2}}" - user_state: "present-in-group" - state: "present" + - name: Create SMB share for system access zone + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + path: "{{system_az_path}}" + description: "{{description}}" + create_path: False + allow_variable_expansion: True + auto_create_directory: True + continuously_available: True + file_filter_extension: + extensions: + - "sample_extension_1" + type: "allow" + state: "present-in-share" + file_filtering_enabled: True + ca_timeout: + value: 60 + unit: "minutes" + strict_ca_lockout: True + smb3_encryption_enabled: True + ca_write_integrity: "write-read-coherent" + change_notify: "all" + oplocks: True + impersonate_guest: "never" + impersonate_user: "sample_user" + host_acls: + - name: "sample_host_acl_1" + access_type: "allow" + - name: "sample_host_acl_2" + access_type: "deny" + state: "present" - - name: Get Details of the Group using Group Id - dellemc.powerscale.group: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - provider_type: "{{provider_type}}" - access_zone: "{{access_zone}}" - group_id: "{{group_id}}" - state: "present" + - name: Create SMB share for system access zone + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + path: "" + description: "{{description}}" + permissions: + - user_name: "{{system_az_user}}" + permission: "full" + permission_type: "allow" + - group_name: "{{system_az_group}}" + permission: "read" + permission_type: "allow" + - wellknown: "everyone" + permission: "read" + permission_type: "allow" + state: "present" - - name: Delete the Group using Group Name - dellemc.powerscale.group: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - provider_type: "{{provider_type}}" - access_zone: "{{access_zone}}" - group_name: "{{group_name}}" - state: "absent" + - name: Modify multiple params for an existing SMB share + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + path: "/ifs" + allow_variable_expansion: False + auto_create_directory: False + file_filter_extension: + extensions: + - 'sample_extension_2' + type: "allow" + state: "absent-in-share" + file_filtering_enabled: True + ca_timeout: + value: 15 + unit: "minutes" + strict_ca_lockout: False + change_notify: "norecurse" + oplocks: False + impersonate_guest: "always" + impersonate_user: "new_user_2" + host_acls: + - name: "sample_host_acl_1" + access_type: "deny" + - name: "sample_host_acl_2" + access_type: "allow" + state: "present" - - name: Add Users to a Group - dellemc.powerscale.group: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - provider_type: "{{provider_type}}" - access_zone: "{{access_zone}}" - group_id: "{{group_id}}" - users: - - user_name: "{{user_name}}" - - user_id: "{{user_id}}" - - user_name: "{{user_name_2}}" - user_state: "present-in-group" - state: "present" + - name: Modify user permission for SMB share + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + path: "" + description: "{{description}}" + permissions: + - user_name: "{{system_az_user}}" + permission: "full" + permission_type: "allow" + - group_name: "{{system_az_group}}" + permission: "write" + permission_type: "allow" + - wellknown: "everyone" + permission: "write" + permission_type: "deny" + state: "present" - - name: Remove Users from a Group - dellemc.powerscale.group: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - provider_type: "{{provider_type}}" - access_zone: "{{access_zone}}" - group_id: "{{group_id}}" - users: - - user_name: "{{user_name_1}}" - - user_id: "{{user_id}}" - - user_name: "{{user_name_2}}" - user_state: "absent-in-group" - state: "present" + - name: Delete system access zone SMB share + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + state: "absent" + + - name: Get SMB share details + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + state: "present" + + - name: Create SMB share for non system access zone + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + path: "" + access_zone: "{{non_system_access_zone}}" + description: "{{description}}" + permissions: + - user_name: "{{non_system_az_user}}" + permission: "full" + permission_type: "allow" + - group_name: "{{non_system_az_group}}" + permission: "read" + permission_type: "allow" + - wellknown: "everyone" + permission: "read" + permission_type: "allow" + state: "present" + + - name: Modify description for an non system access zone SMB share + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + access_zone: "{{non_system_access_zone}}" + description: "new description" + state: "present" + + - name: Modify name for an existing non system access zone SMB share + dellemc.powerscale.smb: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + share_name: "{{name}}" + new_share_name: "{{new_name}}" + access_zone: "{{non_system_access_zone}}" + description: "new description" + state: "present" ``` ### Return Values - + - + - + - + - + - - + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - + - + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyKey Type Returned Description
changed changed bool always Whether or not the resource has changed. A boolean indicating if the task had to make changes.
group_details smb_details complex When group exists Details of the group. always Details of the SMB Share.
  gid complex browsable bool success The details of the primary group for the user. Share is visible in net view and the browse list
   id str success The id of the group.
   name str success The name of the group.
   type_of_resource str success The resource's type is mentioned.
  members complex description str success The list of sid's the members of group. Description of the SMB Share
   sid complex success The details of the associated resource.
    id str success The unique security identifier of the resource.
    name str success The name of the resource.
    type_of_resource str success The resource's type is mentioned.
  directory_create_mask int success Directory create mask bit for SMB Share
  name directory_create_mask(octal) str success The name of the group. Directory create mask bit for SMB Share in octal format
  directory_create_mode int success Directory create mode bit for SMB Share
  provider directory_create_mode(octal) str success The provider contains the provider type and access zone. Directory create mode bit for SMB Share in octal format
  file_create_mask int success File create mask bit for SMB Share
  file_create_mask(octal) str success File create mask bit for SMB Share in octal format
  file_create_mode int success File create mode bit for SMB Share
  file_create_mode(octal) str success File create mode bit for SMB Share in octal format
  id str success Id of the SMB Share
  name str success Name of the SMB Share
  path str success Path of the SMB Share
  permission list success permission on the of the SMB Share for user/group/wellknown
### Authors -* P Srinivas Rao (@srinivas-rao5) +* Arindam Datta (@dattaarindam) +* Trisha Datta (@Trisha-Datta) -------------------------------- -# Subnet Module +# Snapshot Schedule Module -Manages subnet configuration on PowerScale +Manage snapshot schedules on PowerScale ### Synopsis - Manages the subnet configuration on the PowerScale storage system. This includes creating, modifying, deleting and retrieving the details of the subnet. + You can perform the following operations. + Managing snapshot schedules on PowerScale. + Create snapshot schedule. + Modify snapshot schedule. + Get details of snapshot schedule. + Delete snapshot schedule. ### Parameters - + @@ -6330,125 +6292,87 @@ Manages subnet configuration on PowerScale - + - + - + - - + + - + + - - + - + - + - + - + + + + + + + + + - + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - + - + - + @@ -6456,7 +6380,7 @@ Manages subnet configuration on PowerScale - + @@ -6464,7 +6388,7 @@ Manages subnet configuration on PowerScale - + @@ -6472,7 +6396,7 @@ Manages subnet configuration on PowerScale - + @@ -6480,7 +6404,7 @@ Manages subnet configuration on PowerScale - + @@ -6494,198 +6418,243 @@ Manages subnet configuration on PowerScale ### Examples ``` -- name: Create a subnet - dellemc.powerscale.subnet: +- name: Create snapshot schedule + dellemc.powerscale.snapshotschedule: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - subnet_name: "subnet_test" - description: "Test subnet" - netmask: '198.10.**.***' - gateway_priority: 1 - subnet_params: - gateway: '198.10.**.***' - sc_service_addrs: - - start_range : '198.10.**.***' - end_range: '198.10.**.***' - sc_service_addrs_state: "add" - mtu: 1500 - vlan_enabled: true - vlan_id: 22 - state: 'present' + name: "{{name}}" + access_zone: '{{access_zone}}' + path: '' + alias: "{{alias1}}" + desired_retention: "{{desired_retention1}}" + pattern: "{{pattern1}}" + schedule: "{{schedule1}}" + state: "{{state_present}}" -- name: Modify a subnet - dellemc.powerscale.subnet: +- name: Get details of snapshot schedule + dellemc.powerscale.snapshotschedule: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - subnet_name: "subnet_test" - description: "Test subnet" - netmask: '198.10.**.***' - gateway_priority: 2 - subnet_params: - gateway: '198.10.**.***' - mtu: 1500 - vlan_enabled: true - vlan_id: 22 - state: 'present' + name: "{{name}}" + state: "{{state_present}}" -- name: Rename a subnet - dellemc.powerscale.subnet: +- name: Rename snapshot schedule + dellemc.powerscale.snapshotschedule: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - subnet_name: "subnet_test" - new_subnet_name: "subnet_test_rename" + name: "{{name}}" + new_name: "{{new_name}}" + state: "{{state_present}}" -- name: Add smart connect service ip range to subnet - dellemc.powerscale.subnet: +- name: Modify alias of snapshot schedule + dellemc.powerscale.snapshotschedule: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" + name: "{{new_name}}" + alias: "{{alias2}}" + state: "{{state_present}}" + +- name: Modify pattern of snapshot schedule + dellemc.powerscale.snapshotschedule: + onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - subnet_name: "subnet_test" - subnet_params: - sc_service_addrs: - - start_range : '198.10.**.***' - end_range: '198.10.**.***' - sc_service_addrs_state: "add" - state: 'present' + api_user: "{{api_user}}" + api_password: "{{api_password}}" + name: "{{new_name}}" + pattern: "{{pattern2}}" + state: "{{state_present}}" -- name: Remove smart connect service ip range from subnet - dellemc.powerscale.subnet: +- name: Modify schedule of snapshot schedule + dellemc.powerscale.snapshotschedule: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" + name: "{{new_name}}" + schedule: "{{schedule2}}" + state: "{{state_present}}" + +- name: Modify retention of snapshot schedule + dellemc.powerscale.snapshotschedule: + onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - subnet_name: "subnet_test" - subnet_params: - sc_service_addrs: - - start_range : '198.10.**.***' - end_range: '198.10.**.***' - sc_service_addrs_state: "remove" - state: 'present' + api_user: "{{api_user}}" + api_password: "{{api_password}}" + name: "{{new_name}}" + desired_retention: 2 + retention_unit: "{{retention_unit_days}}" + state: "{{state_present}}" -- name: Delete a subnet - dellemc.powerscale.subnet: +- name: Delete snapshot schedule + dellemc.powerscale.snapshotschedule: onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" + name: "{{new_name}}" + state: "{{state_absent}}" + +- name: Delete snapshot schedule - Idempotency + dellemc.powerscale.snapshotschedule: + onefs_host: "{{onefs_host}}" verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet_test" - subnet_name: "subnet_test" - state: 'absent' + api_user: "{{api_user}}" + api_password: "{{api_password}}" + name: "{{new_name}}" + state: "{{state_absent}}" ``` ### Return Values - +
ParameterParameter Type Required DefaultDescription
subnet_name name str True
Name of the subnet.

The name of the snapshot schedule.
groupnet_name path str True
Name of the groupnet.

The path on which the snapshot will be taken. This path is relative to the base path of the Access Zone.
For 'System' access zone, the path is absolute.
This parameter is required at the time of creation.
Modification of the path is not allowed through the Ansible module.
description access_zone str System
A description of the subnet.

The effective path where the snapshot is created will be determined by the base path of the Access Zone and the path provided by the user in the playbook.
netmask new_name str
Netmask of the subnet.

The new name of the snapshot schedule.
gateway_priority desired_retention int
Gateway priority.

The number of hours/days for which snapshots created by this snapshot schedule should be retained.
If retention is not specified at the time of creation, then the snapshots created by the snapshot schedule will be retained forever.
Minimum retention duration is 2 hours.
For large durations (beyond days/weeks), PowerScale may round off the retention to a somewhat larger value to match a whole number of days/weeks.
retention_unit str hours
  • hours
  • days

The retention unit for the snapshot created by this schedule.
new_subnet_name alias str
Name of the subnet when renaming an existing subnet.

The alias will point to the latest snapshot created by the snapshot schedule.
subnet_params dict pattern str
Specify additional parameters to configure the subnet.

Pattern expanded with strftime to create snapshot names.
This parameter is required at the time of creation.
  gateway str
Gateway IP address.
  sc_service_addrs list
elements: dict
List of IP addresses that SmartConnect listens for DNS requests.
  sc_service_addrs_state str
  • add
  • remove

Specifies if the sc_service_addrs range need to be added or removed from the subnet.
  mtu int
MTU of the subnet.
  vlan_enabled bool
VLAN tagging enabled or disabled
schedule str
The isidate compatible natural language description of the schedule.
It specifies the frequency of the schedule.
This parameter is required at the time of creation.
  vlan_id int
VLAN ID for all interfaces in the subnet.
state state str True
  • absent
  • present

The state of the subnet after the task is performed.
present - indicates that the subnet should exist on the system.
absent - indicates that the subnet should not exist on the system.

Defines whether the snapshot schedule should exist or not.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
- + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + -
KeyKey Type Returned Description
changed changed bool always Whether or not the resource has changed.
subnet_details snapshot_schedule_details complex When a subnet exists Subnet details. When snapshot schedule exists Details of the snapshot schedule including snapshot details.
  addr_family str success IP address format.
  groupnet str success Name of the groupnet this subnet belongs to.
  id str success Unique subnet id.
  mtu int success MTU of the subnet.
  name str success The name of the subnet.
  pools list success List of names of pools in the subnet.
  prefixlen int schedules complex success Subnet prefix length. Details of snapshot schedule
   duration int success Time in seconds added to creation time to construction expiration time
   id int success The system ID given to the schedule
   next_run int success Unix Epoch time of next snapshot to be created
   next_snapshot str success Formatted name of next snapshot to be created
  sc_service_addr list snapshot_list complex success The address that SmartConnect listens for DNS requests. List of snapshots taken by this schedule
- -### Authors -* Jennifer John (@johnj9) - --------------------------------- -# Network Rule Module - -Manages Network provisioning rules for PowerScale Storage System - -### Synopsis - Modify an existing network provisioning rule. - Create a new network provisioning rule. - Delete a network provisioning rule. - View the details of a network provisioning rule. + +   +   + snapshots + complex + success + Details of snapshot + + +   +   +   + created + int + success + The Unix Epoch time the snapshot was created + + +   +   +   + expires + int + success + The Unix Epoch time the snapshot will expire and be eligible for automatic deletion. + + +   +   +   + id + int + success + The system ID given to the snapshot.This is useful for tracking the status of delete pending snapshots + + +   +   +   + name + str + success + The user or system supplied snapshot name. This will be null for snapshots pending delete + + +   +   +   + size + int + success + The amount of storage in bytes used to store this snapshot + + +   +   + total + int + success + Total number of items available + + + +### Authors +* Akash Shendge (@shenda1) + +-------------------------------- +# Storage Pool Tier Module + +Manages storage pool tier on PowerScale + +### Synopsis + Managing storage pool tier on PowerScale Storage System. This includes creating a new storage pool tier, deleting a storage pool tier and retrieving the details of a storage pool tier. ### Parameters - + @@ -6696,68 +6665,28 @@ Manages Network provisioning rules for PowerScale Storage System - - - - - - - - - - - - - - - - - - - - + + - - - - - - - + - + - - - - - - - - - + - - - - + + - - - - - - - + @@ -6765,7 +6694,7 @@ Manages Network provisioning rules for PowerScale Storage System - + @@ -6810,71 +6739,44 @@ Manages Network provisioning rules for PowerScale Storage System
ParameterDescription
description str
Description for rule.
It can be no more than 128 bytes in length.
groupnet_name str True
Groupnet name to which this provisioning rule applies.
iface str tier_id int
Interface to which the rule applies.
node_type str
  • any
  • storage
  • accelerator
  • backup-accelerator

Node types to which the provisioning rule applies.

Unique Id of the storage pool tier.
It is mutually exclusive with tier_name.
pool_name tier_name str True
Pool to which this provisioning rule applies.
rule_name str True
Name of provisioning rule.

Unique name of the storage pool tier.
It is mutually exclusive with tier_id.
Mandatory for storage pool tier creation.
new_rule_name str nodepools list
elements: str

Name of provisioning rule when renaming an existing rule.
subnet_name str True
Name of the subnet to which this provisioning rule applies.

List of names of the nodepool's.
state True
  • absent
  • present

State of provisioning rule.

The state option is used to mention the existence of storage pool tier.
onefs_host
### Notes +* Modifying a storage pool tier is not supported. +* The check_mode is supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Get the details of a network rule - dellemc.powerscale.networkrule: - onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet1" - subnet_name: "subnet1" - pool_name: "pool1" - rule_name: "rule1" - state: "present" - - - name: Create a new network provisioning rule - dellemc.powerscale.networkrule: - onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet1" - subnet_name: "subnet1" - pool_name: "pool1" - rule_name: "new_rule" - description: "Rename existing rule" - iface: "ext1" - node_type: "storage" - state: "present" +- name: Get storage pool tier details + dellemc.powerscale.storagepooltier: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + tier_name: "test_tier" + state: 'present' - - name: Modifying an existing network provisioning rule - dellemc.powerscale.networkrule: - onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet1" - subnet_name: "subnet1" - pool_name: "pool1" - rule_name: "rule_name" - description: "Modify rule" - iface: "ext1" - node_type: "storage" - state: "present" +- name: Create a storage pool tier + dellemc.powerscale.storagepooltier: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + tier_name: "test_tier" + nodepools: + - "test_nodepool" + state: 'present' - - name: Delete a network provisioning rule - dellemc.powerscale.networkrule: - onefs_host: "{{onefs_host}}" - port_no: "{{port_no}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet1" - subnet_name: "subnet1" - pool_name: "pool1" - rule_name: "rule" - state: absent +- name: Delete a storage pool tier + dellemc.powerscale.storagepooltier: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + tier_name: "test_tier" + state: 'absent' ``` ### Return Values - + @@ -6885,89 +6787,61 @@ Manages Network provisioning rules for PowerScale Storage System - + - + - - + + - - - - - - - - - + + - + - + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - +
Key
changed bool Always always Whether or not the resource has changed.
network_rule_details storage_pool_tier_details complex When a network provisioning rule exists Network provisioning rule details. When a tier exists Storage pool tier details.
  description str success Description of network provisioning rule
  groupnet str children list success Name of groupnet to which this rule belongs Nodepool's of the storage pool tier.
  id str int success Unique ID for network provisioning rule Unique ID of the storage pool tier.
  iface str lnns list success ['Interface name to which this rule belongs', 'For example, ext-1'] The nodes that are part of this tier.
  name str success Name of network provisioning rule
  node_type str success ['Node type to which the provisioning rule applies']
  pool str success Name of pool to which this rule belongs
  subnet str success Name of subnet to which this rule belongs Unique name of the storage pool tier.
### Authors -* Spandita Panigrahi (@panigs7) +* Ananthu S Kuttattu (@kuttattz) -------------------------------- -# Network Setting Module +# SubNet Module -Manages Network Settings on PowerScale Storage System +Manages subnet configuration on PowerScale ### Synopsis - Managing Network Settings on the PowerScale Storage System includes modifying and retrieving details of network settings. + Manages the subnet configuration on the PowerScale storage system. This includes creating, modifying, deleting and retrieving the details of the subnet. ### Parameters - + - + @@ -6975,23 +6849,145 @@ Manages Network Settings on PowerScale Storage System - - + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + @@ -6999,7 +6995,7 @@ Manages Network Settings on PowerScale Storage System - + @@ -7007,7 +7003,7 @@ Manages Network Settings on PowerScale Storage System - + @@ -7015,7 +7011,7 @@ Manages Network Settings on PowerScale Storage System - + @@ -7023,7 +7019,7 @@ Manages Network Settings on PowerScale Storage System - + @@ -7037,35 +7033,105 @@ Manages Network Settings on PowerScale Storage System ### Examples ``` - - name: Get Network settings - dellemc.powerscale.networksettings: +- name: Create a subnet + dellemc.powerscale.subnet: onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - state: "{{state_present}}" + groupnet_name: "groupnet_test" + subnet_name: "subnet_test" + description: "Test subnet" + netmask: '198.10.**.***' + gateway_priority: 1 + subnet_params: + gateway: '198.10.**.***' + sc_service_addrs: + - start_range : '198.10.**.***' + end_range: '198.10.**.***' + sc_service_addrs_state: "add" + mtu: 1500 + vlan_enabled: true + vlan_id: 22 + state: 'present' - - name: Enable source based routing - dellemc.powerscale.networksettings: +- name: Modify a subnet + dellemc.powerscale.subnet: onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - enable_source_routing: True - state: "{{state_present}}" + groupnet_name: "groupnet_test" + subnet_name: "subnet_test" + description: "Test subnet" + netmask: '198.10.**.***' + gateway_priority: 2 + subnet_params: + gateway: '198.10.**.***' + mtu: 1500 + vlan_enabled: true + vlan_id: 22 + state: 'present' - - name: Disable source based routing - dellemc.powerscale.networksettings: +- name: Rename a subnet + dellemc.powerscale.subnet: onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - enable_source_routing: False - state: "{{state_present}}" + groupnet_name: "groupnet_test" + subnet_name: "subnet_test" + new_subnet_name: "subnet_test_rename" + +- name: Add smart connect service ip range to subnet + dellemc.powerscale.subnet: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet_test" + subnet_name: "subnet_test" + subnet_params: + sc_service_addrs: + - start_range : '198.10.**.***' + end_range: '198.10.**.***' + sc_service_addrs_state: "add" + state: 'present' + +- name: Remove smart connect service ip range from subnet + dellemc.powerscale.subnet: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet_test" + subnet_name: "subnet_test" + subnet_params: + sc_service_addrs: + - start_range : '198.10.**.***' + end_range: '198.10.**.***' + sc_service_addrs_state: "remove" + state: 'present' + +- name: Delete a subnet + dellemc.powerscale.subnet: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + groupnet_name: "groupnet_test" + subnet_name: "subnet_test" + state: 'absent' ``` ### Return Values - +
ParameterParameter Type Required DefaultDescription
enable_source_routing bool subnet_name str True
Name of the subnet.
groupnet_name str True
Name of the groupnet.
description str
The value for enabling or disabling source based routing.

A description of the subnet.
state netmask str
Netmask of the subnet.
gateway_priority int
Gateway priority.
new_subnet_name str
Name of the subnet when renaming an existing subnet.
subnet_params dict
Specify additional parameters to configure the subnet.
  gateway str
Gateway IP address.
  sc_service_addrs list
elements: dict

List of IP addresses that SmartConnect listens for DNS requests.
   start_range str True
Specifies the start range for sc_service_addrs.
   end_range str True
Specifies the end range for sc_service_addrs.
  sc_service_addrs_state str
  • add
  • remove

Specifies if the sc_service_addrs range need to be added or removed from the subnet.
  mtu int
MTU of the subnet.
  vlan_enabled bool
VLAN tagging enabled or disabled
  vlan_id int
VLAN ID for all interfaces in the subnet.
state str True
  • present

State of network settings.
  • absent
  • present

The state of the subnet after the task is performed.
present - indicates that the subnet should exist on the system.
absent - indicates that the subnet should not exist on the system.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
@@ -7080,57 +7146,85 @@ Manages Network Settings on PowerScale Storage System - + - - + + - + - + - + - + - - + + - + - - + + - + -
Key Whether or not the resource has changed.
network_settings subnet_details complex always Details of the network settings. When a subnet exists Subnet details.
  default_groupnet addr_family str success Default client-side DNS settings for non-multitenancy aware programs. IP address format.
  sbr groupnet str success Enable or disable source based routing. Name of the groupnet this subnet belongs to.
  sc_rebalance_delay int id str success Delay in seconds for IP rebalance. Unique subnet id.
  tcp_ports list mtu int success List of client TCP ports. MTU of the subnet.
- -### Authors -* Meenakshi Dembi (@dembim) + +   + name + str + success + The name of the subnet. + + +   + pools + list + success + List of names of pools in the subnet. + + +   + prefixlen + int + success + Subnet prefix length. + + +   + sc_service_addr + list + success + The address that SmartConnect listens for DNS requests. + + + +### Authors +* Jennifer John (@johnj9) -------------------------------- -# Network Pool Module +# SyncIQ Job Module -Manages Network Pools on PowerScale Storage System +Manage SyncIQ jobs on PowerScale ### Synopsis - Managing Network Pools on the PowerScale Storage System includes creating, modifying, deleting and reterving details of network pool. + Managing SyncIQ jobs on PowerScale storage system includes retrieving and modifying details of a SyncIQ job. ### Parameters - + - + @@ -7138,196 +7232,31 @@ Manages Network Pools on PowerScale Storage System - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -7335,7 +7264,7 @@ Manages Network Pools on PowerScale Storage System - + @@ -7343,7 +7272,7 @@ Manages Network Pools on PowerScale Storage System - + @@ -7351,7 +7280,7 @@ Manages Network Pools on PowerScale Storage System - + @@ -7359,7 +7288,7 @@ Manages Network Pools on PowerScale Storage System - + @@ -7369,89 +7298,53 @@ Manages Network Pools on PowerScale Storage System
ParameterParameter Type Required DefaultDescription
pool_name str True
The Name of the pool.
new_pool_name str
Name of the pool when renaming an existing pool.
groupnet_name str True
The name of the groupnet.
subnet_name job_id str True
The name of the subnet.
description str
Description of the pool.

Specifies the id or name of the policy job.
access_zone job_state str
Name of access zone to be associated with pool.
  • run
  • pause
  • cancel

Specifies the state of the job.
state state str True
  • absent
  • present

The state option is used to mention the existence of pool.
additional_pool_params dict
Define additional parameters for pool.
  ranges list
elements: dict

List of IP address ranges in this pool.
  range_state str
  • add
  • remove

This signifies if range needs to be added or removed.
  ifaces list
elements: dict

List of Pool interface members.
  iface_state str
  • add
  • remove

This signifies if interface needs to be added or removed.
sc_params dict
SmartConnect Parameters.

The state of the SyncIQ job after the task is performed.
present - indicates that the SyncIQ job should exist on the system.
absent - indicates that the SyncIQ job should not exist on the system.
  sc_dns_zone str
SmartConnect zone name for the pool.
  sc_subnet str
Name of SmartConnect service subnet for this pool.
  sc_connect_policy str
  • round_robin
  • conn_count
  • throughput
  • cpu_usage

SmartConnect client connection balancing policy.
  sc_failover_policy str
  • round_robin
  • conn_count
  • throughput
  • cpu_usage

SmartConnect IP failover policy.
  rebalance_policy str
  • auto
  • manual

Rebalance policy.
  alloc_method str
  • dynamic
  • static

Specifies how IP address allocation is done among pool members.
  sc_auto_unsuspend_delay int
Time delay in seconds before a node which has been automatically unsuspended becomes usable in SmartConnect responses for pool zones.
  sc_ttl int
Time to live value for SmartConnect DNS query responses in seconds.
  aggregation_mode str
  • roundrobin
  • failover
  • lacp
  • fec

OneFS supports the following NIC aggregation modes.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes +* There is delay in the actual state change of the SyncIQ job. The state change of jobs in 'scheduled' state is not supported. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` - - name: Create Network Pool - dellemc.powerscale.networkpool: +- name: Get SyncIQ job details + dellemc.powerscale.synciqjob: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - groupnet: "groupnet0" - subnet: "subnet0" - pool: "Test_Pool_2" - access_zone: "system" + job_id: "Test_SSL" state: "present" - - name: Get Network Pool - dellemc.powerscale.networkpool: +- name: Pause a SyncIQ job when in running state + dellemc.powerscale.synciqjob: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - groupnet: "groupnet0" - subnet: "subnet0" - pool: "Test_Pool_2" + job_id: "Test_SSL" + job_state: "pause" state: "present" - - name: Modify Network Pool - dellemc.powerscale.networkpool: +- name: Resume a SyncIQ job when in paused state + dellemc.powerscale.synciqjob: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - groupnet: "groupnet0" - subnet: "subnet0" - pool: "Test_Pool_2" - additional_pool_params: - ranges: - - low: "10.230.**.***" - high: "10.230.**.***" - range_state: "add" - ifaces: - - iface: "ext-1" - lnn: 1 - iface_state: "add" - sc_params: - sc_dns_zone: "10.230.**.***" - sc_connect_policy: "throughput" - sc_failover_policy: "throughput" - rebalance_policy: "auto" - alloc_method: "static" - sc_auto_unsuspend_delay: 200 - sc_ttl: 200 - aggregation_mode: "fec" - description: "Pool Created by Ansible Modify" + job_id: "Test_SSL" + job_state: "run" state: "present" - - name: Delete Network Pool - dellemc.powerscale.networkpool: +- name: Cancel a SyncIQ job + dellemc.powerscale.synciqjob: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - groupnet: "groupnet0" - subnet: "subnet0" - pool: "Test_Pool_2" + job_id: "Test_SSL" + job_state: "cancel" state: "absent" - - - name: Rename a network Pool - dellemc.powerscale.networkpool: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - groupnet_name: "groupnet0" - subnet_name: "subnet0" - pool_name: "Test_Pool" - new_pool_name: "Test_Pool_Rename" - state: "present" ``` ### Return Values - + @@ -7466,176 +7359,91 @@ Manages Network Pools on PowerScale Storage System - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - + - + - + - + - - - - - - - - + - + - + - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + - + - +
Key Whether or not the resource has changed.
pools job_details complex always Details of the network pool. When SyncIQ job exists The SyncIQ job details.
  access_zone str success Name of a valid access zone to map IP address pool to the zone.
  addr_family str success IP address format.
  aggregation_mode str success OneFS supports the following NIC aggregation modes.
  alloc_method str success Specifies how IP address allocation is done among pool members.
  description str success A description of the pool.
  groupnet action str success Name of the groupnet this pool belongs to. The action to be taken by this job.
  id str success Unique Pool ID.
  ifaces str success List of interface members in this pool.
  name str success The name of the pool. It must be unique throughout the given subnet. It's a required field with POST method.
  ranges str success List of IP address ranges in this pool. A unique identifier for this object.
  rebalance_policy policy_id str success Rebalance policy.
  sc_auto_unsuspend_delay int success Time delay in seconds before a node which has been automatically unsuspended becomes usable in SmartConnect responses for pool zones. The id of the policy from which the job is triggered.
  sc_connect_policy policy_name str success SmartConnect client connection balancing policy. The name of the policy from which this job is triggered.
  sc_dns_zone state str success SmartConnect zone name for the pool.
  sc_dns_zone_aliases list success List of SmartConnect zone aliases (DNS names) to the pool. The state of the job.
  sc_failover_policy sync_type str success SmartConnect IP failover policy. The type of sync being performed by this job.
modified_job complex When SyncIQ job is modified The modified SyncIQ job details.
  sc_subnet id str success Name of SmartConnect service subnet for this pool.
  sc_suspended_nodes list success List of LNNs showing currently suspended nodes in SmartConnect.
  sc_ttl int success Time to live value for SmartConnect DNS query responses in seconds.
  static_routes list success List of interface members in this pool. A unique identifier for this object.
  subnet state str success The name of the subnet. The state of the job.
### Authors -* Meenakshi Dembi (@dembim) +* Jennifer John (@johnj9) -------------------------------- -# Access Zone Module +# SyncIQ Policy Module -Manages access zones on PowerScale +Manage SyncIQ policies on PowerScale ### Synopsis - Managing access zones on the PowerScale storage system includes getting details of the access zone and modifying the smb and nfs settings. + Managing SyncIQ policies on PowerScale includes create a SyncIQ policy, modify a SyncIQ policy, get details of a SyncIQ policy, creating jobs on SyncIQ policy. ### Parameters - + - + @@ -7643,232 +7451,330 @@ Manages access zones on PowerScale - + - - + + - + - + - + - - + + - - + + + + + + + + + - + + - - + + - + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - + - + - + - - + + - + - + - - + + - + - + + + + + + + + + - + - + - + - - + + - + - - - - - - - - - - - + + + + + + + + + + + + - + - + + + + + + + + + + - + - + - + - - - + + + - - - - + + + + + + + + + + + + - - + + + - + + + + + + + + + @@ -7876,7 +7782,7 @@ Manages access zones on PowerScale - + @@ -7884,7 +7790,7 @@ Manages access zones on PowerScale - + @@ -7892,7 +7798,7 @@ Manages access zones on PowerScale - + @@ -7900,7 +7806,7 @@ Manages access zones on PowerScale - + @@ -7910,285 +7816,280 @@ Manages access zones on PowerScale
ParameterParameter Type Required DefaultDescription
az_name policy_name str True
The name of the access zone.

The name of the policy.
Required at the time of policy creation, for the rest of the operations either policy_name or policy_id is required.
path policy_id str
Specifies the access zone base directory path.

The policy_id is auto generated at the time of creation.
For get/modify operations either policy_name or policy_id is needed.
Parameters policy_name and policy_id are mutually exclusive.
groupnet new_policy_name str groupnet0
Name of the groupnet for create access zone.

The new name of the policy while renaming an existing policy.
policy_name or policy_id is required together with new_policy_name.
create_path bool action str
  • sync
  • copy

Indicates type of replication action to be performed on the source.
state str True
Determines if a path is created when a path does not exist.
  • absent
  • present

The state option is used to determine whether the policy exists or not.
smb dict description str
Specifies the default SMB setting parameters of access zone.

Description of the policy.
  create_permissions str default acl
  • default acl
  • Inherit mode bits
  • Use create mask and mode

Sets the default source permissions to apply when a file or directory is created.
  directory_create_mask str
Specifies the UNIX mask bits (octal) that are removed when a directory is created, restricting permissions.
Mask bits are applied before mode bits are applied.
enabled bool
Indicates whether policy is enabled or disabled.
  directory_create_mode str
Specifies the UNIX mode bits (octal) that are added when a directory is created, enabling permissions.
run_job str
  • on-schedule
  • when-source-modified
  • when-snapshot-taken

Types of scheduling a job on the policy.
  file_create_mask str
Specifies the UNIX mask bits (octal) that are removed when a file is created, restricting permissions.
job_delay int
If run_job is set to when-source-modified, job_delay is the duration to wait before triggering a job once there is modification on source.
  file_create_mode str
Specifies the UNIX mode bits (octal) that are added when a file is created, enabling permissions.
job_delay_unit str seconds
  • seconds
  • minutes
  • hours
  • days

Unit for job_delay.
rpo_alert int
If run_job is set to 'on-schedule' it is set to time/date, an alert is created if the specified RPO for this policy is exceeded.
The default value is 0, which will not generate RPO alerts.
rpo_alert_unit str minutes
  • minutes
  • hours
  • days
  • weeks
  • months
  • years

Unit for rpo_alert.
snapshot_sync_pattern str
The naming pattern that a snapshot must match to trigger a sync when the schedule is when-snapshot-taken.
skip_when_source_unmodified bool
If true and schedule is set , the policy will not run if no changes have been made to the contents of the source directory since the last job successfully completed.
Option modifiable when run_job is "on_schedule".
schedule str
Schedule set when run_policy is 'on-schedule'.
It must be in isidate format.
If the format is not proper an error will be thrown.
source_cluster dict
Defines the details of source_cluster.
  access_based_enumeration bool source_root_path str
Allows access based enumeration only on the files and folders that the requesting user can access.

The root directory on the source cluster where the files will be synced from.
Source root path should begin with /ifs. For example, if we want to create a synciq policy for the directory 'source' in the base path /ifs, then the source_root_path will be '/ifs/source'.
  access_based_enumeration_root_only bool source_exclude_directories list
elements: str

Access-based enumeration on only the root directory of the share.

List of path to the directories that should be excluded while running a policy.
For example, if we want to exclude directory 'exclude1' at location '/ifs/source', then the source_exclude_directories will be '/ifs/source/exclude1'.
  ntfs_acl_support bool source_include_directories list
elements: str

Allows ACLs to be stored and edited from SMB clients.

List of path to the directories that should be included while running a policy
For example, if we want to include directory 'include1' at location '/ifs/source', then the source_exclude_directories will be '/ifs/source/include1'.
  oplocks bool source_network dict
An oplock allows clients to provide performance improvements by using locally-cached information.

Run the policy only on nodes in the specified subnet and pool.
nfs
   pool str
The pool to restrict replication policies to.
   subnet str
The subnet to restrict replication policies to.
target_cluster dict
Specifies the default NFS setting parameters of access zone.

Details of the target cluster.
  commit_asynchronous bool target_host str
Set to True if NFS commit requests execute asynchronously.

Host IP or FQDN where we want to replicate the source.
  nfsv4_domain target_path str
Specifies the domain or realm through which users and groups are associated.

The directory location to have the replicated source data.
  nfsv4_allow_numeric_ids bool target_certificate_id str
If true, sends owners and groups as UIDs and GIDs when look up fails or if the 'nfsv4_no_name' property is set to 1.

The ID of the target cluster certificate being used for encryption
This parameter is not supported by isi_sdk_8_1_1
  nfsv4_no_domain bool target_certificate_name str
If true, sends owners and groups without a domain name.

The name of the target cluster certificate being used for encryption
Parameters target_certficate_name and target_certificate_id are mutually exclusive
This parameter is not supported by isi_sdk_8_1_1
target_snapshot dict
Details of snapshots to be created at the target.
  nfsv4_no_domain_uids target_snapshot_archive bool
If true, sends UIDs and GIDs without a domain name.

Indicates whether to take snapshot of the target.
  nfsv4_no_names bool target_snapshot_expiration int
If true, sends owners and groups as UIDs and GIDs.

Expiration time of snapshot.
Value 0 means no expiration.
provider_state str
  • add
  • remove

Defines whether the auth providers should be added or removed from access zone.
If auth_providers are given, then provider_state should also be specified.
add - indicates that the auth providers should be added to the access zone.
remove - indicates that auth providers should be removed from the access zone.
auth_providers list
elements: dict
  exp_time_unit str years
  • years
  • months
  • weeks
  • days

Unit of target_snapshot expiration time.
job_params dict
Specifies the auth providers which need to be added or removed from access zone.
If auth_providers are given, then provider_state should also be specified.

Specifies the parameters to create a job on SyncIQ policy.
  provider_name action str True
  • run
  • resync_prep
  • allow_write
  • allow_write_revert

The action to be taken by this job.
  wait_for_completion bool False
Specifies the auth provider name which needs to be added or removed from access zone.

Specifies if the job should run synchronously or asynchronously. By default the job is created to run asynchronously.
  provider_type source_snapshot str True
  • local
  • file
  • ldap
  • ads
  • nis

Specifies the auth provider type which needs to be added or removed from access zone.

An optional snapshot to copy/sync from.
state str True
  workers_per_node int
Specifies the desired workers per node. This parameter is valid for allow_write, and allow_write_revert operation. This is an optional parameter and it defaults to 3.
accelerated_failback bool
  • present
  • absent

Defines whether the access zone should exist or not.
present - indicates that the access zone should exist on the system.
absent - indicates that the access zone should not exist on the system.

If set to true, SyncIQ will perform failback configuration tasks during the next job run, rather than waiting to perform those tasks during the failback process. Performing these tasks ahead of time will increase the speed of failback operations.
It defaults to True, if not specified.
onefs_host restrict_target_network bool
If set to true then replication policies will connect only to nodes in the specified SmartConnect zone. If set to false, replication policies are not restricted to specific nodes on the target cluster.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes -* Deletion of access zone is not allowed through the Ansible module. +* There is a delay to view the jobs running on the policy. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` -- name: Get details of access zone including smb and nfs settings - dellemc.powerscale.accesszone: + - name: Create SyncIQ policy + dellemc.powerscale.synciqpolicy: onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" api_user: "{{api_user}}" api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - az_name: "{{access zone}}" + action: "copy" + description: "Creating a policy" + enabled: True + policy_name: "New_policy" + run_job: "on-schedule" + schedule: "every 1 days at 12:00 PM" + skip_when_source_unmodified: True + rpo_alert: 100 + source_cluster: + source_root_path: "" + source_exclude_directories: "" + source_include_directories: "" + source_network: + pool: "pool0" + subnet: "subnet0" + target_cluster: + target_host: "198.10.xxx.xxx" + target_path: "" + target_certificate_id: "7sdgvejkiau7629903048hdjdkljsbwgsuasj7169823kkckll" + target_snapshot: + target_snapshot_archive: True + target_snapshot_expiration: 90 + exp_time_unit: "day" + accelerated_failback: False + restrict_target_network: True state: "present" -- name: Modify smb settings of access zone - dellemc.powerscale.accesszone: + - name: Modify SyncIQ policy + dellemc.powerscale.synciqpolicy: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + policy_name: "New_policy" + action: "sync" + description: "Creating a policy" + enabled: False + run_job: "when-snapshot-taken" + snapshot_sync_patten: "^snapshot\\-$latest" + source_cluster: + source_root_path: "" + source_exclude_directories: "" + source_include_directories: "" + source_network: + pool: "pool1" + subnet: "subnet1" + target_cluster: + target_host: "198.10.xxx.xxx" + target_path: "" + target_certificate_id: "7sdgvejkiau7629903048hdjdkljsbwgsuasj716iuhywthsjk" + target_snapshot: + target_snapshot_archive: False + accelerated_failback: True + restrict_target_network: False + state: "present" + + - name: Rename a SyncIQ policy + dellemc.powerscale.synciqpolicy: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - az_name: "{{access zone}}" + policy_id: "d63b079d34adf2d2ec3ce92f15bfc730" + new_policy_name: "Policy_Rename" state: "present" - smb: - create_permissions: 'default acl' - directory_create_mask: '777' - directory_create_mode: '700' - file_create_mask: '700' - file_create_mode: '100' - access_based_enumeration: true - access_based_enumeration_root_only: false - ntfs_acl_support: true - oplocks: true -- name: Modify nfs settings of access zone - dellemc.powerscale.accesszone: + - name: Get SyncIQ policy details + dellemc.powerscale.synciqpolicy: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - az_name: "{{access zone}}" + policy_name: "Policy_rename" state: "present" - nfs: - commit_asynchronous: false - nfsv4_allow_numeric_ids: false - nfsv4_domain: 'localhost' - nfsv4_no_domain: false - nfsv4_no_domain_uids: false - nfsv4_no_names: false -- name: Modify smb and nfs settings of access zone - dellemc.powerscale.accesszone: + - name: Create a job on SyncIQ policy + dellemc.powerscale.synciqpolicy: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - az_name: "{{access zone}}" + policy_name: "Test_SSL" + job_params: + action: "run" + source_snapshot: "TestSIQ-snapshot" + wait_for_completion: False state: "present" - smb: - create_permissions: 'default acl' - directory_create_mask: '777' - directory_create_mode: '700' - file_create_mask: '700' - file_create_mode: '100' - access_based_enumeration: true - access_based_enumeration_root_only: false - ntfs_acl_support: true - oplocks: true - nfs: - commit_asynchronous: false - nfsv4_allow_numeric_ids: false - nfsv4_domain: 'localhost' - nfsv4_no_domain: false - nfsv4_no_domain_uids: false - nfsv4_no_names: false -- name: Add Auth Providers to the access zone - dellemc.powerscale.accesszone: + - name: Create a resync_prep job on SyncIQ policy + dellemc.powerscale.synciqpolicy: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - az_name: "{{access zone}}" - provider_state: "add" - auth_providers: - - provider_name: "System" - provider_type: "file" - - provider_name: "ldap-prashant" - provider_type: "ldap" + policy_name: "Test_SSL" + job_params: + action: "resync_prep" + source_snapshot: "TestSIQ-snapshot" + wait_for_completion: False state: "present" -- name: Remove Auth Providers from the access zone - dellemc.powerscale.accesszone: + - name: Allow writes on target of SyncIQ policy + dellemc.powerscale.synciqpolicy: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - az_name: "{{access zone}}" - provider_state: "remove" - auth_providers: - - provider_name: "System" - provider_type: "file" + policy_name: "Test_SSL" + job_params: + action: "allow_write" + source_snapshot: "TestSIQ-snapshot" + workers_per_node: 3 + wait_for_completion: False state: "present" -- name: Create New Access Zone - dellemc.powerscale.accesszone: + - name: Disallow writes on target of SyncIQ policy + dellemc.powerscale.synciqpolicy: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - az_name: "{{access zone}}" - path: "/ifs/test_dir" - groupnet: "groupnet1" - create_path: True - provider_state: "add" - auth_providers: - - provider_name: "System" - provider_type: "file" + policy_name: "Test_SSL" + job_params: + action: "allow_write_revert" + source_snapshot: "TestSIQ-snapshot" + workers_per_node: 3 + wait_for_completion: False state: "present" + + - name: Delete SyncIQ policy by policy name + dellemc.powerscale.synciqpolicy: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + policy_name: "Policy_rename" + state: "absent" + + - name: Delete SyncIQ policy by policy ID + dellemc.powerscale.synciqpolicy: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + policy_id: "d63b079d34adf2d2ec3ce92f15bfc730" + state: "absent" ``` ### Return Values - + - + - + + + + + + + - - + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
KeyKey Type Returned Description
access_zone_details changed bool always Whether or not the resource has changed.
synciq_policy_details complex When access zone exists The access zone details. When SyncIQ policy exists Details of the SyncIQ policy.
  nfs_settings complex action str success NFS settings of access zone Type of action for the policy
   export_settings complex success Default values for NFS exports
    commit_asynchronous bool success Set to True if NFS commit requests execute asynchronously
   zone_settings complex success NFS server settings for this zone
    nfsv4_allow_numeric_ids bool success If true, sends owners and groups as UIDs and GIDs when look up fails or if the 'nfsv4_no_name' property is set to 1
    nfsv4_domain str success Specifies the domain or realm through which users and groups are associated
    nfsv4_no_domain bool success If true, sends owners and groups without a domain name
    nfsv4_no_domain_uids bool success If true, sends UIDs and GIDs without a domain name
    nfsv4_no_names bool success If true, sends owners and groups as UIDs and GIDs
  smb_settings complex enabled bool success SMB settings of access zone Indicates whether policy is enabled
   directory_create_mask(octal) str success UNIX mask bits for directory in octal format
   directory_create_mode(octal) str success UNIX mode bits for directory in octal format
   file_create_mask(octal) str success UNIX mask bits for file in octal format
   file_create_mode(octal) str success UNIX mode bits for file in octal format
access_zone_modify_flag bool on success Whether auth providers linked to access zone has changed.
changed bool always Whether or not the resource has changed.
nfs_modify_flag bool on success Whether or not the default NFS settings of access zone has changed.
smb_modify_flag bool on success Whether or not the default SMB settings of access zone has changed.
  id str success ID of the policy.
  jobs list success List of jobs running on the policy
  name str success The name of the policy.
  schedule str success Type of schedule chosen to run a policy
  source_root_path str success The path to the source directory to be replicated
  target_host str success The IP/FQDN of the host where source is replicated
  target_path str success The target directory where source is replicated
target_synciq_policy_details complex When failover/failback is performed on target cluster Details of the target SyncIQ policy.
+ +   + failover_failback_state + str + success + The state of the policy with respect to sync failover/failback. + + +   + id + str + success + ID of the policy. + + +   + name + str + success + The name of the policy. + + ### Authors -* Akash Shendge (@shenda1) +* Spandita Panigrahi (@panigs7) -------------------------------- # SyncIQ Reports Module @@ -9093,18 +8994,18 @@ Provides the SyncIQ reports for PowerScale Storage System * Meenakshi Dembi (@dembim) -------------------------------- -# Node Module +# SyncIQ Performance Rules Module -Get node info of PowerScale Storage System. +Manage SyncIQ performance rules on PowerScale Storage System. ### Synopsis - Get information of a node belonging to the PowerScale cluster. + Managing SyncIQ performance rules on PowerScale includes create a SyncIQ performance rule, modify a SyncIQ performance rule, get details of a SyncIQ performance rule, delete a SyncIQ performance rule. ### Parameters - + - + @@ -9112,23 +9013,90 @@ Get node info of PowerScale Storage System. - + + + + + + + + + + + + + + + + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -9136,7 +9104,7 @@ Get node info of PowerScale Storage System. - + @@ -9144,7 +9112,7 @@ Get node info of PowerScale Storage System. - + @@ -9152,7 +9120,7 @@ Get node info of PowerScale Storage System. - + @@ -9160,7 +9128,7 @@ Get node info of PowerScale Storage System. - + @@ -9170,85 +9138,148 @@ Get node info of PowerScale Storage System.
ParameterParameter Type Required DefaultDescription
node_id rule_type str
  • bandwidth
  • file_count
  • cpu
  • worker

The type of system resource this rule limits.
This is mandatory parameter while creating/deleting a performance rule.
This cannot be modified.
sync_rule_id str
This is an auto generated ID at the time of creation of SyncIQ performance rule.
For get/modify/delete operations sync_rule_id is required.
The ID of a performance rule is not absolute to a particular existing rule configuration. The IDs are auto-sequenced during creation/deletion of a performance rule.
limit int True
The Logical node Number of a PowerScale cluster node.

It tells the amount the specified system resource type is limited by this rule.
Units are kb/s for bandwidth, files/s for file-count, processing percentage used for cpu, or percentage of maximum available workers.
This is a mandatory parameter while creating/deleting a performance rule.
state description str
User entered description of the performance rule.
enabled bool
Indicates whether the performance rule is currently in effect during its specified interval.
This mandatory while creating/deleting a performance rule.
schedule dict
A schedule defining when during a week this performance rule is in effect.
It is mandatory to enter schedule while creating/deleting a performance rule.
  begin str
Start time for this schedule, during its specified days.
It is of the format hh:mm (24 hour format).
  end str
End time for this schedule, during its specified days.
It is of the format hh:mm (24 hour format).
  days_of_week list
elements: str
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday

The days in a week when the performance rule is effective.
state str True
  • absent
  • present

Defines whether the node should exist or not.

The state option is used to determine whether the performance rule exists or not.
onefs_host onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl verify_ssl bool True
boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user api_user str True
username of the PowerScale cluster.
api_password api_password str True
### Notes +* Operations performed in parallel from other interfaces apart from playbook cannot guarantee desirable results. * The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. ### Examples ``` -- name: Get node info of the PowerScale cluster node - dellemc.powerscale.node: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - node_id: "{{cluster_node_id}}" - state: "present" -``` + - name: Create SyncIQ performance rule + dellemc.powerscale.synciqrules: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + description: "Create a rule" + enabled: True + schedule: + begin: "00:00" + end: "13:30" + days_of_week: + - "monday" + - "tuesday" + - "sunday" + rule_type: "cpu" + limit: "80" + state: "present" -### Return Values - - - - + - name: Modify SyncIQ performance rule + dellemc.powerscale.synciqrules: + onefs_host: "{{onefs_host}}" + verify_ssl: "{{verify_ssl}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + sync_rule_id: "cpu-0" + limit: "85" + description: "Modify the performance rule" + state: "present" + + - name: Get SyncIQ performance rule details + dellemc.powerscale.synciqrules: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + sync_rule_id: "cpu-0" + state: "present" + + - name: Delete SyncIQ performance rule + dellemc.powerscale.synciqrules: + onefs_host: "{{onefs_host}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + sync_rule_id: "cpu-0" + enabled: True + schedule: + begin: "00:00" + end: "13:30" + days_of_week: + - "monday" + - "tuesday" + - "sunday" + rule_type: "bandwidth" + limit: "85" + state: "absent" +``` + +### Return Values + +
Key
+ + - + - + - - + + - - + + - + - + + + + + + + + + + + + + + + - + - - + + - + - - - - - - - - -
Key Type Returned Description
changed changed bool always Whether or not the resource has changed.
cluster_node_details sync_rule_details complex When cluster node exists The cluster node details. When SyncIQ performance rule exists Details of the SyncIQ performance rule.
  id int description str success Node id (device number) of a node. Description of the performance rule.
  lnn enabled bool success Indicates whether performance rule is enabled
  id str success ID of the performance rule.
  limit int success Logical Node Number (LNN) of a node. Amount the specified system resource type is limited by this rule
  partitions complex schedule str success Node partition information. Duration when performance rule is effective
   count int success Count of how many partitions are included.
+ +   + type + str + success + Type of performance rule + + ### Authors -* Ganesh Prabhu(@prabhg5) > +* Spandita Panigrahi (@panigs7) -------------------------------- -# NFS Module +# SyncIQ Target Reorts Module -Manage NFS exports on a PowerScale Storage System +Provides the SyncIQ target reports for PowerScale Storage System ### Synopsis - Managing NFS exports on an PowerScale system includes creating NFS export for a directory in an access zone, adding or removing clients, modifying different parameters of the export and deleting export. + This module provides the SyncIQ target reports for PowerScale Storage System. ### Parameters - + @@ -9259,76 +9290,36 @@ Manage NFS exports on a PowerScale Storage System - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - + + - + - + + - - - - - - - - - - + @@ -9336,15 +9327,7 @@ Manage NFS exports on a PowerScale Storage System - - - - - - - - - + @@ -9393,1817 +9376,1220 @@ Manage NFS exports on a PowerScale Storage System ### Examples ``` - - name: Create NFS Export - dellemc.powerscale.nfs: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - path: "" - access_zone: "{{access_zone}}" - read_only_clients: - - "{{client1}}" - - "{{client2}}" - read_only: True - clients: ["{{client3}}"] - client_state: 'present-in-export' - state: 'present' - - - name: Get NFS Export - dellemc.powerscale.nfs: + - name: Get a single SyncIQ target report with id + register: result + dellemc.powerscale.synciqtargetreports: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - path: "" - access_zone: "{{access_zone}}" - state: 'present' + id: "2-sample_policy" + state: "present" - - name: Add a root client - dellemc.powerscale.nfs: + - name: Get a single SyncIQ target report with name + register: result + dellemc.powerscale.synciqtargetreports: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - path: "" - access_zone: "{{access_zone}}" - root_clients: - - "{{client4}}" - client_state: 'present-in-export' - state: 'present' + name: "sample_policy" + state: "present" - - name: Set sub_directories_mountable flag to True - dellemc.powerscale.nfs: + - name: Get all SyncIQ target sub-reports with report id + register: result + dellemc.powerscale.synciqtargetreports: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - path: "" - access_zone: "{{access_zone}}" - sub_directories_mountable: True - state: 'present' + id: "2-sample_policy" + include_sub_reports: "True" + state: "present" - - name: Remove a root client - dellemc.powerscale.nfs: + - name: Get all SyncIQ target sub-reports with report name + register: result + dellemc.powerscale.synciqtargetreports: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - path: "" - access_zone: "{{access_zone}}" - root_clients: - - "{{client4}}" - client_state: 'absent-in-export' - state: 'present' + name: "sample_policy" + include_sub_reports: "True" + state: "present" - - name: Modify description - dellemc.powerscale.nfs: + - name: Get a single SyncIQ target sub-report with sub-report id + register: result + dellemc.powerscale.synciqtargetreports: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" api_password: "{{api_password}}" verify_ssl: "{{verify_ssl}}" - path: "" - access_zone: "{{access_zone}}" - description: "new description" - state: 'present' - - - name: Set read_only flag to False - dellemc.powerscale.nfs: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - path: "" - access_zone: "{{access_zone}}" - read_only: False - state: 'present' - - - name: Delete NFS Export - dellemc.powerscale.nfs: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - path: "" - access_zone: "{{access_zone}}" - state: 'absent' -``` + id: "2-sample_policy" + sub_report_id: "1" + state: "present" +``` ### Return Values - +
ParameterDescription
path str True
Specifies the filesystem path. It is the absolute path for System access zone and it is relative if using non-system access zone. For example, if your access zone is 'Ansible' and it has a base path '/ifs/ansible' and the path specified is '/user1', then the effective path would be '/ifs/ansible/user1'. If your access zone is System, and you have 'directory1' in the access zone, the path provided should be '/ifs/directory1'.
The directory on the path must exist - the NFS module will not create the directory.
Ansible module will only support exports with a unique path.
If there are multiple exports present with the same path, fetching details, creation, modification or deletion of such exports will fail.
access_zone name str System
Specifies the zone in which the export is valid.
Access zone once set cannot be changed.
clients list
elements: str

Specifies the clients to the export. The type of access to clients in this list is determined by the 'read_only' parameter.
This list can be changed anytime during the lifetime of the NFS export.
root_clients list
elements: str

Specifies the clients with root access to the export.
This list can be changed anytime during the lifetime of the NFS export.
read_only_clients list
elements: str

Specifies the clients with read-only access to the export, even when the export is read/write.
This list can be changed anytime during the lifetime of the NFS export.

The name of the SyncIQ target report.
read_write_clients list
elements: str
id str
Specifies the clients with both read and write access to the export, even when the export is set to read-only.
This list can be changed anytime during the lifetime of the NFS export.

The id of the SyncIQ target report.
read_only bool sub_report_id str
Specifies whether the export is read-only or read-write. This parameter only has effect on the 'clients' list and not the other three types of clients.
This setting can be modified any time. If it is not set at the time of creation, the export will be of type read/write.

The id of the SyncIQ target sub report.
sub_directories_mountable include_sub_reports bool False
True if all directories under the specified paths are mountable. If not set, sub-directories will not be mountable.
This setting can be modified any time.
description str
Optional description field for the NFS export.
Can be modified by passing a new value.

This flag is used to fetch the list of target sub reports.
state True
  • absent
  • present

Defines whether the NFS export should exist or not.
present indicates that the NFS export should exist in system.
absent indicates that the NFS export should not exist in system.
client_state str
  • present-in-export
  • absent-in-export

Defines whether the clients can access the NFS export.
present-in-export indicates that the clients can access the NFS export.
absent-in-export indicates that the client cannot access the NFS export.
Required when adding or removing access of clients from the export.
While removing clients, only the specified clients will be removed from the export, others will remain as is.

The state option is used to mention the existence of target reports.
onefs_host
- + - - + + - + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - - + + - + - + - + - - + + - + - + + + + + + + + + + + + + + + - + - - + + - + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - - - - - - -
KeyKey Type Returned Description
NFS_export_details complex changed bool always The updated NFS Export details. Whether or not the resource has changed.
synciq_target_report complex When SyncIQ target report exists Details of the SyncIQ target report.
  all_dirs action str success The action to be taken by this job.
  ads_streams_replicated int success The number of ads streams replicated by this job.
  block_specs_replicated int success The number of block specs replicated by this job.
  bytes_recoverable int success The number of bytes recoverable by this job.
  bytes_transferred int success The number of bytes that have been transferred by this job.
  char_specs_replicated int success The number of char specs replicated by this job.
  committed_files int success The number of WORM committed files.
  corrected_lins int success The number of LINs corrected by this job.
  dead_node bool success sub_directories_mountable flag value. This field is true if the node running this job is dead.
  clients list directories_replicated int success The list of clients for the NFS Export. The number of directories replicated.
  description str dirs_changed int success Description for the export. The number of directories changed by this job.
  id dirs_deleted int success The ID of the NFS Export, generated by the array. The number of directories deleted by this job.
  paths list dirs_moved int success The filesystem path. The number of directories moved by this job.
  read_only dirs_new int success The number of directories created by this job.
  duration int success The amount of time in seconds between when the job was started and when it ended. If the job has not yet ended, this is the amount of time since the job started. This field is null if the job has not yet started.
  encrypted bool success Specifies whether the export is read-only or read-write. If true, syncs will be encrypted.
  read_only_clients list end_time int success The list of read only clients for the NFS Export. The time the job ended in unix epoch seconds. The field is null if the job hasn't ended.
  read_write_clients list error str success The list of read write clients for the NFS Export. The primary error message for this job.
  root_clients error_checksum_files_skipped int success The number of files with checksum errors skipped by this job.
  error_io_files_skipped int success The number of files with io errors skipped by this job.
  error_net_files_skipped int success The number of files with network errors skipped by this job.
  errors list success The list of root clients for the NFS Export. A list of error messages for this job.
  zone str failed_chunks int success Specifies the zone in which the export is valid. The number of data chunks that failed transmission.
changed bool always A boolean indicating if the task had to make changes.
- -### Authors -* Manisha Agrawal(@agrawm3) - --------------------------------- -# Snapshot Schedule Module - -Manage snapshot schedules on PowerScale - -### Synopsis - You can perform the following operations. - Managing snapshot schedules on PowerScale. - Create snapshot schedule. - Modify snapshot schedule. - Get details of snapshot schedule. - Delete snapshot schedule. - -### Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeRequiredDefaultChoicesDescription
name str True
The name of the snapshot schedule.
path str
The path on which the snapshot will be taken. This path is relative to the base path of the Access Zone.
For 'System' access zone, the path is absolute.
This parameter is required at the time of creation.
Modification of the path is not allowed through the Ansible module.
access_zone str System
The effective path where the snapshot is created will be determined by the base path of the Access Zone and the path provided by the user in the playbook.
new_name str
The new name of the snapshot schedule.
desired_retention int
The number of hours/days for which snapshots created by this snapshot schedule should be retained.
If retention is not specified at the time of creation, then the snapshots created by the snapshot schedule will be retained forever.
Minimum retention duration is 2 hours.
For large durations (beyond days/weeks), PowerScale may round off the retention to a somewhat larger value to match a whole number of days/weeks.
retention_unit str hours
  • hours
  • days

The retention unit for the snapshot created by this schedule.
alias str
The alias will point to the latest snapshot created by the snapshot schedule.
pattern str
Pattern expanded with strftime to create snapshot names.
This parameter is required at the time of creation.
schedule str
The isidate compatible natural language description of the schedule.
It specifies the frequency of the schedule.
This parameter is required at the time of creation.
state str True
  • absent
  • present

Defines whether the snapshot schedule should exist or not.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl bool True
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user str True
username of the PowerScale cluster.
api_password str True
the password of the PowerScale cluster.
- -### Notes -* The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. - -### Examples -``` -- name: Create snapshot schedule - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{name}}" - access_zone: '{{access_zone}}' - path: '' - alias: "{{alias1}}" - desired_retention: "{{desired_retention1}}" - pattern: "{{pattern1}}" - schedule: "{{schedule1}}" - state: "{{state_present}}" - -- name: Get details of snapshot schedule - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{name}}" - state: "{{state_present}}" - -- name: Rename snapshot schedule - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{name}}" - new_name: "{{new_name}}" - state: "{{state_present}}" - -- name: Modify alias of snapshot schedule - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{new_name}}" - alias: "{{alias2}}" - state: "{{state_present}}" - -- name: Modify pattern of snapshot schedule - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{new_name}}" - pattern: "{{pattern2}}" - state: "{{state_present}}" - -- name: Modify schedule of snapshot schedule - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{new_name}}" - schedule: "{{schedule2}}" - state: "{{state_present}}" - -- name: Modify retention of snapshot schedule - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{new_name}}" - desired_retention: 2 - retention_unit: "{{retention_unit_days}}" - state: "{{state_present}}" - -- name: Delete snapshot schedule - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{new_name}}" - state: "{{state_absent}}" - -- name: Delete snapshot schedule - Idempotency - dellemc.powerscale.snapshotschedule: - onefs_host: "{{onefs_host}}" - verify_ssl: "{{verify_ssl}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - name: "{{new_name}}" - state: "{{state_absent}}" -``` - -### Return Values - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + -
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
snapshot_schedule_details complex When snapshot schedule exists Details of the snapshot schedule including snapshot details.
  schedules complex fifos_replicated int success Details of snapshot schedule The number of fifos replicated by this job.
   duration int success Time in seconds added to creation time to construction expiration time
   id int success The system ID given to the schedule
   next_run int success Unix Epoch time of next snapshot to be created
   next_snapshot str success Formatted name of next snapshot to be created
  snapshot_list complex file_data_bytes int success List of snapshots taken by this schedule The number of bytes transferred that belong to files.
   snapshots complex success Details of snapshot
    created int success The Unix Epoch time the snapshot was created
    expires int success The Unix Epoch time the snapshot will expire and be eligible for automatic deletion.
    id int success The system ID given to the snapshot.This is useful for tracking the status of delete pending snapshots
    name str success The user or system supplied snapshot name. This will be null for snapshots pending delete
    size int success The amount of storage in bytes used to store this snapshot
  files_changed int success The number of files changed by this job.
  files_linked int success The number of files linked by this job.
  files_new int success The number of files created by this job.
  files_selected int success The number of files selected by this job.
  files_transferred int success The number of files transferred by this job.
  files_unlinked int success The number of files unlinked by this job.
  files_with_ads_replicated int success The number of files with ads replicated by this job.
  flipped_lins int success The number of LINs flipped by this job.
  hard_links_replicated int success The number of hard links replicated by this job.
  hash_exceptions_fixed int success The number of hash exceptions fixed by this job.
  hash_exceptions_found int success The number of hash exceptions found by this job.
  id str success A unique identifier for this object.
  job_id int success The ID of the job.
  lins_total int success The number of LINs transferred by this job.
  network_bytes_to_source int success The total number of bytes sent to the source by this job.
  network_bytes_to_target int success The total number of bytes sent to the target by this job.
  new_files_replicated int success The number of new files replicated by this job.
  num_retransmitted_files int success The number of files that have been retransmitted by this job.
  phases complex success Data for each phase of this job.
    total end_time int success Total number of items available The time the job ended this phase.
   phase str success The phase that the job was in.
   start_time int success The time the job began this phase.
- -### Authors -* Akash Shendge (@shenda1) - --------------------------------- -# Settings Module - -Manages general settings for PowerScale storage system - -### Synopsis - Managing general settings on the PowerScale storage system which includes get and update operations for email settings and add, remove and get operations for NTP servers. - -### Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeRequiredDefaultChoicesDescription
mail_relay str
The address of the SMTP server to be used for relaying the notification messages.
An SMTP server is required in order to send notifications.
If this str is empty, no emails will be sent.
mail_sender str
The full email address that will appear as the sender of notification messages.
mail_subject str
The subject line for notification messages from this cluster.
email_settings bool
This is an addition flag to view the email settings.
ntp_servers list
elements: str

List of NTP servers which need to be configured.
state str True
  • absent
  • present

The state option is used to mention the existence of pool.
ntp_server_id str
ID of NTP server.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl bool True
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user str True
username of the PowerScale cluster.
api_password str True
the password of the PowerScale cluster.
- -### Notes -* The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. - -### Examples -``` - - name: Get email settings - dellemc.powerscale.settings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - email_settings: "{{email_settings}}" - state: "{{state_present}}" - - - name: Update email settings - dellemc.powerscale.settings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - state: "{{state_present}}" - mail_relay: "mailrelay.itp.dell.com" - mail_sender: "lab-a2@dell.com" - mail_subject: "lab-a2-alerts" - - - name: Add NTP server - dellemc.powerscale.settings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - ntp_servers: - - "10.106.**.***" - - "10.106.**.***" - state: "{{state_present}}" - - - name: Add NTP server - Idempotency - dellemc.powerscale.settings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - ntp_servers: - - "10.106.**.***" - - "10.106.**.***" - state: "{{state_present}}" - - - name: Get NTP server - dellemc.powerscale.settings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - ntp_server_id: "10.106.**.***" - state: "{{state_present}}" - - - name: Remove NTP server - dellemc.powerscale.settings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - ntp_servers: - - "10.106.**.***" - - "10.106.**.***" - state: "{{state_absent}}" - - - name: Remove NTP server - Idempotency - dellemc.powerscale.settings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - ntp_servers: - - "10.106.**.***" - - "10.106.**.***" - state: "{{state_absent}}" - - - name: Update email settings and add NTP server - dellemc.powerscale.settings: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - state: "{{state_present}}" - mail_relay: "mailrelay.itp.dell.com" - mail_sender: "lab-a2@dell.com" - mail_subject: "lab-a2-alerts" - ntp_servers: - - "10.106.**.***" - - "10.106.**.***" -``` - -### Return Values - - - - - - - - - - - - - - - - - - - - - - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + - + - + - + - + - - -
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
smartpool_settings complex always Details of the smartpool settings
  automatically_manage_io_optimization str policy complex success Automatically manage IO optimization settings on files. Policy details
   name str success User-assigned name of this sync policy.
   source_root_path str success The root directory on the source cluster the files will be synced from.
   target_host str success Hostname or IP address of sync target cluster.
  automatically_manage_protection policy_action str success Automatically manage protection settings on files. This is the action the policy is configured to perform.
  global_namespace_acceleration_enabled bool policy_id str success Optimize namespace operations by storing metadata on SSDs. The ID of the policy.
  global_namespace_acceleration_state policy_name str success Whether or not namespace operation optimizations are currently in effect. The name of the policy.
  protect_directories_one_level_higher bool quotas_deleted int success Automatically add additional protection level to all directories. The number of quotas removed from the target.
  spillover_enabled bool regular_files_replicated int success Spill writes into other pools as needed. The number of regular files replicated by this job.
  spillover_target dict resynced_lins int success Target pool for spilled writes. The number of LINs resynched by this job.
  ssd_l3_cache_default_enabled bool retransmitted_files list success The L3 Cache default enabled state. This specifies whether L3 Cache should be enabled on new node pools. The files that have been retransmitted by this job.
  ssd_qab_mirrors str retry int success Controls number of mirrors of QAB blocks to place on SSDs. The number of times the job has been retried.
  ssd_system_btree_mirrors str running_chunks int success Controls number of mirrors of system B-tree blocks to place on SSDs. The number of data chunks currently being transmitted.
  ssd_system_delta_mirrors str service_report complex success Controls number of mirrors of system delta blocks to place on SSDs. Data for each component exported as part of service replication.
   end_time int success The time the job end this component.
   start_time int success The time the job began this component.
   status str success The current status of export for this component.
  virtual_hot_spare_deny_writes bool sockets_replicated int success Deny writes into reserved virtual hot spare space. The number of sockets replicated by this job.
  virtual_hot_spare_hide_spare bool source_bytes_recovered int success Hide reserved virtual hot spare space from free space counts. The number of bytes recovered on the source.
  virtual_hot_spare_limit_drives source_directories_created int success The number of drives to reserve for the virtual hot spare, from 0-4. The number of directories created on the source.
  virtual_hot_spare_limit_percent source_directories_deleted int success The percent space to reserve for the virtual hot spare, from 0-20.
- -### Authors -* Meenakshi Dembi (@dembim) - --------------------------------- -# SyncIQ Target Reports Module - -Provides the SyncIQ target reports for PowerScale Storage System - -### Synopsis - This module provides the SyncIQ target reports for PowerScale Storage System. - -### Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeRequiredDefaultChoicesDescription
name str
The name of the SyncIQ target report.
id str
The id of the SyncIQ target report.
sub_report_id str
The id of the SyncIQ target sub report.
include_sub_reports bool False
This flag is used to fetch the list of target sub reports.
state str True
  • absent
  • present

The state option is used to mention the existence of target reports.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl bool True
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user str True
username of the PowerScale cluster.
api_password str True
the password of the PowerScale cluster.
- -### Notes -* The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. - -### Examples -``` - - name: Get a single SyncIQ target report with id - register: result - dellemc.powerscale.synciqtargetreports: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - id: "2-sample_policy" - state: "present" - - - name: Get a single SyncIQ target report with name - register: result - dellemc.powerscale.synciqtargetreports: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - name: "sample_policy" - state: "present" - - - name: Get all SyncIQ target sub-reports with report id - register: result - dellemc.powerscale.synciqtargetreports: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - id: "2-sample_policy" - include_sub_reports: "True" - state: "present" - - - name: Get all SyncIQ target sub-reports with report name - register: result - dellemc.powerscale.synciqtargetreports: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - name: "sample_policy" - include_sub_reports: "True" - state: "present" - - - name: Get a single SyncIQ target sub-report with sub-report id - register: result - dellemc.powerscale.synciqtargetreports: - onefs_host: "{{onefs_host}}" - api_user: "{{api_user}}" - api_password: "{{api_password}}" - verify_ssl: "{{verify_ssl}}" - id: "2-sample_policy" - sub_report_id: "1" - state: "present" -``` - -### Return Values - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - + - + - + - + - + - + - + - - + + - + - + - + - + - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - + - + - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + - + - + - + - + - + - + - + - + - - + + - + - + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
synciq_target_report complex When SyncIQ target report exists Details of the SyncIQ target report.
  action str success The action to be taken by this job. The number of directories deleted on the source.
  ads_streams_replicated source_directories_linked int success The number of ads streams replicated by this job. The number of directories linked on the source.
  block_specs_replicated source_directories_unlinked int success The number of block specs replicated by this job. The number of directories unlinked on the source.
  bytes_recoverable int success The number of bytes recoverable by this job.
  bytes_transferred int success The number of bytes that have been transferred by this job.
  char_specs_replicated int success The number of char specs replicated by this job.
  committed_files source_directories_visited int success The number of WORM committed files. The number of directories visited on the source.
  corrected_lins source_files_deleted int success The number of LINs corrected by this job.
  dead_node bool success This field is true if the node running this job is dead. The number of files deleted on the source.
  directories_replicated source_files_linked int success The number of directories replicated. The number of files linked on the source.
  dirs_changed source_files_unlinked int success The number of directories changed by this job. The number of sparse data bytes transferred by this job.
  dirs_deleted start_time int success The number of directories deleted by this job. The time the job started in unix epoch seconds. The field is null if the job hasn't started.
  dirs_moved int state str success The number of directories moved by this job. The state of the job.
  dirs_new subreport_count int success The number of directories created by this job. The number of subreports that are available for this job report.
  duration succeeded_chunks int success The amount of time in seconds between when the job was started and when it ended. If the job has not yet ended, this is the amount of time since the job started. This field is null if the job has not yet started.
  encrypted bool success If true, syncs will be encrypted. The number of data chunks that have been transmitted successfully.
  end_time symlinks_replicated int success The time the job ended in unix epoch seconds. The field is null if the job hasn't ended. The number of symlinks replicated by this job.
  error sync_type str success The primary error message for this job.
  error_checksum_files_skipped int success The number of files with checksum errors skipped by this job.
  error_io_files_skipped int success The number of files with io errors skipped by this job. The type of sync being performed by this job.
  error_net_files_skipped target_bytes_recovered int success The number of files with network errors skipped by this job.
  errors list success A list of error messages for this job. The number of bytes recovered on the target.
  failed_chunks target_directories_created int success The number of data chunks that failed transmission. The number of directories created on the target.
  fifos_replicated target_directories_deleted int success The number of fifos replicated by this job. The number of directories deleted on the target.
  file_data_bytes target_directories_linked int success The number of bytes transferred that belong to files. The number of directories linked on the target.
  files_changed target_directories_unlinked int success The number of files changed by this job. The number of directories unlinked on the target.
  files_linked target_files_deleted int success The number of files linked by this job. The number of files deleted on the target.
  files_new target_files_linked int success The number of files created by this job. The number of files linked on the target.
  files_selected target_files_unlinked int success The number of files selected by this job. The number of files unlinked on the target.
  files_transferred int target_snapshots list success The number of files transferred by this job. The target snapshots created by this job.
  files_unlinked total_chunks int success The number of files unlinked by this job. The total number of data chunks transmitted by this job.
  files_with_ads_replicated total_data_bytes int success The number of files with ads replicated by this job. The total number of bytes transferred by this job.
  flipped_lins total_exported_services int success The number of LINs flipped by this job. The total number of components exported as part of service replication.
  hard_links_replicated total_files int success The number of hard links replicated by this job. The number of files affected by this job.
  hash_exceptions_fixed total_network_bytes int success The number of hash exceptions fixed by this job. The total number of bytes sent over the network by this job.
  hash_exceptions_found total_phases int success The number of hash exceptions found by this job.
  id str success A unique identifier for this object. The total number of phases for this job.
  job_id unchanged_data_bytes int success The ID of the job. The number of bytes unchanged by this job.
  lins_total up_to_date_files_skipped int success The number of LINs transferred by this job. The number of up-to-date files skipped by this job.
  network_bytes_to_source updated_files_replicated int success The total number of bytes sent to the source by this job. The number of updated files replicated by this job.
  network_bytes_to_target user_conflict_files_skipped int success The total number of bytes sent to the target by this job. The number of files with user conflicts skipped by this job.
  new_files_replicated int warnings list success The number of new files replicated by this job. A list of warning messages for this job.
  num_retransmitted_files worm_committed_file_conflicts int success The number of files that have been retransmitted by this job.
  phases complex success Data for each phase of this job. The number of WORM committed files which needed to be reverted. Since WORM committed files cannot be reverted, this is the number of files that were preserved in the compliance store.
   end_time int success The time the job ended this phase.
   phase str success The phase that the job was in.
   start_time int success The time the job began this phase.
+ +### Authors +* Meenakshi Dembi (@dembim) + +-------------------------------- +# User Module + +Manage users on the PowerScale Storage System + +### Synopsis + Managing Users on the PowerScale Storage System includes create user, delete user, update user, get user, add role and remove role. + +### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeRequiredDefaultChoicesDescription
user_name str
The name of the user account.
Required at the time of user creation, for rest of the operations either user_name or user_id is required.
user_id str
The user_id is auto generated at the time of creation.
For all other operations either user_name or user_id is needed.
password str
The password for the user account.
Required only in the creation of a user account.
If given in other operations then the password will be ignored.
access_zone str system
This option mentions the zone in which a user is created.
For creation, access_zone acts as an attribute for the user.
For all other operations access_zone acts as a filter.
provider_type str local
  • local
  • file
  • ldap
  • ads
  • nis

This option defines the type which will be used to authenticate the user.
Creation, Modification and Deletion is allowed for local users.
Adding and removing roles is allowed for all users of the system access zone.
Getting user details is allowed for all users.
If the provider_type is 'ads' then domain name of the Active Directory Server has to be mentioned in the user_name. The format for the user_name should be 'DOMAIN_NAME\user_name' or "DOMAIN_NAME\\user_name".
This option acts as a filter for all operations except creation.
enabled bool
Enabled is a bool variable which is used to enable or disable the user account.
primary_group str
A user can be member of multiple groups of which one group has to be assigned as primary group.
This group will be used for access checks and can also be used when creating files.
A user can be added to the group using Group Name.
home_directory str
The path specified in this option acts as a home directory for the user.
The directory which is given should not be already in use.
For a user in a system access zone, the absolute path has to be given.
For users in a non-system access zone, the path relative to the non-system Access Zone's base directory has to be given.
shell str
This option is for choosing the type of shell for the user account.
full_name str
The additional information about the user can be provided using full_name option.
email str
The email id of the user can be added using email option.
The email id can be set at the time of creation and modified later.
state str True
  • absent
  • present

The state option is used to mention the existence of the user account.
role_name str
The name of the role which a user will be assigned.
User can be added to multiple roles.
role_state str
  • present-for-user
  • absent-for-user

The role_state option is used to mention the existence of the role for a particular user.
It is required when a role is added or removed from user.
onefs_host str True
IP address or FQDN of the PowerScale cluster.
port_no str 8080
Port number of the PowerScale cluster.It defaults to 8080 if not specified.
verify_ssl bool True
  • True
  • False

boolean variable to specify whether to validate SSL certificate or not.
True - indicates that the SSL certificate should be verified.
False - indicates that the SSL certificate should not be verified.
api_user str True
username of the PowerScale cluster.
api_password str True
the password of the PowerScale cluster.
+ +### Notes +* The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. + +### Examples +``` + - name: Get User Details using user name + dellemc.powerscale.user: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + access_zone: "{{access_zone}}" + provider_type: "{{provider_type}}" + user_name: "{{account_name}}" + state: "present" + + - name: Create User + dellemc.powerscale.user: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + access_zone: "{{access_zone}}" + provider_type: "{{provider_type}}" + user_name: "{{account_name}}" + password: "{{account_password}}" + primary_group: "{{primary_group}}" + enabled: "{{enabled}}" + email: "{{email}}" + full_name: "{{full_name}}" + home_directory: "{{home_directory}}" + shell: "{{shell}}" + role_name: "{{role_name}}" + role_state: "present-for-user" + state: "present" + + - name: Update User's Full Name and email using user name + dellemc.powerscale.user: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + access_zone: "{{access_zone}}" + provider_type: "{{provider_type}}" + user_name: "{{account_name}}" + email: "{{new_email}}" + full_name: "{{full_name}}" + state: "present" + + - name: Disable User Account using User Id + dellemc.powerscale.user: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + access_zone: "{{access_zone}}" + provider_type: "{{provider_type}}" + user_id: "{{id}}" + enabled: "False" + state: "present" + + - name: Add user to a role using Username + dellemc.powerscale.user: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + user_name: "{{account_name}}" + provider_type: "{{provider_type}}" + role_name: "{{role_name}}" + role_state: "present-for-user" + state: "present" + + - name: Remove user from a role using User id + dellemc.powerscale.user: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + user_id: "{{id}}" + role_name: "{{role_name}}" + role_state: "absent-for-user" + state: "present" + + - name: Delete User using user name + dellemc.powerscale.user: + onefs_host: "{{onefs_host}}" + port_no: "{{port_no}}" + api_user: "{{api_user}}" + api_password: "{{api_password}}" + verify_ssl: "{{verify_ssl}}" + access_zone: "{{access_zone}}" + provider_type: "{{provider_type}}" + user_name: "{{account_name}}" + state: "absent" +``` + +### Return Values + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + - + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - + + - + -
KeyTypeReturnedDescription
changed bool always Whether or not the resource has changed.
user_details complex When user exists Details of the user.
  policy complex success Policy details
   name str success User-assigned name of this sync policy.
   source_root_path str success The root directory on the source cluster the files will be synced from.
   target_host str success Hostname or IP address of sync target cluster.
  policy_action str success This is the action the policy is configured to perform.
  policy_id str success The ID of the policy.
  policy_name str success The name of the policy.
  quotas_deleted int success The number of quotas removed from the target.
  regular_files_replicated int success The number of regular files replicated by this job.
  resynced_lins int success The number of LINs resynched by this job.
  retransmitted_files list success The files that have been retransmitted by this job.
  retry int success The number of times the job has been retried.
  running_chunks int success The number of data chunks currently being transmitted.
  service_report complex success Data for each component exported as part of service replication.
   end_time int success The time the job end this component.
   start_time int success The time the job began this component.
   status str success The current status of export for this component.
  sockets_replicated int success The number of sockets replicated by this job.
  source_bytes_recovered int success The number of bytes recovered on the source.
  source_directories_created int success The number of directories created on the source.
  source_directories_deleted int success The number of directories deleted on the source.
  source_directories_linked int success The number of directories linked on the source.
  source_directories_unlinked int success The number of directories unlinked on the source.
  source_directories_visited int success The number of directories visited on the source.
  source_files_deleted int success The number of files deleted on the source.
  source_files_linked int success The number of files linked on the source.
  source_files_unlinked int success The number of sparse data bytes transferred by this job.
  start_time int success The time the job started in unix epoch seconds. The field is null if the job hasn't started.
  state email str success The state of the job.
  subreport_count int success The number of subreports that are available for this job report.
  succeeded_chunks int success The number of data chunks that have been transmitted successfully. The email of the user.
  symlinks_replicated int enabled bool success The number of symlinks replicated by this job. Enabled is a bool variable which is used to enable or disable the user account.
  sync_type gecos str success The type of sync being performed by this job.
  target_bytes_recovered int success The number of bytes recovered on the target.
  target_directories_created int success The number of directories created on the target.
  target_directories_deleted int success The number of directories deleted on the target.
  target_directories_linked int success The number of directories linked on the target. The full description of the user.
  target_directories_unlinked int gid complex success The number of directories unlinked on the target. The details of the primary group for the user.
   id str success The id of the primary group.
   name str success The name of the primary group.
   type str success The resource's type is mentioned.
  target_files_deleted int home_directory str success The number of files deleted on the target. The directory path acts as the home directory for the user's account.
  target_files_linked int name str success The number of files linked on the target. The name of the user.
  target_files_unlinked int provider str success The number of files unlinked on the target. The provider contains the provider type and access zone.
  target_snapshots roles list success The target snapshots created by this job.
  total_chunks int success The total number of data chunks transmitted by this job.
  total_data_bytes int success The total number of bytes transferred by this job.
  total_exported_services int success The total number of components exported as part of service replication.
  total_files int success The number of files affected by this job.
  total_network_bytes int success The total number of bytes sent over the network by this job.
  total_phases int success The total number of phases for this job.
  unchanged_data_bytes int success The number of bytes unchanged by this job.
  up_to_date_files_skipped int success The number of up-to-date files skipped by this job.
  updated_files_replicated int success The number of updated files replicated by this job.
  user_conflict_files_skipped int success The number of files with user conflicts skipped by this job. The list of all the roles of which user is a member.
  warnings list shell str success A list of warning messages for this job. The type of shell for the user account.
  worm_committed_file_conflicts int uid complex success The number of WORM committed files which needed to be reverted. Since WORM committed files cannot be reverted, this is the number of files that were preserved in the compliance store. Details about the id and name of the user.
+ +   +   + id + str + success + The id of the user. + + +   +   + name + str + success + The name of the user. + + +   +   + type + str + success + The resource's type is mentioned. + + ### Authors -* Meenakshi Dembi (@dembim) +* P Srinivas Rao (@srinivas-rao5) -------------------------------- diff --git a/docs/Release Notes.md b/docs/Release Notes.md index b1f3015d..38cd5c35 100644 --- a/docs/Release Notes.md +++ b/docs/Release Notes.md @@ -1,6 +1,6 @@ **Ansible Modules for Dell Technologies PowerScale** ========================================= -### Release notes 1.7.0 +### Release notes 1.8.0 > © 2022 Dell Inc. or its subsidiaries. All rights reserved. Dell > and other trademarks are trademarks of Dell Inc. or its @@ -25,9 +25,9 @@ The table in this section lists the revision history of this document. Table 1. Revision history -| Revision | Date | Description | -|----------|-----------|-----------------------------------------------------------| -| 01 | Sep 2022 | Ansible Modules for Dell PowerScale 1.7.0 | +| Revision | Date | Description | +|----------|---------------|-----------------------------------------------------------| +| 01 | December 2022 | Ansible Modules for Dell PowerScale 1.8.0 | Product description @@ -65,38 +65,11 @@ Features --------------------------- This section describes the features of the Ansible Modules for Dell PowerScale for this release. -Added execution environment manifest file to support building an execution environment with ansible-builder. - -The Ansible Modules for Dell PowerScale release 1.7.0 supports the following features: - - Idempotency - - Has been handled in all modules. - - Allows the playbook to be run multiple times. - - Avoids the need for complex rollbacks. - -- Access zones - - PowerScale has a concept of access zones. These are to partition the cluster into multiple isolated sections. - - Ansible modules support access zone operations that can also operate on the default (system) access zone. - - Users and Groups can be specific to a particular access zone. - - For non-system access zones, the path provided by the playbook is a relative path. - - Absolute path = Access zone base path + relative path provided by the user. +The Ansible Modules for Dell PowerScale release 1.8.0 supports the following features: Modules -- The NFS Alias module supports this functionality: - - Retrieve details of NFS alias. - - Create, modify and delete NFS alias. - -- The SMB module is enhanced to support this functionality: - - NIS authentication provider. - - Create and modify additonal parameters of SMB share. - -- The Access Zone, Smart Quota, User and Group module is enhanced to support this functionality: - - NIS authentication provider. - -- The SyncIQ Policy module is enhanced to support this functionality: - - accelerated_failback and restrict_target_network. - -- The Info module is enhanced to support this functionality: - - Retrieve details of NFS aliases. +- The NFS Export module supports this functionality: + - Added support for security flavors while creating and modifying NFS export. Known issues ------------ @@ -105,7 +78,7 @@ Known problems in this release are listed. | **Issue** | **Description** | **Resolution** | | ------------- |-------------| -----| | Snapshot schedule | If the playbook has a desired_retention field, running the same playbook again returns the changed as True (Idempotency does not work) | This is an issue in the supported OneFS versions. | -| Filesystem creation | Creation of a filesystem can fail when api_user: "admin" is used because it is possible that the admin user may not have privileges to set an ACLs | Create a filesystem with api_user: "root". | +| Filesystem creation | Creation of a filesystem can fail when api_user: "admin" is used because it is possible that the admin user may not have privileges to set an ACLs | Assigning privileges ISI_PRIV_IFS_RESTORE and ISI_PRIV_NS_TRAVERSE to the user should enable the creation of filesystem with ACL permissions. | | Snapshot creation with alias name | Alias name attribute remains null in spite of creating snapshot with alias name | This is an issue with the PowerScale rest API. Alias name is not getting appended to the attribute in response. | | SyncIQ Job creation/modification/retrieval | When SyncIQ policy has any job of the type "resync_prep/allow_write/allow_write_revert" then creation, modification or retrieval of SyncIQ job will fail with an error saying "Invalid value for 'action', must be one of ['copy', 'sync']". | This is an issue in the supported OneFS versions. | | SMB share creation with NIS group permissions | Creating a SMB share with NIS group permissions fails with error that the group cannot be found | This is an issue in the supported OneFS versions. | @@ -148,7 +121,7 @@ This section lists the limitations in this release of Ansible Modules for Dell P Software media, organization, and files ----------- The software package is available for download from the [Ansible Modules -for PowerScale GitHub](https://github.com/dell/ansible-powerscale/tree/1.7.0) page. +for PowerScale GitHub](https://github.com/dell/ansible-powerscale/tree/1.8.0) page. Additional resources -------------------- diff --git a/docs/SECURITY.md b/docs/SECURITY.md index d563d86a..ac38d779 100644 --- a/docs/SECURITY.md +++ b/docs/SECURITY.md @@ -12,7 +12,7 @@ You may obtain a copy of the License at The Ansible modules for Dell PowerScale repository is 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-powerscale/blob/1.7.0/docs/CONTRIBUTING.md#Pull-requests) for more information. +In addition to this, there are various security checks that get executed against a branch when a pull request is created/updated. Please refer to [pull request](https://github.com/dell/ansible-powerscale/blob/1.8.0/docs/CONTRIBUTING.md#Pull-requests) for more information. ## Reporting a vulnerability diff --git a/galaxy.yml b/galaxy.yml index e8e891a4..3c963120 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -9,7 +9,7 @@ namespace: dellemc name: powerscale # The version of the collection. Must be compatible with semantic versioning -version: 1.7.0 +version: 1.8.0 # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: README.md @@ -17,18 +17,19 @@ readme: README.md # A list of the collection's content authors. Can be just the name or in the format 'Full Name (url) # @nicks:irc/im.site#channel' authors: -- Akash Shendge -- Ambuj Dubey -- Arindam Datta -- Manisha Agrawal -- P Srinivas Rao -- Prashant Rakheja -- Rajshree Khare -- Ganesh Ashok Prabhu -- Jennifer John -- Spandita Panigrahi -- Meenakshi Dembi -- Trisha Datta + - Akash Shendge + - Ambuj Dubey + - Arindam Datta + - Manisha Agrawal + - P Srinivas Rao + - Prashant Rakheja + - Rajshree Khare + - Ganesh Ashok Prabhu + - Jennifer John + - Spandita Panigrahi + - Meenakshi Dembi + - Trisha Datta + - Bhavneet Sharma ### OPTIONAL but strongly recommended @@ -53,13 +54,13 @@ tags: [storage] dependencies: {} # The URL of the originating SCM repository -repository: https://github.com/dell/ansible-powerscale/tree/1.7.0 +repository: https://github.com/dell/ansible-powerscale/tree/1.8.0 # The URL to any online docs -documentation: https://github.com/dell/ansible-powerscale/tree/1.7.0/docs +documentation: https://github.com/dell/ansible-powerscale/tree/1.8.0/docs # The URL to the homepage of the collection/project -homepage: https://github.com/dell/ansible-powerscale/tree/1.7.0 +homepage: https://github.com/dell/ansible-powerscale/tree/1.8.0 # The URL to the collection issue tracker issues: https://www.dell.com/community/Automation/bd-p/Automation diff --git a/meta/runtime.yml b/meta/runtime.yml index 4ff2a1a8..097be081 100644 --- a/meta/runtime.yml +++ b/meta/runtime.yml @@ -1,124 +1,124 @@ --- -requires_ansible: ">2.9" +requires_ansible: ">=2.12" plugin_routing: modules: dellemc_powerscale_accesszone: - redirect: accesszone + redirect: dellemc.powerscale.accesszone deprecation: removal_date: "2024-03-31" warning_text: Use accesszone instead. dellemc_powerscale_ads: - redirect: ads + redirect: dellemc.powerscale.ads deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.ads instead. + warning_text: Use ads instead. dellemc_powerscale_filesystem: - redirect: filesystem + redirect: dellemc.powerscale.filesystem deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.filesystem instead. + warning_text: Use filesystem instead. dellemc_powerscale_group: - redirect: group + redirect: dellemc.powerscale.group deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.group instead. + warning_text: Use group instead. dellemc_powerscale_groupnet: - redirect: groupnet + redirect: dellemc.powerscale.groupnet deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.groupnet instead. + warning_text: Use groupnet instead. dellemc_powerscale_gatherfacts: - redirect: info + redirect: dellemc.powerscale.info deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.info instead. + warning_text: Use info instead. dellemc_powerscale_ldap: - redirect: ldap + redirect: dellemc.powerscale.ldap deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.ldap instead. + warning_text: Use ldap instead. dellemc_powerscale_networkpool: - redirect: networkpool + redirect: dellemc.powerscale.networkpool deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.networkpool instead. + warning_text: Use networkpool instead. dellemc_powerscale_networkrule: - redirect: networkrule + redirect: dellemc.powerscale.networkrule deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.networkrule instead. + warning_text: Use networkrule instead. dellemc_powerscale_networksettings: - redirect: networksettings + redirect: dellemc.powerscale.networksettings deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.networksettings instead. + warning_text: Use networksettings instead. dellemc_powerscale_nfs: - redirect: nfs + redirect: dellemc.powerscale.nfs deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.nfs instead. + warning_text: Use nfs instead. dellemc_powerscale_node: - redirect: node + redirect: dellemc.powerscale.node deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.node instead. + warning_text: Use node instead. dellemc_powerscale_settings: - redirect: settings + redirect: dellemc.powerscale.settings deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.settings instead. + warning_text: Use settings instead. dellemc_powerscale_smartquota: - redirect: smartquota + redirect: dellemc.powerscale.smartquota deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.smartquota instead. + warning_text: Use smartquota instead. dellemc_powerscale_smb: - redirect: smb + redirect: dellemc.powerscale.smb deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.smb instead. + warning_text: Use smb instead. dellemc_powerscale_snapshot: - redirect: snapshot + redirect: dellemc.powerscale.snapshot deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.snapshot instead. + warning_text: Use snapshot instead. dellemc_powerscale_snapshotschedule: - redirect: snapshotschedule + redirect: dellemc.powerscale.snapshotschedule deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.snapshotschedule instead. + warning_text: Use snapshotschedule instead. dellemc_powerscale_subnet: - redirect: subnet + redirect: dellemc.powerscale.subnet deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.subnet instead. + warning_text: Use subnet instead. dellemc_powerscale_synciqjob: - redirect: synciqjob + redirect: dellemc.powerscale.synciqjob deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.synciqjob instead. + warning_text: Use synciqjob instead. dellemc_powerscale_synciqpolicy: - redirect: synciqpolicy + redirect: dellemc.powerscale.synciqpolicy deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.synciqpolicy instead. + warning_text: Use synciqpolicy instead. dellemc_powerscale_synciqreports: - redirect: synciqreports + redirect: dellemc.powerscale.synciqreports deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.synciqreports instead. + warning_text: Use synciqreports instead. dellemc_powerscale_synciqtargetreports: - redirect: synciqtargetreports + redirect: dellemc.powerscale.synciqtargetreports deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.synciqtargetreports instead. + warning_text: Use synciqtargetreports instead. dellemc_powerscale_user: - redirect: user + redirect: dellemc.powerscale.user deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.user instead. + warning_text: Use user instead. dellemc_powerscale_synciqrules: - redirect: synciqrules + redirect: dellemc.powerscale.synciqrules deprecation: removal_date: "2024-03-31" - warning_text: Use dellemc.powerscale.synciqrules instead. + warning_text: Use synciqrules instead. diff --git a/plugins/doc_fragments/powerscale.py b/plugins/doc_fragments/powerscale.py index 5993ab6a..dc1799ce 100644 --- a/plugins/doc_fragments/powerscale.py +++ b/plugins/doc_fragments/powerscale.py @@ -43,7 +43,7 @@ class ModuleDocFragment(object): - the password of the PowerScale cluster. required: True requirements: - - A Dell PowerScale Storage system. Ansible 2.11, 2.12 or 2.13. + - A Dell PowerScale Storage system. Ansible 2.12, 2.13 or 2.14. notes: - The modules present in this collection named as 'dellemc.powerscale' are built to support the Dell PowerScale storage platform. diff --git a/plugins/modules/nfs.py b/plugins/modules/nfs.py index cbf72d6b..9abf26ab 100644 --- a/plugins/modules/nfs.py +++ b/plugins/modules/nfs.py @@ -15,24 +15,26 @@ version_added: '1.2.0' short_description: Manage NFS exports on a PowerScale Storage System description: -- Managing NFS exports on an PowerScale system includes creating NFS export for - a directory in an access zone, adding or removing clients, modifying - different parameters of the export and deleting export. +- Managing NFS exports on an PowerScale system includes retrieving details of + NFS export, creating NFS export in specified access zone, adding or removing + clients, modifying and deleting NFS export. extends_documentation_fragment: - dellemc.powerscale.powerscale author: - Manisha Agrawal(@agrawm3) +- Bhavneet Sharma(@Bhavneet-Sharma) options: path: description: - Specifies the filesystem path. It is the absolute path for System access zone - and it is relative if using non-system access zone. For example, if your access - zone is 'Ansible' and it has a base path '/ifs/ansible' and the path - specified is '/user1', then the effective path would be '/ifs/ansible/user1'. - If your access zone is System, and you have 'directory1' in the access + and it is relative if using non-system access zone. + - For example, if your access zone is 'Ansible' and it has a base path + '/ifs/ansible' and the path specified is '/user1', then the effective + path would be '/ifs/ansible/user1'. + - If your access zone is System, and you have 'directory1' in the access zone, the path provided should be '/ifs/directory1'. - The directory on the path must exist - the NFS module will not create the directory. @@ -96,26 +98,33 @@ state: description: - Defines whether the NFS export should exist or not. - - present indicates that the NFS export should exist in system. - - absent indicates that the NFS export should not exist in system. + - Value present indicates that the NFS export should exist in system. + - Value absent indicates that the NFS export should not exist in system. required: True type: str choices: [absent, present] client_state: description: - Defines whether the clients can access the NFS export. - - present-in-export indicates that the clients can access the NFS export. - - absent-in-export indicates that the client cannot access the NFS export. + - Value present-in-export indicates that the clients can access the NFS export. + - Value absent-in-export indicates that the client cannot access the NFS export. - Required when adding or removing access of clients from the export. - While removing clients, only the specified clients will be removed from the export, others will remain as is. - required: False type: str choices: [present-in-export, absent-in-export] + security_flavors: + description: + - Specifies the authentication types that are supported for this export. + type: list + elements: str + choices: ['unix', 'kerberos', 'kerberos_integrity', 'kerberos_privacy'] + +notes: +- The check_mode is not supported. ''' EXAMPLES = r''' - - name: Create NFS Export dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" @@ -179,7 +188,7 @@ client_state: 'absent-in-export' state: 'present' - - name: Modify description + - name: Modify NFS Export dellemc.powerscale.nfs: onefs_host: "{{onefs_host}}" api_user: "{{api_user}}" @@ -188,6 +197,9 @@ path: "" access_zone: "{{access_zone}}" description: "new description" + security_flavors: + - "kerberos_integrity" + - "kerberos" state: 'present' - name: Set read_only flag to False @@ -210,7 +222,6 @@ path: "" access_zone: "{{access_zone}}" state: 'absent' - ''' RETURN = r''' @@ -218,6 +229,7 @@ description: A boolean indicating if the task had to make changes. returned: always type: bool + sample: "false" NFS_export_details: description: The updated NFS Export details. type: complex @@ -260,6 +272,15 @@ description: description: Description for the export. type: str + sample: { + "all_dir": "false", + "block_size": 8192, + "clients": None, + "id": 9324, + "read_only_client": ["x.x.x.x"], + "security_flavors": ["unix", "krb5"], + "zone": "System" + } ''' from ansible.module_utils.basic import AnsibleModule @@ -391,11 +412,13 @@ def _create_nfs_export_create_params_object(self, path): read_only=self.module.params['read_only'], all_dirs=self.module.params['sub_directories_mountable'], description=self.module.params['description'], + security_flavors=get_security_keys( + self.module.params['security_flavors']), zone=self.module.params['access_zone']) return nfs_export except Exception as e: errorMsg = 'Create NfsExportCreateParams object for path {0}' \ - 'failed with error {1}'.format( + ' failed with error {1}'.format( path, self.determine_error(e)) LOG.error(errorMsg) self.module.fail_json(msg=errorMsg) @@ -552,6 +575,16 @@ def _check_mod_field(self, field_name_playbook, field_name_powerscale): _field_mod = True return _field_mod, field_value + def _is_security_flavour_mod(self, security_flavors, nfs_export): + """Check whether security flavours modification required""" + if security_flavors is not None: + security_flavors = get_security_keys(security_flavors) + if set(security_flavors) != set( + self.result['NFS_export_details']['security_flavors']): + nfs_export.security_flavors = list(security_flavors) + return True, nfs_export + return False, nfs_export + def modify_nfs_export(self, path, access_zone): ''' Modify NFS export in system @@ -569,13 +602,13 @@ def modify_nfs_export(self, path, access_zone): 'sub_directories_mountable', 'all_dirs') description_flag, description_value = self._check_mod_field( 'description', 'description') + security_flag, nfs_export = self._is_security_flavour_mod( + self.module.params['security_flavors'], nfs_export) if all( field_mod_flag is False for field_mod_flag in [ - client_flag, - read_only_flag, - all_dirs_flag, - description_flag]): + client_flag, read_only_flag, all_dirs_flag, description_flag, + security_flag]): LOG.info( 'No change detected for the NFS Export, returning changed = False') return False @@ -620,7 +653,7 @@ def delete_nfs_export(self): except Exception as e: errorMsg = ( 'Delete NFS export with path: {0}, zone: {1}, id: {2} failed' - 'with error {3}'.format( + ' with error {3}'.format( nfs_export['paths'][0], nfs_export['zone'], nfs_export['id'], @@ -705,11 +738,31 @@ def get_nfs_parameters(self): description=dict(type='str'), read_only=dict(type='bool'), sub_directories_mountable=dict(type='bool'), + security_flavors=dict( + type='list', elements='str', + choices=['unix', 'kerberos', 'kerberos_integrity', + 'kerberos_privacy']), state=dict(required=True, type='str', choices=['present', 'absent']) ) +def get_security_keys(security_flavors): + """ Get valid keys as per SDK valid values""" + if security_flavors is not None: + for i in range(len(security_flavors)): + if security_flavors[i] == "kerberos": + security_flavors[i] = "krb5" + elif security_flavors[i] == "kerberos_integrity": + security_flavors[i] = "krb5i" + elif security_flavors[i] == "kerberos_privacy": + security_flavors[i] = "krb5p" + else: + security_flavors[i] = "unix" + return security_flavors + return None + + def main(): ''' Create PowerScale_NFS export object and perform action on it based on user input from playbook''' diff --git a/plugins/modules/smartquota.py b/plugins/modules/smartquota.py index c17cc062..58ca6dc3 100644 --- a/plugins/modules/smartquota.py +++ b/plugins/modules/smartquota.py @@ -687,7 +687,7 @@ def perform_module_operation(self): self.module.fail_json(msg="advisory/soft/hard limit provided," " cap_unit not provided") if quota and quota['cap_unit'] \ - and not(quota['advisory'] or quota['soft'] or quota['hard']): + and not (quota['advisory'] or quota['soft'] or quota['hard']): self.module.fail_json( msg="cap_unit provided," " advisory/soft/hard limit not provided") diff --git a/tests/requirements.txt b/tests/requirements.txt index 25e26ee6..4f6b4e41 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -3,4 +3,5 @@ pytest-xdist mock pytest-mock pytest-cov +pytest-forked coverage==4.5.4 \ No newline at end of file diff --git a/tests/sanity/ignore-2.11.txt b/tests/sanity/ignore-2.14.txt similarity index 88% rename from tests/sanity/ignore-2.11.txt rename to tests/sanity/ignore-2.14.txt index 51e1aa7f..20059a43 100644 --- a/tests/sanity/ignore-2.11.txt +++ b/tests/sanity/ignore-2.14.txt @@ -18,29 +18,22 @@ plugins/modules/synciqtargetreports.py validate-modules:missing-gplv3-license plugins/modules/user.py validate-modules:missing-gplv3-license plugins/modules/groupnet.py validate-modules:missing-gplv3-license plugins/modules/subnet.py validate-modules:missing-gplv3-license -plugins/modules/subnet.py import-2.6 plugins/modules/subnet.py import-2.7 -plugins/modules/groupnet.py import-2.6 plugins/modules/groupnet.py import-2.7 plugins/modules/networkrule.py validate-modules:missing-gplv3-license plugins/modules/networkpool.py validate-modules:missing-gplv3-license plugins/modules/settings.py validate-modules:missing-gplv3-license -plugins/modules/networkpool.py import-2.6 plugins/modules/networkpool.py import-2.7 plugins/modules/networksettings.py validate-modules:missing-gplv3-license plugins/modules/nfs_alias.py validate-modules:missing-gplv3-license plugins/modules/smartpoolsettings.py validate-modules:missing-gplv3-license -plugins/modules/filepoolpolicy.py import-2.6 plugins/modules/filepoolpolicy.py import-2.7 plugins/modules/filepoolpolicy.py import-3.5 -plugins/modules/filepoolpolicy.py compile-2.6 plugins/modules/filepoolpolicy.py compile-2.7 plugins/modules/filepoolpolicy.py compile-3.5 plugins/modules/filepoolpolicy.py validate-modules:missing-gplv3-license -plugins/modules/storagepooltier.py import-2.6 plugins/modules/storagepooltier.py import-2.7 plugins/modules/storagepooltier.py import-3.5 -plugins/modules/storagepooltier.py compile-2.6 plugins/modules/storagepooltier.py compile-2.7 plugins/modules/storagepooltier.py compile-3.5 -plugins/modules/storagepooltier.py validate-modules:missing-gplv3-license \ No newline at end of file +plugins/modules/storagepooltier.py validate-modules:missing-gplv3-license diff --git a/tests/unit/plugins/module_utils/mock_nfs_export_api.py b/tests/unit/plugins/module_utils/mock_nfs_export_api.py new file mode 100644 index 00000000..132c3d82 --- /dev/null +++ b/tests/unit/plugins/module_utils/mock_nfs_export_api.py @@ -0,0 +1,134 @@ +# Copyright: (c) 2022, Dell Technologies + +# Apache License version 2.0 (see MODULE-LICENSE or http://www.apache.org/licenses/LICENSE-2.0.txt) + +"""Mock API responses for PowerScale NFS export module""" + +from __future__ import (absolute_import, division, print_function) + +__metaclass__ = type + +MODULE_UTILS_PATH = 'ansible_collections.dellemc.powerscale.plugins.modules.nfs.utils' + +SAMPLE_IP1 = "xx.xx.xx.xx" +SAMPLE_IP2 = "xx.xx.xx.xy" +SAMPLE_IP3 = "xx.xx.xx.xz" +NFS_ID_1 = "205" +SYS_ZONE = "system" +PATH_1 = "/ifs/test_sample_nfs" + +NFS_COMMON_ARGS = { + "path": None, + "access_zone": None, + "clients": None, + "root_clients": None, + "read_only_clients": None, + "read_write_clients": None, + "client_state": None, + "description": None, + "read_only": None, + "sub_directories_mountable": None, + "security_flavors": None, + "state": None +} + +NFS_1 = {"exports": [{ + "all_dirs": False, + "block_size": 8192, + "case_insensitive": False, + "case_preserving": True, + "clients": [ + SAMPLE_IP1 + ], + "description": "description", + "id": NFS_ID_1, + "name_max_size": 255, + "paths": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", + "read_only": False, + "read_only_clients": [], + "read_write_clients": [], + "readdirplus": True, + "root_clients": [], + "security_flavors": [ + "krb5" + ], + "snapshot": None, + "zone": SYS_ZONE}]} + +NFS_2 = {"exports": [{ + "all_dirs": False, + "block_size": 8192, + "case_insensitive": False, + "case_preserving": True, + "clients": [ + SAMPLE_IP1, + SAMPLE_IP2 + ], + "description": "description1", + "id": NFS_ID_1, + "name_max_size": 255, + "paths": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", + "read_only": False, + "read_only_clients": [SAMPLE_IP2, SAMPLE_IP3], + "read_write_clients": [SAMPLE_IP2], + "readdirplus": True, + "root_clients": [SAMPLE_IP2], + "security_flavors": [ + "krb5", + "unix" + ], + "snapshot": None, + "zone": SYS_ZONE}]} + +CREATE_NFS_PARAMS = { + "path": PATH_1, + "access_zone": SYS_ZONE, + "description": "description", + "read_only": True, + "read_only_clients": [SAMPLE_IP1], + "clients": [SAMPLE_IP1], + "client_state": "present-in-export", + "security_flavors": ["kerberos"] +} + +MODIFY_NFS_PARAMS = { + "path": PATH_1, + "access_zone": SYS_ZONE, + "description": "description1", + "read_only": True, + "read_only_clients": [SAMPLE_IP2, SAMPLE_IP3], + "clients": [SAMPLE_IP2], + "read_write_clients": [SAMPLE_IP2], + "root_clients": [SAMPLE_IP2], + "client_state": "present-in-export", + "sub_directories_mountable": True, + "security_flavors": ["unix", "kerberos_privacy"], +} + + +def get_nfs_failed_msg(): + return 'Got error SDK Error message while getting NFS export details for path' + + +def create_nfs_failed_msg(): + return 'Create NFS export for path: /ifs/test_sample_nfs and access zone: system failed' + + +def create_nfs_param_failed_msg(): + return 'Create NfsExportCreateParams object for path /ifs/test_sample_nfs failed with error SDK Error' + + +def without_clients_failed_msg(): + return 'Invalid input: Client state is given, clients not specified' + + +def without_client_state_failed_msg(): + return 'Invalid input: Clients are given, client state not specified' + + +def modify_nfs_failed_msg(): + return 'Modify NFS export for path: /ifs/test_sample_nfs and access zone: system failed with error' + + +def delete_nfs_failed_msg(): + return 'Delete NFS export with path: V, zone: system, id: 205 failed with error' diff --git a/tests/unit/plugins/module_utils/test_utils.py b/tests/unit/plugins/module_utils/test_utils.py index d061db95..d606afbe 100644 --- a/tests/unit/plugins/module_utils/test_utils.py +++ b/tests/unit/plugins/module_utils/test_utils.py @@ -14,7 +14,7 @@ def get_desc(length): desc = '' - while(length > 0): + while (length > 0): desc += random.choice(string.ascii_letters) length -= 1 return desc diff --git a/tests/unit/plugins/modules/test_networkrule.py b/tests/unit/plugins/modules/test_networkrule.py index ab4220de..1d032d49 100644 --- a/tests/unit/plugins/modules/test_networkrule.py +++ b/tests/unit/plugins/modules/test_networkrule.py @@ -81,7 +81,7 @@ def test_modify_network_rule(self, network_module_mock): return_value=MockSDKResponse(MockNetworkRuleApi.NETWORK_RULES)) network_module_mock.perform_module_operation() - assert(network_module_mock.module.exit_json.call_args[1]['modify_network_rule']) + assert (network_module_mock.module.exit_json.call_args[1]['modify_network_rule']) assert network_module_mock.module.exit_json.call_args[1]['changed'] is True def test_delete_network_rule(self, network_module_mock): @@ -93,7 +93,7 @@ def test_delete_network_rule(self, network_module_mock): return_value=MockSDKResponse(MockNetworkRuleApi.NETWORK_RULES)) network_module_mock.perform_module_operation() - assert(network_module_mock.module.exit_json.call_args[1]['delete_network_rule']) + assert (network_module_mock.module.exit_json.call_args[1]['delete_network_rule']) assert network_module_mock.module.exit_json.call_args[1]['changed'] is True def test_rename_network_rule(self, network_module_mock): @@ -105,7 +105,7 @@ def test_rename_network_rule(self, network_module_mock): return_value=MockSDKResponse(MockNetworkRuleApi.NETWORK_RULES)) network_module_mock.perform_module_operation() - assert(network_module_mock.module.exit_json.call_args[1]['modify_network_rule']) + assert (network_module_mock.module.exit_json.call_args[1]['modify_network_rule']) assert network_module_mock.module.exit_json.call_args[1]['changed'] is True def test_create_rule_with_invalid_iface(self, network_module_mock): diff --git a/tests/unit/plugins/modules/test_nfs_export.py b/tests/unit/plugins/modules/test_nfs_export.py new file mode 100644 index 00000000..e421950b --- /dev/null +++ b/tests/unit/plugins/modules/test_nfs_export.py @@ -0,0 +1,215 @@ +# Copyright: (c) 2022, Dell Technologies + +# Apache License version 2.0 (see MODULE-LICENSE or http://www.apache.org/licenses/LICENSE-2.0.txt) + +"""Unit Tests for NFS Export module on PowerScale""" + +from __future__ import (absolute_import, division, print_function) + +__metaclass__ = type + +import pytest +from mock.mock import MagicMock +from ansible_collections.dellemc.powerscale.plugins.module_utils.storage.dell \ + import utils + +utils.get_logger = MagicMock() +utils.isi_sdk = MagicMock() +from ansible.module_utils import basic +basic.AnsibleModule = MagicMock() + + +from ansible_collections.dellemc.powerscale.plugins.modules.nfs import NfsExport +from ansible_collections.dellemc.powerscale.tests.unit.plugins.\ + module_utils import mock_nfs_export_api as MockNFSApi +from ansible_collections.dellemc.powerscale.tests.unit.plugins.module_utils.mock_sdk_response \ + import MockSDKResponse +from ansible_collections.dellemc.powerscale.tests.unit.plugins.module_utils.mock_api_exception \ + import MockApiException + + +class TestNfsExport(): + get_nfs_args = MockNFSApi.NFS_COMMON_ARGS + + @pytest.fixture + def nfs_module_mock(self, mocker): + mocker.patch(MockNFSApi.MODULE_UTILS_PATH + '.ApiException', new=MockApiException) + nfs_module_mock = NfsExport() + nfs_module_mock.module = MagicMock() + nfs_module_mock.module.check_mode = False + return nfs_module_mock + + def test_get_nfs_response(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "state": "present"}) + nfs_module_mock.module.params = self.get_nfs_args + nfs_module_mock.protocol_api.list_nfs_exports = MagicMock( + return_value=MockSDKResponse(MockNFSApi.NFS_1)) + nfs_module_mock.perform_module_operation() + nfs_module_mock.protocol_api.list_nfs_exports.assert_called() + + def test_get_nfs_404_exception(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "state": "present"}) + nfs_module_mock.module.params = self.get_nfs_args + MockApiException.status = '404' + nfs_module_mock.protocol_api.list_nfs_exports = MagicMock( + side_effect=utils.ApiException) + nfs_module_mock.perform_module_operation() + assert MockNFSApi.get_nfs_failed_msg() in \ + nfs_module_mock.module.fail_json.call_args[1]['msg'] + nfs_module_mock.protocol_api.list_nfs_exports.assert_called() + + def operation_before_create(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "description": "description", + "read_only": True, + "read_only_clients": [MockNFSApi.SAMPLE_IP1], + "clients": [MockNFSApi.SAMPLE_IP1], + "client_state": "present-in-export", + "security_flavors": ["kerberos"], + "state": "present"}) + nfs_module_mock.module.params = self.get_nfs_args + nfs_module_mock.protocol_api.list_nfs_exports = MagicMock( + return_value=None) + + def test_create_nfs_response(self, nfs_module_mock): + self.operation_before_create(nfs_module_mock) + nfs_module_mock.isi_sdk.NfsExportCreateParams.to_dict = MagicMock( + return_value=MockSDKResponse(MockNFSApi.CREATE_NFS_PARAMS)) + nfs_module_mock.perform_module_operation() + nfs_module_mock.isi_sdk.NfsExportCreateParams.assert_called() + nfs_module_mock.protocol_api.create_nfs_export.assert_called() + assert nfs_module_mock.module.exit_json.call_args[1]['changed'] is True + + def test_create_nfs_exception(self, nfs_module_mock): + self.operation_before_create(nfs_module_mock) + nfs_module_mock.isi_sdk.NfsExportCreateParams = MagicMock( + return_value=MockNFSApi.NFS_1) + nfs_module_mock.protocol_api.create_nfs_export = MagicMock( + side_effect=utils.ApiException) + nfs_module_mock.perform_module_operation() + nfs_module_mock.isi_sdk.NfsExportCreateParams.assert_called() + nfs_module_mock.protocol_api.create_nfs_export.assert_called() + assert MockNFSApi.create_nfs_failed_msg() in \ + nfs_module_mock.module.fail_json.call_args[1]['msg'] + + def test_create_nfs_params_exception(self, nfs_module_mock): + self.operation_before_create(nfs_module_mock) + nfs_module_mock.isi_sdk.NfsExportCreateParams = MagicMock( + side_effect=utils.ApiException) + nfs_module_mock.perform_module_operation() + nfs_module_mock.isi_sdk.NfsExportCreateParams.assert_called() + assert MockNFSApi.create_nfs_param_failed_msg() in \ + nfs_module_mock.module.fail_json.call_args[1]['msg'] + + def test_create_nfs_without_clients(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "description": "description", + "read_only": True, + "client_state": "present-in-export", + "security_flavors": ["kerberos"], + "state": "present"}) + nfs_module_mock.module.params = self.get_nfs_args + nfs_module_mock.protocol_api.list_nfs_exports = MagicMock( + return_value=None) + nfs_module_mock.perform_module_operation() + assert MockNFSApi.without_clients_failed_msg() in \ + nfs_module_mock.module.fail_json.call_args[1]['msg'] + + def test_create_nfs_without_client_state(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "read_only": True, + "read_only_clients": [MockNFSApi.SAMPLE_IP1], + "clients": [MockNFSApi.SAMPLE_IP1], + "state": "present"}) + nfs_module_mock.module.params = self.get_nfs_args + nfs_module_mock.protocol_api.list_nfs_exports = MagicMock( + return_value=None) + nfs_module_mock.perform_module_operation() + assert MockNFSApi.without_client_state_failed_msg() in \ + nfs_module_mock.module.fail_json.call_args[1]['msg'] + + def operation_before_modify(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "description": "description1", + "read_only": True, + "read_only_clients": [MockNFSApi.SAMPLE_IP2, MockNFSApi.SAMPLE_IP3], + "clients": [MockNFSApi.SAMPLE_IP2], + "read_write_clients": [MockNFSApi.SAMPLE_IP2], + "root_clients": [MockNFSApi.SAMPLE_IP2], + "client_state": "present-in-export", + "sub_directories_mountable": True, + "security_flavors": ["unix", "kerberos_privacy"], + "state": "present"}) + nfs_module_mock.module.params = self.get_nfs_args + nfs_module_mock.get_nfs_export = MagicMock( + return_value=MockNFSApi.NFS_1['exports'][0]) + nfs_module_mock.isi_sdk.NfsExport = MagicMock( + return_value=MagicMock()) + + def test_modify_nfs_response(self, nfs_module_mock): + self.operation_before_modify(nfs_module_mock) + nfs_module_mock.perform_module_operation() + nfs_module_mock.protocol_api.update_nfs_export.assert_called() + assert nfs_module_mock.module.exit_json.call_args[1]['changed'] is True + + def test_modify_nfs_response_exception(self, nfs_module_mock): + self.operation_before_modify(nfs_module_mock) + nfs_module_mock.protocol_api.update_nfs_export = MagicMock( + side_effect=utils.ApiException) + nfs_module_mock.perform_module_operation() + nfs_module_mock.protocol_api.update_nfs_export.assert_called() + assert MockNFSApi.modify_nfs_failed_msg() in \ + nfs_module_mock.module.fail_json.call_args[1]['msg'] + + def test_remove_clients_nfs(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "read_only_clients": [MockNFSApi.SAMPLE_IP2, + MockNFSApi.SAMPLE_IP3], + "clients": [MockNFSApi.SAMPLE_IP2], + "read_write_clients": [ + MockNFSApi.SAMPLE_IP2], + "root_clients": [MockNFSApi.SAMPLE_IP2], + "client_state": "absent-in-export", + "state": "present"}) + nfs_module_mock.module.params = self.get_nfs_args + nfs_module_mock.get_nfs_export = MagicMock( + return_value=MockNFSApi.NFS_2['exports'][0]) + nfs_module_mock.isi_sdk.NfsExport = MagicMock( + return_value=MagicMock()) + nfs_module_mock.perform_module_operation() + nfs_module_mock.protocol_api.update_nfs_export.assert_called() + assert nfs_module_mock.module.exit_json.call_args[1]['changed'] is True + + def test_delete_nfs_response(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "state": "absent"}) + nfs_module_mock.module.params = self.get_nfs_args + nfs_module_mock.get_nfs_export = MagicMock( + return_value=MockNFSApi.NFS_2['exports'][0]) + nfs_module_mock.perform_module_operation() + nfs_module_mock.protocol_api.delete_nfs_export.assert_called() + assert nfs_module_mock.module.exit_json.call_args[1]['changed'] is True + + def test_delete_nfs_response_exception(self, nfs_module_mock): + self.get_nfs_args.update({"path": MockNFSApi.PATH_1, + "access_zone": MockNFSApi.SYS_ZONE, + "state": "absent"}) + nfs_module_mock.module.params = self.get_nfs_args + nfs_module_mock.get_nfs_export = MagicMock( + return_value=MockNFSApi.NFS_2['exports'][0]) + nfs_module_mock.protocol_api.delete_nfs_export = MagicMock( + side_effect=utils.ApiException) + nfs_module_mock.perform_module_operation() + nfs_module_mock.protocol_api.delete_nfs_export.assert_called() + assert MockNFSApi.delete_nfs_failed_msg() in \ + nfs_module_mock.module.fail_json.call_args[1]['msg'] From d43752dd9490aa38549af6254a700356f74a26bd Mon Sep 17 00:00:00 2001 From: Datta Date: Tue, 13 Dec 2022 19:53:20 +0530 Subject: [PATCH 2/3] Release Version 1.8.0 --- .github/CODEOWNERS | 13 +++--- .github/workflows/ansible-test.yml | 37 ++++++++------- ChangeLog.md | 72 ------------------------------ 3 files changed, 27 insertions(+), 95 deletions(-) delete mode 100644 ChangeLog.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7406adc8..043fdca7 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -7,16 +7,13 @@ # be requested for review when someone opens a pull request. # order is alphabetical for easier maintenance. # -# Ananthu Kuttattu (ananthu-kuttattu) -# Arindam Datta (dattaarindam) -# DCS Krishna (dcsk) +# Ananthu Kuttattu (kuttattz) +# Bhavneet Sharma (Bhavneet-Sharma) # Jennifer John (Jennifer-John) # Meenakshi Dembi (meenakshidembi691) -# Panigrahi Spandita (panigs7) # Pavan Mudunuri (Pavan-Mudunuri) -# Prabhulinga Revur (prabhu-dell) -# Prasad Raghavendra (prasar6) -# Rajendra Indukuri (rajendraindukuri) +# Previnkumar G (Previnkumar-G) +# Trisha Datta (trisha-dell) # for all files: -* @ananthu-kuttattu @dattaarindam @dcsk @Jennifer-John @meenakshidembi691 @panigs7 @Pavan-Mudunuri @prabhu-dell @prasar6 @rajendraindukuri +* @kuttattz @Bhavneet-Sharma @Jennifer-John @meenakshidembi691 @Pavan-Mudunuri @Previnkumar-G @trisha-dell \ No newline at end of file diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index 8315d9f2..4481f2d9 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -2,9 +2,11 @@ name: CI on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] + schedule: + - cron: '0 3 * * *' jobs: build: @@ -35,10 +37,10 @@ jobs: name: collection path: .cache/collection-tarballs -### -# Unit tests (OPTIONAL) -# -# https://docs.ansible.com/ansible/latest/dev_guide/testing_units.html + ### + # Unit tests (OPTIONAL) + # + # https://docs.ansible.com/ansible/latest/dev_guide/testing_units.html unit: name: Unit Tests @@ -47,8 +49,14 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.8, 3.9] - ansible-version: [ stable-2.11, stable-2.12, stable-2.13] + python-version: ["3.9", "3.10", "3.11"] + ansible-version: [stable-2.12, stable-2.13, stable-2.14] + exclude: + # Python 3.11 is supported only from ansible-core 2.14 onwards + - python-version: "3.11" + ansible-version: stable-2.12 + - python-version: "3.11" + ansible-version: stable-2.13 steps: - name: Set up Python ${{ matrix.python-version }} @@ -69,24 +77,23 @@ jobs: run: | ansible-galaxy collection install .cache/collection-tarballs/*.tar.gz if [ -f /home/runner/.ansible/collections/ansible_collections/dellemc/powerscale/tests/requirements.txt ]; then pip install -r /home/runner/.ansible/collections/ansible_collections/dellemc/powerscale/tests/requirements.txt; fi - - - name: Run Unit tests using ansible-test run: ansible-test units -v --color --python ${{ matrix.python-version }} --coverage working-directory: /home/runner/.ansible/collections/ansible_collections/dellemc/powerscale -### -# Sanity tests (REQUIRED) -# -# https://docs.ansible.com/ansible/latest/dev_guide/testing_sanity.html + ### + # Sanity tests (REQUIRED) + # + # https://docs.ansible.com/ansible/latest/dev_guide/testing_sanity.html sanity: name: Sanity Tests runs-on: ubuntu-latest needs: [build] strategy: + fail-fast: false matrix: - ansible-version: [stable-2.11, stable-2.12, stable-2.13] + ansible-version: [stable-2.12, stable-2.13, stable-2.14] steps: - name: Set up Python 3.9 diff --git a/ChangeLog.md b/ChangeLog.md deleted file mode 100644 index 49fb6df5..00000000 --- a/ChangeLog.md +++ /dev/null @@ -1,72 +0,0 @@ -# ansible-powerscale Change Log -## Version 1.7.0 - released on 27/09/22 -- Support to retrieve, create, modify and delete NFS alias in NFS Alias module. -- Support to create and modify additional parameters of an SMB share in SMB module. -- Access Zone, SMB, SmartQuota, User and Group module is enhanced to support NIS authentication provider. -- SyncIQ Policy module is enhanced to support accelerated_failback and restrict_target_network of a policy. -- Info module is enhanced to support listing of NFS aliases. - -## Version 1.6.0 - released on 28/06/22 -- Support to retrieve, create and delete filepool policy in Filepool Policy module. -- Support to retrieve, create and delete storagetier in Storagepool Tier module. -- SmartQuota module is enhanced to support container parameter. -- Filesystem module is enhanced to support ACL and container parameter. -- Info module is enhanced to support NodePools and Storagepool Tiers Subsets. -- Added files required for Ansible execution environment. -- Check mode is supported for Info, Filepool Policy and Storagepool Tier modules. -- Added execution environment manifest file to support building an execution environment with ansible-builder. - -## Version 1.5.0 - released on 25/03/22 -- Support to retrieve and modify network settings in Network Settings module. -- Support to retrieve and modify smartpool settings in Smartpool Settings module. -- SmartQuota module is enhanced to support float values for Quota Parameters. -- ADS module is enhanced to support machine_account & organizational_unit parameters while creating ADS provider. -- Removal of dellemc_powerscale prefix from all the modules name. -- Support for recursive force deletion of filesystem directories. -- Added rotating file handler for log files. - -## Version 1.4.0 - released on 16/12/21 -- Added CRUD operations for Groupnet module. -- Added CRUD operations for Subnet module. -- Added CRUD operations for Network Pool module. -- Added CRUD operations for Network Rule module. -- Support to retrieve and modify email settings in Settings module. -- Support to retrieve, add and remove NTP servers in Settings module. -- Access zone module is enhanced to support creation of an access zone. -- Gather facts module is enhanced to list network groupnets, network subnets, network pools, network rules and network interfaces. - -## Version 1.3.0 - released on 23/09/21 -- Added CRUD operations for SyncIQ Policy module. -- Added CRUD operations for SyncIQ Performance Rule module. -- Added support to create a job for SyncIQ Policy module. -- Support to retrieve and modify details of a SyncIQ job in SyncIQ jobs module. -- Support to fetch details of a SyncIQ report and all sub-reports in SyncIQ report module. -- Support to fetch details of a SyncIQ target report and all target sub-reports in SyncIQ report module. -- Gather facts module is enhanced to list SyncIQ policies, SyncIQ Performance rules, SyncIQ reports, SyncIQ target reports, SyncIQ target cluster certificates. -- Added dual licensing - -## Version 1.2.0 - released on 25/06/21 -- Map or unmap authentication providers to/from an access zone -- Support extended for OneFS version 9.1.0. -- Filesystem module is enhanced to support additional quota parameters. -- Added CRUD operations support for Active Directory module. -- Added CRUD operations support for LDAP module. -- Added support for getting details of a Node. -- Gather facts module is enhanced to list Nodes, NFS Exports, SMB shares and Active clients. -- SmartQuota module is enhanced to support CRUD operations for default-user and default-group quotas. -- Rebranded Isilon to PowerScale. - -## Version 1.1.0 - released on 12/06/20 -- Added CRUD operations support for UserQuota and GroupQuota as part of SmartQuota module. - -## Version 1.0.0 - released on 19/03/20 -- Added CRUD operations support for local user in User module. This also supports adding/removing roles for users of all provider types in system access zone. Also supports getting details of local/AD/LDAP/File users. -- Added CRUD operations support for local group in Group module. This also supports adding/removing local users from local groups. Also supports getting details of local/AD/LDAP/File group. -- Added CRUD operations support for File system. This also supports create/modify File system with Quota parameters. -- Added support to retrieve details of the access zone. -- Added support to modify default settings of SMB share and NFS export using AccessZone module. -- Added CRUD operations support for NFS export. -- Added CRUD operations support for SMB share. -- Added CRUD operations support for the snapshot. -- Added CRUD operations support for the snapshot schedule. -- Added Gather facts module to list Attributes, Access_zone, Nodes, Providers, Users and Groups. \ No newline at end of file From 1bf914452468a7e7d76d1b655c00167d0c2be1e6 Mon Sep 17 00:00:00 2001 From: Datta Date: Tue, 13 Dec 2022 20:16:51 +0530 Subject: [PATCH 3/3] Release Version 1.8.0 --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 043fdca7..f59815dc 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -16,4 +16,4 @@ # Trisha Datta (trisha-dell) # for all files: -* @kuttattz @Bhavneet-Sharma @Jennifer-John @meenakshidembi691 @Pavan-Mudunuri @Previnkumar-G @trisha-dell \ No newline at end of file +* @kuttattz @Bhavneet-Sharma @Jennifer-John @meenakshidembi691 @Pavan-Mudunuri @Previnkumar-G @trisha-dell