Skip to content

BGP Models API Package

nautobot_bgp_models.api

REST API module for nautobot_bgp_models app.

filter_backends

Filter Backends in use by BGP models app.

IncludeInheritedFilterBackend

Bases: NautobotFilterBackend

Used by views that work with inheritance (PeerGroupViewSet, PeerEndpointViewSet).

Recognizes that "include_inherited" is not a filterset parameter but rather a view parameter (see InheritableFieldsViewSetMixin)

Source code in nautobot_bgp_models/api/filter_backends.py
class IncludeInheritedFilterBackend(NautobotFilterBackend):
    """
    Used by views that work with inheritance (PeerGroupViewSet, PeerEndpointViewSet).

    Recognizes that "include_inherited" is not a filterset parameter but rather a view parameter (see InheritableFieldsViewSetMixin)
    """

    def get_filterset_kwargs(self, request, queryset, view):
        """Pop include_inherited as it is not a valid filter field."""
        kwargs = super().get_filterset_kwargs(request, queryset, view)
        try:
            kwargs["data"].pop("include_inherited")
        except KeyError:
            pass
        return kwargs
get_filterset_kwargs(request, queryset, view)

Pop include_inherited as it is not a valid filter field.

Source code in nautobot_bgp_models/api/filter_backends.py
def get_filterset_kwargs(self, request, queryset, view):
    """Pop include_inherited as it is not a valid filter field."""
    kwargs = super().get_filterset_kwargs(request, queryset, view)
    try:
        kwargs["data"].pop("include_inherited")
    except KeyError:
        pass
    return kwargs

serializers

REST API serializers for nautobot_bgp_models models.

AddressFamilySerializer

Bases: NautobotModelSerializer, ExtraAttributesSerializerMixin

REST API serializer for AddressFamily records.

Source code in nautobot_bgp_models/api/serializers.py
class AddressFamilySerializer(NautobotModelSerializer, ExtraAttributesSerializerMixin):
    """REST API serializer for AddressFamily records."""

    class Meta:
        model = models.AddressFamily
        fields = "__all__"

AutonomousSystemRangeSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

REST API serializer for AutonomousSystemRange records.

Source code in nautobot_bgp_models/api/serializers.py
class AutonomousSystemRangeSerializer(
    NautobotModelSerializer,
    TaggedModelSerializerMixin,
):
    """REST API serializer for AutonomousSystemRange records."""

    url = serializers.HyperlinkedIdentityField(
        view_name="plugins-api:nautobot_bgp_models-api:autonomoussystemrange-detail"
    )

    class Meta:
        model = models.AutonomousSystemRange
        fields = "__all__"

AutonomousSystemSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

REST API serializer for AutonomousSystem records.

Source code in nautobot_bgp_models/api/serializers.py
class AutonomousSystemSerializer(
    NautobotModelSerializer,
    TaggedModelSerializerMixin,
):
    """REST API serializer for AutonomousSystem records."""

    url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_bgp_models-api:autonomoussystem-detail")

    class Meta:
        model = models.AutonomousSystem
        fields = "__all__"

BGPRoutingInstanceSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin, ExtraAttributesSerializerMixin

REST API serializer for Peering records.

Source code in nautobot_bgp_models/api/serializers.py
class BGPRoutingInstanceSerializer(
    NautobotModelSerializer,
    TaggedModelSerializerMixin,
    ExtraAttributesSerializerMixin,
):
    """REST API serializer for Peering records."""

    class Meta:
        model = models.BGPRoutingInstance
        fields = "__all__"

ExtraAttributesSerializerMixin

Bases: Serializer

Common mixin for BGP Extra Attributes.

Source code in nautobot_bgp_models/api/serializers.py
class ExtraAttributesSerializerMixin(serializers.Serializer):  # pylint: disable=abstract-method
    """Common mixin for BGP Extra Attributes."""

    extra_attributes = serializers.JSONField(required=False, allow_null=True)

    def to_representation(self, instance):
        """Render the model instance to a Python dict.

        If `include_inherited` is specified as a request parameter, include object's get_extra_attributes().
        """
        req = self.context["request"]
        if hasattr(req, "query_params") and is_truthy(req.query_params.get("include_inherited", False)):
            setattr(instance, "extra_attributes", instance.get_extra_attributes())
        return super().to_representation(instance)
to_representation(instance)

Render the model instance to a Python dict.

If include_inherited is specified as a request parameter, include object's get_extra_attributes().

Source code in nautobot_bgp_models/api/serializers.py
def to_representation(self, instance):
    """Render the model instance to a Python dict.

    If `include_inherited` is specified as a request parameter, include object's get_extra_attributes().
    """
    req = self.context["request"]
    if hasattr(req, "query_params") and is_truthy(req.query_params.get("include_inherited", False)):
        setattr(instance, "extra_attributes", instance.get_extra_attributes())
    return super().to_representation(instance)

InheritableFieldsSerializerMixin

Common mixin for Serializers that support an additional include_inherited query parameter.

Source code in nautobot_bgp_models/api/serializers.py
class InheritableFieldsSerializerMixin:
    """Common mixin for Serializers that support an additional `include_inherited` query parameter."""

    def to_representation(self, instance):
        """Render the model instance to a Python dict.

        If `include_inherited` is specified as a request parameter, include inherited field values as appropriate.
        """
        req = self.context["request"]
        if hasattr(req, "query_params") and is_truthy(req.query_params.get("include_inherited", False)):
            inherited_fields = instance.get_fields(include_inherited=True)
            for field, data in inherited_fields.items():
                setattr(instance, field, data["value"])
        return super().to_representation(instance)
to_representation(instance)

Render the model instance to a Python dict.

If include_inherited is specified as a request parameter, include inherited field values as appropriate.

Source code in nautobot_bgp_models/api/serializers.py
def to_representation(self, instance):
    """Render the model instance to a Python dict.

    If `include_inherited` is specified as a request parameter, include inherited field values as appropriate.
    """
    req = self.context["request"]
    if hasattr(req, "query_params") and is_truthy(req.query_params.get("include_inherited", False)):
        inherited_fields = instance.get_fields(include_inherited=True)
        for field, data in inherited_fields.items():
            setattr(instance, field, data["value"])
    return super().to_representation(instance)

PeerEndpointAddressFamilySerializer

Bases: NautobotModelSerializer, ExtraAttributesSerializerMixin

REST API serializer for PeerEndpointAddressFamily records.

Source code in nautobot_bgp_models/api/serializers.py
class PeerEndpointAddressFamilySerializer(NautobotModelSerializer, ExtraAttributesSerializerMixin):
    """REST API serializer for PeerEndpointAddressFamily records."""

    url = serializers.HyperlinkedIdentityField(
        view_name="plugins-api:nautobot_bgp_models-api:peerendpointaddressfamily-detail"
    )

    class Meta:
        model = models.PeerEndpointAddressFamily
        fields = "__all__"

PeerEndpointSerializer

Bases: InheritableFieldsSerializerMixin, TaggedModelSerializerMixin, NautobotModelSerializer, ExtraAttributesSerializerMixin

REST API serializer for PeerEndpoint records.

Source code in nautobot_bgp_models/api/serializers.py
class PeerEndpointSerializer(
    InheritableFieldsSerializerMixin,
    TaggedModelSerializerMixin,
    NautobotModelSerializer,
    ExtraAttributesSerializerMixin,
):
    """REST API serializer for PeerEndpoint records."""

    class Meta:
        model = models.PeerEndpoint
        fields = "__all__"

    def create(self, validated_data):
        """Create a new PeerEndpoint and update the peer on both sides."""
        record = super().create(validated_data)
        record.peering.update_peers()
        return record

    def update(self, instance, validated_data):
        """When updating an existing PeerEndpoint, ensure peer is properly setup on both side."""
        peering_has_been_updated = False
        if instance.peering.pk != validated_data.get("peering"):
            peering_has_been_updated = True

        result = super().update(instance, validated_data)

        if peering_has_been_updated:
            result.peering.update_peers()

        return result
create(validated_data)

Create a new PeerEndpoint and update the peer on both sides.

Source code in nautobot_bgp_models/api/serializers.py
def create(self, validated_data):
    """Create a new PeerEndpoint and update the peer on both sides."""
    record = super().create(validated_data)
    record.peering.update_peers()
    return record
update(instance, validated_data)

When updating an existing PeerEndpoint, ensure peer is properly setup on both side.

Source code in nautobot_bgp_models/api/serializers.py
def update(self, instance, validated_data):
    """When updating an existing PeerEndpoint, ensure peer is properly setup on both side."""
    peering_has_been_updated = False
    if instance.peering.pk != validated_data.get("peering"):
        peering_has_been_updated = True

    result = super().update(instance, validated_data)

    if peering_has_been_updated:
        result.peering.update_peers()

    return result

PeerGroupAddressFamilySerializer

Bases: NautobotModelSerializer, ExtraAttributesSerializerMixin

REST API serializer for PeerGroupAddressFamily records.

Source code in nautobot_bgp_models/api/serializers.py
class PeerGroupAddressFamilySerializer(NautobotModelSerializer, ExtraAttributesSerializerMixin):
    """REST API serializer for PeerGroupAddressFamily records."""

    url = serializers.HyperlinkedIdentityField(
        view_name="plugins-api:nautobot_bgp_models-api:peergroupaddressfamily-detail"
    )

    class Meta:
        model = models.PeerGroupAddressFamily
        fields = "__all__"

PeerGroupSerializer

Bases: InheritableFieldsSerializerMixin, TaggedModelSerializerMixin, NautobotModelSerializer, ExtraAttributesSerializerMixin

REST API serializer for PeerGroup records.

Source code in nautobot_bgp_models/api/serializers.py
class PeerGroupSerializer(
    InheritableFieldsSerializerMixin,
    TaggedModelSerializerMixin,
    NautobotModelSerializer,
    ExtraAttributesSerializerMixin,
):
    """REST API serializer for PeerGroup records."""

    class Meta:
        model = models.PeerGroup
        fields = "__all__"
        validators = []

    def validate(self, data):
        """Custom validation logic to handle unique-together with a nullable field."""
        if data.get("vrf"):
            validator = validators.UniqueTogetherValidator(
                queryset=models.PeerGroup.objects.all(), fields=("routing_instance", "name", "vrf")
            )
            validator(data, self)

        super().validate(data)
        return data
validate(data)

Custom validation logic to handle unique-together with a nullable field.

Source code in nautobot_bgp_models/api/serializers.py
def validate(self, data):
    """Custom validation logic to handle unique-together with a nullable field."""
    if data.get("vrf"):
        validator = validators.UniqueTogetherValidator(
            queryset=models.PeerGroup.objects.all(), fields=("routing_instance", "name", "vrf")
        )
        validator(data, self)

    super().validate(data)
    return data

PeerGroupTemplateSerializer

Bases: NautobotModelSerializer, ExtraAttributesSerializerMixin

REST API serializer for PeerGroup records.

Source code in nautobot_bgp_models/api/serializers.py
class PeerGroupTemplateSerializer(NautobotModelSerializer, ExtraAttributesSerializerMixin):
    """REST API serializer for PeerGroup records."""

    class Meta:
        model = models.PeerGroupTemplate
        fields = "__all__"

PeeringSerializer

Bases: NautobotModelSerializer

REST API serializer for Peering records.

Source code in nautobot_bgp_models/api/serializers.py
class PeeringSerializer(NautobotModelSerializer):
    """REST API serializer for Peering records."""

    class Meta:
        model = models.Peering
        fields = "__all__"

urls

REST API URL registration for nautobot_bgp_models.

views

REST API viewsets for nautobot_bgp_models.

AddressFamilyViewSet

Bases: InheritableFieldsViewSetMixin, NautobotModelViewSet

REST API viewset for AddressFamily records.

Source code in nautobot_bgp_models/api/views.py
class AddressFamilyViewSet(InheritableFieldsViewSetMixin, NautobotModelViewSet):
    """REST API viewset for AddressFamily records."""

    queryset = models.AddressFamily.objects.all()
    serializer_class = serializers.AddressFamilySerializer
    filterset_class = filters.AddressFamilyFilterSet

AutonomousSystemRangeViewSet

Bases: NautobotModelViewSet

REST API viewset for AutonomousSystemRange records.

Source code in nautobot_bgp_models/api/views.py
class AutonomousSystemRangeViewSet(NautobotModelViewSet):
    """REST API viewset for AutonomousSystemRange records."""

    queryset = models.AutonomousSystemRange.objects.all()
    serializer_class = serializers.AutonomousSystemRangeSerializer
    filterset_class = filters.AutonomousSystemRangeFilterSet

AutonomousSystemViewSet

Bases: NautobotModelViewSet

REST API viewset for AutonomousSystem records.

Source code in nautobot_bgp_models/api/views.py
class AutonomousSystemViewSet(NautobotModelViewSet):
    """REST API viewset for AutonomousSystem records."""

    queryset = models.AutonomousSystem.objects.all()
    serializer_class = serializers.AutonomousSystemSerializer
    filterset_class = filters.AutonomousSystemFilterSet

BGPRoutingInstanceViewSet

Bases: NautobotModelViewSet

REST API viewset for BGPRoutingInstance records.

Source code in nautobot_bgp_models/api/views.py
class BGPRoutingInstanceViewSet(NautobotModelViewSet):
    """REST API viewset for BGPRoutingInstance records."""

    queryset = models.BGPRoutingInstance.objects.all()
    serializer_class = serializers.BGPRoutingInstanceSerializer
    filterset_class = filters.BGPRoutingInstanceFilterSet

InheritableFieldsViewSetMixin

Common mixin for ViewSets that support an additional include_inherited query parameter.

Source code in nautobot_bgp_models/api/views.py
class InheritableFieldsViewSetMixin:
    """Common mixin for ViewSets that support an additional `include_inherited` query parameter."""

    @extend_schema(parameters=[include_inherited])
    def list(self, request):
        """List all objects of this type."""
        return super().list(request)

    @extend_schema(parameters=[include_inherited])
    def retrieve(self, request, pk=None):
        """Retrieve a specific object instance."""
        return super().retrieve(request, pk=pk)
list(request)

List all objects of this type.

Source code in nautobot_bgp_models/api/views.py
@extend_schema(parameters=[include_inherited])
def list(self, request):
    """List all objects of this type."""
    return super().list(request)
retrieve(request, pk=None)

Retrieve a specific object instance.

Source code in nautobot_bgp_models/api/views.py
@extend_schema(parameters=[include_inherited])
def retrieve(self, request, pk=None):
    """Retrieve a specific object instance."""
    return super().retrieve(request, pk=pk)

PeerEndpointAddressFamilyViewSet

Bases: InheritableFieldsViewSetMixin, NautobotModelViewSet

REST API viewset for PeerEndpointAddressFamily records.

Source code in nautobot_bgp_models/api/views.py
class PeerEndpointAddressFamilyViewSet(InheritableFieldsViewSetMixin, NautobotModelViewSet):
    """REST API viewset for PeerEndpointAddressFamily records."""

    queryset = models.PeerEndpointAddressFamily.objects.all()
    serializer_class = serializers.PeerEndpointAddressFamilySerializer
    filterset_class = filters.PeerEndpointAddressFamilyFilterSet

PeerEndpointViewSet

Bases: InheritableFieldsViewSetMixin, NautobotModelViewSet

REST API viewset for PeerEndpoint records.

Source code in nautobot_bgp_models/api/views.py
class PeerEndpointViewSet(InheritableFieldsViewSetMixin, NautobotModelViewSet):
    """REST API viewset for PeerEndpoint records."""

    queryset = models.PeerEndpoint.objects.all()
    serializer_class = serializers.PeerEndpointSerializer
    filter_backends = [IncludeInheritedFilterBackend, OrderingFilter]
    filterset_class = filters.PeerEndpointFilterSet

PeerGroupAddressFamilyViewSet

Bases: InheritableFieldsViewSetMixin, NautobotModelViewSet

REST API viewset for PeerGroupAddressFamily records.

Source code in nautobot_bgp_models/api/views.py
class PeerGroupAddressFamilyViewSet(InheritableFieldsViewSetMixin, NautobotModelViewSet):
    """REST API viewset for PeerGroupAddressFamily records."""

    queryset = models.PeerGroupAddressFamily.objects.all()
    serializer_class = serializers.PeerGroupAddressFamilySerializer
    filterset_class = filters.PeerGroupAddressFamilyFilterSet

PeerGroupTemplateViewSet

Bases: InheritableFieldsViewSetMixin, NautobotModelViewSet

REST API viewset for PeerGroupTemplate records.

Source code in nautobot_bgp_models/api/views.py
class PeerGroupTemplateViewSet(InheritableFieldsViewSetMixin, NautobotModelViewSet):
    """REST API viewset for PeerGroupTemplate records."""

    queryset = models.PeerGroupTemplate.objects.all()
    serializer_class = serializers.PeerGroupTemplateSerializer
    filterset_class = filters.PeerGroupTemplateFilterSet

PeerGroupViewSet

Bases: InheritableFieldsViewSetMixin, NautobotModelViewSet

REST API viewset for PeerGroup records.

Source code in nautobot_bgp_models/api/views.py
class PeerGroupViewSet(InheritableFieldsViewSetMixin, NautobotModelViewSet):
    """REST API viewset for PeerGroup records."""

    queryset = models.PeerGroup.objects.all()
    serializer_class = serializers.PeerGroupSerializer
    filter_backends = [IncludeInheritedFilterBackend, OrderingFilter]
    filterset_class = filters.PeerGroupFilterSet

PeeringViewSet

Bases: NautobotModelViewSet

REST API viewset for Peering records.

Source code in nautobot_bgp_models/api/views.py
class PeeringViewSet(NautobotModelViewSet):
    """REST API viewset for Peering records."""

    queryset = models.Peering.objects.all()
    serializer_class = serializers.PeeringSerializer
    filterset_class = filters.PeeringFilterSet