Skip to content

Commit

Permalink
Add fleet deletion support
Browse files Browse the repository at this point in the history
  • Loading branch information
sdodsley committed Jan 20, 2025
1 parent aab1c26 commit 49b00ff
Showing 1 changed file with 41 additions and 4 deletions.
45 changes: 41 additions & 4 deletions plugins/modules/purefa_fleet.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
- Define whether to add or remove member from a fleet.
- Create a new fleet if one does not exist.
This will use the current array as the first member.
- Fleet deletion can only occiur when the current array
is the only fleet member.
default: present
choices: [ absent, present, create ]
type: str
Expand Down Expand Up @@ -77,6 +79,13 @@
state: absent
fa_url: 10.10.10.2
api_token: e31060a7-21fc-e277-6240-25983c6c4592
- name: Delete fleet foo
purestorage.flasharray.purefa_fleet:
name: foo
state: absent
fa_url: 10.10.10.2
api_token: e31060a7-21fc-e277-6240-25983c6c4592
"""

RETURN = r"""
Expand Down Expand Up @@ -119,6 +128,7 @@
VERSION = 1.5
USER_AGENT_BASE = "Ansible"
MIN_REQUIRED_API_VERSION = "2.38"
DELETE_FLEET_API_VERSION = "2.39"


def create_fleet(module, array):
Expand All @@ -135,6 +145,29 @@ def create_fleet(module, array):
module.exit_json(changed=changed)


def delete_fleet(module, array):
"""Delete the fleet.
Only works when the current array is the only remaining
memebr of the fleet'
"""
changed = True
api_version = array.get_rest_version()
if LooseVersion(DELETE_FLEET_API_VERSION) <= LooseVersion(api_version):
res = array.delete_fleets(names=[module.params["name"]])
if res.status_code != 200:
module.fail_json(
msg="Fleet {0} deletion failed. Error: {1}".format(
module.params["name"], res.errors[0].message
)
)
else:
module.fail_json(
msg="Purity//FA version not supported. Minimum version required: 6.8.2"
)
module.exit_json(changed=changed)


def add_fleet_members(module, array):
"""Add new member to the fleet"""
changed = False
Expand Down Expand Up @@ -199,8 +232,6 @@ def add_fleet_members(module, array):
def delete_fleet_members(module, array):
"""Delete member from a fleet"""
changed = False
if not module.params["member_url"] and not module.params["member_api"]:
module.fail_json(msg="missing required arguments: member_api, member_url")
if HAS_URLLIB3 and module.params["disable_warnings"]:
urllib3.disable_warnings()
if HAS_DISTRO:
Expand Down Expand Up @@ -279,7 +310,11 @@ def main():
)
)

module = AnsibleModule(argument_spec, supports_check_mode=True)
required_together = [["member_url", "member_api"]]

module = AnsibleModule(
argument_spec, required_together=required_together, supports_check_mode=True
)

if not HAS_PURESTORAGE:
module.fail_json(msg="py-pure-client sdk is required for this module")
Expand Down Expand Up @@ -311,8 +346,10 @@ def main():
rename_fleet(module, array)
elif state == "present" and fleet:
add_fleet_members(module, array)
elif state == "absent" and fleet:
elif state == "absent" and fleet and module.params["member_url"]:
delete_fleet_members(module, array)
elif state == "absent" and fleet:
delete_fleet(module, array)
else:
module.exit_json(changed=False)

Expand Down

0 comments on commit 49b00ff

Please sign in to comment.