nova/releasenotes/notes/bug-1753550-image-ref-url-notifications-42df5911a46b7de7.yaml
Matt Riedemann 6482165bb1 Handle EndpointNotFound when building image_ref_url in notifications
Change I4e755b9c66ec8bc3af0393e81cffd91c56064717 made the
[glance]/api_servers option optional. If not set, we attempt
to get the image service endpoint via keystoneauth adapter and
the service catalog via the request context.

Periodic tasks run without an actual token so there is no way
to get the service catalog and the KSA adapter code to get the
endpoint raises EndpointNotFound when trying to build the
"image_ref_url" entry in the legacy instance notification payload.

This change simply handles the EndpointNotFound and sets the
image_ref_url to the instance.image_ref, which for non-volume-backed
instances is the image id (for volume-backed instances it's an empty
string).

This doesn't affect versioned notifications since those don't use the
"image_ref_url" entry in the payload that is created, they just have
an "image_uuid" entry in the versioned notification payload which is
populated via instance.image_ref.

An upgrade impact release note is added in the case that some consuming
service is actually relying on that legacy notification field being
a URL and parsing it as such. The thinking here, however, is this is
better than not sending the field at all, or setting it to None.

Long-term this code all gets replaced with versioned notifications.

Change-Id: Ie23a9c922776b028da0720c939846cba233ac472
Closes-Bug: #1753550
2018-03-20 17:22:50 -04:00

10 lines
446 B
YAML

---
upgrade:
- |
The ``image_ref_url`` entry in legacy instance notification payloads will
be just the instance image id if ``[glance]/api_servers`` is not set
and the notification is being sent from a periodic task. In this case the
periodic task does not have a token to get the image service endpoint URL
from the identity service so only the image id is in the payload. This
does not affect versioned notifications.