diff --git a/netbox_awx_plugin/__init__.py b/netbox_awx_plugin/__init__.py index 716e4656d0fce88dae698b3eb62a3ea8296dcaa1..2abb51b9d44371c53bd814c9869371c163eaf875 100644 --- a/netbox_awx_plugin/__init__.py +++ b/netbox_awx_plugin/__init__.py @@ -12,7 +12,7 @@ class AWXConfig(PluginConfig): name = "netbox_awx_plugin" verbose_name = "NetBox AWX Plugin" description = "NetBox plugin for AWX integration." - version = "version" + version = __version__ # Ensure the version is tied to the correct variable base_url = "netbox_awx_plugin" def ready(self): diff --git a/netbox_awx_plugin/signals.py b/netbox_awx_plugin/signals.py index 7d0546c5b8cc5bb02e89bafb615dfcaa8c7146c0..a4d0fd3ab3a238f4cc2cff6d830047c599cbfd96 100644 --- a/netbox_awx_plugin/signals.py +++ b/netbox_awx_plugin/signals.py @@ -38,21 +38,17 @@ def process_inventory_task(task_name, sender, instance): ### Signal Handlers for Group-Related Models ### -@receiver([post_save], sender=Site) -@receiver([post_save], sender=DeviceRole) -@receiver([post_save], sender=DeviceType) -@receiver([post_save], sender=Prefix) -def handle_group_post_save(sender, instance, created, **kwargs): +@receiver(post_save, sender=[Site, DeviceRole, DeviceType, Prefix, Tag]) +def handle_group_post_save(sender, instance, **kwargs): """ - Handles post-save events for group-related models like Site, DeviceRole, etc. - This synchronizes AWX groups when the object is saved. + Handles post-save events for group-related models. + Synchronizes AWX groups when the object is saved. """ process_inventory_task("sync_group", sender, instance) -@receiver([pre_save], sender=Site) -@receiver([pre_save], sender=DeviceRole) -@receiver([pre_save], sender=DeviceType) -@receiver([pre_save], sender=Prefix) + + +@receiver(pre_save, sender=[Site, DeviceRole, DeviceType, Prefix]) def handle_group_pre_save(sender, instance, **kwargs): """ Handles pre-save events for group-related models to store the original instance for comparison. @@ -62,10 +58,8 @@ def handle_group_pre_save(sender, instance, **kwargs): logger.debug(f"Original object stored for {sender.__name__} instance {instance.pk}") -@receiver([post_delete], sender=Site) -@receiver([post_delete], sender=DeviceRole) -@receiver([post_delete], sender=DeviceType) -@receiver([post_delete], sender=Prefix) + +@receiver(post_save, sender=[Site, DeviceRole, DeviceType, Prefix]) def handle_group_post_delete(sender, instance, **kwargs): """ Handles post-delete events for group-related models to remove AWX groups when objects are deleted. @@ -73,8 +67,7 @@ def handle_group_post_delete(sender, instance, **kwargs): process_inventory_task("delete_group", sender, instance) ### Signal Handlers for Device and VirtualMachine ### -@receiver([post_save], sender=Device) -@receiver([post_save], sender=VirtualMachine) +@receiver(post_save, sender=[Device, VirtualMachine]) def handle_device_post_save(sender, instance, **kwargs): """ Handles post-save events for Devices and Virtual Machines. @@ -98,13 +91,6 @@ def handle_interface_post_save(sender, instance, **kwargs): logger.debug(f"Interface {instance.pk} saved, delegating sync to associated Device.") handle_device_post_save(Device, instance.device, **kwargs) -### Tag Synchronization ### -@receiver(post_save, sender=Tag) -def handle_tag_post_save(sender, instance, created, **kwargs): - """ - Handles post-save events for Tags. Synchronizes AWX groups when a Tag is saved. - """ - process_inventory_task("sync_group", sender, instance) @receiver(m2m_changed, sender=Device.tags.through) @receiver(m2m_changed, sender=VirtualMachine.tags.through) diff --git a/netbox_awx_plugin/synchronization.py b/netbox_awx_plugin/synchronization.py index f5fd96f14c24dd9b1bd9634ba3c45f543abf5f15..17a72a00f589f49018d1d7849f6c1af148fcb1db 100644 --- a/netbox_awx_plugin/synchronization.py +++ b/netbox_awx_plugin/synchronization.py @@ -163,7 +163,7 @@ serializers = { def sync_host(inventory, sender, instance): serializer = serializers[sender](instance) - host = inventory.get_host(serializer.data["name"]) + host = inventory.get_host(serializer.data["name"]) if host is None: # If the host doesn't exist, create it. inventory.create_host(serializer.data)