|
70 | 70 | "site_groups",
|
71 | 71 | "virtual_chassis",
|
72 | 72 | ],
|
73 |
| - extras=["tags"], |
| 73 | + extras=["config_contexts", "tags"], |
74 | 74 | ipam=[
|
75 | 75 | "aggregates",
|
76 | 76 | "ip_addresses",
|
|
96 | 96 | cluster="name",
|
97 | 97 | cluster_group="slug",
|
98 | 98 | cluster_type="slug",
|
| 99 | + config_context="name", |
99 | 100 | device="name",
|
100 | 101 | device_role="slug",
|
101 | 102 | device_type="slug",
|
|
150 | 151 | "circuits.circuittermination": "circuit_terminations",
|
151 | 152 | "cluster": "clusters",
|
152 | 153 | "cluster_group": "cluster_groups",
|
| 154 | + "cluster_groups": "cluster_groups", |
153 | 155 | "cluster_type": "cluster_types",
|
| 156 | + "config_context": "config_contexts", |
154 | 157 | "dcim.consoleport": "console_ports",
|
155 | 158 | "dcim.consoleserverport": "console_server_ports",
|
156 | 159 | "dcim.frontport": "front_ports",
|
|
162 | 165 | "device": "devices",
|
163 | 166 | "device_role": "device_roles",
|
164 | 167 | "device_type": "device_types",
|
| 168 | + "device_types": "device_types", |
165 | 169 | "export_targets": "route_targets",
|
166 | 170 | "group": "tenant_groups",
|
167 | 171 | "import_targets": "route_targets",
|
|
181 | 185 | "parent_vm_interface": "interfaces",
|
182 | 186 | "parent_region": "regions",
|
183 | 187 | "parent_tenant_group": "tenant_groups",
|
| 188 | + "platforms": "platforms", |
184 | 189 | "power_panel": "power_panels",
|
185 | 190 | "power_port": "power_ports",
|
186 | 191 | "power_port_template": "power_port_templates",
|
|
193 | 198 | "rack_group": "rack_groups",
|
194 | 199 | "rack_role": "rack_roles",
|
195 | 200 | "region": "regions",
|
| 201 | + "regions": "regions", |
196 | 202 | "rear_port": "rear_ports",
|
197 | 203 | "rear_port_template": "rear_port_templates",
|
198 | 204 | "rir": "rirs",
|
| 205 | + "roles": "device_roles", |
199 | 206 | "route_targets": "route_targets",
|
200 | 207 | # Just a placeholder as scope can be several different types including sites.
|
201 | 208 | "scope": "sites",
|
202 | 209 | "services": "services",
|
203 | 210 | "site": "sites",
|
204 | 211 | "site_group": "site_groups",
|
| 212 | + "sites": "sites", |
205 | 213 | "tags": "tags",
|
206 | 214 | "tagged_vlans": "vlans",
|
207 | 215 | "tenant": "tenants",
|
| 216 | + "tenants": "tenants", |
208 | 217 | "tenant_group": "tenant_groups",
|
| 218 | + "tenant_groups": "tenant_groups", |
209 | 219 | "termination_a": "interfaces",
|
210 | 220 | "termination_b": "interfaces",
|
211 | 221 | "untagged_vlan": "vlans",
|
|
227 | 237 | "clusters": "cluster",
|
228 | 238 | "cluster_groups": "cluster_group",
|
229 | 239 | "cluster_types": "cluster_type",
|
| 240 | + "config_contexts": "config_context", |
230 | 241 | "console_ports": "console_port",
|
231 | 242 | "console_port_templates": "console_port_template",
|
232 | 243 | "console_server_ports": "console_server_port",
|
|
285 | 296 | "cluster": set(["name", "type"]),
|
286 | 297 | "cluster_group": set(["slug"]),
|
287 | 298 | "cluster_type": set(["slug"]),
|
| 299 | + "config_context": set( |
| 300 | + [ |
| 301 | + "name", |
| 302 | + "regions", |
| 303 | + "sites", |
| 304 | + "roles", |
| 305 | + "device_types", |
| 306 | + "platforms", |
| 307 | + "cluster_groups", |
| 308 | + "clusters", |
| 309 | + "tenant_groups", |
| 310 | + "tenants", |
| 311 | + "tags", |
| 312 | + ] |
| 313 | + ), |
288 | 314 | "console_port": set(["name", "device"]),
|
289 | 315 | "console_port_template": set(["name", "device_type"]),
|
290 | 316 | "console_server_port": set(["name", "device"]),
|
@@ -907,7 +933,7 @@ def _find_ids(self, data, user_query_params):
|
907 | 933 | self.version, "2.9", greater_or_equal=True
|
908 | 934 | )
|
909 | 935 | and k == "tags"
|
910 |
| - ): |
| 936 | + ) or (self.endpoint == "config_contexts" and k == "tags"): |
911 | 937 | continue
|
912 | 938 | if k == "termination_a":
|
913 | 939 | endpoint = CONVERT_TO_ID[data.get("termination_a_type")]
|
@@ -936,7 +962,18 @@ def _find_ids(self, data, user_query_params):
|
936 | 962 | elif isinstance(v, list):
|
937 | 963 | id_list = list()
|
938 | 964 | for list_item in v:
|
939 |
| - if k == "tags" and isinstance(list_item, str): |
| 965 | + if k in ( |
| 966 | + "regions", |
| 967 | + "sites", |
| 968 | + "roles", |
| 969 | + "device_types", |
| 970 | + "platforms", |
| 971 | + "cluster_groups", |
| 972 | + "clusters", |
| 973 | + "tenant_groups", |
| 974 | + "tenants", |
| 975 | + "tags", |
| 976 | + ) and isinstance(list_item, str): |
940 | 977 | temp_dict = {"slug": self._to_slug(list_item)}
|
941 | 978 | elif isinstance(list_item, dict):
|
942 | 979 | norm_data = self._normalize_data(list_item)
|
|
0 commit comments