Bug 1804045
| Summary: | "openstack tripleo container image push" parses incorrect url to pull container image | ||
|---|---|---|---|
| Product: | Red Hat OpenStack | Reporter: | Yadnesh Kulkarni <ykulkarn> |
| Component: | openstack-tripleo-common | Assignee: | Alex Schultz <aschultz> |
| Status: | CLOSED ERRATA | QA Contact: | Sasha Smolyak <ssmolyak> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 16.0 (Train) | CC: | aschultz, emacchi, hbrock, jschluet, jslagle, mburns, mgarciac, pchavva, shyam.biradar, slinaber |
| Target Milestone: | --- | Keywords: | Triaged |
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | openstack-tripleo-common-11.3.3-0.20200403044648.56c0fd5.el8ost | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2020-05-14 12:16:10 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | 1806707 | ||
| Bug Blocks: | 1824852 | ||
Can you provide additional information about what you're trying to accomplish? The 'openstack tripleo container image push' command is primarily to manage containers on the undercloud registry itself. If you're attempting to push to docker.io (which is what the command you've specified is trying to do), it's recommended to just use 'podman push' instead. If you're trying to pull the container and make it available from the undercloud, the commands would be like: [centos@undercloud ~]$ sudo podman pull docker.io/openstackhelm/heat:stein-ubuntu_bionic-20200207 Trying to pull docker.io/openstackhelm/heat:stein-ubuntu_bionic-20200207... Getting image source signatures Copying blob 651c9d2d6c4f done Copying blob c63719cdbe7a done Copying blob 5c939e3a4d10 done Copying blob 19a861ea6baf done Copying blob ffd27473e300 done Copying blob fc85f27ab4c9 done Copying blob 7b35b7091a75 done Copying config cfc47ee772 done Writing manifest to image destination Storing signatures cfc47ee772b32b9b499690507576a8e75e9a0dd9b12572986aff651eab3f8e45 [centos@undercloud ~]$ sudo openstack tripleo container image push --local docker.io/openstackhelm/heat:stein-ubuntu_bionic-20200207 INFO[0000] created - from /var/lib/containers/storage/overlay/27b97a061bd85ff57a9e5a6d40205f5c600d09319d23baaf69a4f0bd468c0ae7/diff and /var/lib/containers/storage/overlay-layers/27b97a061bd85ff57a9e5a6d40205f5c600d09319d23baaf69a4f0bd468c0ae7.tar-split.gz (wrote 3072 bytes) INFO[0000] created - from /var/lib/containers/storage/overlay/171caf75e6cb6fca33f1508a63e5783a5c68ed7371b6ff7c225ae3d91bf841fa/diff and /var/lib/containers/storage/overlay-layers/171caf75e6cb6fca33f1508a63e5783a5c68ed7371b6ff7c225ae3d91bf841fa.tar-split.gz (wrote 15872 bytes) INFO[0000] created - from /var/lib/containers/storage/overlay/6d54bc1b2a7449bd8fb86f900b8de1f15ee5397a2aaddca718767b5d8a9dc200/diff and /var/lib/containers/storage/overlay-layers/6d54bc1b2a7449bd8fb86f900b8de1f15ee5397a2aaddca718767b5d8a9dc200.tar-split.gz (wrote 991232 bytes) INFO[0000] created - from /var/lib/containers/storage/overlay/b52f7f6520a7922f9484b889e82e26aa5939f97ad031f68887ca60ea8c7596a8/diff and /var/lib/containers/storage/overlay-layers/b52f7f6520a7922f9484b889e82e26aa5939f97ad031f68887ca60ea8c7596a8.tar-split.gz (wrote 28672 bytes) INFO[0000] created - from /var/lib/containers/storage/overlay/0a091fa744ae903c7c5204c984f5b4907d21550bf8a8a03a4b2768e457a6e517/diff and /var/lib/containers/storage/overlay-layers/0a091fa744ae903c7c5204c984f5b4907d21550bf8a8a03a4b2768e457a6e517.tar-split.gz (wrote 463872 bytes) INFO[0003] created - from /var/lib/containers/storage/overlay/43c67172d1d182ca5460fc962f8f053f33028e0a3a1d423e05d91b532429e73d/diff and /var/lib/containers/storage/overlay-layers/43c67172d1d182ca5460fc962f8f053f33028e0a3a1d423e05d91b532429e73d.tar-split.gz (wrote 65571328 bytes) INFO[0014] created - from /var/lib/containers/storage/overlay/3369f8e19f8cec8ae80f24bae5fdd5b723006b16fed67c3640273b2c0aa47da9/diff and /var/lib/containers/storage/overlay-layers/3369f8e19f8cec8ae80f24bae5fdd5b723006b16fed67c3640273b2c0aa47da9.tar-split.gz (wrote 312451584 bytes) [centos@undercloud ~]$ openstack tripleo container image list +----------------------------------------------------------------------------------------------------------------------+ | Image Name | +----------------------------------------------------------------------------------------------------------------------+ | docker://undercloud.ctlplane.localdomain:8787/openstackhelm/heat:stein-ubuntu_bionic-20200207 | +----------------------------------------------------------------------------------------------------------------------+ [centos@undercloud ~]$ Hi Alex,
We are pulling the docker image from docker.io and make it available in undercloud registry.
I tried the steps you provided. It's not working.
(undercloud) [stack@undercloud ~]$ sudo podman pull docker.io/trilio/trilio-datamover:4.0.24-rhosp16
Trying to pull docker.io/trilio/trilio-datamover:4.0.24-rhosp16...
Getting image source signatures
Copying blob cc3ef2dbb28d skipped: already exists
Copying blob a5a5eee4dd56 skipped: already exists
Copying blob b4ee033867ed skipped: already exists
Copying blob 933041e5135b skipped: already exists
Copying blob 9f00789c7305 skipped: already exists
Copying blob 0349dcc88503 skipped: already exists
Copying blob c6b13769654f skipped: already exists
Copying config 5a51ea4b1d done
Writing manifest to image destination
Storing signatures
5a51ea4b1db139d34d2785970d437134f33ed32fb2b5a5ae32748c568791aad9
(undercloud) [stack@undercloud ~]$ sudo openstack tripleo container image push --local docker.io/trilio/trilio-datamover:4.0.24-rhosp16
[undercloud.ctlplane.localdomain:8787/trilio/trilio-datamover:4.0.24-rhosp16] Failed copying the target image to the target registry
(undercloud) [stack@undercloud ~]$ openstack tripleo container image list | grep datamover
(undercloud) [stack@undercloud ~]$
------Debug output------------------------------------------------------------------------------------------
(undercloud) [stack@undercloud ~]$ sudo openstack --debug tripleo container image push --local docker.io/trilio/trilio-datamover:4.0.24-rhosp16
START with options: --debug tripleo container image push --local docker.io/trilio/trilio-datamover:4.0.24-rhosp16
options: Namespace(access_token='***', access_token_endpoint='', access_token_type='', aodh_endpoint='', application_credential_id='', application_credential_name='', application_credential_secret='***', auth_methods='', auth_type='', auth_url='', cacert=None, cert='', client_id='', client_secret='***', cloud='', code='', debug=True, default_domain='default', default_domain_id='', default_domain_name='', deferred_help=False, discovery_endpoint='', domain_id='', domain_name='', endpoint='', identity_provider='', identity_provider_url='', insecure=None, inspector_api_version='1', inspector_url=None, interface='public', key='', log_file=None, openid_scope='', os_alarming_api_version='2', os_baremetal_api_version='1.58', os_beta_command=False, os_compute_api_version='', os_container_infra_api_version='1', os_data_processing_api_version='1.1', os_data_processing_url='', os_database_api_version='1', os_dns_api_version='2', os_event_api_version='2', os_identity_api_version='', os_image_api_version='', os_key_manager_api_version='1', os_loadbalancer_api_version='2.0', os_metrics_api_version='1', os_network_api_version='', os_object_api_version='', os_orchestration_api_version='1', os_project_id=None, os_project_name=None, os_queues_api_version='2', os_tripleoclient_api_version='1', os_volume_api_version='', os_workflow_api_version='2', passcode='', password='***', profile='', project_domain_id='', project_domain_name='', project_id='', project_name='', protocol='', redirect_uri='', region_name='', remote_project_domain_id='', remote_project_domain_name='', remote_project_id='', remote_project_name='', roles='', service_provider='', service_provider_endpoint='', service_provider_entity_id='', system_scope='', timing=False, token='***', trust_id='', user='', user_domain_id='', user_domain_name='', user_id='', username='', verbose_level=3, verify=None)
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
defaults: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'auth_type': 'password', 'baremetal_status_code_retries': 5, 'baremetal_introspection_status_code_retries': 5, 'image_status_code_retries': 5, 'disable_vendor_agent': {}, 'interface': None, 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active'}
cloud cfg: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
compute API version 2.1, cmd group openstack.compute.v2
identity API version 3, cmd group openstack.identity.v3
image API version 2, cmd group openstack.image.v2
network API version 2, cmd group openstack.network.v2
object_store API version 1, cmd group openstack.object_store.v1
volume API version 3, cmd group openstack.volume.v3
messaging API version 2, cmd group openstack.messaging.v2
database API version 1, cmd group openstack.database.v1
tripleoclient API version 1, cmd group openstack.tripleoclient.v1
data_processing API version 1.1, cmd group openstack.data_processing.v1
load_balancer API version 2.0, cmd group openstack.load_balancer.v2
neutronclient API version 2, cmd group openstack.neutronclient.v2
workflow_engine API version 2, cmd group openstack.workflow_engine.v2
container_infra API version 1, cmd group openstack.container_infra.v1
baremetal API version 1.58, cmd group openstack.baremetal.v1
baremetal_introspection API version 1, cmd group openstack.baremetal_introspection.v1
orchestration API version 1, cmd group openstack.orchestration.v1
dns API version 2, cmd group openstack.dns.v2
key_manager API version 1, cmd group openstack.key_manager.v1
event API version 2, cmd group openstack.event.v2
metric API version 1, cmd group openstack.metric.v1
alarming API version 2, cmd group openstack.alarming.v2
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
command: tripleo container image push -> tripleoclient.v1.container_image.TripleOContainerImagePush (auth=False)
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'additional_user_agent': [('osc-lib', '1.14.1')], 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
run(Namespace(append_tag='', cleanup=False, dry_run=False, image_to_push='docker.io/trilio/trilio-datamover:4.0.24-rhosp16', local=True, multi_arch=False, password=None, registry_url='undercloud.ctlplane.localdomain:8787', username=None))
take_action(Namespace(append_tag='', cleanup=False, dry_run=False, image_to_push='docker.io/trilio/trilio-datamover:4.0.24-rhosp16', local=True, multi_arch=False, password=None, registry_url='undercloud.ctlplane.localdomain:8787', username=None))
Starting new HTTPS connection (1): undercloud.ctlplane.localdomain:8787
Starting new HTTPS connection (2): undercloud.ctlplane.localdomain:8787
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTP connection (1): undercloud.ctlplane.localdomain:8787
http://undercloud.ctlplane.localdomain:8787 "GET /v2/ HTTP/1.1" 200 2
http://undercloud.ctlplane.localdomain:8787/v2/ status code 200
[containers-storage:docker.io/trilio/trilio-datamover:4.0.24-rhosp16] Starting upload image process
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTP connection (1): undercloud.ctlplane.localdomain:8787
http://undercloud.ctlplane.localdomain:8787 "GET /v2/ HTTP/1.1" 200 2
http://undercloud.ctlplane.localdomain:8787/v2/ status code 200
http://undercloud.ctlplane.localdomain:8787 "POST /v2/trilio/trilio-datamover/blobs/uploads/ HTTP/1.1" 404 239
[undercloud.ctlplane.localdomain:8787/trilio/trilio-datamover:4.0.24-rhosp16] Failed copying the target image to the target registry
result []
clean_up TripleOContainerImagePush:
END return value: None
(undercloud) [stack@undercloud ~]$
If using buildah, you need to use buildah --docker format until we get https://review.opendev.org/#/c/708531/ into the downstream (probably 16 z2 or 16.1) Okay, thanks Alex. I will give a try. Hi Alex,
I tried --format docker option, still push command throws same error.
Following are the commands used.
## Build command used
buildah bud --format docker -t docker.io/trilio/trilio-datamover:osp16-docker-format .
## Push command used:
podman push docker.io/trilio/trilio-datamover:osp16-docker-format
## Pull on undercloud node
(undercloud) [stack@undercloud ~]$ sudo podman pull docker.io/trilio/trilio-datamover:osp16-docker-format
Trying to pull docker.io/trilio/trilio-datamover:osp16-docker-format...
Getting image source signatures
Copying blob 9f00789c7305 skipped: already exists
Copying blob a5a5eee4dd56 skipped: already exists
Copying blob 933041e5135b skipped: already exists
Copying blob 0349dcc88503 skipped: already exists
Copying blob b4ee033867ed skipped: already exists
Copying blob cc3ef2dbb28d done
Copying blob 03225d77fc7a done
Copying config 6365af0612 done
Writing manifest to image destination
Storing signatures
6365af06128dbec7757c777fde1486a85bb0777d28bebde5fbf187fbd6a772fc
## Push to undercloud registry
(undercloud) [stack@undercloud ~]$ sudo openstack tripleo container image push --local docker.io/trilio/trilio-datamover:osp16-docker-format
[undercloud.ctlplane.localdomain:8787/trilio/trilio-datamover:osp16-docker-format] Failed copying the target image to the target registry
-- Debug command:
(undercloud) [stack@undercloud ~]$ sudo openstack tripleo container image push --local docker.io/trilio/trilio-datamover:osp16-docker-format
[undercloud.ctlplane.localdomain:8787/trilio/trilio-datamover:osp16-docker-format] Failed copying the target image to the target registry
(undercloud) [stack@undercloud ~]$ sudo openstack tripleo container image push --local docker.io/trilio/trilio-datamover:osp16-docker-format^C
(undercloud) [stack@undercloud ~]$ sudo openstack --debug tripleo container image push --local docker.io/trilio/trilio-datamover:osp16-docker-format
START with options: --debug tripleo container image push --local docker.io/trilio/trilio-datamover:osp16-docker-format
options: Namespace(access_token='***', access_token_endpoint='', access_token_type='', aodh_endpoint='', application_credential_id='', application_credential_name='', application_credential_secret='***', auth_methods='', auth_type='', auth_url='', cacert=None, cert='', client_id='', client_secret='***', cloud='', code='', debug=True, default_domain='default', default_domain_id='', default_domain_name='', deferred_help=False, discovery_endpoint='', domain_id='', domain_name='', endpoint='', identity_provider='', identity_provider_url='', insecure=None, inspector_api_version='1', inspector_url=None, interface='public', key='', log_file=None, openid_scope='', os_alarming_api_version='2', os_baremetal_api_version='1.58', os_beta_command=False, os_compute_api_version='', os_container_infra_api_version='1', os_data_processing_api_version='1.1', os_data_processing_url='', os_database_api_version='1', os_dns_api_version='2', os_event_api_version='2', os_identity_api_version='', os_image_api_version='', os_key_manager_api_version='1', os_loadbalancer_api_version='2.0', os_metrics_api_version='1', os_network_api_version='', os_object_api_version='', os_orchestration_api_version='1', os_project_id=None, os_project_name=None, os_queues_api_version='2', os_tripleoclient_api_version='1', os_volume_api_version='', os_workflow_api_version='2', passcode='', password='***', profile='', project_domain_id='', project_domain_name='', project_id='', project_name='', protocol='', redirect_uri='', region_name='', remote_project_domain_id='', remote_project_domain_name='', remote_project_id='', remote_project_name='', roles='', service_provider='', service_provider_endpoint='', service_provider_entity_id='', system_scope='', timing=False, token='***', trust_id='', user='', user_domain_id='', user_domain_name='', user_id='', username='', verbose_level=3, verify=None)
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
defaults: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'auth_type': 'password', 'baremetal_status_code_retries': 5, 'baremetal_introspection_status_code_retries': 5, 'image_status_code_retries': 5, 'disable_vendor_agent': {}, 'interface': None, 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active'}
cloud cfg: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
compute API version 2.1, cmd group openstack.compute.v2
identity API version 3, cmd group openstack.identity.v3
image API version 2, cmd group openstack.image.v2
network API version 2, cmd group openstack.network.v2
object_store API version 1, cmd group openstack.object_store.v1
volume API version 3, cmd group openstack.volume.v3
messaging API version 2, cmd group openstack.messaging.v2
database API version 1, cmd group openstack.database.v1
tripleoclient API version 1, cmd group openstack.tripleoclient.v1
data_processing API version 1.1, cmd group openstack.data_processing.v1
load_balancer API version 2.0, cmd group openstack.load_balancer.v2
neutronclient API version 2, cmd group openstack.neutronclient.v2
workflow_engine API version 2, cmd group openstack.workflow_engine.v2
container_infra API version 1, cmd group openstack.container_infra.v1
baremetal API version 1.58, cmd group openstack.baremetal.v1
baremetal_introspection API version 1, cmd group openstack.baremetal_introspection.v1
orchestration API version 1, cmd group openstack.orchestration.v1
dns API version 2, cmd group openstack.dns.v2
key_manager API version 1, cmd group openstack.key_manager.v1
event API version 2, cmd group openstack.event.v2
metric API version 1, cmd group openstack.metric.v1
alarming API version 2, cmd group openstack.alarming.v2
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
command: tripleo container image push -> tripleoclient.v1.container_image.TripleOContainerImagePush (auth=False)
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'additional_user_agent': [('osc-lib', '1.14.1')], 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
run(Namespace(append_tag='', cleanup=False, dry_run=False, image_to_push='docker.io/trilio/trilio-datamover:osp16-docker-format', local=True, multi_arch=False, password=None, registry_url='undercloud.ctlplane.localdomain:8787', username=None))
take_action(Namespace(append_tag='', cleanup=False, dry_run=False, image_to_push='docker.io/trilio/trilio-datamover:osp16-docker-format', local=True, multi_arch=False, password=None, registry_url='undercloud.ctlplane.localdomain:8787', username=None))
Starting new HTTPS connection (1): undercloud.ctlplane.localdomain:8787
Starting new HTTPS connection (2): undercloud.ctlplane.localdomain:8787
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTP connection (1): undercloud.ctlplane.localdomain:8787
http://undercloud.ctlplane.localdomain:8787 "GET /v2/ HTTP/1.1" 200 2
http://undercloud.ctlplane.localdomain:8787/v2/ status code 200
[containers-storage:docker.io/trilio/trilio-datamover:osp16-docker-format] Starting upload image process
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTP connection (1): undercloud.ctlplane.localdomain:8787
http://undercloud.ctlplane.localdomain:8787 "GET /v2/ HTTP/1.1" 200 2
http://undercloud.ctlplane.localdomain:8787/v2/ status code 200
http://undercloud.ctlplane.localdomain:8787 "POST /v2/trilio/trilio-datamover/blobs/uploads/ HTTP/1.1" 404 239
[undercloud.ctlplane.localdomain:8787/trilio/trilio-datamover:osp16-docker-format] Failed copying the target image to the target registry
result []
clean_up TripleOContainerImagePush:
END return value: None
Hi, Following is my dockerfile. Uses nova-compute image of osp16 as base image. https://github.com/shyam-biradar/triliovault-cfg-scripts/blob/master/redhat-director-scripts/docker/trilio-datamover/Dockerfile_rhosp16 So you need to run the buildah bud command as root. I think the problem might be that you have a non-docker version in the root version of podman containers vs a docker format in your local user's version. Because you have to do sudo tripleo container image push, it uses containers built/fetched by root. I just tested using root to build/push and it worked for me. Hi Alex, I am doing 'podman pull' using sudo, so it is pulling the images under root user. I have verified it using 'sudo podman images' command. I will give try with the 'root' user. Thank you. Hi Alex, Tried all commands with root user. No luck. [root@undercloud stack]# podman pull docker.io/trilio/trilio-datamover:osp16-docker-format Trying to pull docker.io/trilio/trilio-datamover:osp16-docker-format... Getting image source signatures Copying blob 9f00789c7305 skipped: already exists Copying blob a5a5eee4dd56 skipped: already exists Copying blob b4ee033867ed skipped: already exists Copying blob 933041e5135b skipped: already exists Copying blob 0349dcc88503 skipped: already exists Copying blob cc3ef2dbb28d done Copying blob 03225d77fc7a done Copying config 6365af0612 done Writing manifest to image destination Storing signatures 6365af06128dbec7757c777fde1486a85bb0777d28bebde5fbf187fbd6a772fc [root@undercloud stack]# podman images | grep trilio docker.io/trilio/trilio-datamover osp16-docker-format 6365af06128d 2 days ago 2.43 GB [root@undercloud stack]# openstack tripleo container image push --local docker.io/trilio/trilio-datamover:osp16-docker-format [undercloud.ctlplane.localdomain:8787/trilio/trilio-datamover:osp16-docker-format] Failed copying the target image to the target registry I don't suppose you can provide me access to pull that container so I can investigate further? So it appears that for whatever reason when you podman pull the container, the manifest metadata on disk is not being updated with the new layer hashes. So it fails because it can't find the layer from the manifest on the disk. I found if you don't use --local and let it fetch the container when you do the push it works. Works: sudo openstack tripleo container image push docker.io/xxxx/trilio-xxxx:osp16 Doesn't work: sudo podman pull docker.io/xxxx/trilio-xxxx:osp16 sudo openstack tripleo container image push --local docker.io/xxxx/trilio-xxxx:osp16 I'll need to open a bug against podman to futher understand why the metadata is mis-matched. Thanks Alex. I will give a try. Hi Alex,
Container images from public dockerhub repositories, are getting pushed with this approach.
But If I try the command with private repositories, 'openstack tripleo container image push <>' command is failing with authorization error.
I have already logged in with the correct user to docker.io registry.
Does openstack tripleo command has the capability to pass the credentials of the source registry? I saw it has a username and password options for destination registry but not for the source registry.
Our dockerhub repositories are private. Let me know if we have any workaround here.
[root@undercloud stack]# podman login docker.io
Authenticating with existing credentials...
Existing credentials are valid. Already logged in to docker.io
[root@undercloud stack]#
[root@undercloud stack]# openstack --debug tripleo container image push docker.io/trilio/trilio-datamover:osp16-docker-format
START with options: --debug tripleo container image push docker.io/trilio/trilio-datamover:osp16-docker-format
options: Namespace(access_token='***', access_token_endpoint='', access_token_type='', aodh_endpoint='', application_credential_id='', application_credential_name='', application_credential_secret='***', auth_methods='', auth_type='', auth_url='', cacert=None, cert='', client_id='', client_secret='***', cloud='', code='', debug=True, default_domain='default', default_domain_id='', default_domain_name='', deferred_help=False, discovery_endpoint='', domain_id='', domain_name='', endpoint='', identity_provider='', identity_provider_url='', insecure=None, inspector_api_version='1', inspector_url=None, interface='public', key='', log_file=None, openid_scope='', os_alarming_api_version='2', os_baremetal_api_version='1.58', os_beta_command=False, os_compute_api_version='', os_container_infra_api_version='1', os_data_processing_api_version='1.1', os_data_processing_url='', os_database_api_version='1', os_dns_api_version='2', os_event_api_version='2', os_identity_api_version='', os_image_api_version='', os_key_manager_api_version='1', os_loadbalancer_api_version='2.0', os_metrics_api_version='1', os_network_api_version='', os_object_api_version='', os_orchestration_api_version='1', os_project_id=None, os_project_name=None, os_queues_api_version='2', os_tripleoclient_api_version='1', os_volume_api_version='', os_workflow_api_version='2', passcode='', password='***', profile='', project_domain_id='', project_domain_name='', project_id='', project_name='', protocol='', redirect_uri='', region_name='', remote_project_domain_id='', remote_project_domain_name='', remote_project_id='', remote_project_name='', roles='', service_provider='', service_provider_endpoint='', service_provider_entity_id='', system_scope='', timing=False, token='***', trust_id='', user='', user_domain_id='', user_domain_name='', user_id='', username='', verbose_level=3, verify=None)
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
defaults: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'auth_type': 'password', 'baremetal_status_code_retries': 5, 'baremetal_introspection_status_code_retries': 5, 'image_status_code_retries': 5, 'disable_vendor_agent': {}, 'interface': None, 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active'}
cloud cfg: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
compute API version 2.1, cmd group openstack.compute.v2
identity API version 3, cmd group openstack.identity.v3
image API version 2, cmd group openstack.image.v2
network API version 2, cmd group openstack.network.v2
object_store API version 1, cmd group openstack.object_store.v1
volume API version 3, cmd group openstack.volume.v3
messaging API version 2, cmd group openstack.messaging.v2
database API version 1, cmd group openstack.database.v1
tripleoclient API version 1, cmd group openstack.tripleoclient.v1
data_processing API version 1.1, cmd group openstack.data_processing.v1
load_balancer API version 2.0, cmd group openstack.load_balancer.v2
neutronclient API version 2, cmd group openstack.neutronclient.v2
workflow_engine API version 2, cmd group openstack.workflow_engine.v2
container_infra API version 1, cmd group openstack.container_infra.v1
baremetal API version 1.58, cmd group openstack.baremetal.v1
baremetal_introspection API version 1, cmd group openstack.baremetal_introspection.v1
orchestration API version 1, cmd group openstack.orchestration.v1
dns API version 2, cmd group openstack.dns.v2
key_manager API version 1, cmd group openstack.key_manager.v1
event API version 2, cmd group openstack.event.v2
metric API version 1, cmd group openstack.metric.v1
alarming API version 2, cmd group openstack.alarming.v2
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
command: tripleo container image push -> tripleoclient.v1.container_image.TripleOContainerImagePush (auth=False)
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'additional_user_agent': [('osc-lib', '1.14.1')], 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
run(Namespace(append_tag='', cleanup=False, dry_run=False, image_to_push='docker.io/trilio/trilio-datamover:osp16-docker-format', local=False, multi_arch=False, password=None, registry_url='undercloud.ctlplane.localdomain:8787', username=None))
take_action(Namespace(append_tag='', cleanup=False, dry_run=False, image_to_push='docker.io/trilio/trilio-datamover:osp16-docker-format', local=False, multi_arch=False, password=None, registry_url='undercloud.ctlplane.localdomain:8787', username=None))
Starting new HTTPS connection (1): undercloud.ctlplane.localdomain:8787
Starting new HTTPS connection (2): undercloud.ctlplane.localdomain:8787
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTP connection (1): undercloud.ctlplane.localdomain:8787
http://undercloud.ctlplane.localdomain:8787 "GET /v2/ HTTP/1.1" 200 2
http://undercloud.ctlplane.localdomain:8787/v2/ status code 200
[trilio/trilio-datamover:osp16-docker-format] Starting upload image process
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTP connection (1): undercloud.ctlplane.localdomain:8787
http://undercloud.ctlplane.localdomain:8787 "GET /v2/ HTTP/1.1" 200 2
http://undercloud.ctlplane.localdomain:8787/v2/ status code 200
http://undercloud.ctlplane.localdomain:8787 "POST /v2/trilio/trilio-datamover/blobs/uploads/ HTTP/1.1" 404 239
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTPS connection (1): registry-1.docker.io:443
https://registry-1.docker.io:443 "GET /v2/ HTTP/1.1" 401 87
https://registry-1.docker.io/v2/ status code 401
Token parameters: params {'service': 'registry.docker.io', 'scope': 'repository:trilio/trilio-datamover:pull'}
Starting new HTTPS connection (1): auth.docker.io:443
https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository%3Atrilio%2Ftrilio-datamover%3Apull HTTP/1.1" 200 None
Session authenticated: id 3bb49ef39d9fa36baf4fd084095a6f30c765555c
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:14 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:15 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:15 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:20 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:24 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
[undercloud.ctlplane.localdomain:8787/trilio/trilio-datamover:osp16-docker-format] Failed uploading the target image
Unable to upload due to permissions. Please prefix command with sudo.
401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 175, in _process_worker
r = call_item.fn(*call_item.args, **call_item.kwargs)
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in _process_chunk
return [fn(*args) for args in chunk]
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in <listcomp>
return [fn(*args) for args in chunk]
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 2294, in upload_task
return uploader.upload_image(task)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1356, in upload_image
t.multi_arch
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1499, in _collect_manifests_layers
multi_arch=multi_arch
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 292, in wrapped_f
return self.call(f, *args, **kw)
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 358, in call
do = self.iter(retry_state=retry_state)
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 331, in iter
raise retry_exc.reraise()
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 167, in reraise
raise self.last_attempt.result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 361, in call
result = fn(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1490, in _fetch_manifest
cls.check_status(session=session, request=r)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 562, in check_status
request.raise_for_status()
File "/usr/lib/python3.6/site-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 650, in take_action
uploader.run_tasks()
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 2235, in run_tasks
for result in p.map(upload_task, self.upload_tasks):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 366, in _chain_from_iterable_of_lists
for element in iterable:
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 586, in result_iterator
yield fs.pop().result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/cliff/app.py", line 401, in run_subcommand
result = cmd.run(parsed_args)
File "/usr/lib/python3.6/site-packages/tripleoclient/command.py", line 32, in run
super(Command, self).run(parsed_args)
File "/usr/lib/python3.6/site-packages/osc_lib/command/command.py", line 41, in run
return super(Command, self).run(parsed_args)
File "/usr/lib/python3.6/site-packages/cliff/command.py", line 185, in run
return_code = self.take_action(parsed_args) or 0
File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 654, in take_action
raise oscexc.CommandError(e)
osc_lib.exceptions.CommandError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
clean_up TripleOContainerImagePush: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 175, in _process_worker
r = call_item.fn(*call_item.args, **call_item.kwargs)
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in _process_chunk
return [fn(*args) for args in chunk]
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in <listcomp>
return [fn(*args) for args in chunk]
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 2294, in upload_task
return uploader.upload_image(task)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1356, in upload_image
t.multi_arch
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1499, in _collect_manifests_layers
multi_arch=multi_arch
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 292, in wrapped_f
return self.call(f, *args, **kw)
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 358, in call
do = self.iter(retry_state=retry_state)
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 331, in iter
raise retry_exc.reraise()
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 167, in reraise
raise self.last_attempt.result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 361, in call
result = fn(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1490, in _fetch_manifest
cls.check_status(session=session, request=r)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 562, in check_status
request.raise_for_status()
File "/usr/lib/python3.6/site-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 650, in take_action
uploader.run_tasks()
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 2235, in run_tasks
for result in p.map(upload_task, self.upload_tasks):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 366, in _chain_from_iterable_of_lists
for element in iterable:
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 586, in result_iterator
yield fs.pop().result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/osc_lib/shell.py", line 136, in run
ret_val = super(OpenStackShell, self).run(argv)
File "/usr/lib/python3.6/site-packages/cliff/app.py", line 281, in run
result = self.run_subcommand(remainder)
File "/usr/lib/python3.6/site-packages/osc_lib/shell.py", line 176, in run_subcommand
ret_value = super(OpenStackShell, self).run_subcommand(argv)
File "/usr/lib/python3.6/site-packages/cliff/app.py", line 401, in run_subcommand
result = cmd.run(parsed_args)
File "/usr/lib/python3.6/site-packages/tripleoclient/command.py", line 32, in run
super(Command, self).run(parsed_args)
File "/usr/lib/python3.6/site-packages/osc_lib/command/command.py", line 41, in run
return super(Command, self).run(parsed_args)
File "/usr/lib/python3.6/site-packages/cliff/command.py", line 185, in run
return_code = self.take_action(parsed_args) or 0
File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 654, in take_action
raise oscexc.CommandError(e)
osc_lib.exceptions.CommandError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
END return value: 1
[root@undercloud stack]#
Hi Alex,
Container images from public dockerhub repositories, are getting pushed with this approach.
But If I try the command with private repositories, 'openstack tripleo container image push <>' command is failing with authorization error.
I have already logged in with the correct user to docker.io registry.
Does openstack tripleo command has the capability to pass the credentials of the source registry? I saw it has a username and password options for destination registry but not for the source registry.
Our dockerhub repositories are private. Let me know if we have any workaround here.
[root@undercloud stack]# podman login docker.io
Authenticating with existing credentials...
Existing credentials are valid. Already logged in to docker.io
[root@undercloud stack]#
[root@undercloud stack]# openstack --debug tripleo container image push docker.io/trilio/trilio-datamover:osp16-docker-format
START with options: --debug tripleo container image push docker.io/trilio/trilio-datamover:osp16-docker-format
options: Namespace(access_token='***', access_token_endpoint='', access_token_type='', aodh_endpoint='', application_credential_id='', application_credential_name='', application_credential_secret='***', auth_methods='', auth_type='', auth_url='', cacert=None, cert='', client_id='', client_secret='***', cloud='', code='', debug=True, default_domain='default', default_domain_id='', default_domain_name='', deferred_help=False, discovery_endpoint='', domain_id='', domain_name='', endpoint='', identity_provider='', identity_provider_url='', insecure=None, inspector_api_version='1', inspector_url=None, interface='public', key='', log_file=None, openid_scope='', os_alarming_api_version='2', os_baremetal_api_version='1.58', os_beta_command=False, os_compute_api_version='', os_container_infra_api_version='1', os_data_processing_api_version='1.1', os_data_processing_url='', os_database_api_version='1', os_dns_api_version='2', os_event_api_version='2', os_identity_api_version='', os_image_api_version='', os_key_manager_api_version='1', os_loadbalancer_api_version='2.0', os_metrics_api_version='1', os_network_api_version='', os_object_api_version='', os_orchestration_api_version='1', os_project_id=None, os_project_name=None, os_queues_api_version='2', os_tripleoclient_api_version='1', os_volume_api_version='', os_workflow_api_version='2', passcode='', password='***', profile='', project_domain_id='', project_domain_name='', project_id='', project_name='', protocol='', redirect_uri='', region_name='', remote_project_domain_id='', remote_project_domain_name='', remote_project_id='', remote_project_name='', roles='', service_provider='', service_provider_endpoint='', service_provider_entity_id='', system_scope='', timing=False, token='***', trust_id='', user='', user_domain_id='', user_domain_name='', user_id='', username='', verbose_level=3, verify=None)
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
defaults: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'auth_type': 'password', 'baremetal_status_code_retries': 5, 'baremetal_introspection_status_code_retries': 5, 'image_status_code_retries': 5, 'disable_vendor_agent': {}, 'interface': None, 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active'}
cloud cfg: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
compute API version 2.1, cmd group openstack.compute.v2
identity API version 3, cmd group openstack.identity.v3
image API version 2, cmd group openstack.image.v2
network API version 2, cmd group openstack.network.v2
object_store API version 1, cmd group openstack.object_store.v1
volume API version 3, cmd group openstack.volume.v3
messaging API version 2, cmd group openstack.messaging.v2
database API version 1, cmd group openstack.database.v1
tripleoclient API version 1, cmd group openstack.tripleoclient.v1
data_processing API version 1.1, cmd group openstack.data_processing.v1
load_balancer API version 2.0, cmd group openstack.load_balancer.v2
neutronclient API version 2, cmd group openstack.neutronclient.v2
workflow_engine API version 2, cmd group openstack.workflow_engine.v2
container_infra API version 1, cmd group openstack.container_infra.v1
baremetal API version 1.58, cmd group openstack.baremetal.v1
baremetal_introspection API version 1, cmd group openstack.baremetal_introspection.v1
orchestration API version 1, cmd group openstack.orchestration.v1
dns API version 2, cmd group openstack.dns.v2
key_manager API version 1, cmd group openstack.key_manager.v1
event API version 2, cmd group openstack.event.v2
metric API version 1, cmd group openstack.metric.v1
alarming API version 2, cmd group openstack.alarming.v2
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
command: tripleo container image push -> tripleoclient.v1.container_image.TripleOContainerImagePush (auth=False)
Auth plugin password selected
auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'additional_user_agent': [('osc-lib', '1.14.1')], 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []}
run(Namespace(append_tag='', cleanup=False, dry_run=False, image_to_push='docker.io/trilio/trilio-datamover:osp16-docker-format', local=False, multi_arch=False, password=None, registry_url='undercloud.ctlplane.localdomain:8787', username=None))
take_action(Namespace(append_tag='', cleanup=False, dry_run=False, image_to_push='docker.io/trilio/trilio-datamover:osp16-docker-format', local=False, multi_arch=False, password=None, registry_url='undercloud.ctlplane.localdomain:8787', username=None))
Starting new HTTPS connection (1): undercloud.ctlplane.localdomain:8787
Starting new HTTPS connection (2): undercloud.ctlplane.localdomain:8787
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTP connection (1): undercloud.ctlplane.localdomain:8787
http://undercloud.ctlplane.localdomain:8787 "GET /v2/ HTTP/1.1" 200 2
http://undercloud.ctlplane.localdomain:8787/v2/ status code 200
[trilio/trilio-datamover:osp16-docker-format] Starting upload image process
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTP connection (1): undercloud.ctlplane.localdomain:8787
http://undercloud.ctlplane.localdomain:8787 "GET /v2/ HTTP/1.1" 200 2
http://undercloud.ctlplane.localdomain:8787/v2/ status code 200
http://undercloud.ctlplane.localdomain:8787 "POST /v2/trilio/trilio-datamover/blobs/uploads/ HTTP/1.1" 404 239
Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None)
Starting new HTTPS connection (1): registry-1.docker.io:443
https://registry-1.docker.io:443 "GET /v2/ HTTP/1.1" 401 87
https://registry-1.docker.io/v2/ status code 401
Token parameters: params {'service': 'registry.docker.io', 'scope': 'repository:trilio/trilio-datamover:pull'}
Starting new HTTPS connection (1): auth.docker.io:443
https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository%3Atrilio%2Ftrilio-datamover%3Apull HTTP/1.1" 200 None
Session authenticated: id 3bb49ef39d9fa36baf4fd084095a6f30c765555c
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:14 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:15 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:15 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:20 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
https://registry-1.docker.io:443 "GET /v2/trilio/trilio-datamover/manifests/osp16-docker-format HTTP/1.1" 401 166
Non-2xx: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized, text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Failure: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, status 401, reason Unauthorized text {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"trilio/trilio-datamover","Action":"pull"}]}]}
Request headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'Content-Type': 'application/json', 'Docker-Distribution-Api-Version': 'registry/2.0', 'Www-Authenticate': 'Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:trilio/trilio-datamover:pull",error="insufficient_scope"', 'Date': 'Tue, 25 Feb 2020 06:11:24 GMT', 'Content-Length': '166', 'Strict-Transport-Security': 'max-age=31536000'}
Session headers after 401: id 55b701ddbdd6fd36238c4f63ae7d3fb575d307e4, headers {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDK1RDQ0FwK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXpzeVYwNVpPbFZMUzFJNlJFMUVVanBTU1U5Rk9reEhOa0U2UTFWWVZEcE5SbFZNT2tZelNFVTZOVkF5VlRwTFNqTkdPa05CTmxrNlNrbEVVVEFlRncweU1EQXhNRFl5TURVeE1UUmFGdzB5TVRBeE1qVXlNRFV4TVRSYU1FWXhSREJDQmdOVkJBTVRPMVZCVVRjNldGTk9VenBVUjFRek9rRTBXbFU2U1RWSFN6cFNOalJaT2xkRFNFTTZWMVpTU3pwTlNUTlNPa3RZVFRjNlNGZFRNenBDVmxwYU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcnh5Mm9uSDBTWHh4a1JCZG9wWDFWc1VuQVovOUpZR3JNSXlrelJuMTRsd1A1SkVmK1hNNUFORW1NLzBYOFJyNUlIN2VTWFV6K1lWaFVucVNKc3lPUi9xd3BTeFdLWUxxVnB1blFOWThIazdmRnlvN0l0bXgxajZ1dnRtVmFibFFPTEZJMUJNVnY2Y3IxVjV3RlZRYWc3SnhkRUFSZWtaR1M5eDlIcnM1NVdxb0lSK29GRGwxVVRjNlBFSjZVWGdwYmhXWHZoU0RPaXBPcUlYdHZkdHJoWFFpd204Y3EyczF0TEQzZzg2WmRYVFg3UDFFZkxFOG1jMEh4anBGNkdiNWxHZFhjdjU5cC9SMzEva0xlL09wRHNnVWJxMEFvd3Bsc1lLb0dlSmdVNDJaZG45SFZGUVFRcEtGTFBNK1pQN0R2ZmVGMWNIWFhGblI1TkpFU1Z1bFRRSURBUUFCbzRHeU1JR3ZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ05WSFNVRUNEQUdCZ1JWSFNVQU1FUUdBMVVkRGdROUJEdFZRVkUzT2xoVFRsTTZWRWRVTXpwQk5GcFZPa2sxUjBzNlVqWTBXVHBYUTBoRE9sZFdVa3M2VFVrelVqcExXRTAzT2toWFV6TTZRbFphV2pCR0JnTlZIU01FUHpBOWdEc3lWMDVaT2xWTFMxSTZSRTFFVWpwU1NVOUZPa3hITmtFNlExVllWRHBOUmxWTU9rWXpTRVU2TlZBeVZUcExTak5HT2tOQk5sazZTa2xFVVRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXl5SEpJU1RZc1p2ZVZyNWE1YzZ4MjhrQ2U5M2w1QndQVGRUTk9SaFB0c0VDSURMR3pYdUxuekRqTCtzcWRkOU5FbkRuMnZ2UFBWVk1NLzhDQW1EaTVudnMiXX0.eyJhY2Nlc3MiOltdLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuaW8iLCJleHAiOjE1ODI2MTEzNzQsImlhdCI6MTU4MjYxMTA3NCwiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiJpTU5DbkxzMjB6WFQ3SjltUGJMNyIsIm5iZiI6MTU4MjYxMDc3NCwic3ViIjoiIn0.VtcwqACevf2mTVSJlIpR4Nx6SR8x5jSDFNsEPdTTJa8KIY12_3xo_Iaq0-BOzQIBg6RlXEuaysHmCYxMMIjjiMCz0-vQLZb2thEhgDISfq4YL-f9XGjT6_aitg78jrSKO4VNFpE76S2AIW5IEzgm70YOB4oEqotLtA-4i6_Q-IE4DbNXKu5GOCsLYSH82NnUncKP75xT7wrtYu1BEZOgAx3qKm_XpB2s4Dq9Z-HJxtF0ZzlKOf_Y_qcquvPTgOTVYUwJ7GfcDi8GYw9oR3YL_4Zi0yYC79Ag-0JMB6T16eqyeWZfOMO5NIDGSHitiUfA2p-WeTJYI1K4FNQs1UQweA'}
Error detected in auth headers: error insufficient_scope
[undercloud.ctlplane.localdomain:8787/trilio/trilio-datamover:osp16-docker-format] Failed uploading the target image
Unable to upload due to permissions. Please prefix command with sudo.
401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 175, in _process_worker
r = call_item.fn(*call_item.args, **call_item.kwargs)
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in _process_chunk
return [fn(*args) for args in chunk]
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in <listcomp>
return [fn(*args) for args in chunk]
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 2294, in upload_task
return uploader.upload_image(task)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1356, in upload_image
t.multi_arch
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1499, in _collect_manifests_layers
multi_arch=multi_arch
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 292, in wrapped_f
return self.call(f, *args, **kw)
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 358, in call
do = self.iter(retry_state=retry_state)
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 331, in iter
raise retry_exc.reraise()
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 167, in reraise
raise self.last_attempt.result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 361, in call
result = fn(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1490, in _fetch_manifest
cls.check_status(session=session, request=r)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 562, in check_status
request.raise_for_status()
File "/usr/lib/python3.6/site-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 650, in take_action
uploader.run_tasks()
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 2235, in run_tasks
for result in p.map(upload_task, self.upload_tasks):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 366, in _chain_from_iterable_of_lists
for element in iterable:
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 586, in result_iterator
yield fs.pop().result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/cliff/app.py", line 401, in run_subcommand
result = cmd.run(parsed_args)
File "/usr/lib/python3.6/site-packages/tripleoclient/command.py", line 32, in run
super(Command, self).run(parsed_args)
File "/usr/lib/python3.6/site-packages/osc_lib/command/command.py", line 41, in run
return super(Command, self).run(parsed_args)
File "/usr/lib/python3.6/site-packages/cliff/command.py", line 185, in run
return_code = self.take_action(parsed_args) or 0
File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 654, in take_action
raise oscexc.CommandError(e)
osc_lib.exceptions.CommandError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
clean_up TripleOContainerImagePush: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 175, in _process_worker
r = call_item.fn(*call_item.args, **call_item.kwargs)
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in _process_chunk
return [fn(*args) for args in chunk]
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in <listcomp>
return [fn(*args) for args in chunk]
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 2294, in upload_task
return uploader.upload_image(task)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1356, in upload_image
t.multi_arch
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1499, in _collect_manifests_layers
multi_arch=multi_arch
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 292, in wrapped_f
return self.call(f, *args, **kw)
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 358, in call
do = self.iter(retry_state=retry_state)
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 331, in iter
raise retry_exc.reraise()
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 167, in reraise
raise self.last_attempt.result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib/python3.6/site-packages/tenacity/__init__.py", line 361, in call
result = fn(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1490, in _fetch_manifest
cls.check_status(session=session, request=r)
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 562, in check_status
request.raise_for_status()
File "/usr/lib/python3.6/site-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 650, in take_action
uploader.run_tasks()
File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 2235, in run_tasks
for result in p.map(upload_task, self.upload_tasks):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 366, in _chain_from_iterable_of_lists
for element in iterable:
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 586, in result_iterator
yield fs.pop().result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/osc_lib/shell.py", line 136, in run
ret_val = super(OpenStackShell, self).run(argv)
File "/usr/lib/python3.6/site-packages/cliff/app.py", line 281, in run
result = self.run_subcommand(remainder)
File "/usr/lib/python3.6/site-packages/osc_lib/shell.py", line 176, in run_subcommand
ret_value = super(OpenStackShell, self).run_subcommand(argv)
File "/usr/lib/python3.6/site-packages/cliff/app.py", line 401, in run_subcommand
result = cmd.run(parsed_args)
File "/usr/lib/python3.6/site-packages/tripleoclient/command.py", line 32, in run
super(Command, self).run(parsed_args)
File "/usr/lib/python3.6/site-packages/osc_lib/command/command.py", line 41, in run
return super(Command, self).run(parsed_args)
File "/usr/lib/python3.6/site-packages/cliff/command.py", line 185, in run
return_code = self.take_action(parsed_args) or 0
File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 654, in take_action
raise oscexc.CommandError(e)
osc_lib.exceptions.CommandError: 401 Client Error: Unauthorized for url: https://registry-1.docker.io/v2/trilio/trilio-datamover/manifests/osp16-docker-format
END return value: 1
[root@undercloud stack]#
So yea you're currently blocked until we can land https://review.opendev.org/709767 or https://review.opendev.org/709818. I don't know why you're container's manifest is triggering this as we don't see this on any other containers that we use. Did you use compression or something when building? Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2020:2114 |
Description of problem: The command "openstack tripleo container image push" fails to pull the image due to url being parsed incorrectly. Tried to pull this test image from docker.io: ~~~ - name of registry from where image is to be pulled >> docker.io - name of the namespace on your remote registry >> openstackhelm - name of the podman image >> heat - tag of the image >> stein-ubuntu_bionic-20200207 ~~~ This gets pulled with podman cli ~~~ [stack@undercloud ~]$ sudo podman pull docker.io/openstackhelm/heat:stein-ubuntu_bionic-20200207 Trying to pull docker.io/openstackhelm/heat:stein-ubuntu_bionic-20200207... Getting image source signatures Copying blob 5c939e3a4d10 [============>-------------------------] 8.6MiB / 25.5MiB Copying blob ffd27473e300 done Copying blob 651c9d2d6c4f done Copying blob c63719cdbe7a done Copying blob fc85f27ab4c9 done Copying blob 19a861ea6baf done ^C ~~~ Version-Release number of selected component (if applicable): ~~~ 16 GA release python3-tripleo-common-11.3.3-0.20200121231250.3c68b48.el8ost.noarch openstack-tripleo-image-elements-10.6.1-0.20191022065313.7338463.el8ost.noarch openstack-tripleo-common-containers-11.3.3-0.20200121231250.3c68b48.el8ost.noarch openstack-tripleo-heat-templates-11.3.2-0.20200131125640.cc909b6.el8ost.noarch openstack-tripleo-validations-11.3.1-0.20191126041901.2bba53a.el8ost.noarch openstack-tripleo-puppet-elements-11.2.2-0.20200128210949.d668f88.el8ost.noarch openstack-tripleo-common-11.3.3-0.20200121231250.3c68b48.el8ost.noarch ~~~ How reproducible: ~~~ [stack@undercloud ~]$ sudo openstack tripleo container image push --local --registry-url docker.io --append-tag stein-ubuntu_bionic-20200207 openstackhelm/heat --debug START with options: tripleo container image push --local --registry-url docker.io --append-tag stein-ubuntu_bionic-20200207 openstackhelm/heat --debug options: Namespace(access_token='***', access_token_endpoint='', access_token_type='', aodh_endpoint='', application_credential_id='', application_credential_name='', application_credential_secret='***', auth_me thods='', auth_type='', auth_url='', cacert=None, cert='', client_id='', client_secret='***', cloud='', code='', debug=True, default_domain='default', default_domain_id='', default_domain_name='', deferred_help= False, discovery_endpoint='', domain_id='', domain_name='', endpoint='', identity_provider='', identity_provider_url='', insecure=None, inspector_api_version='1', inspector_url=None, interface='public', key='', log_file=None, openid_scope='', os_alarming_api_version='2', os_baremetal_api_version='1.58', os_beta_command=False, os_compute_api_version='', os_container_infra_api_version='1', os_data_processing_api_version= '1.1', os_data_processing_url='', os_database_api_version='1', os_dns_api_version='2', os_event_api_version='2', os_identity_api_version='', os_image_api_version='', os_key_manager_api_version='1', os_loadbalanc er_api_version='2.0', os_metrics_api_version='1', os_network_api_version='', os_object_api_version='', os_orchestration_api_version='1', os_project_id=None, os_project_name=None, os_queues_api_version='2', os_tr ipleoclient_api_version='1', os_volume_api_version='', os_workflow_api_version='2', passcode='', password='***', profile='', project_domain_id='', project_domain_name='', project_id='', project_name='', protocol ='', redirect_uri='', region_name='', remote_project_domain_id='', remote_project_domain_name='', remote_project_id='', remote_project_name='', roles='', service_provider='', service_provider_endpoint='', servic e_provider_entity_id='', system_scope='', timing=False, token='***', trust_id='', user='', user_domain_id='', user_domain_name='', user_id='', username='', verbose_level=3, verify=None) Auth plugin password selected auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_r etries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_a pi_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': ' 1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version ': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_versi on': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []} defaults: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'auth_type': 'password', 'baremetal_status_code_retries': 5, 'baremetal_introspection_status_code_retries': 5, 'image_st atus_code_retries': 5, 'disable_vendor_agent': {}, 'interface': None, 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_st ore_api_version': '1', 'secgroup_source': 'neutron', 'status': 'active'} cloud cfg: {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_retries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_api_versio n': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': '1', 'beta _command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version': '2', ' container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []} compute API version 2.1, cmd group openstack.compute.v2 identity API version 3, cmd group openstack.identity.v3 image API version 2, cmd group openstack.image.v2 network API version 2, cmd group openstack.network.v2 object_store API version 1, cmd group openstack.object_store.v1 volume API version 3, cmd group openstack.volume.v3 messaging API version 2, cmd group openstack.messaging.v2 database API version 1, cmd group openstack.database.v1 tripleoclient API version 1, cmd group openstack.tripleoclient.v1 data_processing API version 1.1, cmd group openstack.data_processing.v1 load_balancer API version 2.0, cmd group openstack.load_balancer.v2 neutronclient API version 2, cmd group openstack.neutronclient.v2 workflow_engine API version 2, cmd group openstack.workflow_engine.v2 container_infra API version 1, cmd group openstack.container_infra.v1 baremetal API version 1.58, cmd group openstack.baremetal.v1 baremetal_introspection API version 1, cmd group openstack.baremetal_introspection.v1 orchestration API version 1, cmd group openstack.orchestration.v1 dns API version 2, cmd group openstack.dns.v2 key_manager API version 1, cmd group openstack.key_manager.v1 event API version 2, cmd group openstack.event.v2 metric API version 1, cmd group openstack.metric.v1 alarming API version 2, cmd group openstack.alarming.v2 Auth plugin password selected auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_r etries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_a pi_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'default', 'timing': False, 'inspector_api_version': ' 1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadbalancer_api_version': '2.0', 'workflow_api_version ': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_versi on': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []} command: tripleo container image push -> tripleoclient.v1.container_image.TripleOContainerImagePush (auth=False) Auth plugin password selected auth_config_hook(): {'api_timeout': None, 'verify': True, 'cacert': None, 'cert': None, 'key': None, 'baremetal_status_code_retries': '5', 'baremetal_introspection_status_code_retries': '5', 'image_status_code_r etries': '5', 'disable_vendor_agent': {}, 'interface': 'public', 'floating_ip_source': 'neutron', 'image_api_use_tasks': False, 'image_format': 'qcow2', 'message': '', 'network_api_version': '2', 'object_store_a pi_version': '1', 'secgroup_source': 'neutron', 'status': 'active', 'auth': {}, 'additional_user_agent': [('osc-lib', '1.14.1')], 'verbose_level': 3, 'deferred_help': False, 'debug': True, 'default_domain': 'def ault', 'timing': False, 'inspector_api_version': '1', 'beta_command': False, 'queues_api_version': '2', 'database_api_version': '1', 'tripleoclient_api_version': '1', 'data_processing_api_version': '1.1', 'loadb alancer_api_version': '2.0', 'workflow_api_version': '2', 'container_infra_api_version': '1', 'baremetal_api_version': '1.58', 'orchestration_api_version': '1', 'dns_api_version': '2', 'key_manager_api_version': '1', 'event_api_version': '2', 'metrics_api_version': '1', 'alarming_api_version': '2', 'region_name': '', 'auth_type': 'password', 'networks': []} run(Namespace(append_tag='stein-ubuntu_bionic-20200207', cleanup=False, dry_run=False, image_to_push='openstackhelm/heat', local=True, multi_arch=False, password=None, registry_url='docker.io', username=None)) take_action(Namespace(append_tag='stein-ubuntu_bionic-20200207', cleanup=False, dry_run=False, image_to_push='openstackhelm/heat', local=True, multi_arch=False, password=None, registry_url='docker.io', username= None)) Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None) Starting new HTTPS connection (1): registry-1.docker.io:443 https://registry-1.docker.io:443 "GET /v2/ HTTP/1.1" 401 87 https://registry-1.docker.io/v2/ status code 401 Token parameters: params {'service': 'registry.docker.io', 'scope': 'repository::pull'} Starting new HTTPS connection (1): auth.docker.io:443 https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository%3A%3Apull HTTP/1.1" 200 None Session authenticated: id 5f242936ed1aa3506f8f8bc59cfcf3e21efa8bd5 [containers-storage:openstackhelm/heat] Starting upload image process Converted retries value: 8 -> Retry(total=8, connect=None, read=None, redirect=None, status=None) Starting new HTTPS connection (1): registry-1.docker.io:443 https://registry-1.docker.io:443 "GET /v2/ HTTP/1.1" 401 87 https://registry-1.docker.io/v2/ status code 401 Token parameters: params {'service': 'registry.docker.io', 'scope': 'repository::pull'} Starting new HTTPS connection (1): auth.docker.io:443 https://auth.docker.io:443 "GET /token?service=registry.docker.io&scope=repository%3A%3Apull HTTP/1.1" 200 None Session authenticated: id 5f242936ed1aa3506f8f8bc59cfcf3e21efa8bd5 https://registry-1.docker.io:443 "POST /v2//blobs/uploads/ HTTP/1.1" 301 0 https://registry-1.docker.io:443 "GET /v2/blobs/uploads/ HTTP/1.1" 404 19 [docker.io/:openstackhelm/heatstein-ubuntu_bionic-20200207] Failed copying the target image to the target registry <<<<<<<<<<< result [] clean_up TripleOContainerImagePush: END return value: None ~~~ In "docker.io/:openstackhelm/heatstein-ubuntu_bionic-20200207" The ":" seems to be misplaced. It should be after "heat" and not after "docker.io/".