Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

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-commonAssignee: 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    

Description Yadnesh Kulkarni 2020-02-18 05:29:50 UTC
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/".

Comment 1 Alex Schultz 2020-02-19 19:09:01 UTC
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 ~]$

Comment 2 Shyam 2020-02-20 08:40:32 UTC
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 ~]$

Comment 4 Alex Schultz 2020-02-20 15:39:28 UTC
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)

Comment 5 Shyam 2020-02-21 07:52:45 UTC
Okay, thanks Alex. I will give a try.

Comment 6 Shyam 2020-02-21 08:08:25 UTC
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

Comment 7 Shyam 2020-02-21 08:12:55 UTC
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

Comment 8 Alex Schultz 2020-02-21 16:52:56 UTC
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.

Comment 9 Shyam 2020-02-24 05:53:30 UTC
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.

Comment 10 Shyam 2020-02-24 05:58:18 UTC
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

Comment 11 Alex Schultz 2020-02-24 15:51:14 UTC
I don't suppose you can provide me access to pull that container so I can investigate further?

Comment 12 Alex Schultz 2020-02-24 18:26:40 UTC
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.

Comment 13 Shyam 2020-02-25 06:04:00 UTC
Thanks Alex. I will give a try.

Comment 14 Shyam 2020-02-25 06:18:22 UTC
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]#

Comment 15 Shyam 2020-02-25 06:18:54 UTC
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]#

Comment 16 Alex Schultz 2020-02-25 19:20:10 UTC
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?

Comment 25 errata-xmlrpc 2020-05-14 12:16:10 UTC
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