diff --git a/CHANGES/+sync_result.bugfix b/CHANGES/+sync_result.bugfix new file mode 100644 index 000000000..7015c5d3f --- /dev/null +++ b/CHANGES/+sync_result.bugfix @@ -0,0 +1 @@ +Allow sync and build tasks to properly return the created repository_version (depends on pulpcore to support task results). diff --git a/pulp_container/app/tasks/builder.py b/pulp_container/app/tasks/builder.py index 866bb7846..4a3084c9e 100644 --- a/pulp_container/app/tasks/builder.py +++ b/pulp_container/app/tasks/builder.py @@ -5,6 +5,15 @@ import tempfile from uuid import uuid4 +from pulpcore.plugin.models import ( + Artifact, + ContentArtifact, + Content, + PulpTemporaryFile, +) +from pulpcore.plugin.util import get_domain + +from pulp_container.constants import MEDIA_TYPE from pulp_container.app.models import ( Blob, BlobManifest, @@ -12,15 +21,7 @@ Manifest, Tag, ) -from pulp_container.constants import MEDIA_TYPE from pulp_container.app.utils import calculate_digest -from pulpcore.plugin.models import ( - Artifact, - ContentArtifact, - Content, - PulpTemporaryFile, -) -from pulpcore.plugin.util import get_domain def get_or_create_blob(layer_json, manifest, path): @@ -192,6 +193,15 @@ def build_image( if isinstance(containerfile_artifact, PulpTemporaryFile): containerfile_artifact.delete() + if repository_version: + try: + from pulpcore.plugin.serializers import RepositoryVersionSerializer + + repository_version = RepositoryVersionSerializer( + instance=repository_version, context={"request": None} + ).data + except ImportError: + pass return repository_version diff --git a/pulp_container/app/tasks/download_image_data.py b/pulp_container/app/tasks/download_image_data.py index f67c8bc57..b7954e59f 100644 --- a/pulp_container/app/tasks/download_image_data.py +++ b/pulp_container/app/tasks/download_image_data.py @@ -26,7 +26,7 @@ def download_image_data(repository_pk, remote_pk, raw_text_manifest_data, tag_na log.info("Pulling cache: repository={r} remote={p}".format(r=repository.name, p=remote.name)) first_stage = ContainerPullThroughFirstStage(remote, raw_text_manifest_data, tag_name) dv = ContainerDeclarativeVersion(first_stage, repository) - return dv.create() + dv.create() class ContainerPullThroughFirstStage(ContainerFirstStage): diff --git a/pulp_container/app/tasks/synchronize.py b/pulp_container/app/tasks/synchronize.py index 886dd5928..c2b4a422b 100644 --- a/pulp_container/app/tasks/synchronize.py +++ b/pulp_container/app/tasks/synchronize.py @@ -38,7 +38,15 @@ def synchronize(remote_pk, repository_pk, mirror, signed_only): log.info("Synchronizing: repository={r} remote={p}".format(r=repository.name, p=remote.name)) first_stage = ContainerFirstStage(remote, signed_only) dv = ContainerDeclarativeVersion(first_stage, repository, mirror) - return dv.create() + rv = dv.create() + if rv: + try: + from pulpcore.plugin.serializers import RepositoryVersionSerializer + + rv = RepositoryVersionSerializer(instance=rv, context={"request": None}).data + except ImportError: + pass + return rv class ContainerDeclarativeVersion(DeclarativeVersion):