Exemple #1
0
class ServiceSerializer(CustomFieldModelSerializer):
    device = NestedDeviceSerializer(required=False, allow_null=True)
    virtual_machine = NestedVirtualMachineSerializer(required=False,
                                                     allow_null=True)
    protocol = ChoiceField(choices=ServiceProtocolChoices)
    ipaddresses = SerializedPKRelatedField(
        queryset=IPAddress.objects.all(),
        serializer=NestedIPAddressSerializer,
        required=False,
        many=True)

    class Meta:
        model = Service
        fields = [
            'id',
            'device',
            'virtual_machine',
            'name',
            'port',
            'protocol',
            'ipaddresses',
            'description',
            'custom_fields',
            'created',
            'last_updated',
        ]
class ServiceSerializer(PrimaryModelSerializer):
    url = serializers.HyperlinkedIdentityField(
        view_name='ipam-api:service-detail')
    device = NestedDeviceSerializer(required=False, allow_null=True)
    virtual_machine = NestedVirtualMachineSerializer(required=False,
                                                     allow_null=True)
    protocol = ChoiceField(choices=ServiceProtocolChoices, required=False)
    ipaddresses = SerializedPKRelatedField(
        queryset=IPAddress.objects.all(),
        serializer=NestedIPAddressSerializer,
        required=False,
        many=True)

    class Meta:
        model = Service
        fields = [
            'id',
            'url',
            'display',
            'device',
            'virtual_machine',
            'name',
            'ports',
            'protocol',
            'ipaddresses',
            'description',
            'tags',
            'custom_fields',
            'created',
            'last_updated',
        ]
Exemple #3
0
class IPAddressInterfaceSerializer(WritableNestedSerializer):
    """
    Nested representation of an Interface which may belong to a Device *or* a VirtualMachine.
    """
    url = serializers.SerializerMethodField(
    )  # We're imitating a HyperlinkedIdentityField here
    device = NestedDeviceSerializer(read_only=True)
    virtual_machine = NestedVirtualMachineSerializer(read_only=True)

    class Meta:
        model = Interface
        fields = [
            'id',
            'url',
            'device',
            'virtual_machine',
            'name',
        ]

    def get_url(self, obj):
        """
        Return a link to the Interface via either the DCIM API if the parent is a Device, or via the virtualization API
        if the parent is a VirtualMachine.
        """
        url_name = 'dcim-api:interface-detail' if obj.device else 'virtualization-api:interface-detail'
        return reverse(url_name,
                       kwargs={'pk': obj.pk},
                       request=self.context['request'])
class ProxmoxVMSerializer(serializers.ModelSerializer):
    """Serializer for the ProxmoxVM model."""

    cluster = NestedClusterSerializer(
        # set relationship type to many-to-one
        many=False,
        # the field is allowed as the input in API calls
        read_only=False,
        # specifies whether field is required.
        # it must follow the corresponding property set for the model field
        required=False,
        help_text="ProxmoxVM Cluster"
    )

    virtual_machine = NestedVirtualMachineSerializer(
        many=False,
        read_only=False,
        required=True,
        help_text="ProxmoxVM Virtual Machine"
    )

    class Meta:
        model = ProxmoxVM
        fields = [
            "id",
            "cluster",
            "virtual_machine",
            "proxmox_vm_id",
            "status",
            "node",
            "vcpus",
            "memory",
            "disk",
            "type",
            "description",
        ]