diff --git a/modules/device.py b/modules/device.py index f02f35b..e61cede 100644 --- a/modules/device.py +++ b/modules/device.py @@ -320,7 +320,10 @@ class PhysicalDevice: for group in groups: if group["name"] == hg: self.group_ids.append({"groupid": group["groupid"]}) - e = f"Host {self.name}: matched group \"{group['name']}\" (ID:{group['groupid']})" + e = ( + f"Host {self.name}: matched group " + f"\"{group['name']}\" (ID:{group['groupid']})" + ) self.logger.debug(e) if len(self.group_ids) == len(self.hostgroups): return True @@ -500,7 +503,6 @@ class PhysicalDevice: templateids.append({"templateid": template["templateid"]}) # Set interface, group and template configuration interfaces = self.setInterfaceDetails() - groups = self.group_ids # Set Zabbix proxy if defined self.setProxy(proxies) @@ -702,9 +704,9 @@ class PhysicalDevice: if str(self.zabbix.version).startswith(("6", "5")): group_dictname = "groups" # Check if hostgroups match - if (sorted(host[group_dictname], key=itemgetter('groupid')) == - sorted(self.group_ids, key=itemgetter('groupid'))): - self.logger.debug(f"Host {self.name}: hostgroups in-sync.") + if (sorted(host[group_dictname], key=itemgetter('groupid')) == + sorted(self.group_ids, key=itemgetter('groupid'))): + self.logger.debug(f"Host {self.name}: hostgroups in-sync.") else: self.logger.warning(f"Host {self.name}: hostgroups OUT of sync.") self.updateZabbixHost(groups=self.group_ids) diff --git a/modules/tools.py b/modules/tools.py index 3f7bf81..0b600c2 100644 --- a/modules/tools.py +++ b/modules/tools.py @@ -101,10 +101,14 @@ def remove_duplicates(input_list, sortkey=None): return output_list -def verify_hg_format(hg_format, device_cfs=[], vm_cfs=[], hg_type="dev", logger=None): +def verify_hg_format(hg_format, device_cfs=None, vm_cfs=None, hg_type="dev", logger=None): """ Verifies hostgroup field format """ + if not device_cfs: + device_cfs = [] + if not vm_cfs: + vm_cfs = [] allowed_objects = {"dev": ["location", "rack", "role", @@ -130,9 +134,9 @@ def verify_hg_format(hg_format, device_cfs=[], vm_cfs=[], hg_type="dev", logger= ,"cfs": {"dev": [], "vm": []} } for cf in device_cfs: - allowed_objects['cfs']['dev'].append(cf.name) + allowed_objects['cfs']['dev'].append(cf.name) for cf in vm_cfs: - allowed_objects['cfs']['vm'].append(cf.name) + allowed_objects['cfs']['vm'].append(cf.name) hg_objects = [] if isinstance(hg_format,list): for f in hg_format: @@ -185,4 +189,4 @@ def sanatize_log_output(data): continue # A macro is not used, so we sanitize the value. sanitized_data["details"][key] = "********" - return sanitized_data \ No newline at end of file + return sanitized_data diff --git a/netbox_zabbix_sync.py b/netbox_zabbix_sync.py index afab914..d9ff71b 100755 --- a/netbox_zabbix_sync.py +++ b/netbox_zabbix_sync.py @@ -83,12 +83,14 @@ def main(arguments): device_cfs = list( netbox.extras.custom_fields.filter(type="text", content_types="dcim.device") ) - verify_hg_format(hostgroup_format, device_cfs=device_cfs, hg_type="dev", logger=logger) - if sync_vms: + verify_hg_format(config["hostgroup_format"], + device_cfs=device_cfs, hg_type="dev", logger=logger) + if config["sync_vms"]: vm_cfs = list( - netbox.extras.custom_fields.filter(type="text", content_types="virtualization.virtualmachine") + netbox.extras.custom_fields.filter(type="text", + content_types="virtualization.virtualmachine") ) - verify_hg_format(vm_hostgroup_format, vm_cfs=vm_cfs, hg_type="vm", logger=logger) + verify_hg_format(config["vm_hostgroup_format"], vm_cfs=vm_cfs, hg_type="vm", logger=logger) # Set Zabbix API try: ssl_ctx = ssl.create_default_context() @@ -173,7 +175,7 @@ def main(arguments): if vm.status in config["zabbix_device_disable"]: vm.zabbix_state = 1 # Add hostgroup if config is set - if create_hostgroups: + if config["create_hostgroups"]: # Create new hostgroup. Potentially multiple groups if nested hostgroups = vm.createZabbixHostgroup(zabbix_groups) # go through all newly created hostgroups @@ -249,7 +251,7 @@ def main(arguments): if device.status in config["zabbix_device_disable"]: device.zabbix_state = 1 # Add hostgroup is config is set - if create_hostgroups: + if config["create_hostgroups"]: # Create new hostgroup. Potentially multiple groups if nested hostgroups = device.createZabbixHostgroup(zabbix_groups) # go through all newly created hostgroups