mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Renamed device status constants for clarity
This commit is contained in:
@ -7,8 +7,8 @@ from rest_framework.validators import UniqueTogetherValidator
|
|||||||
|
|
||||||
from circuits.models import Circuit, CircuitTermination
|
from circuits.models import Circuit, CircuitTermination
|
||||||
from dcim.constants import (
|
from dcim.constants import (
|
||||||
CONNECTION_STATUS_CHOICES, IFACE_FF_CHOICES, IFACE_MODE_CHOICES, IFACE_ORDERING_CHOICES, RACK_FACE_CHOICES,
|
CONNECTION_STATUS_CHOICES, DEVICE_STATUS_CHOICES, IFACE_FF_CHOICES, IFACE_MODE_CHOICES, IFACE_ORDERING_CHOICES,
|
||||||
RACK_TYPE_CHOICES, RACK_WIDTH_CHOICES, STATUS_CHOICES, SUBDEVICE_ROLE_CHOICES,
|
RACK_FACE_CHOICES, RACK_TYPE_CHOICES, RACK_WIDTH_CHOICES, SUBDEVICE_ROLE_CHOICES,
|
||||||
)
|
)
|
||||||
from dcim.models import (
|
from dcim.models import (
|
||||||
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
||||||
@ -483,7 +483,7 @@ class DeviceSerializer(CustomFieldModelSerializer):
|
|||||||
site = NestedSiteSerializer()
|
site = NestedSiteSerializer()
|
||||||
rack = NestedRackSerializer()
|
rack = NestedRackSerializer()
|
||||||
face = ChoiceFieldSerializer(choices=RACK_FACE_CHOICES)
|
face = ChoiceFieldSerializer(choices=RACK_FACE_CHOICES)
|
||||||
status = ChoiceFieldSerializer(choices=STATUS_CHOICES)
|
status = ChoiceFieldSerializer(choices=DEVICE_STATUS_CHOICES)
|
||||||
primary_ip = DeviceIPAddressSerializer()
|
primary_ip = DeviceIPAddressSerializer()
|
||||||
primary_ip4 = DeviceIPAddressSerializer()
|
primary_ip4 = DeviceIPAddressSerializer()
|
||||||
primary_ip6 = DeviceIPAddressSerializer()
|
primary_ip6 = DeviceIPAddressSerializer()
|
||||||
|
@ -203,19 +203,19 @@ IFACE_MODE_CHOICES = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
# Device statuses
|
# Device statuses
|
||||||
STATUS_OFFLINE = 0
|
DEVICE_STATUS_OFFLINE = 0
|
||||||
STATUS_ACTIVE = 1
|
DEVICE_STATUS_ACTIVE = 1
|
||||||
STATUS_PLANNED = 2
|
DEVICE_STATUS_PLANNED = 2
|
||||||
STATUS_STAGED = 3
|
DEVICE_STATUS_STAGED = 3
|
||||||
STATUS_FAILED = 4
|
DEVICE_STATUS_FAILED = 4
|
||||||
STATUS_INVENTORY = 5
|
DEVICE_STATUS_INVENTORY = 5
|
||||||
STATUS_CHOICES = [
|
DEVICE_STATUS_CHOICES = [
|
||||||
[STATUS_ACTIVE, 'Active'],
|
[DEVICE_STATUS_ACTIVE, 'Active'],
|
||||||
[STATUS_OFFLINE, 'Offline'],
|
[DEVICE_STATUS_OFFLINE, 'Offline'],
|
||||||
[STATUS_PLANNED, 'Planned'],
|
[DEVICE_STATUS_PLANNED, 'Planned'],
|
||||||
[STATUS_STAGED, 'Staged'],
|
[DEVICE_STATUS_STAGED, 'Staged'],
|
||||||
[STATUS_FAILED, 'Failed'],
|
[DEVICE_STATUS_FAILED, 'Failed'],
|
||||||
[STATUS_INVENTORY, 'Inventory'],
|
[DEVICE_STATUS_INVENTORY, 'Inventory'],
|
||||||
]
|
]
|
||||||
|
|
||||||
# Bootstrap CSS classes for device stasuses
|
# Bootstrap CSS classes for device stasuses
|
||||||
|
@ -11,7 +11,7 @@ from tenancy.models import Tenant
|
|||||||
from utilities.filters import NullableCharFieldFilter, NumericInFilter
|
from utilities.filters import NullableCharFieldFilter, NumericInFilter
|
||||||
from virtualization.models import Cluster
|
from virtualization.models import Cluster
|
||||||
from .constants import (
|
from .constants import (
|
||||||
IFACE_FF_LAG, NONCONNECTABLE_IFACE_TYPES, STATUS_CHOICES, VIRTUAL_IFACE_TYPES, WIRELESS_IFACE_TYPES,
|
DEVICE_STATUS_CHOICES, IFACE_FF_LAG, NONCONNECTABLE_IFACE_TYPES, VIRTUAL_IFACE_TYPES, WIRELESS_IFACE_TYPES,
|
||||||
)
|
)
|
||||||
from .models import (
|
from .models import (
|
||||||
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
||||||
@ -446,7 +446,7 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|||||||
label='Device model (slug)',
|
label='Device model (slug)',
|
||||||
)
|
)
|
||||||
status = django_filters.MultipleChoiceFilter(
|
status = django_filters.MultipleChoiceFilter(
|
||||||
choices=STATUS_CHOICES,
|
choices=DEVICE_STATUS_CHOICES,
|
||||||
null_value=None
|
null_value=None
|
||||||
)
|
)
|
||||||
is_full_depth = django_filters.BooleanFilter(
|
is_full_depth = django_filters.BooleanFilter(
|
||||||
|
@ -22,10 +22,10 @@ from utilities.forms import (
|
|||||||
)
|
)
|
||||||
from virtualization.models import Cluster
|
from virtualization.models import Cluster
|
||||||
from .constants import (
|
from .constants import (
|
||||||
CONNECTION_STATUS_CHOICES, CONNECTION_STATUS_CONNECTED, IFACE_FF_CHOICES, IFACE_FF_LAG, IFACE_MODE_ACCESS,
|
CONNECTION_STATUS_CHOICES, CONNECTION_STATUS_CONNECTED, DEVICE_STATUS_CHOICES, IFACE_FF_CHOICES, IFACE_FF_LAG,
|
||||||
IFACE_MODE_CHOICES, IFACE_MODE_TAGGED_ALL, IFACE_ORDERING_CHOICES, RACK_FACE_CHOICES, RACK_TYPE_CHOICES,
|
IFACE_MODE_ACCESS, IFACE_MODE_CHOICES, IFACE_MODE_TAGGED_ALL, IFACE_ORDERING_CHOICES, RACK_FACE_CHOICES,
|
||||||
RACK_WIDTH_CHOICES, RACK_WIDTH_19IN, RACK_WIDTH_23IN, STATUS_CHOICES, SUBDEVICE_ROLE_CHILD, SUBDEVICE_ROLE_PARENT,
|
RACK_TYPE_CHOICES, RACK_WIDTH_CHOICES, RACK_WIDTH_19IN, RACK_WIDTH_23IN, SUBDEVICE_ROLE_CHILD,
|
||||||
SUBDEVICE_ROLE_CHOICES,
|
SUBDEVICE_ROLE_PARENT, SUBDEVICE_ROLE_CHOICES,
|
||||||
)
|
)
|
||||||
from .formfields import MACAddressFormField
|
from .formfields import MACAddressFormField
|
||||||
from .models import (
|
from .models import (
|
||||||
@ -888,7 +888,7 @@ class BaseDeviceCSVForm(forms.ModelForm):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
status = CSVChoiceField(
|
status = CSVChoiceField(
|
||||||
choices=STATUS_CHOICES,
|
choices=DEVICE_STATUS_CHOICES,
|
||||||
help_text='Operational status of device'
|
help_text='Operational status of device'
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1025,7 +1025,7 @@ class DeviceBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
|
|||||||
device_role = forms.ModelChoiceField(queryset=DeviceRole.objects.all(), required=False, label='Role')
|
device_role = forms.ModelChoiceField(queryset=DeviceRole.objects.all(), required=False, label='Role')
|
||||||
tenant = forms.ModelChoiceField(queryset=Tenant.objects.all(), required=False)
|
tenant = forms.ModelChoiceField(queryset=Tenant.objects.all(), required=False)
|
||||||
platform = forms.ModelChoiceField(queryset=Platform.objects.all(), required=False)
|
platform = forms.ModelChoiceField(queryset=Platform.objects.all(), required=False)
|
||||||
status = forms.ChoiceField(choices=add_blank_choice(STATUS_CHOICES), required=False, initial='')
|
status = forms.ChoiceField(choices=add_blank_choice(DEVICE_STATUS_CHOICES), required=False, initial='')
|
||||||
serial = forms.CharField(max_length=50, required=False, label='Serial Number')
|
serial = forms.CharField(max_length=50, required=False, label='Serial Number')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -1036,7 +1036,7 @@ def device_status_choices():
|
|||||||
status_counts = {}
|
status_counts = {}
|
||||||
for status in Device.objects.values('status').annotate(count=Count('status')).order_by('status'):
|
for status in Device.objects.values('status').annotate(count=Count('status')).order_by('status'):
|
||||||
status_counts[status['status']] = status['count']
|
status_counts[status['status']] = status['count']
|
||||||
return [(s[0], '{} ({})'.format(s[1], status_counts.get(s[0], 0))) for s in STATUS_CHOICES]
|
return [(s[0], '{} ({})'.format(s[1], status_counts.get(s[0], 0))) for s in DEVICE_STATUS_CHOICES]
|
||||||
|
|
||||||
|
|
||||||
class DeviceFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
class DeviceFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
||||||
|
@ -844,7 +844,7 @@ class Device(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
help_text='The lowest-numbered unit occupied by the device'
|
help_text='The lowest-numbered unit occupied by the device'
|
||||||
)
|
)
|
||||||
face = models.PositiveSmallIntegerField(blank=True, null=True, choices=RACK_FACE_CHOICES, verbose_name='Rack face')
|
face = models.PositiveSmallIntegerField(blank=True, null=True, choices=RACK_FACE_CHOICES, verbose_name='Rack face')
|
||||||
status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, default=STATUS_ACTIVE, verbose_name='Status')
|
status = models.PositiveSmallIntegerField(choices=DEVICE_STATUS_CHOICES, default=DEVICE_STATUS_ACTIVE, verbose_name='Status')
|
||||||
primary_ip4 = models.OneToOneField(
|
primary_ip4 = models.OneToOneField(
|
||||||
'ipam.IPAddress', related_name='primary_ip4_for', on_delete=models.SET_NULL, blank=True, null=True,
|
'ipam.IPAddress', related_name='primary_ip4_for', on_delete=models.SET_NULL, blank=True, null=True,
|
||||||
verbose_name='Primary IPv4'
|
verbose_name='Primary IPv4'
|
||||||
|
@ -26,7 +26,7 @@ class DeviceTestCase(TestCase):
|
|||||||
'face': RACK_FACE_FRONT,
|
'face': RACK_FACE_FRONT,
|
||||||
'position': 41,
|
'position': 41,
|
||||||
'platform': get_id(Platform, 'juniper-junos'),
|
'platform': get_id(Platform, 'juniper-junos'),
|
||||||
'status': STATUS_ACTIVE,
|
'status': DEVICE_STATUS_ACTIVE,
|
||||||
})
|
})
|
||||||
self.assertTrue(test.is_valid(), test.fields['position'].choices)
|
self.assertTrue(test.is_valid(), test.fields['position'].choices)
|
||||||
self.assertTrue(test.save())
|
self.assertTrue(test.save())
|
||||||
@ -43,7 +43,7 @@ class DeviceTestCase(TestCase):
|
|||||||
'face': RACK_FACE_FRONT,
|
'face': RACK_FACE_FRONT,
|
||||||
'position': 1,
|
'position': 1,
|
||||||
'platform': get_id(Platform, 'juniper-junos'),
|
'platform': get_id(Platform, 'juniper-junos'),
|
||||||
'status': STATUS_ACTIVE,
|
'status': DEVICE_STATUS_ACTIVE,
|
||||||
})
|
})
|
||||||
self.assertFalse(test.is_valid())
|
self.assertFalse(test.is_valid())
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ class DeviceTestCase(TestCase):
|
|||||||
'face': None,
|
'face': None,
|
||||||
'position': None,
|
'position': None,
|
||||||
'platform': None,
|
'platform': None,
|
||||||
'status': STATUS_ACTIVE,
|
'status': DEVICE_STATUS_ACTIVE,
|
||||||
})
|
})
|
||||||
self.assertTrue(test.is_valid())
|
self.assertTrue(test.is_valid())
|
||||||
self.assertTrue(test.save())
|
self.assertTrue(test.save())
|
||||||
@ -76,7 +76,7 @@ class DeviceTestCase(TestCase):
|
|||||||
'face': RACK_FACE_REAR,
|
'face': RACK_FACE_REAR,
|
||||||
'position': None,
|
'position': None,
|
||||||
'platform': None,
|
'platform': None,
|
||||||
'status': STATUS_ACTIVE,
|
'status': DEVICE_STATUS_ACTIVE,
|
||||||
})
|
})
|
||||||
self.assertTrue(test.is_valid())
|
self.assertTrue(test.is_valid())
|
||||||
self.assertTrue(test.save())
|
self.assertTrue(test.save())
|
||||||
|
@ -8,7 +8,7 @@ from django.db import transaction
|
|||||||
from ncclient.transport.errors import AuthenticationError
|
from ncclient.transport.errors import AuthenticationError
|
||||||
from paramiko import AuthenticationException
|
from paramiko import AuthenticationException
|
||||||
|
|
||||||
from dcim.models import Device, InventoryItem, Site, STATUS_ACTIVE
|
from dcim.models import DEVICE_STATUS_ACTIVE, Device, InventoryItem, Site
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
@ -41,7 +41,7 @@ class Command(BaseCommand):
|
|||||||
self.password = getpass("Password: ")
|
self.password = getpass("Password: ")
|
||||||
|
|
||||||
# Attempt to inventory only active devices
|
# Attempt to inventory only active devices
|
||||||
device_list = Device.objects.filter(status=STATUS_ACTIVE)
|
device_list = Device.objects.filter(status=DEVICE_STATUS_ACTIVE)
|
||||||
|
|
||||||
# --site: Include only devices belonging to specified site(s)
|
# --site: Include only devices belonging to specified site(s)
|
||||||
if options['site']:
|
if options['site']:
|
||||||
|
@ -9,7 +9,7 @@ from extras.api.customfields import CustomFieldModelSerializer
|
|||||||
from ipam.models import IPAddress
|
from ipam.models import IPAddress
|
||||||
from tenancy.api.serializers import NestedTenantSerializer
|
from tenancy.api.serializers import NestedTenantSerializer
|
||||||
from utilities.api import ChoiceFieldSerializer, ValidatedModelSerializer
|
from utilities.api import ChoiceFieldSerializer, ValidatedModelSerializer
|
||||||
from virtualization.constants import STATUS_CHOICES
|
from virtualization.constants import VM_STATUS_CHOICES
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
||||||
|
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ class VirtualMachineIPAddressSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class VirtualMachineSerializer(CustomFieldModelSerializer):
|
class VirtualMachineSerializer(CustomFieldModelSerializer):
|
||||||
status = ChoiceFieldSerializer(choices=STATUS_CHOICES)
|
status = ChoiceFieldSerializer(choices=VM_STATUS_CHOICES)
|
||||||
cluster = NestedClusterSerializer()
|
cluster = NestedClusterSerializer()
|
||||||
role = NestedDeviceRoleSerializer()
|
role = NestedDeviceRoleSerializer()
|
||||||
tenant = NestedTenantSerializer()
|
tenant = NestedTenantSerializer()
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from dcim.constants import STATUS_ACTIVE, STATUS_OFFLINE, STATUS_STAGED
|
from dcim.constants import DEVICE_STATUS_ACTIVE, DEVICE_STATUS_OFFLINE, DEVICE_STATUS_STAGED
|
||||||
|
|
||||||
# VirtualMachine statuses (replicated from Device statuses)
|
# VirtualMachine statuses (replicated from Device statuses)
|
||||||
STATUS_CHOICES = [
|
VM_STATUS_CHOICES = [
|
||||||
[STATUS_ACTIVE, 'Active'],
|
[DEVICE_STATUS_ACTIVE, 'Active'],
|
||||||
[STATUS_OFFLINE, 'Offline'],
|
[DEVICE_STATUS_OFFLINE, 'Offline'],
|
||||||
[STATUS_STAGED, 'Staged'],
|
[DEVICE_STATUS_STAGED, 'Staged'],
|
||||||
]
|
]
|
||||||
|
|
||||||
# Bootstrap CSS classes for VirtualMachine statuses
|
# Bootstrap CSS classes for VirtualMachine statuses
|
||||||
|
@ -9,7 +9,7 @@ from dcim.models import DeviceRole, Interface, Platform, Site
|
|||||||
from extras.filters import CustomFieldFilterSet
|
from extras.filters import CustomFieldFilterSet
|
||||||
from tenancy.models import Tenant
|
from tenancy.models import Tenant
|
||||||
from utilities.filters import NumericInFilter
|
from utilities.filters import NumericInFilter
|
||||||
from .constants import STATUS_CHOICES
|
from .constants import VM_STATUS_CHOICES
|
||||||
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
||||||
|
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ class VirtualMachineFilter(CustomFieldFilterSet):
|
|||||||
label='Search',
|
label='Search',
|
||||||
)
|
)
|
||||||
status = django_filters.MultipleChoiceFilter(
|
status = django_filters.MultipleChoiceFilter(
|
||||||
choices=STATUS_CHOICES,
|
choices=VM_STATUS_CHOICES,
|
||||||
null_value=None
|
null_value=None
|
||||||
)
|
)
|
||||||
cluster_group_id = django_filters.ModelMultipleChoiceFilter(
|
cluster_group_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
@ -16,7 +16,7 @@ from utilities.forms import (
|
|||||||
ChainedFieldsMixin, ChainedModelChoiceField, ChainedModelMultipleChoiceField, CommentField, ComponentForm,
|
ChainedFieldsMixin, ChainedModelChoiceField, ChainedModelMultipleChoiceField, CommentField, ComponentForm,
|
||||||
ConfirmationForm, CSVChoiceField, ExpandableNameField, FilterChoiceField, SlugField, SmallTextarea,
|
ConfirmationForm, CSVChoiceField, ExpandableNameField, FilterChoiceField, SlugField, SmallTextarea,
|
||||||
)
|
)
|
||||||
from .constants import STATUS_CHOICES
|
from .constants import VM_STATUS_CHOICES
|
||||||
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
||||||
|
|
||||||
VIFACE_FF_CHOICES = (
|
VIFACE_FF_CHOICES = (
|
||||||
@ -264,7 +264,7 @@ class VirtualMachineForm(BootstrapMixin, TenancyForm, CustomFieldForm):
|
|||||||
|
|
||||||
class VirtualMachineCSVForm(forms.ModelForm):
|
class VirtualMachineCSVForm(forms.ModelForm):
|
||||||
status = CSVChoiceField(
|
status = CSVChoiceField(
|
||||||
choices=STATUS_CHOICES,
|
choices=VM_STATUS_CHOICES,
|
||||||
required=False,
|
required=False,
|
||||||
help_text='Operational status of device'
|
help_text='Operational status of device'
|
||||||
)
|
)
|
||||||
@ -311,7 +311,7 @@ class VirtualMachineCSVForm(forms.ModelForm):
|
|||||||
|
|
||||||
class VirtualMachineBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
|
class VirtualMachineBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
|
||||||
pk = forms.ModelMultipleChoiceField(queryset=VirtualMachine.objects.all(), widget=forms.MultipleHiddenInput)
|
pk = forms.ModelMultipleChoiceField(queryset=VirtualMachine.objects.all(), widget=forms.MultipleHiddenInput)
|
||||||
status = forms.ChoiceField(choices=add_blank_choice(STATUS_CHOICES), required=False, initial='')
|
status = forms.ChoiceField(choices=add_blank_choice(VM_STATUS_CHOICES), required=False, initial='')
|
||||||
cluster = forms.ModelChoiceField(queryset=Cluster.objects.all(), required=False)
|
cluster = forms.ModelChoiceField(queryset=Cluster.objects.all(), required=False)
|
||||||
role = forms.ModelChoiceField(queryset=DeviceRole.objects.filter(vm_role=True), required=False)
|
role = forms.ModelChoiceField(queryset=DeviceRole.objects.filter(vm_role=True), required=False)
|
||||||
tenant = forms.ModelChoiceField(queryset=Tenant.objects.all(), required=False)
|
tenant = forms.ModelChoiceField(queryset=Tenant.objects.all(), required=False)
|
||||||
@ -329,7 +329,7 @@ def vm_status_choices():
|
|||||||
status_counts = {}
|
status_counts = {}
|
||||||
for status in VirtualMachine.objects.values('status').annotate(count=Count('status')).order_by('status'):
|
for status in VirtualMachine.objects.values('status').annotate(count=Count('status')).order_by('status'):
|
||||||
status_counts[status['status']] = status['count']
|
status_counts[status['status']] = status['count']
|
||||||
return [(s[0], '{} ({})'.format(s[1], status_counts.get(s[0], 0))) for s in STATUS_CHOICES]
|
return [(s[0], '{} ({})'.format(s[1], status_counts.get(s[0], 0))) for s in VM_STATUS_CHOICES]
|
||||||
|
|
||||||
|
|
||||||
class VirtualMachineFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
class VirtualMachineFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
||||||
|
@ -11,7 +11,7 @@ from dcim.models import Device
|
|||||||
from extras.models import CustomFieldModel, CustomFieldValue
|
from extras.models import CustomFieldModel, CustomFieldValue
|
||||||
from utilities.models import CreatedUpdatedModel
|
from utilities.models import CreatedUpdatedModel
|
||||||
from utilities.utils import csv_format
|
from utilities.utils import csv_format
|
||||||
from .constants import STATUS_ACTIVE, STATUS_CHOICES, VM_STATUS_CLASSES
|
from .constants import DEVICE_STATUS_ACTIVE, VM_STATUS_CHOICES, VM_STATUS_CLASSES
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -177,8 +177,8 @@ class VirtualMachine(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
unique=True
|
unique=True
|
||||||
)
|
)
|
||||||
status = models.PositiveSmallIntegerField(
|
status = models.PositiveSmallIntegerField(
|
||||||
choices=STATUS_CHOICES,
|
choices=VM_STATUS_CHOICES,
|
||||||
default=STATUS_ACTIVE,
|
default=DEVICE_STATUS_ACTIVE,
|
||||||
verbose_name='Status'
|
verbose_name='Status'
|
||||||
)
|
)
|
||||||
role = models.ForeignKey(
|
role = models.ForeignKey(
|
||||||
|
Reference in New Issue
Block a user