Esempio n. 1
0
 def _run_orphan_cleanup(self, resources):
     """ Run orphan_cleanup to delete all CollectionVersions that are
         not part of any RepositoryVersion."""
     task = create_task(orphan_cleanup,
                        params={},
                        resources=resources,
                        task_args={})
     print(f'task created: {task}')
Esempio n. 2
0
 def _bump_repo_version(self, repo, resources, collection_versions):
     """Create new RepositoryVersion without specific CollectionVersion."""
     params = {
         'repository_pk': repo.pk,
         'add_content_units': [],
         'remove_content_units': collection_versions,
     }
     task = create_task(add_and_remove,
                        params=params,
                        resources=resources,
                        task_args={})
     print(f'task created: {task}')
Esempio n. 3
0
    def post(self, request, *args, **kwargs):
        """Upload an Ansible Collection."""

        serializer = serializers.CollectionUploadSerializer(
            data=request.data, context={'request': request})
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data
        filename = data['filename']

        # TODO(cutwater): Merge Artifact and UploadCollectionSerializers
        namespace = self._get_namespace(data)
        self._check_namespace_access(namespace, request.user)
        self._check_max_file_size(request.data['file'].size)
        self._check_role_name_conflict(namespace, filename.name)
        self._check_multi_repo_name_conflict(namespace, filename.name)
        self._check_version_conflict(namespace, filename)
        self._check_is_tarfile(request.data['file'].file.name)

        artifact_data = {'file': request.data['file']}
        if serializer.data['sha256'] is not None:
            artifact_data['sha256'] = data['sha256']

        repository = pulp_models.Repository.objects.get(
            name=settings.GALAXY_PULP_REPOSITORY)

        artifact = self._save_artifact(artifact_data)

        task = tasking.create_task(tasks.import_collection,
                                   task_cls=models.CollectionImport,
                                   params={
                                       'artifact_id': artifact.pk,
                                       'repository_id': repository.pk,
                                   },
                                   task_args={
                                       'namespace': namespace,
                                       'name': filename.name,
                                       'version': filename.version,
                                   })

        data = {
            'task':
            reverse('api:v2:collection-import-detail',
                    args=[task.pk],
                    request=request)
        }
        return Response(data, status=http_codes.HTTP_202_ACCEPTED)