diff --git a/netbox_awx_plugin/signals.py b/netbox_awx_plugin/signals.py index bd6bc2ce730c9a7283cc170558a01b7b6f4e5b21..44a073e8bc11fca1a170a7d3582b02fcf5a8456c 100644 --- a/netbox_awx_plugin/signals.py +++ b/netbox_awx_plugin/signals.py @@ -37,8 +37,11 @@ def process_inventory_task(task_name, sender, instance): enqueue_task(task_name, inventory, sender, instance) -### Signal Handlers for Group-Related Models ### -@receiver(post_save, sender=[Site, DeviceRole, DeviceType, Prefix, Tag]) +@receiver(post_save, sender=Site) +@receiver(post_save, sender=DeviceRole) +@receiver(post_save, sender=DeviceType) +@receiver(post_save, sender=Prefix) +@receiver(post_save, sender=Tag) def handle_group_post_save(sender, instance, **kwargs): """ Handles post-save events for group-related models. @@ -48,7 +51,11 @@ def handle_group_post_save(sender, instance, **kwargs): -@receiver(pre_save, sender=[Site, DeviceRole, DeviceType, Prefix]) +@receiver(pre_save, sender=Site) +@receiver(pre_save, sender=DeviceRole) +@receiver(pre_save, sender=DeviceType) +@receiver(pre_save, sender=Prefix) +@receiver(pre_save, sender=Tag) def handle_group_pre_save(sender, instance, **kwargs): """ Handles pre-save events for group-related models to store the original instance for comparison. @@ -59,15 +66,20 @@ def handle_group_pre_save(sender, instance, **kwargs): -@receiver(post_delete, sender=[Site, DeviceRole, DeviceType, Prefix, Tag]) +@receiver(post_delete, sender=Site) +@receiver(post_delete, sender=DeviceRole) +@receiver(post_delete, sender=DeviceType) +@receiver(post_delete, sender=Prefix) +@receiver(post_delete, sender=Tag) def handle_group_post_delete(sender, instance, **kwargs): """ Handles post-delete events for group-related models to remove AWX groups when objects are deleted. """ process_inventory_task("delete_group", sender, instance) -### Signal Handlers for Device and VirtualMachine ### -@receiver(post_save, sender=[Device, VirtualMachine]) + +@receiver(post_save, sender=Device) +@receiver(post_save, sender=VirtualMachine) def handle_device_post_save(sender, instance, **kwargs): """ Handles post-save events for Devices and Virtual Machines. @@ -93,16 +105,11 @@ def handle_interface_post_save(sender, instance, **kwargs): @receiver(m2m_changed, sender=Device.tags.through) +def handle_device_tag_assignment(sender, instance, action, reverse, model, pk_set, **kwargs): + if isinstance(instance, Device): + process_inventory_task("sync_host", Device, instance) + @receiver(m2m_changed, sender=VirtualMachine.tags.through) -def handle_tag_assignment(sender, instance, action, reverse, model, pk_set, **kwargs): - """ - Handles many-to-many change events (m2m_changed) for Device and VirtualMachine tags. - Associates hosts with AWX groups when tags are assigned. - """ - if action == "post_add": - logger.debug(f"Tags added to {instance}. Syncing host with AWX group.") - process_inventory_task("sync_host", Device if Device.tags.through else VirtualMachine, instance) - if action == "post_remove": - logger.debug(f"Tags removed to {instance}. Syncing host with AWX group.") - process_inventory_task("sync_host", Device if Device.tags.through else VirtualMachine, instance) - \ No newline at end of file +def handle_vm_tag_assignment(sender, instance, action, reverse, model, pk_set, **kwargs): + if isinstance(instance, VirtualMachine): + process_inventory_task("sync_host", VirtualMachine, instance)