diff options
author | Emma Foley <emma.l.foley@intel.com> | 2018-02-19 23:15:11 +0000 |
---|---|---|
committer | Emma Foley <emma.l.foley@intel.com> | 2018-03-01 15:06:41 +0000 |
commit | 3c2924769969733632d22e128b48fccee0043069 (patch) | |
tree | 419712ba7fc796896c07c167f292ebb0baaf3b04 /yardstick/orchestrator | |
parent | 5c2824d8e184a3ff63a52e7c7cca7b4e6f0c0222 (diff) |
Add methods to get an existing stack
* Add yardstick/orchestrator/heat.py:HeatStack.get
* Add yardstick/benchmark/contexts/heay.py:HeatContext.retrieve_existing_stack
JIRA: YARDSTICK-886
Change-Id: I6974b79a25f98066a49b1bc8ccd11383e7962091
Signed-off-by: Emma Foley <emma.l.foley@intel.com>
Diffstat (limited to 'yardstick/orchestrator')
-rw-r--r-- | yardstick/orchestrator/heat.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/yardstick/orchestrator/heat.py b/yardstick/orchestrator/heat.py index 403c7e8d9..78e9c3df2 100644 --- a/yardstick/orchestrator/heat.py +++ b/yardstick/orchestrator/heat.py @@ -44,6 +44,13 @@ class HeatStack(object): self._cloud = shade.openstack_cloud() self._stack = None + def _update_stack_tracking(self): + outputs = self._stack.outputs + self.outputs = {output['output_key']: output['output_value'] for output + in outputs} + if self.uuid: + _DEPLOYED_STACKS[self.uuid] = self._stack + def create(self, template, heat_parameters, wait, timeout): """Creates an OpenStack stack from a template""" with tempfile.NamedTemporaryFile('wb', delete=False) as template_file: @@ -52,11 +59,21 @@ class HeatStack(object): self._stack = self._cloud.create_stack( self.name, template_file=template_file.name, wait=wait, timeout=timeout, **heat_parameters) - outputs = self._stack.outputs - self.outputs = {output['output_key']: output['output_value'] for output - in outputs} - if self.uuid: - _DEPLOYED_STACKS[self.uuid] = self._stack + + self._update_stack_tracking() + + def get(self): + """Retrieves an existing stack from the target cloud + + Returns a bool indicating whether the stack exists in the target cloud + If the stack exists, it will be stored as self._stack + """ + self._stack = self._cloud.get_stack(self.name) + if not self._stack: + return False + + self._update_stack_tracking() + return True @staticmethod def stacks_exist(): |