From 3c504af4d4a8047c3f886a4f83d8b70f7841c80c Mon Sep 17 00:00:00 2001 From: Michal Cerny Date: Thu, 6 Nov 2025 16:11:50 +0100 Subject: [PATCH] allow query params parent_object* for services in netbox_utils - elif parent == "services": is workaround for Netbox 4.3.0 - 4.4.3 - #20554 GET Parent_object_type wrong data type - integer instead of string Just delete parent_object_type and parent_object_id GET is broken anyway --- .../1479-fix-services_parent_object.yml | 5 +++++ plugins/module_utils/netbox_utils.py | 21 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/1479-fix-services_parent_object.yml diff --git a/changelogs/fragments/1479-fix-services_parent_object.yml b/changelogs/fragments/1479-fix-services_parent_object.yml new file mode 100644 index 00000000..cb76eacd --- /dev/null +++ b/changelogs/fragments/1479-fix-services_parent_object.yml @@ -0,0 +1,5 @@ +--- +bugfixes: + - add parent_object_type and parent_object_id to services ALLOWED_QUERY_PARAMS +minor_changes: + - add workaround to _build_query_params for services and Netbox 4.3.0 - 4.4.3 (wrong parent_object_type data type) diff --git a/plugins/module_utils/netbox_utils.py b/plugins/module_utils/netbox_utils.py index 73364671..c4316e83 100644 --- a/plugins/module_utils/netbox_utils.py +++ b/plugins/module_utils/netbox_utils.py @@ -567,7 +567,17 @@ "rir": set(["slug"]), "role": set(["slug"]), "route_target": set(["name"]), - "services": set(["device", "virtual_machine", "name", "port", "protocol"]), + "services": set( + [ + "device", + "virtual_machine", + "name", + "port", + "protocol", + "parent_object_type", + "parent_object_id", + ] + ), "service_template": set(["name"]), "site": set(["slug", "name"]), "site_group": set(["slug"]), @@ -1187,6 +1197,15 @@ def _build_query_params( query_dict["device_type_id"] = query_dict.pop("device_type") else: query_dict["devicetype_id"] = query_dict.pop("device_type") + # TODO workaround for Netbox 4.3.0 - 4.4.3 - #20554 + # Remove 'elif parent == "services":' block after support for + # Netbox 4.3.0 - 4.4.3 is removed + elif parent == "services": + if self._version_check_greater( + self.version, "4.3", greater_or_equal=True + ) and self._version_check_greater("4.4.4", self.full_version): + query_dict.pop("parent_object_id", None) + query_dict.pop("parent_object_type", None) if not query_dict: provided_kwargs = child.keys() if child else module_data.keys()