from django.urls import reverse from django.utils.safestring import mark_safe from django_tables2 import Column from virtualization.models import VirtualMachine from virtualization.tables import VirtualMachineTable class VMStatusTable(VirtualMachineTable): """ Table for displaying virtual machine LibreNMS status. """ librenms_status = Column( verbose_name="LibreNMS Status", empty_values=(), accessor="librenms_status", orderable=False, ) def render_librenms_status(self, value, record): """Render the LibreNMS status with styles based on sync status.""" sync_url = reverse( "plugins:netbox_librenms_plugin:vm_librenms_sync", kwargs={"pk": record.pk}, ) if value: status = ' Synced' elif value is False: status = ' Not Found' else: status = ' Unknown' return mark_safe(f'{status}') class Meta(VirtualMachineTable.Meta): """Meta options for VMStatusTable.""" model = VirtualMachine fields = ( "pk", "name", "status", "cluster", "cluster_type", "cluster_group", "librenms_status", ) default_columns = ( "name", "status", "cluster", "cluster_type", "cluster_group", "librenms_status", )