Пример #1
0
class DeviceTypeSerializer(CustomFieldModelSerializer):
    manufacturer = NestedManufacturerSerializer()
    interface_ordering = ChoiceFieldSerializer(choices=IFACE_ORDERING_CHOICES)
    subdevice_role = ChoiceFieldSerializer(choices=SUBDEVICE_ROLE_CHOICES)
    instance_count = serializers.IntegerField(source='instances.count',
                                              read_only=True)

    class Meta:
        model = DeviceType
        fields = [
            'id',
            'manufacturer',
            'model',
            'slug',
            'part_number',
            'u_height',
            'is_full_depth',
            'interface_ordering',
            'is_console_server',
            'is_pdu',
            'is_network_device',
            'subdevice_role',
            'comments',
            'custom_fields',
            'instance_count',
        ]
Пример #2
0
class IPAddressSerializer(CustomFieldModelSerializer):
    vrf = NestedVRFSerializer()
    tenant = NestedTenantSerializer()
    status = ChoiceFieldSerializer(choices=IPADDRESS_STATUS_CHOICES)
    role = ChoiceFieldSerializer(choices=IPADDRESS_ROLE_CHOICES)
    interface = IPAddressInterfaceSerializer()

    class Meta:
        model = IPAddress
        fields = [
            'id',
            'family',
            'address',
            'vrf',
            'tenant',
            'status',
            'role',
            'interface',
            'description',
            'nat_inside',
            'nat_outside',
            'custom_fields',
            'created',
            'last_updated',
        ]
Пример #3
0
class RackSerializer(CustomFieldModelSerializer):
    site = NestedSiteSerializer()
    group = NestedRackGroupSerializer()
    tenant = NestedTenantSerializer()
    role = NestedRackRoleSerializer()
    type = ChoiceFieldSerializer(choices=RACK_TYPE_CHOICES)
    width = ChoiceFieldSerializer(choices=RACK_WIDTH_CHOICES)

    class Meta:
        model = Rack
        fields = [
            'id',
            'name',
            'facility_id',
            'display_name',
            'site',
            'group',
            'tenant',
            'role',
            'type',
            'width',
            'u_height',
            'desc_units',
            'comments',
            'custom_fields',
        ]
Пример #4
0
class DeviceSerializer(CustomFieldModelSerializer):
    device_type = NestedDeviceTypeSerializer()
    device_role = NestedDeviceRoleSerializer()
    tenant = NestedTenantSerializer()
    platform = NestedPlatformSerializer()
    site = NestedSiteSerializer()
    rack = NestedRackSerializer()
    face = ChoiceFieldSerializer(choices=RACK_FACE_CHOICES)
    status = ChoiceFieldSerializer(choices=STATUS_CHOICES)
    primary_ip = DeviceIPAddressSerializer()
    primary_ip4 = DeviceIPAddressSerializer()
    primary_ip6 = DeviceIPAddressSerializer()
    parent_device = serializers.SerializerMethodField()

    class Meta:
        model = Device
        fields = [
            'id', 'name', 'display_name', 'device_type', 'device_role', 'tenant', 'platform', 'serial', 'asset_tag',
            'site', 'rack', 'position', 'face', 'parent_device', 'status', 'primary_ip', 'primary_ip4', 'primary_ip6',
            'comments', 'custom_fields',
        ]

    def get_parent_device(self, obj):
        try:
            device_bay = obj.parent_bay
        except DeviceBay.DoesNotExist:
            return None
        context = {'request': self.context['request']}
        data = NestedDeviceSerializer(instance=device_bay.device, context=context).data
        data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data
        return data
Пример #5
0
class InterfaceSerializer(serializers.ModelSerializer):
    device = NestedDeviceSerializer()
    form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES)
    lag = NestedInterfaceSerializer()
    is_connected = serializers.SerializerMethodField(read_only=True)
    interface_connection = serializers.SerializerMethodField(read_only=True)
    circuit_termination = InterfaceCircuitTerminationSerializer()
    untagged_vlan = InterfaceVLANSerializer()
    mode = ChoiceFieldSerializer(choices=IFACE_MODE_CHOICES)
    tagged_vlans = InterfaceVLANSerializer(many=True)

    class Meta:
        model = Interface
        fields = [
            'id',
            'device',
            'name',
            'form_factor',
            'enabled',
            'lag',
            'mtu',
            'mac_address',
            'mgmt_only',
            'description',
            'is_connected',
            'interface_connection',
            'circuit_termination',
            'mode',
            'untagged_vlan',
            'tagged_vlans',
        ]

    def get_is_connected(self, obj):
        """
        Return True if the interface has a connected interface or circuit termination.
        """
        if obj.connection:
            return True
        try:
            circuit_termination = obj.circuit_termination
            return True
        except CircuitTermination.DoesNotExist:
            pass
        return False

    def get_interface_connection(self, obj):
        if obj.connection:
            return OrderedDict((
                ('interface',
                 PeerInterfaceSerializer(obj.connected_interface,
                                         context=self.context).data),
                ('status', obj.connection.connection_status),
            ))
        return None
Пример #6
0
class VirtualMachineSerializer(CustomFieldModelSerializer):
    status = ChoiceFieldSerializer(choices=STATUS_CHOICES)
    cluster = NestedClusterSerializer()
    role = NestedDeviceRoleSerializer()
    tenant = NestedTenantSerializer()
    platform = NestedPlatformSerializer()
    primary_ip = VirtualMachineIPAddressSerializer()
    primary_ip4 = VirtualMachineIPAddressSerializer()
    primary_ip6 = VirtualMachineIPAddressSerializer()

    class Meta:
        model = VirtualMachine
        fields = [
            'id',
            'name',
            'status',
            'cluster',
            'role',
            'tenant',
            'platform',
            'primary_ip',
            'primary_ip4',
            'primary_ip6',
            'vcpus',
            'memory',
            'disk',
            'comments',
            'custom_fields',
            'created',
            'last_updated',
        ]
Пример #7
0
class PrefixSerializer(CustomFieldModelSerializer):
    site = NestedSiteSerializer()
    vrf = NestedVRFSerializer()
    tenant = NestedTenantSerializer()
    vlan = NestedVLANSerializer()
    status = ChoiceFieldSerializer(choices=PREFIX_STATUS_CHOICES)
    role = NestedRoleSerializer()

    class Meta:
        model = Prefix
        fields = [
            'id',
            'family',
            'prefix',
            'site',
            'vrf',
            'tenant',
            'vlan',
            'status',
            'role',
            'is_pool',
            'description',
            'custom_fields',
            'created',
            'last_updated',
        ]
Пример #8
0
class InterfaceSerializer(serializers.ModelSerializer):
    device = NestedDeviceSerializer()
    form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES)
    lag = NestedInterfaceSerializer()
    connection = serializers.SerializerMethodField(read_only=True)
    connected_interface = serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = Interface
        fields = [
            'id',
            'device',
            'name',
            'form_factor',
            'lag',
            'mac_address',
            'mgmt_only',
            'description',
            'connection',
            'connected_interface',
        ]

    def get_connection(self, obj):
        if obj.connection:
            return NestedInterfaceConnectionSerializer(
                obj.connection, context=self.context).data
        return None

    def get_connected_interface(self, obj):
        if obj.connected_interface:
            return PeerInterfaceSerializer(obj.connected_interface,
                                           context=self.context).data
        return None
Пример #9
0
class InterfaceTemplateSerializer(serializers.ModelSerializer):
    device_type = NestedDeviceTypeSerializer()
    form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES)

    class Meta:
        model = InterfaceTemplate
        fields = ['id', 'device_type', 'name', 'form_factor', 'mgmt_only']
Пример #10
0
class UserActionSerializer(serializers.ModelSerializer):
    user = NestedUserSerializer()
    action = ChoiceFieldSerializer(choices=ACTION_CHOICES)

    class Meta:
        model = UserAction
        fields = ['id', 'time', 'user', 'action', 'message']
class SiteSerializer(CustomFieldModelSerializer):
    status = ChoiceFieldSerializer(choices=SITE_STATUS_CHOICES)
    region = NestedRegionSerializer()
    tenant = NestedTenantSerializer()
    time_zone = TimeZoneField(required=False)

    class Meta:
        model = Site
        fields = [
            'id',
            'name',
            'slug',
            'status',
            'region',
            'tenant',
            'facility',
            'asn',
            'time_zone',
            'description',
            'physical_address',
            'shipping_address',
            'contact_name',
            'contact_phone',
            'contact_email',
            'comments',
            'custom_fields',
            'created',
            'last_updated',
            'count_prefixes',
            'count_vlans',
            'count_racks',
            'count_devices',
            'count_circuits',
        ]
Пример #12
0
class ServiceSerializer(serializers.ModelSerializer):
    device = NestedDeviceSerializer()
    protocol = ChoiceFieldSerializer(choices=IP_PROTOCOL_CHOICES)
    ipaddresses = NestedIPAddressSerializer(many=True)

    class Meta:
        model = Service
        fields = ['id', 'device', 'name', 'port', 'protocol', 'ipaddresses', 'description']
Пример #13
0
class InterfaceConnectionSerializer(serializers.ModelSerializer):
    interface_a = PeerInterfaceSerializer()
    interface_b = PeerInterfaceSerializer()
    connection_status = ChoiceFieldSerializer(choices=CONNECTION_STATUS_CHOICES)

    class Meta:
        model = InterfaceConnection
        fields = ['id', 'interface_a', 'interface_b', 'connection_status']
Пример #14
0
class NarrowPrefixSerializer(CustomFieldModelSerializer):
    vlan = NestedVLANSerializer()
    status = ChoiceFieldSerializer(choices=PREFIX_STATUS_CHOICES)
    role = NestedRoleSerializer()

    class Meta:
        model = Prefix
        fields = [
            'id', 'family', 'prefix', 'vlan', 'status', 'role', 'is_pool', 'description',
            'custom_fields', 'created', 'last_updated',
        ]
Пример #15
0
class PeerInterfaceSerializer(serializers.ModelSerializer):
    url = serializers.HyperlinkedIdentityField(
        view_name='dcim-api:interface-detail')
    device = NestedDeviceSerializer()
    form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES)

    class Meta:
        model = Interface
        fields = [
            'id', 'url', 'device', 'name', 'form_factor', 'mac_address',
            'mgmt_only', 'description'
        ]
Пример #16
0
class CircuitSerializer(CustomFieldModelSerializer):
    provider = NestedProviderSerializer()
    status = ChoiceFieldSerializer(choices=CIRCUIT_STATUS_CHOICES)
    type = NestedCircuitTypeSerializer()
    tenant = NestedTenantSerializer()

    class Meta:
        model = Circuit
        fields = [
            'id', 'cid', 'provider', 'type', 'status', 'tenant', 'install_date', 'commit_rate', 'description',
            'comments', 'custom_fields', 'created', 'last_updated',
        ]
Пример #17
0
class InterfaceSerializer(serializers.ModelSerializer):
    virtual_machine = NestedVirtualMachineSerializer()
    mode = ChoiceFieldSerializer(choices=IFACE_MODE_CHOICES)
    untagged_vlan = InterfaceVLANSerializer()
    tagged_vlans = InterfaceVLANSerializer(many=True)

    class Meta:
        model = Interface
        fields = [
            'id', 'name', 'virtual_machine', 'enabled', 'mac_address', 'mtu', 'mode', 'untagged_vlan', 'tagged_vlans',
            'description',
        ]
Пример #18
0
class ServiceSerializer(serializers.ModelSerializer):
    device = NestedDeviceSerializer()
    virtual_machine = NestedVirtualMachineSerializer()
    protocol = ChoiceFieldSerializer(choices=IP_PROTOCOL_CHOICES)
    ipaddresses = NestedIPAddressSerializer(many=True)

    class Meta:
        model = Service
        fields = [
            'id', 'device', 'virtual_machine', 'name', 'port', 'protocol', 'ipaddresses', 'description', 'created',
            'last_updated',
        ]
Пример #19
0
class FirewallSerializer(serializers.ModelSerializer):
    device_type = ChoiceFieldSerializer(choices=F_DEVICE_TYPE_CHOICES)

    class Meta:
        model = Firewall
        fields = [
            'id',
            'name',
            'hostname',
            'username',
            'device_type',
            'panorama_device_group',
        ]
Пример #20
0
class VLANSerializer(CustomFieldModelSerializer):
    site = NestedSiteSerializer()
    group = NestedVLANGroupSerializer()
    tenant = NestedTenantSerializer()
    status = ChoiceFieldSerializer(choices=VLAN_STATUS_CHOICES)
    role = NestedRoleSerializer()

    class Meta:
        model = VLAN
        fields = [
            'id', 'site', 'group', 'vid', 'name', 'tenant', 'status', 'role', 'description', 'display_name',
            'custom_fields', 'created', 'last_updated',
        ]
Пример #21
0
class RenderedGraphSerializer(serializers.ModelSerializer):
    embed_url = serializers.SerializerMethodField()
    embed_link = serializers.SerializerMethodField()
    type = ChoiceFieldSerializer(choices=GRAPH_TYPE_CHOICES)

    class Meta:
        model = Graph
        fields = ['id', 'type', 'weight', 'name', 'embed_url', 'embed_link']

    def get_embed_url(self, obj):
        return obj.embed_url(self.context['graphed_object'])

    def get_embed_link(self, obj):
        return obj.embed_link(self.context['graphed_object'])
Пример #22
0
class GraphSerializer(serializers.ModelSerializer):
    type = ChoiceFieldSerializer(choices=GRAPH_TYPE_CHOICES)

    class Meta:
        model = Graph
        fields = ['id', 'type', 'weight', 'name', 'source', 'link']