/opt/netbox/report.py
class TenantReport(Script):
    class Meta:
        name = "Tenant Zuweisung prüfen"
        description = "Prüft, ob bei allen aktiven Devices und VMs ein Tenant gesetzt ist."

    def test_device_tenants(self):
        """Prüft alle aktiven Devices auf zugewiesene Tenants."""
        active_devices = Device.objects.filter(status="active")

        for device in active_devices:
            if device.device_type.is_child_device:
                self.log_success("Child Device übersprungen.", obj=device)
                continue

            if device.tenant_id is None:
                # In NetBox v4: Erst die Nachricht, dann obj=device für die URL-Spalte
                self.log_failure("Device hat keinen Tenant zugewiesen.", obj=device)
            else:
                self.log_success("Tenant zugewiesen.", obj=device)

    def test_vm_tenants(self):
        """Prüft alle aktiven virtuellen Maschinen auf zugewiesene Tenants."""
        active_vms = VirtualMachine.objects.filter(status="active")

        for vm in active_vms:
            if vm.tenant_id is None:
                # In NetBox v4: Erst die Nachricht, dann obj=vm für die URL-Spalte
                self.log_failure("Virtual Machine hat keinen Tenant zugewiesen.", obj=vm)
            else:
                self.log_success("Tenant zugewiesen.", obj=vm)