mirror of
https://github.com/bb-Ricardo/netbox-sync.git
synced 2026-01-23 01:10:07 -06:00
adds support for site scope on cluster object in NetBox 4.2.0 #436
This commit is contained in:
@@ -1167,6 +1167,17 @@ class NetBoxObject:
|
||||
if isinstance(this_site, dict):
|
||||
return this_site.get("name")
|
||||
|
||||
this_scope_type = this_data_set.get("scope_type")
|
||||
this_site = this_data_set.get("scope_id")
|
||||
|
||||
if this_scope_type == "dcim.site" and this_site is not None:
|
||||
|
||||
if isinstance(this_site, NetBoxObject):
|
||||
return this_site.get_display_name()
|
||||
|
||||
if isinstance(this_site, dict):
|
||||
return this_site.get("name")
|
||||
|
||||
|
||||
class NBObjectList(list):
|
||||
"""
|
||||
@@ -1589,11 +1600,26 @@ class NBCluster(NetBoxObject):
|
||||
"type": NBClusterType,
|
||||
"tenant": NBTenant,
|
||||
"group": NBClusterGroup,
|
||||
"site": NBSite,
|
||||
"scope_type": ["dcim.site", "dcim.sitegroup", "dcim.location", "dcim.region"],
|
||||
"scope_id": NBSite,
|
||||
"tags": NBTagList
|
||||
}
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
class NBDevice(NetBoxObject):
|
||||
name = "device"
|
||||
|
||||
@@ -281,7 +281,8 @@ class SourceBase:
|
||||
|
||||
if type(device_object) == NBVM:
|
||||
interface_class = NBVMInterface
|
||||
site_name = grab(device_object, "data.cluster.data.site.data.name")
|
||||
interface_cluster = grab(device_object, "data.cluster")
|
||||
site_name = interface_cluster.get_site_name()
|
||||
elif type(device_object) == NBDevice:
|
||||
interface_class = NBInterface
|
||||
site_name = grab(device_object, "data.site.data.name")
|
||||
|
||||
@@ -1378,10 +1378,15 @@ class VMWareHandler(SourceBase):
|
||||
data = {
|
||||
"name": name,
|
||||
"type": {"name": "VMware ESXi"},
|
||||
"group": group,
|
||||
"site": {"name": site_name}
|
||||
"group": group
|
||||
}
|
||||
|
||||
if version.parse(self.inventory.netbox_api_version) >= version.parse("4.2.0"):
|
||||
data["scope_id"] = {"name": site_name}
|
||||
data["scope_type"] = "dcim.site"
|
||||
else:
|
||||
data["site"] = {"name": site_name}
|
||||
|
||||
tenant_name = self.get_object_relation(full_cluster_name, "cluster_tenant_relation")
|
||||
if tenant_name is not None:
|
||||
data["tenant"] = {"name": tenant_name}
|
||||
|
||||
Reference in New Issue
Block a user