Skip to content

pulp.app.viewsets

All viewsets documented here should be imported directly from the pulpcore.app.viewsets namespace.

Viewsets that dispatch tasks that are descendants of pulpcore.tasking.tasks.UserFacingTask should return an pulpcore.app.response.OperationPostponedResponse.

pulpcore.app.viewsets

pulp.app.viewsets.base

pulpcore.app.viewsets.base

DefaultSchema

Bases: PulpAutoSchema

Overrides _allows_filters method to include filter fields only for read actions.

Schema can be customised per view(set). Override this class and set it as a schema attribute of a view(set) of interest.

NamedModelViewSet

Bases: GenericViewSet

A customized named ModelViewSet that knows how to register itself with the Pulp API router.

This viewset is discoverable by its name. "Normal" Django Models and Master/Detail models are supported by the register_with method.

Attributes:

  • lookup_field (str) –

    The name of the field by which an object should be looked up, in addition to any parent lookups if this ViewSet is nested. Defaults to 'pk'

  • endpoint_name (str) –

    The name of the final path segment that should identify the ViewSet's collection endpoint.

  • nest_prefix (str) –

    Optional prefix under which this ViewSet should be nested. This must correspond to the "parent_prefix" of a router with rest_framework_nested.NestedMixin. None indicates this ViewSet should not be nested.

  • parent_lookup_kwargs (dict) –

    Optional mapping of key names that would appear in self.kwargs to django model filter expressions that can be used with the corresponding value from self.kwargs, used only by a nested ViewSet to filter based on the parent object's identity.

  • schema (DefaultSchema) –

    The schema class to use by default in a viewset.

get_serializer_class()

Fetch the serializer class to use for the request.

The default behavior is to use the "serializer_class" attribute on the viewset. We override that for the case where a "minimal_serializer_class" attribute is defined and where the request contains a query parameter of "minimal=True".

The intention is that ViewSets can define a second, more minimal serializer with only the most important fields.

get_resource_model(uri) staticmethod

Resolve a resource URI to the model for the resource.

Provides a means to resolve an href passed in a POST body to an model for the resource.

Parameters:

  • uri (str) –

    A resource URI.

Returns:

  • django.models.Model: The model for the specified URI.

Raises:

  • ValidationError

    on invalid URI.

get_resource(uri, model=None) staticmethod

Resolve a resource URI/PRN to an instance of the resource.

Provides a means to resolve an href/prn passed in a POST body to an instance of the resource.

Parameters:

  • uri (str) –

    A resource URI/PRN.

  • model (Model, default: None ) –

    A model class. If not provided, the method automatically determines the used model from the resource URI/PRN.

Returns:

  • django.models.Model: The resource fetched from the DB.

Raises:

  • ValidationError

    on invalid URI/PRN or resource not found.

initial(request, *args, **kwargs)

Runs anything that needs to occur prior to calling the method handler.

For nested ViewSets, it checks that the parent object exists, otherwise return 404. For non-nested Viewsets, this does nothing.

get_queryset()

Gets a QuerySet based on the current request.

For nested ViewSets, this adds parent filters to the result returned by the superclass. For non-nested ViewSets, this returns the original QuerySet unchanged.

Additional permissions-based filtering can be performed if enabled by the permission class and ViewSet. The default permission class AccessPolicyFromDB will see if a queryset_scoping method is defined and call that method to further scope the queryset on user permissions.

Returns:

  • django.db.models.query.QuerySet: The queryset returned by the superclass with additional filters applied that match self.parent_lookup_kwargs, to scope the results to only those associated with the parent object. Additional queryset filtering could be performed if queryset_scoping is enabled.

scope_queryset(qs)

A default queryset scoping method implementation for all NamedModelViewSets.

If the ViewSet is not a Master ViewSet, then it'll perform scoping based on the ViewSet's queryset_filtering_required_permission attribute if present. Else it will call each child's view get_queryset() method to determine what objects the user can see.

This method is intended to be overriden by subclasses if different behavior is desired.

get_parent_field_and_object()

For nested ViewSets, retrieve the nested parent implied by the url.

Returns:

  • tuple

    (parent field name, parent)

Raises: django.http.Http404: When the parent implied by the url does not exist. Synchronous use should allow this to bubble up and return a 404.

get_parent_object()

For nested ViewSets, retrieve the nested parent implied by the url.

Returns:

  • pulpcore.app.models.Model: parent model object

Raises: django.http.Http404: When the parent implied by the url does not exist. Synchronous use should allow this to bubble up and return a 404.

AsyncReservedObjectMixin

Mixin class providing the default method to compute the resources to reserve in the task.

By default, lock the object instance we are working on.

async_reserved_resources(instance)

Return the resources to reserve for the task created by the Async...Mixins.

This default implementation locks the instance being worked on.

.. note::

This does not work for pulpcore.app.viewsets.AsyncCreateMixin (as there is no instance). Classes using pulpcore.app.viewsets.AsyncCreateMixin must override this method.

Parameters:

  • instance (Model) –

    The instance that will be worked on by the task.

Returns:

  • list/str: The resources to put in the task's reservation

AsyncCreateMixin

Provides a create method that dispatches a task with reservation.

create(request, *args, **kwargs)

Dispatches a task with reservation for creating an instance.

AsyncUpdateMixin

Bases: AsyncReservedObjectMixin

Provides an update method that dispatches a task with reservation

AsyncRemoveMixin

Bases: AsyncReservedObjectMixin

Provides a delete method that dispatches a task with reservation

destroy(request, pk, **kwargs)

Delete a model instance

pulp.app.viewsets.content

pulpcore.app.viewsets.content

ArtifactFilter

Bases: BaseFilterSet

Artifact filter Plugin content filters should
  • inherit from this class
  • add any plugin-specific filters if needed
  • define its own Meta class should:
  • specify plugin content model
  • extend fields with plugin-specific ones

ArtifactViewSet

Bases: NamedModelViewSet, CreateModelMixin, RetrieveModelMixin, ListModelMixin, DestroyModelMixin

destroy(request, pk)

Remove Artifact only if it is not associated with any Content.

ContentFilter

Bases: BaseFilterSet

Plugin content filters should
  • inherit from this class
  • add any plugin-specific filters if needed
  • define its own Meta class which should:
  • specify plugin content model
  • extend fields with plugin-specific ones

Allows you to filter the content app by repository version.

Fields:

repository_version:
    Return Content which is contained within this repository version.
repository_version_added:
    Return Content which was added in this repository version.
repository_version_removed:
    Return Content which was removed from this repository version.
orphaned_for:
    Return Content which has been orphaned for a given number of minutes;
    -1 uses ORPHAN_PROTECTION_TIME value.

BaseContentViewSet

Bases: NamedModelViewSet

A base class for any content viewset.

It ensures that 'content/' is a part of endpoint, sets a default filter class and provides a default scope_queryset method.

get_queryset()

Apply optimizations for list endpoint.

scope_queryset(qs)

Scope the content based on repositories the user has permission to see.

ListContentViewSet

Bases: BaseContentViewSet, ListModelMixin

Endpoint to list all content.

routable() classmethod

Do not hide from the routers.

ContentViewSet

Bases: BaseContentViewSet, CreateModelMixin, RetrieveModelMixin, ListModelMixin

Content viewset that supports POST and GET by default.

ReadOnlyContentViewSet

Bases: BaseContentViewSet, RetrieveModelMixin, ListModelMixin

Content viewset that supports only GET by default.

SigningServiceViewSet

Bases: NamedModelViewSet, RetrieveModelMixin, ListModelMixin

A ViewSet that supports browsing of existing signing services.

pulp.app.viewsets.repository

pulpcore.app.viewsets.repository

RepositoryContentFilter(*args, **kwargs)

Bases: Filter

Filter used to filter repositories which have a piece of content

filter(qs, value)

Parameters:

  • qs (QuerySet) –

    The Repository Queryset

  • value (string) –

    of content href/prn to filter

Returns:

  • Queryset of the Repository containing the specified content

BaseRepositoryViewSet

Bases: NamedModelViewSet

A base class for any repository viewset.

get_queryset()

Apply optimizations for list endpoint.

ListRepositoryViewSet

Bases: BaseRepositoryViewSet, ListModelMixin

Endpoint to list all repositories.

routable() classmethod

Do not hide from the routers.

ReadOnlyRepositoryViewSet

Bases: BaseRepositoryViewSet, ListModelMixin, RetrieveModelMixin

A readonly repository which allows only GET method.

ImmutableRepositoryViewSet

Bases: ReadOnlyRepositoryViewSet, CreateModelMixin, AsyncRemoveMixin

ALLOW_NON_BLOCKING_DELETE = False class-attribute instance-attribute

An immutable repository ViewSet that does not allow the usage of the methods PATCH and PUT.

RepositoryViewSet

Bases: ImmutableRepositoryViewSet, AsyncUpdateMixin, LabelsMixin

A ViewSet for an ordinary repository.

RepositoryVersionFilter

Bases: BaseFilterSet

filter_pulp_href(queryset, name, value)

Special handling for RepositoryVersion HREF filtering.

RepositoryVersionQuerysetMixin

A mixin to hold the shared get_queryset logic used by RepositoryVersionViewSets.

RepositoryVersionViewSet

Bases: RepositoryVersionQuerysetMixin, NamedModelViewSet, RetrieveModelMixin, ListModelMixin, DestroyModelMixin

destroy(request, repository_pk, number)

Queues a task to handle deletion of a RepositoryVersion

repair(request, repository_pk, number)

Queues a task to repair corrupted artifacts corresponding to a RepositoryVersion

RemoteFilter

Bases: BaseFilterSet

Plugin remote filter should
  • inherit from this class
  • add any specific filters if needed
  • define a Meta class which should:
  • specify a plugin remote model for which filter is defined
  • extend fields with specific ones

ListRemoteViewSet

Bases: NamedModelViewSet, ListModelMixin

routable() classmethod

Do not hide from the routers.

ListRepositoryVersionViewSet

Bases: RepositoryVersionQuerysetMixin, GenericViewSet, ListModelMixin

scope_queryset(qs)

This scopes based on repositories the user can see (similar to content).