From 4acd84223718733fb65961658f979654c91d295b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 12 Apr 2019 13:57:33 -0400 Subject: [PATCH] Maintain backward-compatibile support for Interface.form_factor until v2.7 --- netbox/dcim/api/serializers.py | 12 ++++++++---- netbox/dcim/models.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index fe0ea9da8..ab1be0b01 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -232,10 +232,12 @@ class PowerOutletTemplateSerializer(ValidatedModelSerializer): class InterfaceTemplateSerializer(ValidatedModelSerializer): device_type = NestedDeviceTypeSerializer() type = ChoiceField(choices=IFACE_TYPE_CHOICES, required=False) + # TODO: Remove in v2.7 (backward-compatibility for form_factor) + form_factor = ChoiceField(choices=IFACE_TYPE_CHOICES, required=False) class Meta: model = InterfaceTemplate - fields = ['id', 'device_type', 'name', 'type', 'mgmt_only'] + fields = ['id', 'device_type', 'name', 'type', 'form_factor', 'mgmt_only'] class RearPortTemplateSerializer(ValidatedModelSerializer): @@ -419,6 +421,8 @@ class PowerPortSerializer(TaggitSerializer, ConnectedEndpointSerializer): class InterfaceSerializer(TaggitSerializer, ConnectedEndpointSerializer): device = NestedDeviceSerializer() type = ChoiceField(choices=IFACE_TYPE_CHOICES, required=False) + # TODO: Remove in v2.7 (backward-compatibility for form_factor) + form_factor = ChoiceField(choices=IFACE_TYPE_CHOICES, required=False) lag = NestedInterfaceSerializer(required=False, allow_null=True) mode = ChoiceField(choices=IFACE_MODE_CHOICES, required=False, allow_null=True) untagged_vlan = NestedVLANSerializer(required=False, allow_null=True) @@ -434,9 +438,9 @@ class InterfaceSerializer(TaggitSerializer, ConnectedEndpointSerializer): class Meta: model = Interface fields = [ - 'id', 'device', 'name', 'type', 'enabled', 'lag', 'mtu', 'mac_address', 'mgmt_only', 'description', - 'connected_endpoint_type', 'connected_endpoint', 'connection_status', 'cable', 'mode', 'untagged_vlan', - 'tagged_vlans', 'tags', 'count_ipaddresses', + 'id', 'device', 'name', 'type', 'form_factor', 'enabled', 'lag', 'mtu', 'mac_address', 'mgmt_only', + 'description', 'connected_endpoint_type', 'connected_endpoint', 'connection_status', 'cable', 'mode', + 'untagged_vlan', 'tagged_vlans', 'tags', 'count_ipaddresses', ] # TODO: This validation should be handled by Interface.clean() diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 0fd060115..d1eb0d98d 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -1150,6 +1150,22 @@ class InterfaceTemplate(ComponentTemplateModel): def __str__(self): return self.name + # TODO: Remove in v2.7 + @property + def form_factor(self): + """ + Backward-compatibility for form_factor + """ + return self.type + + # TODO: Remove in v2.7 + @form_factor.setter + def form_factor(self, value): + """ + Backward-compatibility for form_factor + """ + self.type = value + class FrontPortTemplate(ComponentTemplateModel): """ @@ -2254,6 +2270,22 @@ class Interface(CableTermination, ComponentModel): object_data=serialize_object(self) ).save() + # TODO: Remove in v2.7 + @property + def form_factor(self): + """ + Backward-compatibility for form_factor + """ + return self.type + + # TODO: Remove in v2.7 + @form_factor.setter + def form_factor(self, value): + """ + Backward-compatibility for form_factor + """ + self.type = value + @property def connected_endpoint(self): if self._connected_interface: