mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #4272: Interface type should be required by API serializer
This commit is contained in:
@ -21,6 +21,7 @@
|
||||
* [#4241](https://github.com/netbox-community/netbox/issues/4241) - Correct IP address hyperlinks on interface view
|
||||
* [#4246](https://github.com/netbox-community/netbox/issues/4246) - Fix duplication of field attributes when multiple IPNetworkVars are present in a script
|
||||
* [#4252](https://github.com/netbox-community/netbox/issues/4252) - Fix power port assignment for power outlet templates created via REST API
|
||||
* [#4272](https://github.com/netbox-community/netbox/issues/4272) - Interface type should be required by API serializer
|
||||
|
||||
---
|
||||
|
||||
|
@ -298,7 +298,7 @@ class PowerOutletTemplateSerializer(ValidatedModelSerializer):
|
||||
|
||||
class InterfaceTemplateSerializer(ValidatedModelSerializer):
|
||||
device_type = NestedDeviceTypeSerializer()
|
||||
type = ChoiceField(choices=InterfaceTypeChoices, required=False)
|
||||
type = ChoiceField(choices=InterfaceTypeChoices)
|
||||
|
||||
class Meta:
|
||||
model = InterfaceTemplate
|
||||
@ -518,7 +518,7 @@ class PowerPortSerializer(TaggitSerializer, ConnectedEndpointSerializer):
|
||||
|
||||
class InterfaceSerializer(TaggitSerializer, ConnectedEndpointSerializer):
|
||||
device = NestedDeviceSerializer()
|
||||
type = ChoiceField(choices=InterfaceTypeChoices, required=False)
|
||||
type = ChoiceField(choices=InterfaceTypeChoices)
|
||||
lag = NestedInterfaceSerializer(required=False, allow_null=True)
|
||||
mode = ChoiceField(choices=InterfaceModeChoices, allow_blank=True, required=False)
|
||||
untagged_vlan = NestedVLANSerializer(required=False, allow_null=True)
|
||||
|
@ -1470,13 +1470,13 @@ class InterfaceTemplateTest(APITestCase):
|
||||
manufacturer=self.manufacturer, model='Test Device Type 1', slug='test-device-type-1'
|
||||
)
|
||||
self.interfacetemplate1 = InterfaceTemplate.objects.create(
|
||||
device_type=self.devicetype, name='Test Interface Template 1'
|
||||
device_type=self.devicetype, name='Test Interface Template 1', type='1000base-t'
|
||||
)
|
||||
self.interfacetemplate2 = InterfaceTemplate.objects.create(
|
||||
device_type=self.devicetype, name='Test Interface Template 2'
|
||||
device_type=self.devicetype, name='Test Interface Template 2', type='1000base-t'
|
||||
)
|
||||
self.interfacetemplate3 = InterfaceTemplate.objects.create(
|
||||
device_type=self.devicetype, name='Test Interface Template 3'
|
||||
device_type=self.devicetype, name='Test Interface Template 3', type='1000base-t'
|
||||
)
|
||||
|
||||
def test_get_interfacetemplate(self):
|
||||
@ -1498,6 +1498,7 @@ class InterfaceTemplateTest(APITestCase):
|
||||
data = {
|
||||
'device_type': self.devicetype.pk,
|
||||
'name': 'Test Interface Template 4',
|
||||
'type': '1000base-t',
|
||||
}
|
||||
|
||||
url = reverse('dcim-api:interfacetemplate-list')
|
||||
@ -1515,14 +1516,17 @@ class InterfaceTemplateTest(APITestCase):
|
||||
{
|
||||
'device_type': self.devicetype.pk,
|
||||
'name': 'Test Interface Template 4',
|
||||
'type': '1000base-t',
|
||||
},
|
||||
{
|
||||
'device_type': self.devicetype.pk,
|
||||
'name': 'Test Interface Template 5',
|
||||
'type': '1000base-t',
|
||||
},
|
||||
{
|
||||
'device_type': self.devicetype.pk,
|
||||
'name': 'Test Interface Template 6',
|
||||
'type': '1000base-t',
|
||||
},
|
||||
]
|
||||
|
||||
@ -1540,6 +1544,7 @@ class InterfaceTemplateTest(APITestCase):
|
||||
data = {
|
||||
'device_type': self.devicetype.pk,
|
||||
'name': 'Test Interface Template X',
|
||||
'type': '1000base-x-gbic',
|
||||
}
|
||||
|
||||
url = reverse('dcim-api:interfacetemplate-detail', kwargs={'pk': self.interfacetemplate1.pk})
|
||||
@ -2650,9 +2655,9 @@ class InterfaceTest(APITestCase):
|
||||
self.device = Device.objects.create(
|
||||
device_type=devicetype, device_role=devicerole, name='Test Device 1', site=site
|
||||
)
|
||||
self.interface1 = Interface.objects.create(device=self.device, name='Test Interface 1')
|
||||
self.interface2 = Interface.objects.create(device=self.device, name='Test Interface 2')
|
||||
self.interface3 = Interface.objects.create(device=self.device, name='Test Interface 3')
|
||||
self.interface1 = Interface.objects.create(device=self.device, name='Test Interface 1', type='1000base-t')
|
||||
self.interface2 = Interface.objects.create(device=self.device, name='Test Interface 2', type='1000base-t')
|
||||
self.interface3 = Interface.objects.create(device=self.device, name='Test Interface 3', type='1000base-t')
|
||||
|
||||
self.vlan1 = VLAN.objects.create(name="Test VLAN 1", vid=1)
|
||||
self.vlan2 = VLAN.objects.create(name="Test VLAN 2", vid=2)
|
||||
@ -2713,6 +2718,7 @@ class InterfaceTest(APITestCase):
|
||||
data = {
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface 4',
|
||||
'type': '1000base-t',
|
||||
}
|
||||
|
||||
url = reverse('dcim-api:interface-list')
|
||||
@ -2729,6 +2735,7 @@ class InterfaceTest(APITestCase):
|
||||
data = {
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface 4',
|
||||
'type': '1000base-t',
|
||||
'mode': InterfaceModeChoices.MODE_TAGGED,
|
||||
'untagged_vlan': self.vlan3.id,
|
||||
'tagged_vlans': [self.vlan1.id, self.vlan2.id],
|
||||
@ -2750,14 +2757,17 @@ class InterfaceTest(APITestCase):
|
||||
{
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface 4',
|
||||
'type': '1000base-t',
|
||||
},
|
||||
{
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface 5',
|
||||
'type': '1000base-t',
|
||||
},
|
||||
{
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface 6',
|
||||
'type': '1000base-t',
|
||||
},
|
||||
]
|
||||
|
||||
@ -2776,6 +2786,7 @@ class InterfaceTest(APITestCase):
|
||||
{
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface 4',
|
||||
'type': '1000base-t',
|
||||
'mode': InterfaceModeChoices.MODE_TAGGED,
|
||||
'untagged_vlan': self.vlan2.id,
|
||||
'tagged_vlans': [self.vlan1.id],
|
||||
@ -2783,6 +2794,7 @@ class InterfaceTest(APITestCase):
|
||||
{
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface 5',
|
||||
'type': '1000base-t',
|
||||
'mode': InterfaceModeChoices.MODE_TAGGED,
|
||||
'untagged_vlan': self.vlan2.id,
|
||||
'tagged_vlans': [self.vlan1.id],
|
||||
@ -2790,6 +2802,7 @@ class InterfaceTest(APITestCase):
|
||||
{
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface 6',
|
||||
'type': '1000base-t',
|
||||
'mode': InterfaceModeChoices.MODE_TAGGED,
|
||||
'untagged_vlan': self.vlan2.id,
|
||||
'tagged_vlans': [self.vlan1.id],
|
||||
@ -2815,6 +2828,7 @@ class InterfaceTest(APITestCase):
|
||||
data = {
|
||||
'device': self.device.pk,
|
||||
'name': 'Test Interface X',
|
||||
'type': '1000base-x-gbic',
|
||||
'lag': lag_interface.pk,
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user