mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Rename Interface to VMInterface
This commit is contained in:
@ -4,7 +4,7 @@ from dcim.models import Device, DeviceRole, DeviceType, Interface, Manufacturer,
|
|||||||
from ipam.choices import *
|
from ipam.choices import *
|
||||||
from ipam.filters import *
|
from ipam.filters import *
|
||||||
from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
|
from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
|
||||||
from virtualization.models import Cluster, ClusterType, Interface as VMInterface, VirtualMachine
|
from virtualization.models import Cluster, ClusterType, VirtualMachine, VMInterface
|
||||||
from tenancy.models import Tenant, TenantGroup
|
from tenancy.models import Tenant, TenantGroup
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ from ipam.models import VLAN
|
|||||||
from tenancy.api.nested_serializers import NestedTenantSerializer
|
from tenancy.api.nested_serializers import NestedTenantSerializer
|
||||||
from utilities.api import ChoiceField, SerializedPKRelatedField, ValidatedModelSerializer
|
from utilities.api import ChoiceField, SerializedPKRelatedField, ValidatedModelSerializer
|
||||||
from virtualization.choices import *
|
from virtualization.choices import *
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
from .nested_serializers import *
|
from .nested_serializers import *
|
||||||
|
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ class InterfaceSerializer(TaggedObjectSerializer, ValidatedModelSerializer):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = VMInterface
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'virtual_machine', 'name', 'enabled', 'mtu', 'mac_address', 'description', 'mode', 'untagged_vlan',
|
'id', 'virtual_machine', 'name', 'enabled', 'mtu', 'mac_address', 'description', 'mode', 'untagged_vlan',
|
||||||
'tagged_vlans', 'tags',
|
'tagged_vlans', 'tags',
|
||||||
|
@ -5,7 +5,7 @@ from extras.api.views import CustomFieldModelViewSet
|
|||||||
from utilities.api import ModelViewSet
|
from utilities.api import ModelViewSet
|
||||||
from utilities.utils import get_subquery
|
from utilities.utils import get_subquery
|
||||||
from virtualization import filters
|
from virtualization import filters
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
from . import serializers
|
from . import serializers
|
||||||
|
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ class VirtualMachineViewSet(CustomFieldModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class InterfaceViewSet(ModelViewSet):
|
class InterfaceViewSet(ModelViewSet):
|
||||||
queryset = Interface.objects.filter(
|
queryset = VMInterface.objects.filter(
|
||||||
virtual_machine__isnull=False
|
virtual_machine__isnull=False
|
||||||
).prefetch_related(
|
).prefetch_related(
|
||||||
'virtual_machine', 'tags'
|
'virtual_machine', 'tags'
|
||||||
|
@ -9,7 +9,7 @@ from utilities.filters import (
|
|||||||
TreeNodeMultipleChoiceFilter,
|
TreeNodeMultipleChoiceFilter,
|
||||||
)
|
)
|
||||||
from .choices import *
|
from .choices import *
|
||||||
from .models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ClusterFilterSet',
|
'ClusterFilterSet',
|
||||||
@ -222,7 +222,7 @@ class InterfaceFilterSet(BaseFilterSet):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = VMInterface
|
||||||
fields = ['id', 'name', 'enabled', 'mtu']
|
fields = ['id', 'name', 'enabled', 'mtu']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
|
@ -19,7 +19,7 @@ from utilities.forms import (
|
|||||||
StaticSelect2, StaticSelect2Multiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES,
|
StaticSelect2, StaticSelect2Multiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES,
|
||||||
)
|
)
|
||||||
from .choices import *
|
from .choices import *
|
||||||
from .models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -600,7 +600,7 @@ class InterfaceForm(BootstrapMixin, forms.ModelForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = VMInterface
|
||||||
fields = [
|
fields = [
|
||||||
'virtual_machine', 'name', 'enabled', 'mac_address', 'mtu', 'description', 'mode', 'tags', 'untagged_vlan',
|
'virtual_machine', 'name', 'enabled', 'mac_address', 'mtu', 'description', 'mode', 'tags', 'untagged_vlan',
|
||||||
'tagged_vlans',
|
'tagged_vlans',
|
||||||
@ -717,7 +717,7 @@ class InterfaceCreateForm(BootstrapMixin, forms.Form):
|
|||||||
|
|
||||||
class InterfaceBulkEditForm(BootstrapMixin, BulkEditForm):
|
class InterfaceBulkEditForm(BootstrapMixin, BulkEditForm):
|
||||||
pk = forms.ModelMultipleChoiceField(
|
pk = forms.ModelMultipleChoiceField(
|
||||||
queryset=Interface.objects.all(),
|
queryset=VMInterface.objects.all(),
|
||||||
widget=forms.MultipleHiddenInput()
|
widget=forms.MultipleHiddenInput()
|
||||||
)
|
)
|
||||||
virtual_machine = forms.ModelChoiceField(
|
virtual_machine = forms.ModelChoiceField(
|
||||||
@ -786,7 +786,7 @@ class InterfaceBulkEditForm(BootstrapMixin, BulkEditForm):
|
|||||||
|
|
||||||
|
|
||||||
class InterfaceFilterForm(forms.Form):
|
class InterfaceFilterForm(forms.Form):
|
||||||
model = Interface
|
model = VMInterface
|
||||||
enabled = forms.NullBooleanField(
|
enabled = forms.NullBooleanField(
|
||||||
required=False,
|
required=False,
|
||||||
widget=StaticSelect2(
|
widget=StaticSelect2(
|
||||||
@ -816,7 +816,7 @@ class VirtualMachineBulkAddComponentForm(BootstrapMixin, forms.Form):
|
|||||||
|
|
||||||
|
|
||||||
class InterfaceBulkCreateForm(
|
class InterfaceBulkCreateForm(
|
||||||
form_from_model(Interface, ['enabled', 'mtu', 'description', 'tags']),
|
form_from_model(VMInterface, ['enabled', 'mtu', 'description', 'tags']),
|
||||||
VirtualMachineBulkAddComponentForm
|
VirtualMachineBulkAddComponentForm
|
||||||
):
|
):
|
||||||
pass
|
pass
|
||||||
|
@ -20,7 +20,7 @@ class Migration(migrations.Migration):
|
|||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Interface',
|
name='VMInterface',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)),
|
||||||
('name', models.CharField(max_length=64)),
|
('name', models.CharField(max_length=64)),
|
||||||
@ -38,6 +38,7 @@ class Migration(migrations.Migration):
|
|||||||
options={
|
options={
|
||||||
'ordering': ('virtual_machine', utilities.query_functions.CollateAsChar('_name')),
|
'ordering': ('virtual_machine', utilities.query_functions.CollateAsChar('_name')),
|
||||||
'unique_together': {('virtual_machine', 'name')},
|
'unique_together': {('virtual_machine', 'name')},
|
||||||
|
'verbose_name': 'interface',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
]
|
]
|
@ -8,10 +8,10 @@ def replicate_interfaces(apps, schema_editor):
|
|||||||
TaggedItem = apps.get_model('extras', 'TaggedItem')
|
TaggedItem = apps.get_model('extras', 'TaggedItem')
|
||||||
Interface = apps.get_model('dcim', 'Interface')
|
Interface = apps.get_model('dcim', 'Interface')
|
||||||
IPAddress = apps.get_model('ipam', 'IPAddress')
|
IPAddress = apps.get_model('ipam', 'IPAddress')
|
||||||
VMInterface = apps.get_model('virtualization', 'Interface')
|
VMInterface = apps.get_model('virtualization', 'VMInterface')
|
||||||
|
|
||||||
interface_ct = ContentType.objects.get_for_model(Interface)
|
interface_ct = ContentType.objects.get_for_model(Interface)
|
||||||
vm_interface_ct = ContentType.objects.get_for_model(VMInterface)
|
vminterface_ct = ContentType.objects.get_for_model(VMInterface)
|
||||||
|
|
||||||
# Replicate dcim.Interface instances assigned to VirtualMachines
|
# Replicate dcim.Interface instances assigned to VirtualMachines
|
||||||
original_interfaces = Interface.objects.filter(virtual_machine__isnull=False)
|
original_interfaces = Interface.objects.filter(virtual_machine__isnull=False)
|
||||||
@ -35,12 +35,12 @@ def replicate_interfaces(apps, schema_editor):
|
|||||||
TaggedItem.objects.filter(
|
TaggedItem.objects.filter(
|
||||||
content_type=interface_ct, object_id=interface.pk
|
content_type=interface_ct, object_id=interface.pk
|
||||||
).update(
|
).update(
|
||||||
content_type=vm_interface_ct, object_id=vm_interface.pk
|
content_type=vminterface_ct, object_id=vm_interface.pk
|
||||||
)
|
)
|
||||||
|
|
||||||
# Update any assigned IPAddresses
|
# Update any assigned IPAddresses
|
||||||
IPAddress.objects.filter(assigned_object_id=interface.pk).update(
|
IPAddress.objects.filter(assigned_object_id=interface.pk).update(
|
||||||
assigned_object_type=vm_interface_ct,
|
assigned_object_type=vminterface_ct,
|
||||||
assigned_object_id=vm_interface.pk
|
assigned_object_id=vm_interface.pk
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ class Migration(migrations.Migration):
|
|||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('ipam', '0037_ipaddress_assignment'),
|
('ipam', '0037_ipaddress_assignment'),
|
||||||
('virtualization', '0015_interface'),
|
('virtualization', '0015_vminterface'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
@ -20,8 +20,8 @@ __all__ = (
|
|||||||
'Cluster',
|
'Cluster',
|
||||||
'ClusterGroup',
|
'ClusterGroup',
|
||||||
'ClusterType',
|
'ClusterType',
|
||||||
'Interface',
|
|
||||||
'VirtualMachine',
|
'VirtualMachine',
|
||||||
|
'VMInterface',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -381,7 +381,7 @@ class VirtualMachine(ChangeLoggedModel, ConfigContextModel, CustomFieldModel):
|
|||||||
#
|
#
|
||||||
|
|
||||||
@extras_features('graphs', 'export_templates', 'webhooks')
|
@extras_features('graphs', 'export_templates', 'webhooks')
|
||||||
class Interface(BaseInterface):
|
class VMInterface(BaseInterface):
|
||||||
virtual_machine = models.ForeignKey(
|
virtual_machine = models.ForeignKey(
|
||||||
to='virtualization.VirtualMachine',
|
to='virtualization.VirtualMachine',
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
@ -423,6 +423,7 @@ class Interface(BaseInterface):
|
|||||||
]
|
]
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
verbose_name = 'interface'
|
||||||
ordering = ('virtual_machine', CollateAsChar('_name'))
|
ordering = ('virtual_machine', CollateAsChar('_name'))
|
||||||
unique_together = ('virtual_machine', 'name')
|
unique_together = ('virtual_machine', 'name')
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ from django_tables2.utils import Accessor
|
|||||||
|
|
||||||
from tenancy.tables import COL_TENANT
|
from tenancy.tables import COL_TENANT
|
||||||
from utilities.tables import BaseTable, ColoredLabelColumn, TagColumn, ToggleColumn
|
from utilities.tables import BaseTable, ColoredLabelColumn, TagColumn, ToggleColumn
|
||||||
from .models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
|
|
||||||
CLUSTERTYPE_ACTIONS = """
|
CLUSTERTYPE_ACTIONS = """
|
||||||
<a href="{% url 'virtualization:clustertype_changelog' slug=record.slug %}" class="btn btn-default btn-xs" title="Change log">
|
<a href="{% url 'virtualization:clustertype_changelog' slug=record.slug %}" class="btn btn-default btn-xs" title="Change log">
|
||||||
@ -175,5 +175,5 @@ class VirtualMachineDetailTable(VirtualMachineTable):
|
|||||||
class InterfaceTable(BaseTable):
|
class InterfaceTable(BaseTable):
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = Interface
|
model = VMInterface
|
||||||
fields = ('name', 'enabled', 'description')
|
fields = ('name', 'enabled', 'description')
|
||||||
|
@ -4,7 +4,7 @@ from rest_framework import status
|
|||||||
from dcim.choices import InterfaceModeChoices
|
from dcim.choices import InterfaceModeChoices
|
||||||
from ipam.models import VLAN
|
from ipam.models import VLAN
|
||||||
from utilities.testing import APITestCase, APIViewTestCases
|
from utilities.testing import APITestCase, APIViewTestCases
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
|
|
||||||
|
|
||||||
class AppTest(APITestCase):
|
class AppTest(APITestCase):
|
||||||
@ -203,15 +203,15 @@ class InterfaceTest(APITestCase):
|
|||||||
clustertype = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1')
|
clustertype = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1')
|
||||||
cluster = Cluster.objects.create(name='Test Cluster 1', type=clustertype)
|
cluster = Cluster.objects.create(name='Test Cluster 1', type=clustertype)
|
||||||
self.virtualmachine = VirtualMachine.objects.create(cluster=cluster, name='Test VM 1')
|
self.virtualmachine = VirtualMachine.objects.create(cluster=cluster, name='Test VM 1')
|
||||||
self.interface1 = Interface.objects.create(
|
self.interface1 = VMInterface.objects.create(
|
||||||
virtual_machine=self.virtualmachine,
|
virtual_machine=self.virtualmachine,
|
||||||
name='Test Interface 1'
|
name='Test Interface 1'
|
||||||
)
|
)
|
||||||
self.interface2 = Interface.objects.create(
|
self.interface2 = VMInterface.objects.create(
|
||||||
virtual_machine=self.virtualmachine,
|
virtual_machine=self.virtualmachine,
|
||||||
name='Test Interface 2'
|
name='Test Interface 2'
|
||||||
)
|
)
|
||||||
self.interface3 = Interface.objects.create(
|
self.interface3 = VMInterface.objects.create(
|
||||||
virtual_machine=self.virtualmachine,
|
virtual_machine=self.virtualmachine,
|
||||||
name='Test Interface 3'
|
name='Test Interface 3'
|
||||||
)
|
)
|
||||||
@ -254,8 +254,8 @@ class InterfaceTest(APITestCase):
|
|||||||
|
|
||||||
response = self.client.post(url, data, format='json', **self.header)
|
response = self.client.post(url, data, format='json', **self.header)
|
||||||
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
||||||
self.assertEqual(Interface.objects.count(), 4)
|
self.assertEqual(VMInterface.objects.count(), 4)
|
||||||
interface4 = Interface.objects.get(pk=response.data['id'])
|
interface4 = VMInterface.objects.get(pk=response.data['id'])
|
||||||
self.assertEqual(interface4.virtual_machine_id, data['virtual_machine'])
|
self.assertEqual(interface4.virtual_machine_id, data['virtual_machine'])
|
||||||
self.assertEqual(interface4.name, data['name'])
|
self.assertEqual(interface4.name, data['name'])
|
||||||
|
|
||||||
@ -272,7 +272,7 @@ class InterfaceTest(APITestCase):
|
|||||||
|
|
||||||
response = self.client.post(url, data, format='json', **self.header)
|
response = self.client.post(url, data, format='json', **self.header)
|
||||||
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
||||||
self.assertEqual(Interface.objects.count(), 4)
|
self.assertEqual(VMInterface.objects.count(), 4)
|
||||||
self.assertEqual(response.data['virtual_machine']['id'], data['virtual_machine'])
|
self.assertEqual(response.data['virtual_machine']['id'], data['virtual_machine'])
|
||||||
self.assertEqual(response.data['name'], data['name'])
|
self.assertEqual(response.data['name'], data['name'])
|
||||||
self.assertEqual(response.data['untagged_vlan']['id'], data['untagged_vlan'])
|
self.assertEqual(response.data['untagged_vlan']['id'], data['untagged_vlan'])
|
||||||
@ -298,7 +298,7 @@ class InterfaceTest(APITestCase):
|
|||||||
|
|
||||||
response = self.client.post(url, data, format='json', **self.header)
|
response = self.client.post(url, data, format='json', **self.header)
|
||||||
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
||||||
self.assertEqual(Interface.objects.count(), 6)
|
self.assertEqual(VMInterface.objects.count(), 6)
|
||||||
self.assertEqual(response.data[0]['name'], data[0]['name'])
|
self.assertEqual(response.data[0]['name'], data[0]['name'])
|
||||||
self.assertEqual(response.data[1]['name'], data[1]['name'])
|
self.assertEqual(response.data[1]['name'], data[1]['name'])
|
||||||
self.assertEqual(response.data[2]['name'], data[2]['name'])
|
self.assertEqual(response.data[2]['name'], data[2]['name'])
|
||||||
@ -332,7 +332,7 @@ class InterfaceTest(APITestCase):
|
|||||||
|
|
||||||
response = self.client.post(url, data, format='json', **self.header)
|
response = self.client.post(url, data, format='json', **self.header)
|
||||||
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
||||||
self.assertEqual(Interface.objects.count(), 6)
|
self.assertEqual(VMInterface.objects.count(), 6)
|
||||||
for i in range(0, 3):
|
for i in range(0, 3):
|
||||||
self.assertEqual(response.data[i]['name'], data[i]['name'])
|
self.assertEqual(response.data[i]['name'], data[i]['name'])
|
||||||
self.assertEqual([v['id'] for v in response.data[i]['tagged_vlans']], data[i]['tagged_vlans'])
|
self.assertEqual([v['id'] for v in response.data[i]['tagged_vlans']], data[i]['tagged_vlans'])
|
||||||
@ -348,8 +348,8 @@ class InterfaceTest(APITestCase):
|
|||||||
|
|
||||||
response = self.client.put(url, data, format='json', **self.header)
|
response = self.client.put(url, data, format='json', **self.header)
|
||||||
self.assertHttpStatus(response, status.HTTP_200_OK)
|
self.assertHttpStatus(response, status.HTTP_200_OK)
|
||||||
self.assertEqual(Interface.objects.count(), 3)
|
self.assertEqual(VMInterface.objects.count(), 3)
|
||||||
interface1 = Interface.objects.get(pk=response.data['id'])
|
interface1 = VMInterface.objects.get(pk=response.data['id'])
|
||||||
self.assertEqual(interface1.name, data['name'])
|
self.assertEqual(interface1.name, data['name'])
|
||||||
|
|
||||||
def test_delete_interface(self):
|
def test_delete_interface(self):
|
||||||
@ -358,4 +358,4 @@ class InterfaceTest(APITestCase):
|
|||||||
|
|
||||||
response = self.client.delete(url, **self.header)
|
response = self.client.delete(url, **self.header)
|
||||||
self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT)
|
self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT)
|
||||||
self.assertEqual(Interface.objects.count(), 2)
|
self.assertEqual(VMInterface.objects.count(), 2)
|
||||||
|
@ -4,7 +4,7 @@ from dcim.models import DeviceRole, Platform, Region, Site
|
|||||||
from tenancy.models import Tenant, TenantGroup
|
from tenancy.models import Tenant, TenantGroup
|
||||||
from virtualization.choices import *
|
from virtualization.choices import *
|
||||||
from virtualization.filters import *
|
from virtualization.filters import *
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
|
|
||||||
|
|
||||||
class ClusterTypeTestCase(TestCase):
|
class ClusterTypeTestCase(TestCase):
|
||||||
@ -260,11 +260,11 @@ class VirtualMachineTestCase(TestCase):
|
|||||||
VirtualMachine.objects.bulk_create(vms)
|
VirtualMachine.objects.bulk_create(vms)
|
||||||
|
|
||||||
interfaces = (
|
interfaces = (
|
||||||
Interface(virtual_machine=vms[0], name='Interface 1', mac_address='00-00-00-00-00-01'),
|
VMInterface(virtual_machine=vms[0], name='Interface 1', mac_address='00-00-00-00-00-01'),
|
||||||
Interface(virtual_machine=vms[1], name='Interface 2', mac_address='00-00-00-00-00-02'),
|
VMInterface(virtual_machine=vms[1], name='Interface 2', mac_address='00-00-00-00-00-02'),
|
||||||
Interface(virtual_machine=vms[2], name='Interface 3', mac_address='00-00-00-00-00-03'),
|
VMInterface(virtual_machine=vms[2], name='Interface 3', mac_address='00-00-00-00-00-03'),
|
||||||
)
|
)
|
||||||
Interface.objects.bulk_create(interfaces)
|
VMInterface.objects.bulk_create(interfaces)
|
||||||
|
|
||||||
def test_id(self):
|
def test_id(self):
|
||||||
params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
|
params = {'id': self.queryset.values_list('pk', flat=True)[:2]}
|
||||||
@ -366,7 +366,7 @@ class VirtualMachineTestCase(TestCase):
|
|||||||
|
|
||||||
|
|
||||||
class InterfaceTestCase(TestCase):
|
class InterfaceTestCase(TestCase):
|
||||||
queryset = Interface.objects.all()
|
queryset = VMInterface.objects.all()
|
||||||
filterset = InterfaceFilterSet
|
filterset = InterfaceFilterSet
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -394,11 +394,11 @@ class InterfaceTestCase(TestCase):
|
|||||||
VirtualMachine.objects.bulk_create(vms)
|
VirtualMachine.objects.bulk_create(vms)
|
||||||
|
|
||||||
interfaces = (
|
interfaces = (
|
||||||
Interface(virtual_machine=vms[0], name='Interface 1', enabled=True, mtu=100, mac_address='00-00-00-00-00-01'),
|
VMInterface(virtual_machine=vms[0], name='Interface 1', enabled=True, mtu=100, mac_address='00-00-00-00-00-01'),
|
||||||
Interface(virtual_machine=vms[1], name='Interface 2', enabled=True, mtu=200, mac_address='00-00-00-00-00-02'),
|
VMInterface(virtual_machine=vms[1], name='Interface 2', enabled=True, mtu=200, mac_address='00-00-00-00-00-02'),
|
||||||
Interface(virtual_machine=vms[2], name='Interface 3', enabled=False, mtu=300, mac_address='00-00-00-00-00-03'),
|
VMInterface(virtual_machine=vms[2], name='Interface 3', enabled=False, mtu=300, mac_address='00-00-00-00-00-03'),
|
||||||
)
|
)
|
||||||
Interface.objects.bulk_create(interfaces)
|
VMInterface.objects.bulk_create(interfaces)
|
||||||
|
|
||||||
def test_id(self):
|
def test_id(self):
|
||||||
id_list = self.queryset.values_list('id', flat=True)[:2]
|
id_list = self.queryset.values_list('id', flat=True)[:2]
|
||||||
|
@ -5,7 +5,7 @@ from dcim.models import DeviceRole, Platform, Site
|
|||||||
from ipam.models import VLAN
|
from ipam.models import VLAN
|
||||||
from utilities.testing import ViewTestCases
|
from utilities.testing import ViewTestCases
|
||||||
from virtualization.choices import *
|
from virtualization.choices import *
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
|
|
||||||
|
|
||||||
class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
||||||
@ -199,7 +199,7 @@ class InterfaceTestCase(
|
|||||||
ViewTestCases.BulkEditObjectsViewTestCase,
|
ViewTestCases.BulkEditObjectsViewTestCase,
|
||||||
ViewTestCases.BulkDeleteObjectsViewTestCase,
|
ViewTestCases.BulkDeleteObjectsViewTestCase,
|
||||||
):
|
):
|
||||||
model = Interface
|
model = VMInterface
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
@ -214,10 +214,10 @@ class InterfaceTestCase(
|
|||||||
)
|
)
|
||||||
VirtualMachine.objects.bulk_create(virtualmachines)
|
VirtualMachine.objects.bulk_create(virtualmachines)
|
||||||
|
|
||||||
Interface.objects.bulk_create([
|
VMInterface.objects.bulk_create([
|
||||||
Interface(virtual_machine=virtualmachines[0], name='Interface 1'),
|
VMInterface(virtual_machine=virtualmachines[0], name='Interface 1'),
|
||||||
Interface(virtual_machine=virtualmachines[0], name='Interface 2'),
|
VMInterface(virtual_machine=virtualmachines[0], name='Interface 2'),
|
||||||
Interface(virtual_machine=virtualmachines[0], name='Interface 3'),
|
VMInterface(virtual_machine=virtualmachines[0], name='Interface 3'),
|
||||||
])
|
])
|
||||||
|
|
||||||
vlans = (
|
vlans = (
|
||||||
|
@ -14,7 +14,7 @@ from utilities.views import (
|
|||||||
ObjectDeleteView, ObjectEditView, ObjectListView,
|
ObjectDeleteView, ObjectEditView, ObjectListView,
|
||||||
)
|
)
|
||||||
from . import filters, forms, tables
|
from . import filters, forms, tables
|
||||||
from .models import Cluster, ClusterGroup, ClusterType, Interface, VirtualMachine
|
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -236,7 +236,7 @@ class VirtualMachineView(ObjectView):
|
|||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
virtualmachine = get_object_or_404(self.queryset, pk=pk)
|
virtualmachine = get_object_or_404(self.queryset, pk=pk)
|
||||||
interfaces = Interface.objects.restrict(request.user, 'view').filter(virtual_machine=virtualmachine)
|
interfaces = VMInterface.objects.restrict(request.user, 'view').filter(virtual_machine=virtualmachine)
|
||||||
services = Service.objects.restrict(request.user, 'view').filter(virtual_machine=virtualmachine)
|
services = Service.objects.restrict(request.user, 'view').filter(virtual_machine=virtualmachine)
|
||||||
|
|
||||||
return render(request, 'virtualization/virtualmachine.html', {
|
return render(request, 'virtualization/virtualmachine.html', {
|
||||||
@ -290,7 +290,7 @@ class VirtualMachineBulkDeleteView(BulkDeleteView):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class InterfaceListView(ObjectListView):
|
class InterfaceListView(ObjectListView):
|
||||||
queryset = Interface.objects.prefetch_related('virtual_machine', 'virtual_machine__tenant', 'cable')
|
queryset = VMInterface.objects.prefetch_related('virtual_machine', 'virtual_machine__tenant', 'cable')
|
||||||
filterset = filters.InterfaceFilterSet
|
filterset = filters.InterfaceFilterSet
|
||||||
filterset_form = forms.InterfaceFilterForm
|
filterset_form = forms.InterfaceFilterForm
|
||||||
table = tables.InterfaceTable
|
table = tables.InterfaceTable
|
||||||
@ -298,7 +298,7 @@ class InterfaceListView(ObjectListView):
|
|||||||
|
|
||||||
|
|
||||||
class InterfaceView(ObjectView):
|
class InterfaceView(ObjectView):
|
||||||
queryset = Interface.objects.all()
|
queryset = VMInterface.objects.all()
|
||||||
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
|
||||||
@ -333,30 +333,30 @@ class InterfaceView(ObjectView):
|
|||||||
|
|
||||||
# TODO: This should not use ComponentCreateView
|
# TODO: This should not use ComponentCreateView
|
||||||
class InterfaceCreateView(ComponentCreateView):
|
class InterfaceCreateView(ComponentCreateView):
|
||||||
queryset = Interface.objects.all()
|
queryset = VMInterface.objects.all()
|
||||||
form = forms.InterfaceCreateForm
|
form = forms.InterfaceCreateForm
|
||||||
model_form = forms.InterfaceForm
|
model_form = forms.InterfaceForm
|
||||||
template_name = 'virtualization/virtualmachine_component_add.html'
|
template_name = 'virtualization/virtualmachine_component_add.html'
|
||||||
|
|
||||||
|
|
||||||
class InterfaceEditView(ObjectEditView):
|
class InterfaceEditView(ObjectEditView):
|
||||||
queryset = Interface.objects.all()
|
queryset = VMInterface.objects.all()
|
||||||
model_form = forms.InterfaceForm
|
model_form = forms.InterfaceForm
|
||||||
template_name = 'virtualization/interface_edit.html'
|
template_name = 'virtualization/interface_edit.html'
|
||||||
|
|
||||||
|
|
||||||
class InterfaceDeleteView(ObjectDeleteView):
|
class InterfaceDeleteView(ObjectDeleteView):
|
||||||
queryset = Interface.objects.all()
|
queryset = VMInterface.objects.all()
|
||||||
|
|
||||||
|
|
||||||
class InterfaceBulkEditView(BulkEditView):
|
class InterfaceBulkEditView(BulkEditView):
|
||||||
queryset = Interface.objects.all()
|
queryset = VMInterface.objects.all()
|
||||||
table = tables.InterfaceTable
|
table = tables.InterfaceTable
|
||||||
form = forms.InterfaceBulkEditForm
|
form = forms.InterfaceBulkEditForm
|
||||||
|
|
||||||
|
|
||||||
class InterfaceBulkDeleteView(BulkDeleteView):
|
class InterfaceBulkDeleteView(BulkDeleteView):
|
||||||
queryset = Interface.objects.all()
|
queryset = VMInterface.objects.all()
|
||||||
table = tables.InterfaceTable
|
table = tables.InterfaceTable
|
||||||
|
|
||||||
|
|
||||||
@ -368,7 +368,7 @@ class VirtualMachineBulkAddInterfaceView(BulkComponentCreateView):
|
|||||||
parent_model = VirtualMachine
|
parent_model = VirtualMachine
|
||||||
parent_field = 'virtual_machine'
|
parent_field = 'virtual_machine'
|
||||||
form = forms.InterfaceBulkCreateForm
|
form = forms.InterfaceBulkCreateForm
|
||||||
queryset = Interface.objects.all()
|
queryset = VMInterface.objects.all()
|
||||||
model_form = forms.InterfaceForm
|
model_form = forms.InterfaceForm
|
||||||
filterset = filters.VirtualMachineFilterSet
|
filterset = filters.VirtualMachineFilterSet
|
||||||
table = tables.VirtualMachineTable
|
table = tables.VirtualMachineTable
|
||||||
|
Reference in New Issue
Block a user