Ditched VMInterface in favor of reusing dcim.Interface

This commit is contained in:
Jeremy Stretch
2017-08-29 14:24:58 -04:00
parent cb9404f29a
commit d52e5981a6
17 changed files with 158 additions and 237 deletions

View File

@@ -3,10 +3,12 @@ from __future__ import unicode_literals
from rest_framework import serializers
from dcim.api.serializers import NestedPlatformSerializer
from dcim.constants import VIFACE_FF_CHOICES
from dcim.models import Interface
from extras.api.customfields import CustomFieldModelSerializer
from tenancy.api.serializers import NestedTenantSerializer
from utilities.api import ValidatedModelSerializer
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
from utilities.api import ChoiceFieldSerializer, ValidatedModelSerializer
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
#
@@ -102,7 +104,7 @@ class NestedVirtualMachineSerializer(serializers.ModelSerializer):
class WritableVirtualMachineSerializer(CustomFieldModelSerializer):
class Meta:
model = Cluster
model = VirtualMachine
fields = [
'id', 'name', 'cluster', 'tenant', 'platform', 'primary_ip4', 'primary_ip6', 'comments', 'custom_fields',
]
@@ -112,28 +114,29 @@ class WritableVirtualMachineSerializer(CustomFieldModelSerializer):
# VM interfaces
#
class VMInterfaceSerializer(serializers.ModelSerializer):
class InterfaceSerializer(serializers.ModelSerializer):
virtual_machine = NestedVirtualMachineSerializer()
form_factor = ChoiceFieldSerializer(choices=VIFACE_FF_CHOICES)
class Meta:
model = VMInterface
model = Interface
fields = [
'id', 'name', 'virtual_machine', 'enabled', 'mac_address', 'mtu', 'description',
'id', 'name', 'virtual_machine', 'form_factor', 'enabled', 'mac_address', 'mtu', 'description',
]
class NestedVMInterfaceSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:vminterface-detail')
class NestedInterfaceSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:interface-detail')
class Meta:
model = VMInterface
model = Interface
fields = ['id', 'url', 'name']
class WritableVMInterfaceSerializer(ValidatedModelSerializer):
class WritableInterfaceSerializer(ValidatedModelSerializer):
class Meta:
model = VMInterface
model = Interface
fields = [
'id', 'name', 'virtual_machine', 'enabled', 'mac_address', 'mtu', 'description',
'id', 'name', 'virtual_machine', 'form_factor', 'enabled', 'mac_address', 'mtu', 'description',
]

View File

@@ -23,7 +23,7 @@ router.register(r'clusters', views.ClusterViewSet)
# VirtualMachines
router.register(r'virtual-machines', views.VirtualMachineViewSet)
router.register(r'vm-interfaces', views.VMInterfaceViewSet)
router.register(r'interfaces', views.InterfaceViewSet)
app_name = 'virtualization-api'
urlpatterns = router.urls

View File

@@ -2,10 +2,11 @@ from __future__ import unicode_literals
from rest_framework.viewsets import ModelViewSet
from dcim.models import Interface
from extras.api.views import CustomFieldModelViewSet
from utilities.api import WritableSerializerMixin
from virtualization import filters
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
from . import serializers
@@ -41,7 +42,7 @@ class VirtualMachineViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
filter_class = filters.VirtualMachineFilter
class VMInterfaceViewSet(WritableSerializerMixin, ModelViewSet):
queryset = VMInterface.objects.select_related('virtual_machine')
serializer_class = serializers.VMInterfaceSerializer
write_serializer_class = serializers.WritableVMInterfaceSerializer
class InterfaceViewSet(WritableSerializerMixin, ModelViewSet):
queryset = Interface.objects.filter(virtual_machine__isnull=False).select_related('virtual_machine')
serializer_class = serializers.InterfaceSerializer
write_serializer_class = serializers.WritableInterfaceSerializer