Skip to content

Commit 8e1a29f

Browse files
authored
Merge branch 'master' into pod_replica_fusion
2 parents 10e3cfc + 0bfe65b commit 8e1a29f

19 files changed

+3820
-2000
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ All modules are idempotent with the exception of modules that change or set pass
104104
- purefa_ad - manage FlashArray Active Directoy accounts
105105
- purefa_admin - Configure Pure Storage FlashArray Global Admin settings
106106
- purefa_alert - manage email alert settings on the FlashArray
107-
- purefa_apiclient - manageFlashArray API clients
107+
- purefa_apiclient - manage FlashArray API clients
108108
- purefa_arrayname - manage the name of the FlashArray
109109
- pureaf_audits - get FlashArray audit events
110110
- purefa_banner - manage the CLI and GUI login banner of the FlashArray
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
minor_changes:
2+
- purefa_volume - Added ``context`` parameter to support fleet operations
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
minor_changes:
2+
- purefa_smtp - Added support for additional parameters, including encryption mode and email prefixs and email sender name.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
minor_changes:
2+
- purefa_host - Added Fusion support
3+
known_issues:
4+
- FlashArray//CBS is not currently supported as a member of a Fusion fleet
5+
- All Fusion fleet members will be assumed to be at the same Purity//FA version level as the array connected to by Ansible.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
minor_changes:
2+
- purefa_vg - Added support for Fusion
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
minor_changes:
2+
- purefa_pods - Added support for Fusion with ``context`` parameter.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
minor_changes:
2+
- purefa_hg - Added support for Fusion
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
minor_changes:
2+
- purefa_pg - Added Fusion support.

plugins/modules/purefa_certs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ def main():
502502
if not HAS_PYCOUNTRY:
503503
module.fail_json(msg="pycountry sdk is required for this module")
504504

505-
email_pattern = r"^[\w-\.]+@([\w-]+\.)+[\w-]{2,6}$"
505+
email_pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
506506
array = get_array(module)
507507
api_version = array.get_rest_version()
508508

plugins/modules/purefa_fleet.py

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
- Define whether to add or remove member from a fleet.
3535
- Create a new fleet if one does not exist.
3636
This will use the current array as the first member.
37+
- Fleet deletion can only occiur when the current array
38+
is the only fleet member.
3739
default: present
3840
choices: [ absent, present, create ]
3941
type: str
@@ -77,6 +79,13 @@
7779
state: absent
7880
fa_url: 10.10.10.2
7981
api_token: e31060a7-21fc-e277-6240-25983c6c4592
82+
83+
- name: Delete fleet foo
84+
purestorage.flasharray.purefa_fleet:
85+
name: foo
86+
state: absent
87+
fa_url: 10.10.10.2
88+
api_token: e31060a7-21fc-e277-6240-25983c6c4592
8089
"""
8190

8291
RETURN = r"""
@@ -119,6 +128,7 @@
119128
VERSION = 1.5
120129
USER_AGENT_BASE = "Ansible"
121130
MIN_REQUIRED_API_VERSION = "2.38"
131+
DELETE_FLEET_API_VERSION = "2.39"
122132

123133

124134
def create_fleet(module, array):
@@ -135,6 +145,29 @@ def create_fleet(module, array):
135145
module.exit_json(changed=changed)
136146

137147

148+
def delete_fleet(module, array):
149+
"""Delete the fleet.
150+
151+
Only works when the current array is the only remaining
152+
memebr of the fleet'
153+
"""
154+
changed = True
155+
api_version = array.get_rest_version()
156+
if LooseVersion(DELETE_FLEET_API_VERSION) <= LooseVersion(api_version):
157+
res = array.delete_fleets(names=[module.params["name"]])
158+
if res.status_code != 200:
159+
module.fail_json(
160+
msg="Fleet {0} deletion failed. Error: {1}".format(
161+
module.params["name"], res.errors[0].message
162+
)
163+
)
164+
else:
165+
module.fail_json(
166+
msg="Purity//FA version not supported. Minimum version required: 6.8.2"
167+
)
168+
module.exit_json(changed=changed)
169+
170+
138171
def add_fleet_members(module, array):
139172
"""Add new member to the fleet"""
140173
changed = False
@@ -199,8 +232,6 @@ def add_fleet_members(module, array):
199232
def delete_fleet_members(module, array):
200233
"""Delete member from a fleet"""
201234
changed = False
202-
if not module.params["member_url"] and not module.params["member_api"]:
203-
module.fail_json(msg="missing required arguments: member_api, member_url")
204235
if HAS_URLLIB3 and module.params["disable_warnings"]:
205236
urllib3.disable_warnings()
206237
if HAS_DISTRO:
@@ -279,7 +310,11 @@ def main():
279310
)
280311
)
281312

282-
module = AnsibleModule(argument_spec, supports_check_mode=True)
313+
required_together = [["member_url", "member_api"]]
314+
315+
module = AnsibleModule(
316+
argument_spec, required_together=required_together, supports_check_mode=True
317+
)
283318

284319
if not HAS_PURESTORAGE:
285320
module.fail_json(msg="py-pure-client sdk is required for this module")
@@ -311,8 +346,10 @@ def main():
311346
rename_fleet(module, array)
312347
elif state == "present" and fleet:
313348
add_fleet_members(module, array)
314-
elif state == "absent" and fleet:
349+
elif state == "absent" and fleet and module.params["member_url"]:
315350
delete_fleet_members(module, array)
351+
elif state == "absent" and fleet:
352+
delete_fleet(module, array)
316353
else:
317354
module.exit_json(changed=False)
318355

0 commit comments

Comments
 (0)