You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
7.1 KiB
172 lines
7.1 KiB
# |
|
# 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. |
|
|
|
from rally import consts |
|
from rally.plugins.openstack import scenario |
|
from rally.plugins.openstack.scenarios.heat import utils |
|
from rally.task import atomic |
|
from rally.task import types |
|
from rally.task import validation |
|
|
|
|
|
class CustomHeatBenchmark(utils.HeatScenario): |
|
@atomic.action_timer("heat.show_output_new") |
|
def _stack_show_output_new(self, stack, output_key): |
|
"""Execute output_show for specified 'output_key'. |
|
|
|
This method uses new output API call. |
|
|
|
:param stack: stack with output_key output. |
|
:param output_key: The name of the output. |
|
""" |
|
self.clients("heat").stacks.output_show(stack.id, output_key) |
|
|
|
@atomic.action_timer("heat.show_output_old") |
|
def _stack_show_output_old(self, stack, output_key): |
|
"""Execute output_show for specified 'output_key'. |
|
|
|
This method uses old way for getting output value. |
|
It gets whole stack object and then finds necessary 'output_key'. |
|
|
|
:param stack: stack with output_key output. |
|
:param output_key: The name of the output. |
|
""" |
|
# this code copy-pasted and adopted for rally from old client version |
|
# https://github.com/openstack/python-heatclient/blob/0.8.0/heatclient/ |
|
# v1/shell.py#L682-L699 |
|
stack = self.clients("heat").stacks.get(stack_id=stack.id) |
|
for output in stack.to_dict().get('outputs', []): |
|
if output['output_key'] == output_key: |
|
break |
|
|
|
@atomic.action_timer("heat.list_output_new") |
|
def _stack_list_output_new(self, stack): |
|
"""Execute output_list for specified 'stack'. |
|
|
|
This method uses new output API call. |
|
|
|
:param stack: stack to call output-list. |
|
""" |
|
self.clients("heat").stacks.output_list(stack.id) |
|
|
|
@atomic.action_timer("heat.list_output_old") |
|
def _stack_list_output_old(self, stack): |
|
"""Execute output_list for specified 'stack'. |
|
|
|
This method uses old way for getting output value. |
|
It gets whole stack object and then prints all outputs |
|
belongs this stack. |
|
|
|
:param stack: stack to call output-list. |
|
""" |
|
# this code copy-pasted and adopted for rally from old client version |
|
# https://github.com/openstack/python-heatclient/blob/0.8.0/heatclient/ |
|
# v1/shell.py#L649-L663 |
|
stack = self.clients("heat").stacks.get(stack_id=stack.id) |
|
stack.to_dict()['outputs'] |
|
|
|
@types.set(template_path=types.FileType, files=types.FileTypeDict) |
|
@validation.required_services(consts.Service.HEAT) |
|
@validation.required_openstack(users=True) |
|
@scenario.configure(context={"cleanup": ["heat"]}) |
|
def create_stack_and_show_output_old(self, template_path, output_key, |
|
parameters=None, files=None, |
|
environment=None): |
|
"""Create stack and show output by using old algorithm. |
|
|
|
Measure performance of the following commands: |
|
heat stack-create |
|
heat output-show |
|
heat stack-delete |
|
|
|
:param template_path: path to stack template file |
|
:param parameters: parameters to use in heat template |
|
:param files: files used in template |
|
:param environment: stack environment definition |
|
""" |
|
stack = self._create_stack( |
|
template_path, parameters, files, environment) |
|
self._stack_show_output_old(stack, output_key) |
|
|
|
@types.set(template_path=types.FileType, files=types.FileTypeDict) |
|
@validation.required_services(consts.Service.HEAT) |
|
@validation.required_openstack(users=True) |
|
@scenario.configure(context={"cleanup": ["heat"]}) |
|
def create_stack_and_show_output_new(self, template_path, output_key, |
|
parameters=None, files=None, |
|
environment=None): |
|
"""Create stack and show output by using new algorithm. |
|
|
|
Measure performance of the following commands: |
|
heat stack-create |
|
heat output-show |
|
heat stack-delete |
|
|
|
:param template_path: path to stack template file |
|
:param output_key: the stack output key that corresponds to |
|
the scaling webhook |
|
:param parameters: parameters to use in heat template |
|
:param files: files used in template |
|
:param environment: stack environment definition |
|
""" |
|
stack = self._create_stack( |
|
template_path, parameters, files, environment) |
|
self._stack_show_output_new(stack, output_key) |
|
|
|
@types.set(template_path=types.FileType, files=types.FileTypeDict) |
|
@validation.required_services(consts.Service.HEAT) |
|
@validation.required_openstack(users=True) |
|
@scenario.configure(context={"cleanup": ["heat"]}) |
|
def create_stack_and_list_output_old(self, template_path, |
|
parameters=None, files=None, |
|
environment=None): |
|
"""Create stack and list outputs by using old algorithm. |
|
|
|
Measure performance of the following commands: |
|
heat stack-create |
|
heat output-list |
|
heat stack-delete |
|
|
|
:param template_path: path to stack template file |
|
:param parameters: parameters to use in heat template |
|
:param files: files used in template |
|
:param environment: stack environment definition |
|
""" |
|
stack = self._create_stack( |
|
template_path, parameters, files, environment) |
|
self._stack_list_output_old(stack) |
|
|
|
@types.set(template_path=types.FileType, files=types.FileTypeDict) |
|
@validation.required_services(consts.Service.HEAT) |
|
@validation.required_openstack(users=True) |
|
@scenario.configure(context={"cleanup": ["heat"]}) |
|
def create_stack_and_list_output_new(self, template_path, |
|
parameters=None, files=None, |
|
environment=None): |
|
"""Create stack and list outputs by using new algorithm. |
|
|
|
Measure performance of the following commands: |
|
heat stack-create |
|
heat output-list |
|
heat stack-delete |
|
|
|
:param template_path: path to stack template file |
|
:param output_key: the stack output key that corresponds to |
|
the scaling webhook |
|
:param parameters: parameters to use in heat template |
|
:param files: files used in template |
|
:param environment: stack environment definition |
|
""" |
|
stack = self._create_stack( |
|
template_path, parameters, files, environment) |
|
self._stack_list_output_new(stack)
|
|
|