Code Review
/
yardstick.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Kubernetes NodePort must have 'name' if multiple created
[yardstick.git]
/
yardstick
/
orchestrator
/
heat.py
diff --git
a/yardstick/orchestrator/heat.py
b/yardstick/orchestrator/heat.py
index
d69f860
..
e0c0db2
100644
(file)
--- a/
yardstick/orchestrator/heat.py
+++ b/
yardstick/orchestrator/heat.py
@@
-15,18
+15,20
@@
import datetime
import getpass
import logging
import pkg_resources
import getpass
import logging
import pkg_resources
+import pprint
import socket
import tempfile
import time
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
import socket
import tempfile
import time
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
-import shade
+from shade._heat import event_utils
-
import yardstick.common.openstack_utils as op_util
s
+
from yardstick.common import constants as const
s
from yardstick.common import exceptions
from yardstick.common import template_format
from yardstick.common import exceptions
from yardstick.common import template_format
-from yardstick.common import constants as consts
+from yardstick.common import openstack_utils as op_utils
+
log = logging.getLogger(__name__)
log = logging.getLogger(__name__)
@@
-39,10
+41,11
@@
_DEPLOYED_STACKS = {}
class HeatStack(object):
"""Represents a Heat stack (deployed template) """
class HeatStack(object):
"""Represents a Heat stack (deployed template) """
- def __init__(self, name):
+ def __init__(self, name
, os_cloud_config=None
):
self.name = name
self.outputs = {}
self.name = name
self.outputs = {}
- self._cloud = shade.openstack_cloud()
+ os_cloud_config = {} if not os_cloud_config else os_cloud_config
+ self._cloud = op_utils.get_shade_client(**os_cloud_config)
self._stack = None
def _update_stack_tracking(self):
self._stack = None
def _update_stack_tracking(self):
@@
-63,6
+66,10
@@
class HeatStack(object):
self._update_stack_tracking()
self._update_stack_tracking()
+ def get_failures(self):
+ return event_utils.get_events(self._cloud, self._stack.id,
+ event_args={'resource_status': 'FAILED'})
+
def get(self):
"""Retrieves an existing stack from the target cloud
def get(self):
"""Retrieves an existing stack from the target cloud
@@
-146,10
+153,12
@@
name (i.e. %s).
# short hand for resources part of template
self.resources = self._template['resources']
# short hand for resources part of template
self.resources = self._template['resources']
- def __init__(self, name, template_file=None, heat_parameters=None):
+ def __init__(self, name, template_file=None, heat_parameters=None,
+ os_cloud_config=None):
self.name = name
self.keystone_client = None
self.heat_parameters = {}
self.name = name
self.keystone_client = None
self.heat_parameters = {}
+ self._os_cloud_config = {} if not os_cloud_config else os_cloud_config
# heat_parameters is passed to heat in stack create, empty dict when
# yardstick creates the template (no get_param in resources part)
# heat_parameters is passed to heat in stack create, empty dict when
# yardstick creates the template (no get_param in resources part)
@@
-616,7
+625,7
@@
name (i.e. %s).
log.info("Creating stack '%s' START", self.name)
start_time = time.time()
log.info("Creating stack '%s' START", self.name)
start_time = time.time()
- stack = HeatStack(self.name)
+ stack = HeatStack(self.name
, os_cloud_config=self._os_cloud_config
)
stack.create(self._template, self.heat_parameters, block, timeout)
if not block:
stack.create(self._template, self.heat_parameters, block, timeout)
if not block:
@@
-625,6
+634,9
@@
name (i.e. %s).
return stack
if stack.status != self.HEAT_STATUS_COMPLETE:
return stack
if stack.status != self.HEAT_STATUS_COMPLETE:
+ for event in stack.get_failures():
+ log.error("%s", event.resource_status_reason)
+ log.error(pprint.pformat(self._template))
raise exceptions.HeatTemplateError(stack_name=self.name)
log.info("Creating stack '%s' DONE in %d secs",
raise exceptions.HeatTemplateError(stack_name=self.name)
log.info("Creating stack '%s' DONE in %d secs",