diff --git a/magnum/drivers/heat/template_def.py b/magnum/drivers/heat/template_def.py index 58153d1addba836f2dd118d13386f965ab0588d7..e117b852aa4281ccd38a15fbd3d4a6de5f0ca8cb 100755 --- a/magnum/drivers/heat/template_def.py +++ b/magnum/drivers/heat/template_def.py @@ -505,11 +505,24 @@ class BaseTemplateDefinition(TemplateDefinition): CONF.cluster.etcd_discovery_service_endpoint_format % {'size': cluster.master_count}) try: - discovery_request = requests.get(discovery_endpoint) - if discovery_request.status_code != requests.codes.ok: - raise exception.GetDiscoveryUrlFailed( - discovery_endpoint=discovery_endpoint) - discovery_url = discovery_request.text + for attempt in range(0, 3): + discovery_request = requests.get(discovery_endpoint) + if discovery_request.status_code != requests.codes.ok: + if attempt < 2: + LOG.warning("Failed to get discovery url " + + "from '%s' (HTTP %d): %s", + discovery_endpoint, + discovery_request.status_code, + discovery_request.text) + continue + raise exception.GetDiscoveryUrlFailed( + message="Failed to get discovery url " + + "from '%(discovery_endpoint)s' " + + "(HTTP %(status_code)d).", + discovery_endpoint=discovery_endpoint, + status_code=discovery_request.status_code) + discovery_url = discovery_request.text + break except req_exceptions.RequestException as err: LOG.error(err) raise exception.GetDiscoveryUrlFailed(