diff --git a/netbox/templates/virtualization/virtualmachinetype/attrs/default_memory.html b/netbox/templates/virtualization/virtualmachinetype/attrs/default_memory.html new file mode 100644 index 000000000..62786d620 --- /dev/null +++ b/netbox/templates/virtualization/virtualmachinetype/attrs/default_memory.html @@ -0,0 +1,2 @@ +{% load helpers %} +{{ value|humanize_ram_capacity }} diff --git a/netbox/virtualization/forms/bulk_edit.py b/netbox/virtualization/forms/bulk_edit.py index 6f0feaf0e..f5f2e6e4a 100644 --- a/netbox/virtualization/forms/bulk_edit.py +++ b/netbox/virtualization/forms/bulk_edit.py @@ -91,7 +91,7 @@ class VirtualMachineTypeBulkEditForm(PrimaryModelBulkEditForm): required=False, ) default_memory = forms.IntegerField( - label=_('Default Memory (MB)'), + label=_('Default memory'), required=False, ) @@ -104,6 +104,14 @@ class VirtualMachineTypeBulkEditForm(PrimaryModelBulkEditForm): 'default_platform', 'default_vcpus', 'default_memory', 'description', 'comments', ) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Set unit label based on configured RAM_BASE_UNIT (MB vs MiB) + self.fields['default_memory'].label = _('Default memory ({unit})').format( + unit=get_capacity_unit_label(settings.RAM_BASE_UNIT) + ) + class VirtualMachineBulkEditForm(PrimaryModelBulkEditForm): virtual_machine_type = DynamicModelChoiceField( diff --git a/netbox/virtualization/forms/filtersets.py b/netbox/virtualization/forms/filtersets.py index 9cabb8321..b1958c699 100644 --- a/netbox/virtualization/forms/filtersets.py +++ b/netbox/virtualization/forms/filtersets.py @@ -128,7 +128,7 @@ class VirtualMachineTypeFilterForm(PrimaryModelFilterSetForm): required=False, ) default_memory = forms.IntegerField( - label=_('Default memory (MB)'), + label=_('Default memory'), required=False, min_value=0, ) @@ -140,6 +140,14 @@ class VirtualMachineTypeFilterForm(PrimaryModelFilterSetForm): tag = TagFilterField(model) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Set unit label based on configured RAM_BASE_UNIT (MB vs MiB) + self.fields['default_memory'].label = _('Default memory ({unit})').format( + unit=get_capacity_unit_label(settings.RAM_BASE_UNIT) + ) + class VirtualMachineFilterForm( LocalConfigContextFilterForm, diff --git a/netbox/virtualization/forms/model_forms.py b/netbox/virtualization/forms/model_forms.py index 3be14d396..aacf93d7d 100644 --- a/netbox/virtualization/forms/model_forms.py +++ b/netbox/virtualization/forms/model_forms.py @@ -192,6 +192,14 @@ class VirtualMachineTypeForm(PrimaryModelForm): 'owner', 'comments', 'tags', ) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Set unit label based on configured RAM_BASE_UNIT (MB vs MiB) + self.fields['default_memory'].label = _('Default memory ({unit})').format( + unit=get_capacity_unit_label(settings.RAM_BASE_UNIT) + ) + class VirtualMachineForm(TenancyForm, PrimaryModelForm): virtual_machine_type = forms.ModelChoiceField( diff --git a/netbox/virtualization/models/virtualmachines.py b/netbox/virtualization/models/virtualmachines.py index 5d6b59f83..16a32df96 100644 --- a/netbox/virtualization/models/virtualmachines.py +++ b/netbox/virtualization/models/virtualmachines.py @@ -62,7 +62,7 @@ class VirtualMachineType(ImageAttachmentsMixin, PrimaryModel): validators=(MinValueValidator(decimal.Decimal('0.01')),), ) default_memory = models.PositiveIntegerField( - verbose_name=_('default memory (MB)'), + verbose_name=_('default memory'), blank=True, null=True, ) diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index 8c01e3e85..8058a96e9 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -49,6 +49,10 @@ class VirtualMachineTypeTable(PrimaryModelTable): 'pk', 'name', 'default_platform', 'default_vcpus', 'default_memory', 'virtual_machine_count', 'description', ) + def render_default_memory(self, value): + return humanize_ram_capacity(value) + + # # Virtual machines # diff --git a/netbox/virtualization/ui/panels.py b/netbox/virtualization/ui/panels.py index 4132f0544..6ac0aa859 100644 --- a/netbox/virtualization/ui/panels.py +++ b/netbox/virtualization/ui/panels.py @@ -26,7 +26,11 @@ class VirtualMachineTypePanel(panels.ObjectAttributesPanel): name = attrs.TextAttr('name') default_platform = attrs.RelatedObjectAttr('default_platform', linkify=True) default_vcpus = attrs.TextAttr('default_vcpus', label=_('Default vCPUs')) - default_memory = attrs.TextAttr('default_memory', format_string=_('{0} MB'), label=_('Default memory')) + default_memory = attrs.TemplatedAttr( + 'default_memory', + template_name='virtualization/virtualmachinetype/attrs/default_memory.html', + label=_('Default memory') + ) description = attrs.TextAttr('description')