aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2025-06-09 22:02:49 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2025-06-09 22:02:49 +0200
commitf9d407e77ab838c63b1c08f2c5dae5c5c1adcddc (patch)
tree9eea906d413d55b18d5f45fb329067b966fd5660
parentd534518418f465c908211d25623628e8673818c3 (diff)
downloadinfra-f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc.tar.gz
infra-f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc.tar.bz2
infra-f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc.tar.xz
infra-f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc.zip
netbox
-rw-r--r--ansible/netbox/main.py6
-rw-r--r--ansible/netbox/sync-unifi.py23
2 files changed, 22 insertions, 7 deletions
diff --git a/ansible/netbox/main.py b/ansible/netbox/main.py
deleted file mode 100644
index f77f4f0..0000000
--- a/ansible/netbox/main.py
+++ /dev/null
@@ -1,6 +0,0 @@
-def main():
- print("Hello from netbox!")
-
-
-if __name__ == "__main__":
- main()
diff --git a/ansible/netbox/sync-unifi.py b/ansible/netbox/sync-unifi.py
index 1df5e35..e26f1d5 100644
--- a/ansible/netbox/sync-unifi.py
+++ b/ansible/netbox/sync-unifi.py
@@ -94,8 +94,19 @@ class NetboxCache():
print(f"Updating interface id={iface.id}, name={iface.name}")
iface.update(i)
+ return self.nb.dcim.interfaces.get(id=iface.id)
- return iface
+ def create_or_update_mac_address(self, data):
+ ma = self.nb.dcim.mac_addresses.get(mac_address=data["mac_address"])
+ if ma is None:
+ ma = self.nb.dcim.mac_addresses.create(data)
+ print(f"Created MAC address id={ma.id}, address={ma.mac_address}")
+
+ return ma
+
+ print(f"Updating MAC address id={ma.id}, address={ma.mac_address}")
+ ma.update(data)
+ return self.nb.dcim.mac_addresses.get(id=ma.id)
def process_switch(d: UnifiDevice, db: Db, nb: NetboxCache, site, vrf):
device = nb.create_or_update_device({
@@ -118,8 +129,18 @@ def process_switch(d: UnifiDevice, db: Db, nb: NetboxCache, site, vrf):
"assigned_object": iface,
"assigned_object_id": iface.id,
"assigned_object_type": "dcim.interface",
+ "is_primary": "true",
+ })
+
+ ma = nb.create_or_update_mac_address({
+ "mac_address": d.mac,
+ "assigned_object_id": iface.id,
+ "assigned_object_type": "dcim.interface",
})
+ pprint("Interface")
+ pprint(iface.serialize())
+ pprint("IP")
pprint(ip.serialize())
def main():