diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2025-06-09 22:02:49 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2025-06-09 22:02:49 +0200 |
commit | f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc (patch) | |
tree | 9eea906d413d55b18d5f45fb329067b966fd5660 | |
parent | d534518418f465c908211d25623628e8673818c3 (diff) | |
download | infra-f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc.tar.gz infra-f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc.tar.bz2 infra-f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc.tar.xz infra-f9d407e77ab838c63b1c08f2c5dae5c5c1adcddc.zip |
netbox
-rw-r--r-- | ansible/netbox/main.py | 6 | ||||
-rw-r--r-- | ansible/netbox/sync-unifi.py | 23 |
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(): |