Skip to content

Golden Config API Package

nautobot_golden_config.api

REST API module for nautobot_golden_config app.

serializers

REST API serializer capabilities for graphql app.

ComplianceFeatureSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for ComplianceFeature object.

Source code in nautobot_golden_config/api/serializers.py
class ComplianceFeatureSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for ComplianceFeature object."""

    class Meta:
        """Set Meta Data for ComplianceFeature, will serialize all fields."""

        model = models.ComplianceFeature
        fields = "__all__"
Meta

Set Meta Data for ComplianceFeature, will serialize all fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for ComplianceFeature, will serialize all fields."""

    model = models.ComplianceFeature
    fields = "__all__"

ComplianceRuleSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for ComplianceRule object.

Source code in nautobot_golden_config/api/serializers.py
class ComplianceRuleSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for ComplianceRule object."""

    class Meta:
        """Set Meta Data for ComplianceRule, will serialize all fields."""

        model = models.ComplianceRule
        fields = "__all__"
Meta

Set Meta Data for ComplianceRule, will serialize all fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for ComplianceRule, will serialize all fields."""

    model = models.ComplianceRule
    fields = "__all__"

ConfigComplianceSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for ConfigCompliance object.

Source code in nautobot_golden_config/api/serializers.py
class ConfigComplianceSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for ConfigCompliance object."""

    class Meta:
        """Set Meta Data for ConfigCompliance, will serialize fields."""

        model = models.ConfigCompliance
        fields = "__all__"
Meta

Set Meta Data for ConfigCompliance, will serialize fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for ConfigCompliance, will serialize fields."""

    model = models.ConfigCompliance
    fields = "__all__"

ConfigPlanSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for ConfigPlan object.

Source code in nautobot_golden_config/api/serializers.py
class ConfigPlanSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for ConfigPlan object."""

    class Meta:
        """Set Meta Data for ConfigPlan, will serialize all fields."""

        model = models.ConfigPlan
        fields = "__all__"
        read_only_fields = ["device", "plan_type", "feature", "config_set"]
Meta

Set Meta Data for ConfigPlan, will serialize all fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for ConfigPlan, will serialize all fields."""

    model = models.ConfigPlan
    fields = "__all__"
    read_only_fields = ["device", "plan_type", "feature", "config_set"]

ConfigRemoveSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for ConfigRemove object.

Source code in nautobot_golden_config/api/serializers.py
class ConfigRemoveSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for ConfigRemove object."""

    class Meta:
        """Set Meta Data for ConfigRemove, will serialize all fields."""

        model = models.ConfigRemove
        fields = "__all__"
Meta

Set Meta Data for ConfigRemove, will serialize all fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for ConfigRemove, will serialize all fields."""

    model = models.ConfigRemove
    fields = "__all__"

ConfigReplaceSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for ConfigReplace object.

Source code in nautobot_golden_config/api/serializers.py
class ConfigReplaceSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for ConfigReplace object."""

    class Meta:
        """Set Meta Data for ConfigReplace, will serialize all fields."""

        model = models.ConfigReplace
        fields = "__all__"
Meta

Set Meta Data for ConfigReplace, will serialize all fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for ConfigReplace, will serialize all fields."""

    model = models.ConfigReplace
    fields = "__all__"

ConfigToPushSerializer

Bases: DeviceSerializer

Serializer for ConfigToPush view.

Source code in nautobot_golden_config/api/serializers.py
class ConfigToPushSerializer(DeviceSerializer):
    """Serializer for ConfigToPush view."""

    config = serializers.SerializerMethodField()

    class Meta(DeviceSerializer):
        """Extend the Device serializer with the configuration after postprocessing."""

        fields = "__all__"
        model = Device

    def get_config(self, obj):
        """Provide the intended configuration ready after postprocessing to the config field."""
        request = self.context.get("request")
        config_details = models.GoldenConfig.objects.get(device=obj)
        return get_config_postprocessing(config_details, request)
Meta

Bases: DeviceSerializer

Extend the Device serializer with the configuration after postprocessing.

Source code in nautobot_golden_config/api/serializers.py
class Meta(DeviceSerializer):
    """Extend the Device serializer with the configuration after postprocessing."""

    fields = "__all__"
    model = Device
get_config(obj)

Provide the intended configuration ready after postprocessing to the config field.

Source code in nautobot_golden_config/api/serializers.py
def get_config(self, obj):
    """Provide the intended configuration ready after postprocessing to the config field."""
    request = self.context.get("request")
    config_details = models.GoldenConfig.objects.get(device=obj)
    return get_config_postprocessing(config_details, request)

GoldenConfigSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for GoldenConfig object.

Source code in nautobot_golden_config/api/serializers.py
class GoldenConfigSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for GoldenConfig object."""

    class Meta:
        """Set Meta Data for GoldenConfig, will serialize all fields."""

        model = models.GoldenConfig
        fields = "__all__"
Meta

Set Meta Data for GoldenConfig, will serialize all fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for GoldenConfig, will serialize all fields."""

    model = models.GoldenConfig
    fields = "__all__"

GoldenConfigSettingSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for GoldenConfigSetting object.

Source code in nautobot_golden_config/api/serializers.py
class GoldenConfigSettingSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for GoldenConfigSetting object."""

    class Meta:
        """Set Meta Data for GoldenConfigSetting, will serialize all fields."""

        model = models.GoldenConfigSetting
        fields = "__all__"
Meta

Set Meta Data for GoldenConfigSetting, will serialize all fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for GoldenConfigSetting, will serialize all fields."""

    model = models.GoldenConfigSetting
    fields = "__all__"

GraphQLSerializer

Bases: Serializer

Serializer for a GraphQL object.

Source code in nautobot_golden_config/api/serializers.py
class GraphQLSerializer(serializers.Serializer):  # pylint: disable=abstract-method
    """Serializer for a GraphQL object."""

    data = serializers.JSONField()

RemediationSettingSerializer

Bases: NautobotModelSerializer, TaggedModelSerializerMixin

Serializer for RemediationSetting object.

Source code in nautobot_golden_config/api/serializers.py
class RemediationSettingSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
    """Serializer for RemediationSetting object."""

    class Meta:
        """Set Meta Data for RemediationSetting, will serialize all fields."""

        model = models.RemediationSetting
        fields = "__all__"
Meta

Set Meta Data for RemediationSetting, will serialize all fields.

Source code in nautobot_golden_config/api/serializers.py
class Meta:
    """Set Meta Data for RemediationSetting, will serialize all fields."""

    model = models.RemediationSetting
    fields = "__all__"

urls

API for Custom Jobs .

views

View for Golden Config APIs.

ComplianceFeatureViewSet

Bases: NautobotModelViewSet

API viewset for interacting with ComplianceFeature objects.

Source code in nautobot_golden_config/api/views.py
class ComplianceFeatureViewSet(NautobotModelViewSet):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with ComplianceFeature objects."""

    queryset = models.ComplianceFeature.objects.all()
    serializer_class = serializers.ComplianceFeatureSerializer
    filterset_class = filters.ComplianceFeatureFilterSet

ComplianceRuleViewSet

Bases: NautobotModelViewSet

API viewset for interacting with ComplianceRule objects.

Source code in nautobot_golden_config/api/views.py
class ComplianceRuleViewSet(NautobotModelViewSet):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with ComplianceRule objects."""

    queryset = models.ComplianceRule.objects.all()
    serializer_class = serializers.ComplianceRuleSerializer
    filterset_class = filters.ComplianceRuleFilterSet

ConfigComplianceViewSet

Bases: NautobotModelViewSet

API viewset for interacting with ConfigCompliance objects.

Source code in nautobot_golden_config/api/views.py
class ConfigComplianceViewSet(NautobotModelViewSet):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with ConfigCompliance objects."""

    queryset = models.ConfigCompliance.objects.all()
    serializer_class = serializers.ConfigComplianceSerializer
    filterset_class = filters.ConfigComplianceFilterSet

ConfigPlanViewSet

Bases: NautobotAPIVersionMixin, NotesViewSetMixin, ModelViewSetMixin, RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, ListModelMixin, BulkUpdateModelMixin, BulkDestroyModelMixin, GenericViewSet

API viewset for interacting with ConfigPlan objects. Does not support POST to create objects.

Source code in nautobot_golden_config/api/views.py
class ConfigPlanViewSet(
    NautobotAPIVersionMixin,
    NotesViewSetMixin,
    ModelViewSetMixin,
    RetrieveModelMixin,
    UpdateModelMixin,
    DestroyModelMixin,
    ListModelMixin,
    BulkUpdateModelMixin,
    BulkDestroyModelMixin,
    GenericViewSet,
):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with ConfigPlan objects. Does not support POST to create objects."""

    queryset = models.ConfigPlan.objects.all()
    serializer_class = serializers.ConfigPlanSerializer
    filterset_class = filters.ConfigPlanFilterSet

    def get_serializer_context(self):
        """Gather all custom fields for the model. Copied from nautobot.extras.api.views.CustomFieldModelViewSet."""
        content_type = ContentType.objects.get_for_model(self.queryset.model)
        custom_fields = content_type.custom_fields.all()

        context = super().get_serializer_context()
        context.update(
            {
                "custom_fields": custom_fields,
            }
        )
        return context
get_serializer_context()

Gather all custom fields for the model. Copied from nautobot.extras.api.views.CustomFieldModelViewSet.

Source code in nautobot_golden_config/api/views.py
def get_serializer_context(self):
    """Gather all custom fields for the model. Copied from nautobot.extras.api.views.CustomFieldModelViewSet."""
    content_type = ContentType.objects.get_for_model(self.queryset.model)
    custom_fields = content_type.custom_fields.all()

    context = super().get_serializer_context()
    context.update(
        {
            "custom_fields": custom_fields,
        }
    )
    return context

ConfigPushPermissions

Bases: BasePermission

Permissions class to validate access to Devices and GoldenConfig view.

Source code in nautobot_golden_config/api/views.py
class ConfigPushPermissions(BasePermission):
    """Permissions class to validate access to Devices and GoldenConfig view."""

    def has_permission(self, request, view):
        """Method to validated permissions to API view."""
        return request.user.has_perm("nautobot_golden_config.view_goldenconfig")

    def has_object_permission(self, request, view, obj):
        """Validate user access to the object, taking into account constraints."""
        return request.user.has_perm("dcim.view_device", obj=obj)
has_object_permission(request, view, obj)

Validate user access to the object, taking into account constraints.

Source code in nautobot_golden_config/api/views.py
def has_object_permission(self, request, view, obj):
    """Validate user access to the object, taking into account constraints."""
    return request.user.has_perm("dcim.view_device", obj=obj)
has_permission(request, view)

Method to validated permissions to API view.

Source code in nautobot_golden_config/api/views.py
def has_permission(self, request, view):
    """Method to validated permissions to API view."""
    return request.user.has_perm("nautobot_golden_config.view_goldenconfig")

ConfigRemoveViewSet

Bases: NautobotModelViewSet

API viewset for interacting with ConfigRemove objects.

Source code in nautobot_golden_config/api/views.py
class ConfigRemoveViewSet(NautobotModelViewSet):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with ConfigRemove objects."""

    queryset = models.ConfigRemove.objects.all()
    serializer_class = serializers.ConfigRemoveSerializer
    filterset_class = filters.ConfigRemoveFilterSet

ConfigReplaceViewSet

Bases: NautobotModelViewSet

API viewset for interacting with ConfigReplace objects.

Source code in nautobot_golden_config/api/views.py
class ConfigReplaceViewSet(NautobotModelViewSet):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with ConfigReplace objects."""

    queryset = models.ConfigReplace.objects.all()
    serializer_class = serializers.ConfigReplaceSerializer
    filterset_class = filters.ConfigReplaceFilterSet

ConfigToPushViewSet

Bases: RetrieveModelMixin, GenericViewSet

Detail REST API view showing configuration after postprocessing.

Source code in nautobot_golden_config/api/views.py
class ConfigToPushViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    """Detail REST API view showing configuration after postprocessing."""

    permission_classes = [IsAuthenticated & ConfigPushPermissions]
    queryset = Device.objects.all()
    serializer_class = serializers.ConfigToPushSerializer

GoldenConfigRootView

Bases: APIRootView

Golden Config API root view.

Source code in nautobot_golden_config/api/views.py
class GoldenConfigRootView(APIRootView):
    """Golden Config API root view."""

    def get_view_name(self):
        """Golden Config API root view boilerplate."""
        return "Golden Config"
get_view_name()

Golden Config API root view boilerplate.

Source code in nautobot_golden_config/api/views.py
def get_view_name(self):
    """Golden Config API root view boilerplate."""
    return "Golden Config"

GoldenConfigSettingViewSet

Bases: NautobotModelViewSet

API viewset for interacting with GoldenConfigSetting objects.

Source code in nautobot_golden_config/api/views.py
class GoldenConfigSettingViewSet(NautobotModelViewSet):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with GoldenConfigSetting objects."""

    queryset = models.GoldenConfigSetting.objects.all()
    serializer_class = serializers.GoldenConfigSettingSerializer
    filterset_class = filters.GoldenConfigSettingFilterSet

GoldenConfigViewSet

Bases: NautobotModelViewSet

API viewset for interacting with GoldenConfig objects.

Source code in nautobot_golden_config/api/views.py
class GoldenConfigViewSet(NautobotModelViewSet):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with GoldenConfig objects."""

    queryset = models.GoldenConfig.objects.all()
    serializer_class = serializers.GoldenConfigSerializer
    filterset_class = filters.GoldenConfigFilterSet

RemediationSettingViewSet

Bases: NautobotModelViewSet

API viewset for interacting with RemediationSetting objects.

Source code in nautobot_golden_config/api/views.py
class RemediationSettingViewSet(NautobotModelViewSet):  # pylint:disable=too-many-ancestors
    """API viewset for interacting with RemediationSetting objects."""

    queryset = models.RemediationSetting.objects.all()
    serializer_class = serializers.RemediationSettingSerializer
    filterset_class = filters.RemediationSettingFilterSet

SOTAggDeviceDetailView

Bases: APIView

Detail REST API view showing graphql, with a potential "transformer" of data on a specific device.

Source code in nautobot_golden_config/api/views.py
class SOTAggDeviceDetailView(APIView):
    """Detail REST API view showing graphql, with a potential "transformer" of data on a specific device."""

    permission_classes = [AllowAny]

    def get(self, request, *args, **kwargs):
        """Get method serialize for a dictionary to json response."""
        device = Device.objects.get(pk=kwargs["pk"])
        settings = get_device_to_settings_map(queryset=Device.objects.filter(pk=device.pk))[device.id]
        status_code, data = graph_ql_query(request, device, settings.sot_agg_query.query)
        data = json.loads(json.dumps(data))
        return Response(serializers.GraphQLSerializer(data=data).initial_data, status=status_code)
get(request, *args, **kwargs)

Get method serialize for a dictionary to json response.

Source code in nautobot_golden_config/api/views.py
def get(self, request, *args, **kwargs):
    """Get method serialize for a dictionary to json response."""
    device = Device.objects.get(pk=kwargs["pk"])
    settings = get_device_to_settings_map(queryset=Device.objects.filter(pk=device.pk))[device.id]
    status_code, data = graph_ql_query(request, device, settings.sot_agg_query.query)
    data = json.loads(json.dumps(data))
    return Response(serializers.GraphQLSerializer(data=data).initial_data, status=status_code)