|
122 | 122 | DSROLE_POLICY_API_VERSION = "2.36" |
123 | 123 | CONTEXT_API_VERSION = "2.38" |
124 | 124 | QUOTA_API_VERSION = "2.42" |
| 125 | +TAGS_API_VERSION = "2.39" |
125 | 126 |
|
126 | 127 |
|
127 | 128 | def _is_cbs(array): |
@@ -1584,16 +1585,19 @@ def generate_snap_dict(array): |
1584 | 1585 | except KeyError: |
1585 | 1586 | snap_info[remote_snap_name] = {"remote": []} |
1586 | 1587 | 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 |
1596 | 1591 | ) |
| 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 | + ) |
1597 | 1601 | return snap_info |
1598 | 1602 |
|
1599 | 1603 |
|
@@ -1661,16 +1665,19 @@ def generate_del_snap_dict(array): |
1661 | 1665 | except KeyError: |
1662 | 1666 | snap_info[remote_snap_name] = {"remote": []} |
1663 | 1667 | 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 |
1673 | 1671 | ) |
| 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 | + ) |
1674 | 1681 | return snap_info |
1675 | 1682 |
|
1676 | 1683 |
|
@@ -1737,16 +1744,17 @@ def generate_del_vol_dict(array): |
1737 | 1744 | ) |
1738 | 1745 | if LooseVersion(SUBS_API_VERSION) <= LooseVersion(array.get_rest_version()): |
1739 | 1746 | 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 | + ) |
1750 | 1758 | return volume_info |
1751 | 1759 |
|
1752 | 1760 |
|
@@ -1838,16 +1846,17 @@ def generate_vol_dict(array, performance): |
1838 | 1846 | dict(t) |
1839 | 1847 | for t in set(tuple(d.items()) for d in volume_info[volume]["host_groups"]) |
1840 | 1848 | ] |
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 | + ) |
1851 | 1860 | if performance: |
1852 | 1861 | vols_performance = list(array.get_volumes_performance(destroyed=False).items) |
1853 | 1862 | for perf in range(0, len(vols_performance)): |
@@ -1976,16 +1985,17 @@ def generate_host_dict(array, performance): |
1976 | 1985 | host_info[hosts[host]["name"]]["performance_balance"].append( |
1977 | 1986 | host_perf_balance |
1978 | 1987 | ) |
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 | + ) |
1989 | 1999 | if performance: |
1990 | 2000 | for perf in range(0, len(hosts_performance)): |
1991 | 2001 | if ":" not in hosts_performance[perf].name: |
@@ -2181,16 +2191,19 @@ def generate_del_pgroups_dict(array): |
2181 | 2191 | pgroups_info[protgroup]["manual_eradication"] = getattr( |
2182 | 2192 | pg_info.eradication_config, "manual_eradication", None |
2183 | 2193 | ) |
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 |
2193 | 2197 | ) |
| 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 | + ) |
2194 | 2207 | return pgroups_info |
2195 | 2208 |
|
2196 | 2209 |
|
@@ -2322,16 +2335,19 @@ def generate_pgroups_dict(array): |
2322 | 2335 | pgroups_info[protgroup]["manual_eradication"] = getattr( |
2323 | 2336 | pg_info.eradication_config, "manual_eradication", None |
2324 | 2337 | ) |
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 |
2334 | 2341 | ) |
| 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 | + ) |
2335 | 2351 | return pgroups_info |
2336 | 2352 |
|
2337 | 2353 |
|
@@ -2414,16 +2430,17 @@ def generate_del_pods_dict(array): |
2414 | 2430 | "status": getattr(pods[pod].arrays[pod_array], "status", None), |
2415 | 2431 | } |
2416 | 2432 | ) |
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 | + ) |
2427 | 2444 | return pods_info |
2428 | 2445 |
|
2429 | 2446 |
|
@@ -2484,16 +2501,17 @@ def generate_pods_dict(array, performance): |
2484 | 2501 | "status": getattr(pods[pod].arrays[pod_array], "status", None), |
2485 | 2502 | } |
2486 | 2503 | ) |
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 | + ) |
2497 | 2515 | if performance: |
2498 | 2516 | pods_performance = list(array.get_pods_performance().items) |
2499 | 2517 | for perf in range(0, len(pods_performance)): |
@@ -2640,16 +2658,17 @@ def generate_vgroups_dict(array, performance): |
2640 | 2658 | ].priority_adjustment.priority_adjustment_operator + str( |
2641 | 2659 | vgroups[vgroup].priority_adjustment.priority_adjustment_value |
2642 | 2660 | ) |
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 | + ) |
2653 | 2672 | if performance: |
2654 | 2673 | vgs_performance = list(array.get_volume_groups_performance().items) |
2655 | 2674 | for perf in range(0, len(vgs_performance)): |
@@ -2750,16 +2769,17 @@ def generate_del_vgroups_dict(array): |
2750 | 2769 | group_name = vg_volumes[vg_vol].group.name |
2751 | 2770 | if group_name in vgroups_info: |
2752 | 2771 | 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 | + ) |
2763 | 2783 | return vgroups_info |
2764 | 2784 |
|
2765 | 2785 |
|
@@ -3027,16 +3047,17 @@ def generate_hgroups_dict(array, performance): |
3027 | 3047 | "destroyed": getattr(hgroups[hgroup], "destroyed", False), |
3028 | 3048 | "time_remaining": getattr(hgroups[hgroup], "time_remaining", None), |
3029 | 3049 | } |
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 | + ) |
3040 | 3061 | if performance: |
3041 | 3062 | hgs_performance = list(array.get_host_groups_performance().items) |
3042 | 3063 | for perf in range(0, len(hgs_performance)): |
@@ -3395,16 +3416,17 @@ def generate_realms_dict(array, performance): |
3395 | 3416 | } |
3396 | 3417 | if realms_info[name]["destroyed"]: |
3397 | 3418 | 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 | + ) |
3408 | 3430 | if performance: |
3409 | 3431 | r_perfs = list(array.get_realms_performance().items) |
3410 | 3432 | for perf in range(0, len(r_perfs)): |
|
0 commit comments