Skip to content

Commit

Permalink
Remove publishers from file plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
David Davis committed May 14, 2019
1 parent fc62389 commit dac7f43
Show file tree
Hide file tree
Showing 13 changed files with 30 additions and 244 deletions.
19 changes: 2 additions & 17 deletions README.rst
Expand Up @@ -182,33 +182,18 @@ Add content to repository ``foo``
``$ http POST ':24817'$REPO_HREF'versions/' add_content_units:="[\"$CONTENT_HREF\"]"``


Create a ``file`` Publisher
---------------------------

``$ http POST http://localhost:24817/pulp/api/v3/publishers/file/file/ name=bar``

.. code:: json
{
"_href": "/pulp/api/v3/publishers/file/file/9f2ae92a-c599-444b-a272-dc8e4d425f4a/",
...
}
``$ export PUBLISHER_HREF=$(http :24817/pulp/api/v3/publishers/file/file/ | jq -r '.results[] | select(.name == "bar") | ._href')``


Create a Publication
--------------------

``$ http POST http://localhost:24817/pulp/api/v3/publications/file/file/ repository=$REPO_HREF publisher=$PUBLISHER_HREF``
``$ http POST http://localhost:24817/pulp/api/v3/publications/file/file/ repository=$REPO_HREF``

.. code:: json
{
"task": "/pulp/api/v3/tasks/fd4cbecd-6c6a-4197-9cbe-4e45b0516309/"
}
``$ export PUBLICATION_HREF=$(http :24817/pulp/api/v3/publications/file/file/ | jq -r --arg PUBLISHER_HREF "$PUBLISHER_HREF" '.results[] | select(.publisher==$PUBLISHER_HREF) | ._href')``
``$ export PUBLICATION_HREF=$(http :24817/pulp/api/v3/publications/file/file/ | jq -r '.results[0] | ._href')``

Create a Distribution for the Publication
-----------------------------------------
Expand Down
18 changes: 3 additions & 15 deletions pulp_file/app/migrations/0001_initial.py
@@ -1,4 +1,4 @@
# Generated by Django 2.2.1 on 2019-05-09 16:50
# Generated by Django 2.2.1 on 2019-05-13 18:18

from django.db import migrations, models
import django.db.models.deletion
Expand All @@ -23,17 +23,6 @@ class Migration(migrations.Migration):
},
bases=('core.publication',),
),
migrations.CreateModel(
name='FilePublisher',
fields=[
('publisher_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.Publisher')),
('manifest', models.TextField()),
],
options={
'abstract': False,
},
bases=('core.publisher',),
),
migrations.CreateModel(
name='FileRemote',
fields=[
Expand All @@ -47,12 +36,11 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='FileDistribution',
fields=[
('basedistribution_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='_distributions', serialize=False, to='core.BaseDistribution')),
('publication', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='_distributions', to='core.Publication')),
('basedistribution_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.BaseDistribution')),
('publication', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='core.Publication')),
],
options={
'abstract': False,
'default_related_name': '_distributions',
},
bases=('core.basedistribution',),
),
Expand Down
11 changes: 1 addition & 10 deletions pulp_file/app/models.py
Expand Up @@ -2,7 +2,7 @@

from django.db import models

from pulpcore.plugin.models import Content, PublicationDistribution, Remote, Publication, Publisher
from pulpcore.plugin.models import Content, PublicationDistribution, Remote, Publication


log = getLogger(__name__)
Expand Down Expand Up @@ -40,15 +40,6 @@ class FileRemote(Remote):
TYPE = 'file'


class FilePublisher(Publisher):
"""
Publisher for "file" content.
"""

TYPE = 'file'
manifest = models.TextField()


class FilePublication(Publication):
"""
Publication for 'file' content.
Expand Down
28 changes: 6 additions & 22 deletions pulp_file/app/serializers.py
Expand Up @@ -6,13 +6,12 @@
DetailRelatedField,
PublicationDistributionSerializer,
PublicationSerializer,
PublisherSerializer,
RemoteSerializer,
SingleArtifactContentSerializer,
relative_path_validator,
)

from .models import FileContent, FileDistribution, FileRemote, FilePublication, FilePublisher
from .models import FileContent, FileDistribution, FileRemote, FilePublication


class FileContentSerializer(SingleArtifactContentSerializer):
Expand Down Expand Up @@ -60,22 +59,6 @@ class Meta:
model = FileRemote


class FilePublisherSerializer(PublisherSerializer):
"""
Serializer for File Publishers.
"""

manifest = serializers.CharField(
help_text='Name of the file manifest, the full path will be url/manifest',
required=False,
default='PULP_MANIFEST'
)

class Meta:
fields = PublisherSerializer.Meta.fields + ('manifest',)
model = FilePublisher


class FilePublicationSerializer(PublicationSerializer):
"""
Serializer for File Publications.
Expand All @@ -88,17 +71,18 @@ class FilePublicationSerializer(PublicationSerializer):
many=True,
read_only=True,
)
publisher = DetailRelatedField(
help_text=_('The publisher that created this publication.'),
queryset=FilePublisher.objects.all(),
manifest = serializers.CharField(
help_text=_("Filename to use for manifest file. Default is 'PULP_MANIFEST'."),
write_only=True,
required=False,
default='PULP_MANIFEST',
)

class Meta:
model = FilePublication
fields = PublicationSerializer.Meta.fields + (
'distributions',
'publisher',
'manifest',
)


Expand Down
23 changes: 7 additions & 16 deletions pulp_file/app/tasks/publishing.py
Expand Up @@ -11,41 +11,32 @@
RemoteArtifact)
from pulpcore.plugin.tasking import WorkingDirectory

from pulp_file.app.models import FileContent, FilePublication, FilePublisher
from pulp_file.app.models import FileContent, FilePublication
from pulp_file.manifest import Entry, Manifest


log = logging.getLogger(__name__)


def publish(publisher_pk, repository_version_pk):
def publish(manifest, repository_version_pk):
"""
Use provided publisher to create a Publication based on a RepositoryVersion.
Create a Publication based on a RepositoryVersion.
Args:
publisher_pk (str): Use the publish settings provided by this publisher.
manifest (str): Filename to use for manifest file.
repository_version_pk (str): Create a publication from this repository version.
"""
if publisher_pk:
publisher = FilePublisher.objects.get(pk=publisher_pk)
manifest = publisher.manifest
publisher_name = publisher.name
else:
publisher = None
manifest = 'PULP_MANIFEST'
publisher_name = ''

repo_version = RepositoryVersion.objects.get(pk=repository_version_pk)

log.info(_('Publishing: repository={repo}, version={ver}, publisher={pub}').format(
log.info(_('Publishing: repository={repo}, version={ver}, manifest={manifest}').format(
repo=repo_version.repository.name,
ver=repo_version.number,
pub=publisher_name,
manifest=manifest,
))

with WorkingDirectory():
with FilePublication.create(repo_version, publisher, pass_through=True) as publication:
with FilePublication.create(repo_version, pass_through=True) as publication:
manifest = Manifest(manifest)
manifest.write(populate(publication))
metadata = PublishedMetadata(
Expand Down
27 changes: 5 additions & 22 deletions pulp_file/app/viewsets.py
Expand Up @@ -15,17 +15,15 @@
RemoteViewSet,
OperationPostponedResponse,
PublicationViewSet,
PublisherViewSet,
)

from . import tasks
from .models import FileContent, FileDistribution, FileRemote, FilePublication, FilePublisher
from .models import FileContent, FileDistribution, FileRemote, FilePublication
from .serializers import (
FileContentSerializer,
FileDistributionSerializer,
FileRemoteSerializer,
FilePublicationSerializer,
FilePublisherSerializer,
)


Expand Down Expand Up @@ -90,16 +88,6 @@ def sync(self, request, pk):
return OperationPostponedResponse(result, request)


class FilePublisherViewSet(PublisherViewSet):
"""
ViewSet for File Publishers.
"""

endpoint_name = 'file'
queryset = FilePublisher.objects.all()
serializer_class = FilePublisherSerializer


class FilePublicationViewSet(PublicationViewSet):
"""
ViewSet for File Publications.
Expand All @@ -123,19 +111,14 @@ def create(self, request):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
repository_version = serializer.validated_data.get('repository_version')
publisher = serializer.validated_data.get('publisher')

if publisher:
publisher_pk = str(publisher.pk)
else:
publisher_pk = ''
manifest = serializer.validated_data.get('manifest')

result = enqueue_with_reservation(
tasks.publish,
[repository_version.repository, publisher_pk],
[repository_version.repository],
kwargs={
'publisher_pk': publisher_pk,
'repository_version_pk': str(repository_version.pk)
'repository_version_pk': str(repository_version.pk),
'manifest': str(manifest)
}
)
return OperationPostponedResponse(result, request)
Expand Down
99 changes: 0 additions & 99 deletions pulp_file/tests/functional/api/test_crud_publishers.py

This file was deleted.

8 changes: 1 addition & 7 deletions pulp_file/tests/functional/api/test_download_content.py
Expand Up @@ -20,12 +20,10 @@
from pulp_file.tests.functional.constants import (
FILE_DISTRIBUTION_PATH,
FILE_FIXTURE_URL,
FILE_PUBLISHER_PATH,
FILE_REMOTE_PATH,
)
from pulp_file.tests.functional.utils import (
create_file_publication,
gen_file_publisher,
gen_file_remote,
get_file_content_paths,
)
Expand Down Expand Up @@ -94,12 +92,8 @@ def do_test(self, policy):
sync(cfg, remote, repo)
repo = client.get(repo['_href'])

# Create a publisher.
publisher = client.post(FILE_PUBLISHER_PATH, gen_file_publisher())
self.addCleanup(client.delete, publisher['_href'])

# Create a publication.
publication = create_file_publication(cfg, repo, publisher=publisher)
publication = create_file_publication(cfg, repo)
self.addCleanup(client.delete, publication['_href'])

# Create a distribution.
Expand Down

0 comments on commit dac7f43

Please sign in to comment.