Skip to content

Commit d2cebd4

Browse files
committed
Add version check for tags
1 parent fe1fd8c commit d2cebd4

File tree

1 file changed

+148
-126
lines changed

1 file changed

+148
-126
lines changed

plugins/modules/purefa_info.py

Lines changed: 148 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@
122122
DSROLE_POLICY_API_VERSION = "2.36"
123123
CONTEXT_API_VERSION = "2.38"
124124
QUOTA_API_VERSION = "2.42"
125+
TAGS_API_VERSION = "2.39"
125126

126127

127128
def _is_cbs(array):
@@ -1584,16 +1585,19 @@ def generate_snap_dict(array):
15841585
except KeyError:
15851586
snap_info[remote_snap_name] = {"remote": []}
15861587
snap_info[remote_snap_name]["remote"].append(remote_dict)
1587-
snaps_tags = list(array.get_volume_snapshots_tags(resource_destroyed=False).items)
1588-
for tag in range(len(snaps_tags)):
1589-
snap_info[snaps_tags[tag].resource.name]["tags"].append(
1590-
{
1591-
"key": snaps_tags[tag].key,
1592-
"value": snaps_tags[tag].value,
1593-
"copyable": snaps_tags[tag].copyable,
1594-
"namespace": snaps_tags[tag].namespace,
1595-
}
1588+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
1589+
snaps_tags = list(
1590+
array.get_volume_snapshots_tags(resource_destroyed=False).items
15961591
)
1592+
for tag in range(len(snaps_tags)):
1593+
snap_info[snaps_tags[tag].resource.name]["tags"].append(
1594+
{
1595+
"key": snaps_tags[tag].key,
1596+
"value": snaps_tags[tag].value,
1597+
"copyable": snaps_tags[tag].copyable,
1598+
"namespace": snaps_tags[tag].namespace,
1599+
}
1600+
)
15971601
return snap_info
15981602

15991603

@@ -1661,16 +1665,19 @@ def generate_del_snap_dict(array):
16611665
except KeyError:
16621666
snap_info[remote_snap_name] = {"remote": []}
16631667
snap_info[remote_snap_name]["remote"].append(remote_dict)
1664-
snaps_tags = list(array.get_volume_snapshots_tags(resource_destroyed=True).items)
1665-
for tag in range(len(snaps_tags)):
1666-
snap_info[snaps_tags[tag].resource.name]["tags"].append(
1667-
{
1668-
"key": snaps_tags[tag].key,
1669-
"value": snaps_tags[tag].value,
1670-
"copyable": snaps_tags[tag].copyable,
1671-
"namespace": snaps_tags[tag].namespace,
1672-
}
1668+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
1669+
snaps_tags = list(
1670+
array.get_volume_snapshots_tags(resource_destroyed=True).items
16731671
)
1672+
for tag in range(len(snaps_tags)):
1673+
snap_info[snaps_tags[tag].resource.name]["tags"].append(
1674+
{
1675+
"key": snaps_tags[tag].key,
1676+
"value": snaps_tags[tag].value,
1677+
"copyable": snaps_tags[tag].copyable,
1678+
"namespace": snaps_tags[tag].namespace,
1679+
}
1680+
)
16741681
return snap_info
16751682

16761683

@@ -1737,16 +1744,17 @@ def generate_del_vol_dict(array):
17371744
)
17381745
if LooseVersion(SUBS_API_VERSION) <= LooseVersion(array.get_rest_version()):
17391746
volume_info[volume]["total_used"] = vols[vol].space.total_used
1740-
volume_tags = list(array.get_volumes_tags(resource_destroyed=True).items)
1741-
for tag in range(len(volume_tags)):
1742-
volume_info[volume_tags[tag].resource.name]["tags"].append(
1743-
{
1744-
"key": volume_tags[tag].key,
1745-
"value": volume_tags[tag].value,
1746-
"copyable": volume_tags[tag].copyable,
1747-
"namespace": volume_tags[tag].namespace,
1748-
}
1749-
)
1747+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
1748+
volume_tags = list(array.get_volumes_tags(resource_destroyed=True).items)
1749+
for tag in range(len(volume_tags)):
1750+
volume_info[volume_tags[tag].resource.name]["tags"].append(
1751+
{
1752+
"key": volume_tags[tag].key,
1753+
"value": volume_tags[tag].value,
1754+
"copyable": volume_tags[tag].copyable,
1755+
"namespace": volume_tags[tag].namespace,
1756+
}
1757+
)
17501758
return volume_info
17511759

17521760

@@ -1838,16 +1846,17 @@ def generate_vol_dict(array, performance):
18381846
dict(t)
18391847
for t in set(tuple(d.items()) for d in volume_info[volume]["host_groups"])
18401848
]
1841-
volume_tags = list(array.get_volumes_tags(resource_destroyed=False).items)
1842-
for tag in range(len(volume_tags)):
1843-
volume_info[volume_tags[tag].resource.name]["tags"].append(
1844-
{
1845-
"key": volume_tags[tag].key,
1846-
"value": volume_tags[tag].value,
1847-
"copyable": volume_tags[tag].copyable,
1848-
"namespace": volume_tags[tag].namespace,
1849-
}
1850-
)
1849+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
1850+
volume_tags = list(array.get_volumes_tags(resource_destroyed=False).items)
1851+
for tag in range(len(volume_tags)):
1852+
volume_info[volume_tags[tag].resource.name]["tags"].append(
1853+
{
1854+
"key": volume_tags[tag].key,
1855+
"value": volume_tags[tag].value,
1856+
"copyable": volume_tags[tag].copyable,
1857+
"namespace": volume_tags[tag].namespace,
1858+
}
1859+
)
18511860
if performance:
18521861
vols_performance = list(array.get_volumes_performance(destroyed=False).items)
18531862
for perf in range(0, len(vols_performance)):
@@ -1976,16 +1985,17 @@ def generate_host_dict(array, performance):
19761985
host_info[hosts[host]["name"]]["performance_balance"].append(
19771986
host_perf_balance
19781987
)
1979-
host_tags = list(array.get_hosts_tags(resource_destroyed=False).items)
1980-
for tag in range(len(host_tags)):
1981-
host_info[host_tags[tag].resource.name]["tags"].append(
1982-
{
1983-
"key": host_tags[tag].key,
1984-
"value": host_tags[tag].value,
1985-
"copyable": host_tags[tag].copyable,
1986-
"namespace": host_tags[tag].namespace,
1987-
}
1988-
)
1988+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
1989+
host_tags = list(array.get_hosts_tags(resource_destroyed=False).items)
1990+
for tag in range(len(host_tags)):
1991+
host_info[host_tags[tag].resource.name]["tags"].append(
1992+
{
1993+
"key": host_tags[tag].key,
1994+
"value": host_tags[tag].value,
1995+
"copyable": host_tags[tag].copyable,
1996+
"namespace": host_tags[tag].namespace,
1997+
}
1998+
)
19891999
if performance:
19902000
for perf in range(0, len(hosts_performance)):
19912001
if ":" not in hosts_performance[perf].name:
@@ -2181,16 +2191,19 @@ def generate_del_pgroups_dict(array):
21812191
pgroups_info[protgroup]["manual_eradication"] = getattr(
21822192
pg_info.eradication_config, "manual_eradication", None
21832193
)
2184-
pgroup_tags = list(array.get_protection_groups_tags(resource_destroyed=True).items)
2185-
for tag in range(len(pgroup_tags)):
2186-
pgroups_info[pgroup_tags[tag].resource.name]["tags"].append(
2187-
{
2188-
"key": pgroup_tags[tag].key,
2189-
"value": pgroup_tags[tag].value,
2190-
"copyable": pgroup_tags[tag].copyable,
2191-
"namespace": pgroup_tags[tag].namespace,
2192-
}
2194+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
2195+
pgroup_tags = list(
2196+
array.get_protection_groups_tags(resource_destroyed=True).items
21932197
)
2198+
for tag in range(len(pgroup_tags)):
2199+
pgroups_info[pgroup_tags[tag].resource.name]["tags"].append(
2200+
{
2201+
"key": pgroup_tags[tag].key,
2202+
"value": pgroup_tags[tag].value,
2203+
"copyable": pgroup_tags[tag].copyable,
2204+
"namespace": pgroup_tags[tag].namespace,
2205+
}
2206+
)
21942207
return pgroups_info
21952208

21962209

@@ -2322,16 +2335,19 @@ def generate_pgroups_dict(array):
23222335
pgroups_info[protgroup]["manual_eradication"] = getattr(
23232336
pg_info.eradication_config, "manual_eradication", None
23242337
)
2325-
pgroup_tags = list(array.get_protection_groups_tags(resource_destroyed=False).items)
2326-
for tag in range(len(pgroup_tags)):
2327-
pgroups_info[pgroup_tags[tag].resource.name]["tags"].append(
2328-
{
2329-
"key": pgroup_tags[tag].key,
2330-
"value": pgroup_tags[tag].value,
2331-
"copyable": pgroup_tags[tag].copyable,
2332-
"namespace": pgroup_tags[tag].namespace,
2333-
}
2338+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
2339+
pgroup_tags = list(
2340+
array.get_protection_groups_tags(resource_destroyed=False).items
23342341
)
2342+
for tag in range(len(pgroup_tags)):
2343+
pgroups_info[pgroup_tags[tag].resource.name]["tags"].append(
2344+
{
2345+
"key": pgroup_tags[tag].key,
2346+
"value": pgroup_tags[tag].value,
2347+
"copyable": pgroup_tags[tag].copyable,
2348+
"namespace": pgroup_tags[tag].namespace,
2349+
}
2350+
)
23352351
return pgroups_info
23362352

23372353

@@ -2414,16 +2430,17 @@ def generate_del_pods_dict(array):
24142430
"status": getattr(pods[pod].arrays[pod_array], "status", None),
24152431
}
24162432
)
2417-
pods_tags = list(array.get_pods_tags(resource_destroyed=True).items)
2418-
for tag in range(len(pods_tags)):
2419-
pods_info[pods_tags[tag].resource.name]["tags"].append(
2420-
{
2421-
"key": pods_tags[tag].key,
2422-
"value": pods_tags[tag].value,
2423-
"copyable": pods_tags[tag].copyable,
2424-
"namespace": pods_tags[tag].namespace,
2425-
}
2426-
)
2433+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
2434+
pods_tags = list(array.get_pods_tags(resource_destroyed=True).items)
2435+
for tag in range(len(pods_tags)):
2436+
pods_info[pods_tags[tag].resource.name]["tags"].append(
2437+
{
2438+
"key": pods_tags[tag].key,
2439+
"value": pods_tags[tag].value,
2440+
"copyable": pods_tags[tag].copyable,
2441+
"namespace": pods_tags[tag].namespace,
2442+
}
2443+
)
24272444
return pods_info
24282445

24292446

@@ -2484,16 +2501,17 @@ def generate_pods_dict(array, performance):
24842501
"status": getattr(pods[pod].arrays[pod_array], "status", None),
24852502
}
24862503
)
2487-
pods_tags = list(array.get_pods_tags(resource_destroyed=False).items)
2488-
for tag in range(len(pods_tags)):
2489-
pods_info[pods_tags[tag].resource.name]["tags"].append(
2490-
{
2491-
"key": pods_tags[tag].key,
2492-
"value": pods_tags[tag].value,
2493-
"copyable": pods_tags[tag].copyable,
2494-
"namespace": pods_tags[tag].namespace,
2495-
}
2496-
)
2504+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
2505+
pods_tags = list(array.get_pods_tags(resource_destroyed=False).items)
2506+
for tag in range(len(pods_tags)):
2507+
pods_info[pods_tags[tag].resource.name]["tags"].append(
2508+
{
2509+
"key": pods_tags[tag].key,
2510+
"value": pods_tags[tag].value,
2511+
"copyable": pods_tags[tag].copyable,
2512+
"namespace": pods_tags[tag].namespace,
2513+
}
2514+
)
24972515
if performance:
24982516
pods_performance = list(array.get_pods_performance().items)
24992517
for perf in range(0, len(pods_performance)):
@@ -2640,16 +2658,17 @@ def generate_vgroups_dict(array, performance):
26402658
].priority_adjustment.priority_adjustment_operator + str(
26412659
vgroups[vgroup].priority_adjustment.priority_adjustment_value
26422660
)
2643-
vgroup_tags = list(array.get_volume_groups_tags(resource_destroyed=False).items)
2644-
for tag in range(len(vgroup_tags)):
2645-
vgroups_info[vgroup_tags[tag].resource.name]["tags"].append(
2646-
{
2647-
"key": vgroup_tags[tag].key,
2648-
"value": vgroup_tags[tag].value,
2649-
"copyable": vgroup_tags[tag].copyable,
2650-
"namespace": vgroup_tags[tag].namespace,
2651-
}
2652-
)
2661+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
2662+
vgroup_tags = list(array.get_volume_groups_tags(resource_destroyed=False).items)
2663+
for tag in range(len(vgroup_tags)):
2664+
vgroups_info[vgroup_tags[tag].resource.name]["tags"].append(
2665+
{
2666+
"key": vgroup_tags[tag].key,
2667+
"value": vgroup_tags[tag].value,
2668+
"copyable": vgroup_tags[tag].copyable,
2669+
"namespace": vgroup_tags[tag].namespace,
2670+
}
2671+
)
26532672
if performance:
26542673
vgs_performance = list(array.get_volume_groups_performance().items)
26552674
for perf in range(0, len(vgs_performance)):
@@ -2750,16 +2769,17 @@ def generate_del_vgroups_dict(array):
27502769
group_name = vg_volumes[vg_vol].group.name
27512770
if group_name in vgroups_info:
27522771
vgroups_info[group_name]["volumes"].append(vg_volumes[vg_vol].member.name)
2753-
vgroup_tags = list(array.get_volume_groups_tags(resource_destroyed=True).items)
2754-
for tag in range(len(vgroup_tags)):
2755-
vgroups_info[vgroup_tags[tag].resource.name]["tags"].append(
2756-
{
2757-
"key": vgroup_tags[tag].key,
2758-
"value": vgroup_tags[tag].value,
2759-
"copyable": vgroup_tags[tag].copyable,
2760-
"namespace": vgroup_tags[tag].namespace,
2761-
}
2762-
)
2772+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
2773+
vgroup_tags = list(array.get_volume_groups_tags(resource_destroyed=True).items)
2774+
for tag in range(len(vgroup_tags)):
2775+
vgroups_info[vgroup_tags[tag].resource.name]["tags"].append(
2776+
{
2777+
"key": vgroup_tags[tag].key,
2778+
"value": vgroup_tags[tag].value,
2779+
"copyable": vgroup_tags[tag].copyable,
2780+
"namespace": vgroup_tags[tag].namespace,
2781+
}
2782+
)
27632783
return vgroups_info
27642784

27652785

@@ -3027,16 +3047,17 @@ def generate_hgroups_dict(array, performance):
30273047
"destroyed": getattr(hgroups[hgroup], "destroyed", False),
30283048
"time_remaining": getattr(hgroups[hgroup], "time_remaining", None),
30293049
}
3030-
hgroup_tags = list(array.get_host_groups_tags(resource_destroyed=False).items)
3031-
for tag in range(len(hgroup_tags)):
3032-
hgroups_info[hgroup_tags[tag].resource.name]["tags"].append(
3033-
{
3034-
"key": hgroup_tags[tag].key,
3035-
"value": hgroup_tags[tag].value,
3036-
"copyable": hgroup_tags[tag].copyable,
3037-
"namespace": hgroup_tags[tag].namespace,
3038-
}
3039-
)
3050+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
3051+
hgroup_tags = list(array.get_host_groups_tags(resource_destroyed=False).items)
3052+
for tag in range(len(hgroup_tags)):
3053+
hgroups_info[hgroup_tags[tag].resource.name]["tags"].append(
3054+
{
3055+
"key": hgroup_tags[tag].key,
3056+
"value": hgroup_tags[tag].value,
3057+
"copyable": hgroup_tags[tag].copyable,
3058+
"namespace": hgroup_tags[tag].namespace,
3059+
}
3060+
)
30403061
if performance:
30413062
hgs_performance = list(array.get_host_groups_performance().items)
30423063
for perf in range(0, len(hgs_performance)):
@@ -3395,16 +3416,17 @@ def generate_realms_dict(array, performance):
33953416
}
33963417
if realms_info[name]["destroyed"]:
33973418
realms_info[name]["time_remaining"] = realms[realm].time_remaining
3398-
realms_tags = list(array.get_realms_tags(resource_destroyed=False).items)
3399-
for tag in range(len(realms_tags)):
3400-
realms_info[realms_tags[tag].resource.name]["tags"].append(
3401-
{
3402-
"key": realms_tags[tag].key,
3403-
"value": realms_tags[tag].value,
3404-
"copyable": realms_tags[tag].copyable,
3405-
"namespace": realms_tags[tag].namespace,
3406-
}
3407-
)
3419+
if LooseVersion(TAGS_API_VERSION) <= LooseVersion(array.get_rest_version()):
3420+
realms_tags = list(array.get_realms_tags(resource_destroyed=False).items)
3421+
for tag in range(len(realms_tags)):
3422+
realms_info[realms_tags[tag].resource.name]["tags"].append(
3423+
{
3424+
"key": realms_tags[tag].key,
3425+
"value": realms_tags[tag].value,
3426+
"copyable": realms_tags[tag].copyable,
3427+
"namespace": realms_tags[tag].namespace,
3428+
}
3429+
)
34083430
if performance:
34093431
r_perfs = list(array.get_realms_performance().items)
34103432
for perf in range(0, len(r_perfs)):

0 commit comments

Comments
 (0)