Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ All modules are idempotent with the exception of modules that change or set pass
- purefa_subnet - manage network subnets on the FlashArray
- purefa_syslog - manage the Syslog settings on the FlashArray
- purefa_syslog_settings - manage the global syslog server settings on the FlashArray
- purefa_tgroup - manage topology groups and their memberships on the FlashArray
- purefa_token - manage FlashArray user API tokens
- purefa_timeout - manage the GUI idle timeout on the FlashArray
- purefa_user - manage local user accounts on the FlashArray
Expand Down
2 changes: 2 additions & 0 deletions changelogs/fragments/1000_add_tgroup_support.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
minor_changes:
- purefa_info - Add the tgroups gather_subset for topology group reporting.
45 changes: 43 additions & 2 deletions plugins/modules/purefa_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
capacity, network, subnet, interfaces, hgroups, pgroups, hosts,
admins, volumes, snapshots, pods, replication, vgroups, offload, apps,
arrays, certs, kmip, clients, policies, dir_snaps, filesystems,
alerts, virtual_machines, subscriptions, realms, fleet, presets and
workloads.
alerts, virtual_machines, subscriptions, realms, fleet, presets,
workloads and tgroups.
type: list
elements: str
required: false
Expand Down Expand Up @@ -123,6 +123,7 @@
CONTEXT_API_VERSION = "2.38"
QUOTA_API_VERSION = "2.42"
TAGS_API_VERSION = "2.39"
TGROUP_API_VERSION = "2.54"


def _is_cbs(array):
Expand Down Expand Up @@ -3009,6 +3010,41 @@ def generate_fleet_dict(array):
return fleet_info


def generate_tgroups_dict(array):
tgroups_info = {}
tgroups = list(array.get_topology_groups().items)
for tgroup in tgroups:
tgroups_info[tgroup.name] = {
"id": getattr(tgroup, "id", None),
"context": tgroup.context.name,
"parent_topology_group": tgroup.parent_topology_group.name,
"arrays": [],
"tgroups": [],
}

if not tgroups_info:
return tgroups_info

members = list(array.get_topology_groups_members().items)
for member in members:
group_name = member.topology_group.name
member_ref = member.member
member_name = member_ref.name
member_type = member_ref.resource_type
if group_name not in tgroups_info or not member_name:
continue
member_info = {
"name": member_name,
"status": member.status,
"status_details": member.status_details,
}
if member_type == "remote-arrays":
tgroups_info[group_name]["arrays"].append(member_info)
elif member_type == "topology-groups":
tgroups_info[group_name]["tgroups"].append(member_info)
return tgroups_info


def generate_preset_dict(array):

def to_plain(value):
Expand Down Expand Up @@ -3249,6 +3285,7 @@ def main():
"fleet",
"presets",
"workloads",
"tgroups",
)
subset_test = (test in valid_subsets for test in subset)
if not all(subset_test):
Expand Down Expand Up @@ -3349,6 +3386,10 @@ def main():
info["presets"] = generate_preset_dict(array)
if "workloads" in subset or "all" in subset:
info["workloads"] = generate_workload_dict(array)
if LooseVersion(TGROUP_API_VERSION) <= LooseVersion(api_version) and (
"tgroups" in subset or "all" in subset
):
info["tgroups"] = generate_tgroups_dict(array)
module.exit_json(changed=False, purefa_info=info)


Expand Down
Loading
Loading