|
15 | 15 | from itertools import chain
|
16 | 16 |
|
17 | 17 | from ansible.module_utils.common.text.converters import to_text
|
18 |
| - |
19 | 18 | from ansible.module_utils._text import to_native
|
20 | 19 | from ansible.module_utils.common.collections import is_iterable
|
21 | 20 | from ansible.module_utils.basic import AnsibleModule, missing_required_lib, _load_params
|
|
90 | 89 | ],
|
91 | 90 | secrets=[],
|
92 | 91 | tenancy=["tenants", "tenant_groups", "contacts", "contact_groups", "contact_roles"],
|
93 |
| - virtualization=["cluster_groups", "cluster_types", "clusters", "virtual_machines"], |
| 92 | + virtualization=[ |
| 93 | + "cluster_groups", |
| 94 | + "cluster_types", |
| 95 | + "clusters", |
| 96 | + "virtual_machines", |
| 97 | + ], |
94 | 98 | wireless=["wireless_lans", "wireless_lan_groups", "wireless_links"],
|
95 | 99 | )
|
96 | 100 |
|
|
160 | 164 | # Specifies keys within data that need to be converted to ID and the endpoint to be used when queried
|
161 | 165 | CONVERT_TO_ID = {
|
162 | 166 | "assigned_object": "assigned_object",
|
| 167 | + "bridge": "interfaces", |
163 | 168 | "circuit": "circuits",
|
164 | 169 | "circuit_type": "circuit_types",
|
165 | 170 | "circuit_termination": "circuit_terminations",
|
|
246 | 251 | "virtual_chassis": "virtual_chassis",
|
247 | 252 | "virtual_machine": "virtual_machines",
|
248 | 253 | "virtual_machine_role": "device_roles",
|
| 254 | + "vm_bridge": "interfaces", |
249 | 255 | "vlan": "vlans",
|
250 | 256 | "vlan_group": "vlan_groups",
|
251 | 257 | "vlan_role": "roles",
|
|
323 | 329 | ALLOWED_QUERY_PARAMS = {
|
324 | 330 | "aggregate": set(["prefix", "rir"]),
|
325 | 331 | "assigned_object": set(["name", "device", "virtual_machine"]),
|
| 332 | + "bridge": set(["name", "device"]), |
326 | 333 | "circuit": set(["cid"]),
|
327 | 334 | "circuit_type": set(["slug"]),
|
328 | 335 | "circuit_termination": set(["circuit", "term_side"]),
|
|
422 | 429 | "untagged_vlan": set(["group", "name", "site", "vid", "vlan_group", "tenant"]),
|
423 | 430 | "virtual_chassis": set(["name", "master"]),
|
424 | 431 | "virtual_machine": set(["name", "cluster"]),
|
| 432 | + "vm_bridge": set(["name"]), |
425 | 433 | "vlan": set(["group", "name", "site", "tenant", "vid", "vlan_group"]),
|
426 | 434 | "vlan_group": set(["slug", "site", "scope"]),
|
427 | 435 | "vrf": set(["name", "tenant"]),
|
|
507 | 515 | "virtual_machine_role": "role",
|
508 | 516 | "vlan_role": "role",
|
509 | 517 | "vlan_group": "group",
|
| 518 | + "vm_bridge": "bridge", |
510 | 519 | "wireless_lan_group": "group",
|
511 | 520 | }
|
512 | 521 |
|
@@ -851,6 +860,11 @@ def _build_query_params(
|
851 | 860 | if not child:
|
852 | 861 | query_dict["name"] = module_data["parent_vm_interface"]
|
853 | 862 |
|
| 863 | + elif parent == "vm_bridge" and module_data.get("virtual_machine"): |
| 864 | + if not child: |
| 865 | + query_dict["name"] = module_data["vm_bridge"] |
| 866 | + query_dict["virtual_machine_id"] = module_data["virtual_machine"] |
| 867 | + |
854 | 868 | elif parent == "lag":
|
855 | 869 | if not child:
|
856 | 870 | query_dict["name"] = module_data["lag"]
|
@@ -1090,6 +1104,12 @@ def _find_ids(self, data, user_query_params):
|
1090 | 1104 | query_params = self._build_query_params(
|
1091 | 1105 | k, data, user_query_params
|
1092 | 1106 | )
|
| 1107 | + elif k == "vm_bridge": |
| 1108 | + nb_app = getattr(self.nb, "virtualization") |
| 1109 | + nb_endpoint = getattr(nb_app, endpoint) |
| 1110 | + query_params = self._build_query_params( |
| 1111 | + k, data, user_query_params |
| 1112 | + ) |
1093 | 1113 | else:
|
1094 | 1114 | query_params = {QUERY_TYPES.get(k, "q"): search}
|
1095 | 1115 | query_id = self._nb_endpoint_get(nb_endpoint, query_params, k)
|
|
0 commit comments