From 9a70da1c12e223dc43867a238fafb68599508db0 Mon Sep 17 00:00:00 2001 From: Noah Date: Fri, 22 Aug 2025 16:28:53 +1000 Subject: [PATCH] cleaned up a bit --- module/netbox/object_classes.py | 30 ++--------------------------- module/sources/vmware/config.py | 1 + module/sources/vmware/connection.py | 17 +++------------- 3 files changed, 6 insertions(+), 42 deletions(-) diff --git a/module/netbox/object_classes.py b/module/netbox/object_classes.py index 635a714..7121d8f 100644 --- a/module/netbox/object_classes.py +++ b/module/netbox/object_classes.py @@ -563,6 +563,7 @@ class NetBoxObject: # check data model to see how we have to parse the value defined_value_type = self.data_model.get(key) + # value must be a string witch a certain max length if isinstance(defined_value_type, int): if not isinstance(value, str): @@ -586,7 +587,7 @@ class NetBoxObject: # check if value is in defined list elif value not in defined_value_type: - log.error(f"this one. Invalid data type for '{key}' (must be one of {defined_value_type}), got: '{value}'") + log.error(f"Invalid data type for '{key}' (must be one of {defined_value_type}), got: '{value}'") continue # just check the type of the value @@ -1272,21 +1273,6 @@ class NetBoxObject: if isinstance(this_site, dict): return this_site.get("name") - - def get_scope_type(self, data=None): - this_data_set = data - if this_data_set is None: - this_data_set = self.data - - return this_data_set.get("scope_type") - - def get_scope_id(self, data=None): - this_data_set = data - if this_data_set is None: - this_data_set = self.data - - return this_data_set.get("scope_id") - class NBObjectList(list): """ @@ -1884,7 +1870,6 @@ class NBCluster(NetBoxObject): primary_key = "name" secondary_key = "scope_id" prune = False - # include_secondary_key_if_present = True def __init__(self, *args, **kwargs): self.mapping = NetBoxMappings() @@ -1906,21 +1891,10 @@ class NBCluster(NetBoxObject): def update(self, data=None, read_from_netbox=False, source=None): - # Add adaption for change in NetBox 4.2.0 Device model - # if version.parse(self.inventory.netbox_api_version) >= version.parse("4.2.0"): - # if data.get("site") is not None: - # data["scope_id"] = data.get("site") - # data["scope_type"] = "dcim.site" - # del data["site"] - - # if data.get("scope_id") is not None: - # data["scope_type"] = "dcim.site" - super().update(data=data, read_from_netbox=read_from_netbox, source=source) def resolve_relations(self): log.debug2(f"Resolving relations for {self.name} '{self.get_display_name()}'") - # self.resolve_scoped_relations("scope_id", "scope_type") super().resolve_relations() diff --git a/module/sources/vmware/config.py b/module/sources/vmware/config.py index c884df6..a8cac9c 100644 --- a/module/sources/vmware/config.py +++ b/module/sources/vmware/config.py @@ -149,6 +149,7 @@ class VMWareConfig(ConfigBase): The scope type can be 'dcim.site', 'dcim.sitegroup', 'dcim.location' or 'dcim.region'. This is done with a comma separated key = value list. Can be set to "" to not assign a scope type. + Note: this does not remove scope types from existing clusters in NetBox. key: defines a cluster name as regex value: defines the NetBox scope type name (use quotes if name contains commas) """, diff --git a/module/sources/vmware/connection.py b/module/sources/vmware/connection.py index 7ea2d57..c8c25a3 100644 --- a/module/sources/vmware/connection.py +++ b/module/sources/vmware/connection.py @@ -498,10 +498,7 @@ class VMWareHandler(SourceBase): site_name = None log.debug2(f"Site relation for '{object_name}' set to None") - if site_name is None and object_type == NBCluster: - log.debug(f"No site relation for {object_type.name} '{object_name}' found") - - log.debug(f"Returning site name '{site_name}' for {object_type.name} '{object_name}'. End of method.") + log.debug2(f"Returning site name '{site_name}' for {object_type.name} '{object_name}'.") return site_name @@ -574,12 +571,6 @@ class VMWareHandler(SourceBase): relation_name = "cluster_scope_id_relation" scope_id = self.get_object_relation(object_name, relation_name) - - # object_instance = self.inventory.get_by_data(object_type, data={"name": object_name}) - - # if object_instance is None: - # log.debug2(f"No {object_type.name} found with name '{object_name}'.") - # return None if scope_id is None: scope_id = object_name @@ -1501,7 +1492,7 @@ class VMWareHandler(SourceBase): } if version.parse(self.inventory.netbox_api_version) >= version.parse("4.2.0"): - # four scope types here (dcim.site, dcim.location, dcim.region, dcim.sitegroup) + # set the scope type and id if they are defined if scope_type is not None: data["scope_type"] = scope_type data["scope_id"] = scope_id @@ -1513,7 +1504,7 @@ class VMWareHandler(SourceBase): else: log.debug(f"Cluster '{full_cluster_name}' has no scope type or scope id.") else: - # old verison has site only (# TODO: required??) --> optional (tested in netbox versions 4.1.11 and 3.7.1) + # set site_name in the pre-4.2.0 NetBox versions is one is found if site_name is not None: data["site"] = {"name": site_name} @@ -1568,10 +1559,8 @@ class VMWareHandler(SourceBase): cluster_object = fallback_cluster_object if cluster_object is not None: - # log.debug(f"1st The data items are {data.items()} for cluster '{name}'") cluster_object.update(data=data, source=self) else: - # log.debug(f"1st (alternative) The data items are {data.items()} for cluster '{name}'") cluster_object = self.inventory.add_update_object(NBCluster, data=data, source=self) self.add_object_to_cache(obj, cluster_object)