Handle missing endpoint_data in maximum_supported_microversions

Apparently, for standalone case get_endpoint_data can
1. Raise an exception in case of e.g. versioned baremetal endpoint
2. Return None

This change inserts safeguards for both cases.

Change-Id: Iea9f5f576519f0bec7ba0f2edc6106f5780c5465
This commit is contained in:
Dmitry Tantsur
2018-08-25 13:36:48 +02:00
parent 4a34f8c652
commit d445987033

View File

@@ -15,6 +15,7 @@ import string
import time
import deprecation
import keystoneauth1
from keystoneauth1 import discover
from openstack import _log
@@ -197,7 +198,19 @@ def maximum_supported_microversion(adapter, client_maximum):
if client_maximum is None:
return None
endpoint_data = adapter.get_endpoint_data()
# NOTE(dtantsur): if we cannot determine supported microversions, fall back
# to the default one.
try:
endpoint_data = adapter.get_endpoint_data()
except keystoneauth1.exceptions.discovery.DiscoveryFailure:
endpoint_data = None
if endpoint_data is None:
log = _log.setup_logging('openstack')
log.warning('Cannot determine endpoint data for service %s',
adapter.service_type or adapter.service_name)
return None
if not endpoint_data.max_microversion:
return None