Skip to content
Snippets Groups Projects
Commit 29ee7288 authored by Fahrudin Halilovic's avatar Fahrudin Halilovic
Browse files

Fixed m2m signal triggering behavior for tag assignments.

parent c14c2a90
No related branches found
No related tags found
1 merge request!2Fixed m2m signal triggering behavior for tag assignments.
Pipeline #199823 passed
This commit is part of merge request !2. Comments created here will be created in the context of that merge request.
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment