container image prepare fails with KeyError: 'docker-content-digest'

Bug #1822915 reported by Tony Breeds
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tripleo
Fix Released
Medium
Steve Baker

Bug Description

When trying to deploy with:

+ openstack overcloud deploy --templates /home/stack/templates -r /home/stack/templates/roles_data.yaml --validation-errors-nonfatal --libvirt-type kvm --ntp-server clock01.util.phx2.redhat.com -e /home/stack/templates/node-info.yaml -e /home/stack/templates/container-image-prepare.yaml -e /home/stack/templates/customization.yaml --config-download --stack-only

the deploy failed with:
<SNIP>
Deploying templates in the directory /tmp/tripleoclient-ffh1i7ef/tripleo-heat-templates
Initializing overcloud plan deployment
'docker-content-digest'

Trying: openstack tripleo container image prepare --dry-run -e ~/templates/container-image-prepare.yaml

we see:
(undercloud) [stack@director ~]$ openstack tripleo container image prepare --dry-run -e ~/templates/container-image-prepare.yaml
Exception occured while running the command
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/tripleoclient/command.py", line 30, 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 184, in run
    return_code = self.take_action(parsed_args) or 0
  File "/usr/lib/python3.6/site-packages/tripleoclient/v1/container_image.py", line 680, in take_action
    cleanup=parsed_args.cleanup)
  File "/usr/lib/python3.6/site-packages/tripleo_common/image/kolla_builder.py", line 188, in container_images_prepare_multi
    mirrors=mirrors
  File "/usr/lib/python3.6/site-packages/tripleo_common/image/kolla_builder.py", line 286, in container_images_prepare
    images, tag_from_label)
  File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 518, in discover_image_tags
    discover_args):
  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
  File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1566, in discover_tag_from_inspect
    i = self._inspect(image_url, session=session)
  File "/usr/lib/python3.6/site-packages/tripleo_common/image/image_uploader.py", line 1436, in _inspect
    image_url, session=session)
  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 319, in iter
    return fut.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 409, in _inspect
    digest = manifest_r.headers['Docker-Content-Digest']
  File "/usr/lib/python3.6/site-packages/requests/structures.py", line 52, in __getitem__
    return self._store[key.lower()][1]
KeyError: 'docker-content-digest'
'docker-content-digest'

It seems that some? images are missing that header?

Revision history for this message
Emilien Macchi (emilienm) wrote :

Please show your /home/stack/templates/container-image-prepare.yaml - we already had this issue.

Changed in tripleo:
status: New → Triaged
milestone: none → train-1
importance: Undecided → Medium
Changed in tripleo:
assignee: nobody → Steve Baker (steve-stevebaker)
status: Triaged → In Progress
Revision history for this message
Steve Baker (steve-stevebaker) wrote :
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to tripleo-common (master)

Reviewed: https://review.openstack.org/642028
Committed: https://git.openstack.org/cgit/openstack/tripleo-common/commit/?id=21511a6bf59cdfeca67fa6a69f6050dae43d2d08
Submitter: Zuul
Branch: master

commit 21511a6bf59cdfeca67fa6a69f6050dae43d2d08
Author: Cédric Jeanneret <email address hidden>
Date: Fri Mar 8 15:17:25 2019 +0100

    Ensure we get a value for manifest digest

    Some registry implementations do not serve the Docker-Content-Digest
    which we currently expect. According to the spec[1] this is optional
    anyway.

    This change checks for the header and if it doesn't exist it
    calculates the digest from the manifest content.

    [1] https://docs.docker.com/registry/spec/api/#content-digests
    Change-Id: Ica4bdefb6b8b97e67356cc3ac0e0307689b46c80
    Closes-Bug: #1822915

Changed in tripleo:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/tripleo-common 10.7.0

This issue was fixed in the openstack/tripleo-common 10.7.0 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.