/opt/netbox/report.py
class VMScaleReport(Script):
    class Meta:
        name = "VM Scalierung prüfen"
        description = "Prüft, ob eine VM Scalierung angegeben ist."

    def test_vm_vcpus(self):
        """Prüft, ob die Anzahl der vCPUs definiert und größer als 0 ist."""
        active_vms = VirtualMachine.objects.filter(status="active")
        for vm in active_vms:
            if vm.vcpus is None:
                self.log_failure("Anzahl der vCPUs ist nicht definiert.", obj=vm)
            elif vm.vcpus <= 0:
                self.log_failure(f"Ungültige vCPU-Anzahl definiert: {vm.vcpus}", obj=vm)
            else:
                self.log_success(f"vCPUs konfiguriert: {vm.vcpus}", obj=vm)

    def test_vm_memory(self):
        """Prüft, ob der Arbeitsspeicher (RAM) definiert und größer als 0 ist."""
        active_vms = VirtualMachine.objects.filter(status="active")
        for vm in active_vms:
            if vm.memory is None:
                self.log_failure("Arbeitsspeicher (RAM) ist nicht definiert.", obj=vm)
            elif vm.memory <= 0:
                self.log_failure(f"Ungültiger RAM-Wert definiert: {vm.memory} MB", obj=vm)
            else:
                self.log_success(f"RAM konfiguriert: {vm.memory} MB", obj=vm)

    def test_vm_disk(self):
        """Prüft, ob der Festplattenspeicher (Disk) definiert und größer als 0 ist."""
        active_vms = VirtualMachine.objects.filter(status="active")
        for vm in active_vms:
            if vm.disk is None:
                self.log_failure("Festplattenspeicher (Disk) ist nicht definiert.", obj=vm)
            elif vm.disk <= 0:
                self.log_failure(f"Ungültiger Disk-Wert definiert: {vm.disk} GB", obj=vm)
            else:
                self.log_success(f"Disk konfiguriert: {vm.disk} GB", obj=vm)