Project

Profile

Help

Issue #3904

closed

Can't upload manifest list to Docker repository

Added by Ichimonji10 over 5 years ago. Updated over 2 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Assignee:
Start date:
Due date:
Estimated time:
Severity:
2. Medium
Version - Docker:
Platform Release:
2.17.0
Target Release - Docker:
OS:
Triaged:
No
Groomed:
No
Sprint Candidate:
No
Tags:
Pulp 2
Sprint:
Quarter:

Description

It's impossible to upload a manifest to a Docker repository. This is a regression. Attempting to do triggers an error in Pulp. No errors are logged (according to journalctl). Here's the only interesting journal output I could find:

Aug 06 16:46:32 fedora-27-pulp-2-17-nightly pulp[1208]: celery.worker.strategy:INFO: Received task: pulp.server.managers.content.upload.import_uploaded_unit[daaedf02-3573-41c4-95bd-0035d8a05037]
Aug 06 16:46:32 fedora-27-pulp-2-17-nightly pulp[1315]: celery.app.trace:INFO: [034f7848] Task pulp.server.async.tasks._queue_reserved_task[034f7848-ab90-4ac5-964f-ca4566ba148a] succeeded in 0.0262270519997s: None
Aug 06 16:46:32 fedora-27-pulp-2-17-nightly pulp[1321]: pulp.server.async.tasks:INFO: [daaedf02] Task failed : [daaedf02-3573-41c4-95bd-0035d8a05037] : The importer docker_importer indicated a failed response when uploading docker_manifest_list unit to repository f93cc7df-3f53-4fc6-9ad3-df53c5079748.

Here's the error returned by Pulp:

{'_href': '/pulp/api/v2/tasks/daaedf02-3573-41c4-95bd-0035d8a05037/',
 '_id': {'$oid': '5b68b3a811b6e4e34b496802'},
 '_ns': 'task_status',
 'error': {'code': 'PLP0047',
           'data': {'details': {},
                    'importer_id': 'docker_importer',                                                                                                                                                                                       
                    'repo_id': 'f93cc7df-3f53-4fc6-9ad3-df53c5079748',
                    'summary': "unhashable type: 'EmbeddedManifest'",
                    'unit_type': 'docker_manifest_list'},
           'description': 'The importer docker_importer indicated a failed '
                          'response when uploading docker_manifest_list unit '
                          'to repository f93cc7df-3f53-4fc6-9ad3-df53c5079748.',
           'sub_errors': []},
 'exception': None,
 'finish_time': '2018-08-06T20:46:32Z',
 'id': '5b68b3a811b6e4e34b496802',
 'progress_report': {},
 'queue': 'reserved_resource_worker-0@fedora-27-pulp-2-17-nightly.dq2',
 'result': None,
 'spawned_tasks': [],
 'start_time': '2018-08-06T20:46:32Z',
 'state': 'error',
 'tags': ['pulp:repository:f93cc7df-3f53-4fc6-9ad3-df53c5079748',
          'pulp:action:import_upload'],
 'task_id': 'daaedf02-3573-41c4-95bd-0035d8a05037',
 'task_type': 'pulp.server.managers.content.upload.import_uploaded_unit',
 'traceback': SNIP!
 'worker_name': 'reserved_resource_worker-0@fedora-27-pulp-2-17-nightly'}

Here's the formatted traceback:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/celery/app/trace.py", line 367, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/pulp/server/async/tasks.py", line 529, in __call__
    return super(Task, self).__call__(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/pulp/server/async/tasks.py", line 107, in __call__
    return super(PulpTask, self).__call__(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/celery/app/trace.py", line 622, in __protected_call__
 return self.run(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/pulp/server/managers/content/upload.py", line 223, in import_uploaded_unit
    unit_type=unit_type_id, summary=result['summary'], details=result['details']
PulpCodedException: The importer docker_importer indicated a failed response when uploading docker_manifest_list unit to repository f93cc7df-3f53-4fc6-9ad3-df53c5079748.

This error occurs with the nightly build of Pulp 2 (to-be 2.17) on both RHEL 7 and Fedora 27. Here's some sample RPMs:

[root@fedora-27-pulp-2-17-nightly ~]# rpm -qa | grep -i 'pulp\|docker' | sort
pulp-admin-client-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch
pulp-deb-admin-extensions-1.8.0-0.1.alpha.201808060515git4df9825.fc27.noarch
pulp-deb-plugins-1.8.0-0.1.alpha.201808060515git4df9825.fc27.noarch
pulp-docker-admin-extensions-3.2.0-0.1.alpha.201808060507gitfd8d4e7.fc27.noarch
pulp-docker-plugins-3.2.0-0.1.alpha.201808060507gitfd8d4e7.fc27.noarch
pulp-ostree-admin-extensions-1.4.0-0.1.alpha.201808060508git2c2d534.fc27.noarch
pulp-ostree-plugins-1.4.0-0.1.alpha.201808060508git2c2d534.fc27.noarch
pulp-puppet-admin-extensions-2.17.0-0.1.alpha.201808060510git44a02f8.fc27.noarch
pulp-puppet-plugins-2.17.0-0.1.alpha.201808060510git44a02f8.fc27.noarch
pulp-puppet-tools-2.17.0-0.1.alpha.201808060510git44a02f8.fc27.noarch
pulp-python-admin-extensions-2.1.0-0.1.alpha.201808060514git5e2aa35.fc27.noarch
pulp-python-plugins-2.1.0-0.1.alpha.201808060514git5e2aa35.fc27.noarch
pulp-rpm-admin-extensions-2.17.0-0.1.alpha.201808060504git421caf4.fc27.noarch
pulp-rpm-plugins-2.17.0-0.1.alpha.201808060504git421caf4.fc27.noarch
pulp-selinux-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch
pulp-server-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch
python-pulp-bindings-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch
python-pulp-client-lib-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch
python-pulp-common-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch
python-pulp-deb-common-1.8.0-0.1.alpha.201808060515git4df9825.fc27.noarch
python-pulp-docker-common-3.2.0-0.1.alpha.201808060507gitfd8d4e7.fc27.noarch
python-pulp-oid_validation-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch
python-pulp-ostree-common-1.4.0-0.1.alpha.201808060508git2c2d534.fc27.noarch
python-pulp-puppet-common-2.17.0-0.1.alpha.201808060510git44a02f8.fc27.noarch
python-pulp-python-common-2.1.0-0.1.alpha.201808060514git5e2aa35.fc27.noarch
python-pulp-repoauth-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch
python-pulp-rpm-common-2.17.0-0.1.alpha.201808060504git421caf4.fc27.noarch
python-pulp-streamer-2.17.0-0.1.alpha.201808060500git0697ade.fc27.noarch

The easiest way to reproduce this issue is to run the automated test in Pulp 2 Tests: python -m unittest pulp_2_tests.tests.docker.api_v2.test_upload.UploadManifestListV2TestCase. The error occurs when this line of code is executing, inside test_02_copy_manifest_lists:

upload_import_unit(
    self.cfg,
    json.dumps(modified_manifest_list).encode('utf-8'),
    {'unit_type_id': 'docker_manifest_list'},
    repo,
)

This issue is similar to: https://pulp.plan.io/issues/3892


Related issues

Copied from Docker Support - Issue #3892: Can't copy Docker tags or manifest lists between repositoriesCLOSED - CURRENTRELEASEbizhangActions

Also available in: Atom PDF