From 027f8cb0013b9fcd114c0cec2c52132325f1148c Mon Sep 17 00:00:00 2001 From: h3po Date: Thu, 30 Mar 2023 16:25:37 +0200 Subject: [PATCH 1/2] New nb_inventory params group_names_prefix and host_vars_prefix (#959) --- plugins/inventory/nb_inventory.py | 45 ++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/plugins/inventory/nb_inventory.py b/plugins/inventory/nb_inventory.py index 72a5346be..08b26e905 100644 --- a/plugins/inventory/nb_inventory.py +++ b/plugins/inventory/nb_inventory.py @@ -175,6 +175,16 @@ default: False type: boolean version_added: "0.2.0" + group_names_prefix: + description: Will add "netbox_" as a prefix to group names + default: False + type: boolean + version_added: "3.12.0" + host_vars_prefix: + description: Will add "netbox_" as a prefix to host variables + default: False + type: boolean + version_added: "3.12.0" query_filters: description: - List of parameters passed to the query string for both devices and VMs (Multiple values may be separated by commas). @@ -1662,9 +1672,14 @@ def generate_group_name(self, grouping, group): group = group["value"] if self.group_names_raw: - return group + group_name = group else: - return "_".join([grouping, group]) + group_name = "_".join([grouping, group]) + + if self.group_names_prefix: + group_name = "netbox_" + group_name + + return group_name def add_host_to_groups(self, host, hostname): site_group_by = self._pluralize_group_by("site") @@ -1810,11 +1825,19 @@ def _fill_host_variables(self, host, hostname): extracted_primary_ip4 = self.extract_primary_ip4(host=host) if extracted_primary_ip4: - self.inventory.set_variable(hostname, "primary_ip4", extracted_primary_ip4) + if self.host_vars_prefix: + hostvar = "netbox_primary_ipv4" + else: + hostvar = "primary_ipv4" + self.inventory.set_variable(hostname, hostvar, extracted_primary_ip4) extracted_primary_ip6 = self.extract_primary_ip6(host=host) if extracted_primary_ip6: - self.inventory.set_variable(hostname, "primary_ip6", extracted_primary_ip6) + if self.host_vars_prefix: + hostvar = "netbox_primary_ipv6" + else: + hostvar = "primary_ipv6" + self.inventory.set_variable(hostname, hostvar, extracted_primary_ip6) for attribute, extractor in self.group_extractors.items(): extracted_value = extractor(host) @@ -1850,9 +1873,17 @@ def _fill_host_variables(self, host, hostname): ) ): for key, value in extracted_value.items(): - self.inventory.set_variable(hostname, key, value) + if self.host_vars_prefix: + hostvar = "netbox_" + key + else: + hostvar = key + self.inventory.set_variable(hostname, hostvar, value) else: - self.inventory.set_variable(hostname, attribute, extracted_value) + if self.host_vars_prefix: + hostvar = "netbox_" + attribute + else: + hostvar = attribute + self.inventory.set_variable(hostname, hostvar, extracted_value) def _get_host_virtual_chassis_master(self, host): virtual_chassis = host.get("virtual_chassis", None) @@ -2019,5 +2050,7 @@ def parse(self, inventory, loader, path, cache=True): self.dns_name = self.get_option("dns_name") self.ansible_host_dns_name = self.get_option("ansible_host_dns_name") self.racks = self.get_option("racks") + self.group_names_prefix = self.get_option("group_names_prefix") + self.host_vars_prefix = self.get_option("host_vars_prefix") self.main() From 708ea6794ca3904ea00b4d4e98115a25d9db6c1e Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 30 Aug 2023 13:05:17 +0200 Subject: [PATCH 2/2] Fix linter error in nb_inventory.py --- plugins/inventory/nb_inventory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/inventory/nb_inventory.py b/plugins/inventory/nb_inventory.py index b057f7158..ece363e33 100644 --- a/plugins/inventory/nb_inventory.py +++ b/plugins/inventory/nb_inventory.py @@ -1706,7 +1706,7 @@ def generate_group_name(self, grouping, group): if self.group_names_prefix: group_name = "netbox_" + group_name - + return group_name def add_host_to_groups(self, host, hostname):