19e84384e6
images are updated from time to time image name should not be hardcoded in heat template. get it from glance the same way instance creating in tests is done Change-Id: I1fbd0c2465979f4efa3da437f204eddb2decba9d
62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
# Copyright 2017 - Nokia
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
import time
|
|
|
|
from heatclient.common import http
|
|
from heatclient.common import template_utils
|
|
|
|
from vitrage_tempest_plugin.tests.common.tempest_clients import TempestClients
|
|
from vitrage_tempest_plugin.tests.utils import wait_for_status
|
|
|
|
|
|
def create_stacks(num_stacks, nested, template_file, image):
|
|
tpl_files, template = template_utils.process_template_path(
|
|
template_file,
|
|
object_request=http.authenticated_fetcher(TempestClients.heat()))
|
|
|
|
for i in range(num_stacks):
|
|
stack_name = 'stack_%s' % i + ('_nested' if nested else '')
|
|
TempestClients.heat().stacks.create(stack_name=stack_name,
|
|
template=template,
|
|
files=tpl_files,
|
|
parameters={'image': image})
|
|
wait_for_status(45,
|
|
_check_num_stacks,
|
|
num_stacks=num_stacks,
|
|
state='CREATE_COMPLETE')
|
|
time.sleep(2)
|
|
|
|
|
|
def delete_all_stacks():
|
|
stacks = TempestClients.heat().stacks.list()
|
|
for stack in stacks:
|
|
try:
|
|
TempestClients.heat().stacks.delete(stack.to_dict()['id'])
|
|
except Exception:
|
|
pass
|
|
|
|
wait_for_status(30, _check_num_stacks, num_stacks=0)
|
|
time.sleep(4)
|
|
|
|
|
|
def _check_num_stacks(num_stacks, state=''):
|
|
stacks_list = \
|
|
[stack.to_dict() for stack in TempestClients.heat().stacks.list()
|
|
if 'FAILED' not in stack.to_dict()['stack_status']]
|
|
if len(stacks_list) != num_stacks:
|
|
return False
|
|
|
|
return all(stack['stack_status'].upper() == state.upper()
|
|
for stack in stacks_list)
|