diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index c512fe9ca..bdfb9adc2 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -85,7 +85,6 @@ class VirtualMachineSerializer(NetBoxModelSerializer): # Counter fields interface_count = serializers.IntegerField(read_only=True) virtual_disk_count = serializers.IntegerField(read_only=True) - virtual_disk_space = serializers.IntegerField(read_only=True) class Meta: model = VirtualMachine @@ -93,10 +92,16 @@ class VirtualMachineSerializer(NetBoxModelSerializer): 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', - 'interface_count', 'virtual_disk_count', 'virtual_disk_space', + 'interface_count', 'virtual_disk_count', ] validators = [] + def get_disk(self, obj): + if obj.disk: + return obj.disk + + return obj.virtual_disk_space + class VirtualMachineWithConfigContextSerializer(VirtualMachineSerializer): config_context = serializers.SerializerMethodField() diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index caf22369d..ec3f1dde1 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -93,7 +93,8 @@ class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable) verbose_name=_('Config Template'), linkify=True ) - disk_size = tables.Column( + disk = tables.Column( + empty_values=(), verbose_name=_('Disk Size (GB)'), ) @@ -101,18 +102,26 @@ class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable) model = VirtualMachine fields = ( 'pk', 'id', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'tenant_group', 'platform', - 'vcpus', 'memory', 'disk', 'disk_size', 'primary_ip4', 'primary_ip6', 'primary_ip', 'description', 'comments', + 'vcpus', 'memory', 'disk', 'primary_ip4', 'primary_ip6', 'primary_ip', 'description', 'comments', 'config_template', 'contacts', 'tags', 'created', 'last_updated', ) default_columns = ( - 'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk_size', 'primary_ip', + 'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk', 'primary_ip', ) + def render_disk(self, value, record): + if record.disk: + return record.disk + elif record.disk_size: + return record.disk_size + else: + return '—' # # VM components # + class VMInterfaceTable(BaseInterfaceTable): virtual_machine = tables.Column( verbose_name=_('Virtual Machine'),