Project

Profile

Help

Story #4716

closed

As a user, I have simple content copy between repositories

Added by dalley about 5 years ago. Updated over 4 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Assignee:
Sprint/Milestone:
-
Start date:
Due date:
% Done:

100%

Estimated time:
Platform Release:
Groomed:
Yes
Sprint Candidate:
Yes
Tags:
Sprint:
Sprint 53
Quarter:

Description

Simple content copy means that content units can be copied from one repository into another repository without considering content-type-specific invariants, such as making sure dependencies are satisfied.

The most straightforwards current design is to model this after one-shot upload. A new URL endpoint will be defined at /api/v3/rpm/copy/. POSTing to that endpoint with valid parameters will yield an asynchronous task, which will result in a new repository version in the target repository.

The user workflow should look like this:

http --form POST http://localhost:24817/pulp/api/v3/rpm/copy/ source_repository=${S_REPO_HREF} destination_repository=${D_REPO_HREF}

Both the repository parameters are required. When called, all content will be copied.

The additions to Django boilerplate will look something like this (see also: copy.py for an example of the function that does the work, and OneShotUploadSerializer in serializers.py)

urls.py

urlpatterns = [
    url(r'rpm/upload/$', OneShotUploadView.as_view()),
    url(r'rpm/copy/$', CopyView.as_view())
]

viewsets.py

class CopyView(views.APIView):
    def post(self, request):

        serializer = CopySerializer(data=request.data, context={'request': request})
        serializer.is_valid(raise_exception=True)

        # .....
        async_result = enqueue_with_reservation(
            copy_content, [source_repo, dest_repo],  # lock both repositories
            args=[source_repo, dest_repo],
            kwargs={}
        )
        return OperationPostponedResponse(async_result, request)

Related issues

Related to RPM Support - Test #4721: Test simple content copyCLOSED - COMPLETEActions
Related to RPM Support - Test #5276: Test - As a user, I have simple content copy between repositoriesCLOSED - DUPLICATEActions

Also available in: Atom PDF