Remove legacy testing code
The rally integration is no longer maintained, and isn't used by the current CI. Change-Id: I84d507c57e5c4888acb72390388481d62db9f60a
This commit is contained in:
parent
c0883a1f3b
commit
cc5f321d2a
29
.zuul.yaml
29
.zuul.yaml
|
@ -18,9 +18,6 @@
|
|||
- senlin-dsvm-tempest-py35-api
|
||||
- senlin-tempest-api-ipv6-only
|
||||
- senlin-dsvm-tempest-py35-functional
|
||||
experimental:
|
||||
jobs:
|
||||
- rally-dsvm-senlin-senlin
|
||||
|
||||
- job:
|
||||
name: senlin-tempest-base
|
||||
|
@ -123,29 +120,3 @@
|
|||
DEFAULT:
|
||||
cloud_backend: openstack_test
|
||||
|
||||
- job:
|
||||
name: rally-dsvm-senlin-senlin
|
||||
parent: senlin-tempest-base
|
||||
run: playbooks/legacy/rally-dsvm-senlin-senlin/run.yaml
|
||||
post-run: playbooks/legacy/rally-dsvm-senlin-senlin/post.yaml
|
||||
required-projects:
|
||||
- openstack/devstack-gate
|
||||
- openstack/aodh
|
||||
- openstack/ceilometer
|
||||
- openstack/diskimage-builder
|
||||
- openstack/ironic
|
||||
- openstack/magnum
|
||||
- openstack/networking-bgpvpn
|
||||
- openstack/neutron
|
||||
- openstack/neutron-vpnaas
|
||||
- openstack/octavia
|
||||
- openstack/panko
|
||||
- openstack/python-magnumclient
|
||||
- openstack/python-senlinclient
|
||||
- openstack/python-watcherclient
|
||||
- openstack/python-zaqarclient
|
||||
- openstack/rally
|
||||
- openstack/senlin
|
||||
- openstack/tripleo-image-elements
|
||||
- openstack/watcher
|
||||
- openstack/zaqar-ui
|
||||
|
|
|
@ -326,14 +326,6 @@ command:
|
|||
senlin_tempest_plugin.tests.integration.test_nova_server_cluster
|
||||
|
||||
|
||||
Stress Tests
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Stress tests are designed to measure a service's performance under certain
|
||||
workload pressure. In senlin, the stress tests are written to be executed
|
||||
using the *Rally* framework.
|
||||
|
||||
|
||||
Writing Stress Test Cases
|
||||
-------------------------
|
||||
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
- hosts: primary
|
||||
tasks:
|
||||
|
||||
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
|
||||
synchronize:
|
||||
src: '{{ ansible_user_dir }}/workspace/'
|
||||
dest: '{{ zuul.executor.log_root }}'
|
||||
mode: pull
|
||||
copy_links: true
|
||||
verify_host: true
|
||||
rsync_opts:
|
||||
- --include=/logs/**
|
||||
- --include=*/
|
||||
- --exclude=*
|
||||
- --prune-empty-dirs
|
||||
|
||||
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
|
||||
synchronize:
|
||||
src: '{{ ansible_user_dir }}/workspace/'
|
||||
dest: '{{ zuul.executor.log_root }}'
|
||||
mode: pull
|
||||
copy_links: true
|
||||
verify_host: true
|
||||
rsync_opts:
|
||||
- --include=/rally-plot/**
|
||||
- --include=*/
|
||||
- --exclude=*
|
||||
- --prune-empty-dirs
|
||||
|
||||
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
|
||||
synchronize:
|
||||
src: '{{ ansible_user_dir }}/workspace/'
|
||||
dest: '{{ zuul.executor.log_root }}'
|
||||
mode: pull
|
||||
copy_links: true
|
||||
verify_host: true
|
||||
rsync_opts:
|
||||
- --include=/rally-plot/extra/index.html
|
||||
- --include=*/
|
||||
- --exclude=*
|
||||
- --prune-empty-dirs
|
|
@ -1,173 +0,0 @@
|
|||
- hosts: all
|
||||
name: Autoconverted job legacy-rally-dsvm-senlin-senlin from old job gate-rally-dsvm-senlin-senlin-ubuntu-xenial-nv
|
||||
tasks:
|
||||
|
||||
- name: Ensure legacy workspace directory
|
||||
file:
|
||||
path: '{{ ansible_user_dir }}/workspace'
|
||||
state: directory
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
cat > clonemap.yaml << EOF
|
||||
clonemap:
|
||||
- name: openstack/devstack-gate
|
||||
dest: devstack-gate
|
||||
EOF
|
||||
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
|
||||
https://opendev.org \
|
||||
openstack/devstack-gate
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
if [ $ZUUL_PROJECT == "openstack/rally" ] && [ $ZUUL_BRANCH != "master" ]; then
|
||||
export DEVSTACK_GATE_FEATURE_MATRIX="/opt/stack/new/rally/devstack/features.yaml"
|
||||
fi
|
||||
|
||||
export PROJECTS="openstack/rally $PROJECTS"
|
||||
|
||||
export DEVSTACK_GATE_NEUTRON=1
|
||||
export DEVSTACK_GATE_HORIZON=1
|
||||
export DEVSTACK_GATE_NEUTRON_EXTENSIONS=0
|
||||
export DEVSTACK_GATE_IRONIC=0
|
||||
export DEVSTACK_GATE_ZAQAR=0
|
||||
export DEVSTACK_GATE_SENLIN=1
|
||||
export DEVSTACK_GATE_WATCHER=0
|
||||
export DEVSTACK_GATE_MAGNUM=0
|
||||
export DEVSTACK_GATE_HEAT=0
|
||||
export DEVSTACK_GATE_SWIFT=0
|
||||
export DEVSTACK_GATE_TELEMETRY=0
|
||||
export DEVSTACK_GATE_TEMPEST_LARGE_OPS=0
|
||||
export DEVSTACK_GATE_EXERCISES=0
|
||||
export DEVSTACK_GATE_PREPOPULATE_USERS=0
|
||||
|
||||
export DEVSTACK_GATE_USE_PYTHON3=True
|
||||
export USE_KEYSTONE_V2API=0
|
||||
export RALLY_SCENARIO=$ZUUL_SHORT_PROJECT_NAME-senlin
|
||||
|
||||
if [ $USE_KEYSTONE_V2API -eq 1 ]; then
|
||||
export IDENTITY_API_VERSION=2.0
|
||||
else
|
||||
export IDENTITY_API_VERSION=3
|
||||
fi
|
||||
|
||||
DEVSTACK_LOCAL_CONFIG="enable_plugin rally https://opendev.org/openstack/rally"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"CINDER_ENABLE_V1_API=True"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"IDENTITY_API_VERSION=$IDENTITY_API_VERSION"
|
||||
|
||||
ENABLED_SERVICES=key,horizon,
|
||||
ENABLED_SERVICES+=cinder,c-api,c-vol,c-sch,c-bak,
|
||||
ENABLED_SERVICES+=g-api,g-reg,
|
||||
ENABLED_SERVICES+=n-api,n-crt,n-cpu,n-sch,n-cond,
|
||||
ENABLED_SERVICES+=neutron-qos,
|
||||
|
||||
if [ $DEVSTACK_GATE_SWIFT -eq 1 ];
|
||||
then
|
||||
ENABLED_SERVICES+=s-proxy,s-account,s-container,s-object,
|
||||
else
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-account"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-container"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-object"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-proxy"
|
||||
fi
|
||||
|
||||
if [ $DEVSTACK_GATE_HEAT -ne 0 ]; then
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin heat https://opendev.org/openstack/heat"
|
||||
fi
|
||||
|
||||
export PROJECTS="openstack/neutron $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin neutron https://opendev.org/openstack/neutron"
|
||||
if [ $DEVSTACK_GATE_NEUTRON_EXTENSIONS -ne 0 ]; then
|
||||
export PROJECTS="openstack/octavia $PROJECTS"
|
||||
export PROJECTS="openstack/neutron-fwaas $PROJECTS"
|
||||
export PROJECTS="openstack/diskimage-builder $PROJECTS"
|
||||
export PROJECTS="openstack/tripleo-image-elements $PROJECTS"
|
||||
export PROJECTS="openstack/neutron-vpnaas $PROJECTS"
|
||||
export PROJECTS="openstack/networking-bgpvpn $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin octavia https://opendev.org/openstack/octavia"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin neutron-fwaas https://opendev.org/openstack/neutron-fwaas"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin neutron-vpnaas https://opendev.org/openstack/neutron-vpnaas"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin networking-bgpvpn https://opendev.org/openstack/networking-bgpvpn.git"
|
||||
export ENABLED_SERVICES+=q-lbaasv2,octavia,o-cw,o-hk,o-hm,o-api,q-fwaas,q-svc,q-agt,q-dhcp,q-l3,q-meta,
|
||||
fi
|
||||
if [ $DEVSTACK_GATE_IRONIC -ne 0 ]; then
|
||||
export PROJECTS="openstack/ironic $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic https://opendev.org/openstack/ironic"
|
||||
fi
|
||||
if [ $DEVSTACK_GATE_ZAQAR -ne 0 ]; then
|
||||
export PROJECTS="openstack/python-zaqarclient $PROJECTS"
|
||||
export PROJECTS="openstack/zaqar-ui $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin zaqar https://opendev.org/openstack/zaqar"
|
||||
fi
|
||||
if [ $DEVSTACK_GATE_SENLIN -ne 0 ]; then
|
||||
export PROJECTS="openstack/senlin $PROJECTS"
|
||||
export PROJECTS="openstack/python-senlinclient $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin senlin https://opendev.org/openstack/senlin"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_service sl-api sl-eng"
|
||||
fi
|
||||
if [ $DEVSTACK_GATE_WATCHER -ne 0 ]; then
|
||||
export PROJECTS="openstack/watcher $PROJECTS"
|
||||
export PROJECTS="openstack/python-watcherclient $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin watcher https://opendev.org/openstack/watcher"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_service watcher-api watcher-decision-engine watcher-applier"
|
||||
fi
|
||||
if [ $DEVSTACK_GATE_MAGNUM -ne 0 ]||[ $RALLY_SCENARIO = "magnum" ]; then
|
||||
export PROJECTS="openstack/magnum $PROJECTS"
|
||||
export PROJECTS="openstack/python-magnumclient $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin magnum https://opendev.org/openstack/magnum"
|
||||
fi
|
||||
if [ $DEVSTACK_GATE_TELEMETRY -ne 0 ]; then
|
||||
export PROJECTS="openstack/panko $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin panko https://opendev.org/openstack/panko"
|
||||
export ENABLED_SERVICES+=panko-api,
|
||||
export PROJECTS="openstack/ceilometer $PROJECTS"
|
||||
export PROJECTS="openstack/aodh $PROJECTS"
|
||||
export PROJECTS="openstack/gnocchi $PROJECTS"
|
||||
|
||||
export CEILOMETER_NOTIFICATION_TOPICS=notifications,profiler
|
||||
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ceilometer https://opendev.org/openstack/ceilometer"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin aodh https://opendev.org/openstack/aodh"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin gnocchi https://opendev.org/openstack/gnocchi"
|
||||
export ENABLED_SERVICES+=ceilometer-acompute,ceilometer-acentral,ceilometer-api,
|
||||
export ENABLED_SERVICES+=ceilometer-anotification,ceilometer-collector,
|
||||
export ENABLED_SERVICES+=aodh-api,aodh-evaluator,aodh-notifier,
|
||||
fi
|
||||
export ENABLED_SERVICES
|
||||
export DEVSTACK_LOCAL_CONFIG
|
||||
|
||||
if [[ "$ZUUL_PROJECT" = "openstack/neutron" ]]; then
|
||||
function gate_hook {
|
||||
bash -xe $BASE/new/neutron/neutron/tests/contrib/gate_hook.sh rally $ZUUL_SHORT_PROJECT_NAME-senlin
|
||||
}
|
||||
export -f gate_hook
|
||||
fi
|
||||
|
||||
function post_test_hook {
|
||||
$BASE/new/rally/tests/ci/rally-gate.sh
|
||||
}
|
||||
export -f post_test_hook
|
||||
|
||||
if [[ "$DEVSTACK_GATE_USE_PYTHON3" = "True" ]]; then
|
||||
# Switch off glance->swift communication as swift fails under py3.x
|
||||
function pre_test_hook {
|
||||
local localconf=$BASE/new/devstack/local.conf
|
||||
echo "[[post-config|\$GLANCE_API_CONF]]" >> $localconf
|
||||
echo "[glance_store]" >> $localconf
|
||||
echo "default_store=file" >> $localconf
|
||||
}
|
||||
export -f pre_test_hook
|
||||
fi
|
||||
|
||||
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
|
||||
./safe-devstack-vm-gate-wrap.sh
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
|
@ -1,11 +0,0 @@
|
|||
This directory contains rally jobs to be run by OpenStack CI.
|
||||
|
||||
Structure:
|
||||
* senlin-senlin.yaml describes rally tasks that will be run in rally-gate.
|
||||
* plugins - directory containing rally plugins for senlin. These plugins
|
||||
will be loaded by rally-gate automatically when job is run at gate
|
||||
side. User can also manually copy those plugins to `~/.rally/plugins`
|
||||
or `/opt/rally/plugins` to make them work if test is done locally.
|
||||
|
||||
Please find more information about rally plugins at the following link:
|
||||
- https://rally.readthedocs.io/en/latest/plugins/index.html
|
|
@ -1,146 +0,0 @@
|
|||
# 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 oslo_config import cfg
|
||||
|
||||
from rally import consts
|
||||
from rally.plugins.openstack import scenario
|
||||
from rally.plugins.openstack.scenarios.senlin import utils as senlin_utils
|
||||
from rally.task import atomic
|
||||
from rally.task import utils
|
||||
from rally.task import validation
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
class SenlinPlugin(senlin_utils.SenlinScenario):
|
||||
"""Base class for Senlin scenarios with basic atomic actions."""
|
||||
|
||||
def _get_action(self, action_id):
|
||||
"""Get action details.
|
||||
|
||||
:param action_id: ID of action to get
|
||||
|
||||
:returns: object of action
|
||||
"""
|
||||
return self.admin_clients("senlin").get_action(action_id)
|
||||
|
||||
@atomic.action_timer("senlin.resize_cluster")
|
||||
def _resize_cluster(self, cluster, adj_type=None, number=None,
|
||||
min_size=None, max_size=None, min_step=None,
|
||||
strict=True):
|
||||
"""Adjust cluster size.
|
||||
|
||||
:param cluster: cluster object to resize.
|
||||
:param adj_type: type of adjustment. If specified, must be one of the
|
||||
strings defined in `consts.ADJUSTMENT_TYPES`.
|
||||
:param number: number for adjustment. It is interpreted as the new
|
||||
desired_capacity of the cluster if `adj_type` is set
|
||||
to `EXACT_CAPACITY`; it is interpreted as the relative
|
||||
number of nodes to add/remove when `adj_type` is set
|
||||
to `CHANGE_IN_CAPACITY`; it is treated as a percentage
|
||||
when `adj_type` is set to `CHANGE_IN_PERCENTAGE`.
|
||||
:param min_size: new lower bound of the cluster size, if specified.
|
||||
:param max_size: new upper bound of the cluster size, if specified.
|
||||
A value of negative means no upper limit is imposed.
|
||||
:param min_step: the number of nodes to be added or removed when
|
||||
`adj_type` is set to value `CHANGE_IN_PERCENTAGE`
|
||||
and the number calculated is less than 1.
|
||||
:param strict: whether Senlin should try a best-effort style resizing
|
||||
or just rejects the request when scaling beyond its
|
||||
current size constraint.
|
||||
"""
|
||||
kwargs = {}
|
||||
if adj_type:
|
||||
kwargs['adjustment_type'] = adj_type
|
||||
if number:
|
||||
kwargs['number'] = number
|
||||
if min_size:
|
||||
kwargs['min_size'] = min_size
|
||||
if max_size:
|
||||
kwargs['max_size'] = max_size
|
||||
if min_step:
|
||||
kwargs['min_step'] = min_step
|
||||
kwargs['strict'] = strict
|
||||
res = self.admin_clients("senlin").cluster_resize(cluster.id, **kwargs)
|
||||
action = self._get_action(res['action'])
|
||||
utils.wait_for_status(
|
||||
action,
|
||||
ready_statuses=["SUCCEEDED"],
|
||||
failure_statuses=["FAILED"],
|
||||
update_resource=self._get_action,
|
||||
timeout=senlin_utils.CONF.benchmark.senlin_action_timeout)
|
||||
|
||||
@atomic.action_timer("senlin.cluster_scale_in")
|
||||
def _scale_in_cluster(self, cluster, count):
|
||||
"""Cluster scale in.
|
||||
|
||||
:param cluster: cluster object.
|
||||
:param count: number of nodes to be removed from the cluster.
|
||||
"""
|
||||
res = self.admin_clients("senlin").cluster_scale_in(cluster.id, count)
|
||||
action = self._get_action(res["action"])
|
||||
utils.wait_for_status(
|
||||
action,
|
||||
ready_statuses=["SUCCEEDED"],
|
||||
failure_statuses=["FAILED"],
|
||||
update_resource=self._get_action,
|
||||
timeout=senlin_utils.CONF.benchmark.senlin_action_timeout)
|
||||
|
||||
@validation.required_openstack(admin=True)
|
||||
@validation.required_services(consts.Service.SENLIN)
|
||||
@validation.required_contexts("profiles")
|
||||
@scenario.configure(context={"cleanup": ["senlin"]})
|
||||
def create_resize_delete_cluster(self, create_params,
|
||||
resize_params, timeout=3600):
|
||||
"""Create a cluster, resize it and then delete it.
|
||||
|
||||
Measure the `senlin cluster-create`, `senlin cluster-resize`
|
||||
and `senlin cluster-delete` commands performance.
|
||||
|
||||
:param create_params: the dictionary provides the parameters for
|
||||
cluster creation
|
||||
:param resize_params: the dictionary provides the parameters
|
||||
for cluster resizing
|
||||
:param timeout: The timeout value in seconds for each cluster
|
||||
action, including creation, deletion and resizing
|
||||
"""
|
||||
profile_id = self.context["tenant"]["profile"]
|
||||
cluster = self._create_cluster(profile_id, timeout=timeout,
|
||||
**create_params)
|
||||
self._resize_cluster(cluster, **resize_params)
|
||||
self._delete_cluster(cluster)
|
||||
|
||||
@validation.required_openstack(admin=True)
|
||||
@validation.required_services(consts.Service.SENLIN)
|
||||
@validation.required_contexts("profiles")
|
||||
@scenario.configure(context={"cleanup": ["senlin"]})
|
||||
def create_scale_in_delete_cluster(self, desired_capacity=1,
|
||||
min_size=0, max_size=-1,
|
||||
count=1):
|
||||
"""Create a cluster, scale-in it and then delete it.
|
||||
|
||||
Measure the `senlin cluster-create`, `senlin cluster-scale-in`
|
||||
and `senlin cluster-delete` commands performance.
|
||||
|
||||
:param desired_capacity: The capacity or initial number of nodes
|
||||
owned by the cluster
|
||||
:param min_size: The minimum number of nodes owned by the cluster
|
||||
:param max_size: The maximum number of nodes owned by the cluster.
|
||||
-1 means no limit
|
||||
:param count: The number of nodes will be removed from the cluster.
|
||||
"""
|
||||
profile_id = self.context["tenant"]["profile"]
|
||||
cluster = self._create_cluster(profile_id, desired_capacity,
|
||||
min_size, max_size)
|
||||
self._scale_in_cluster(cluster, count)
|
||||
self._delete_cluster(cluster)
|
|
@ -1,91 +0,0 @@
|
|||
---
|
||||
|
||||
SenlinClusters.create_and_delete_cluster:
|
||||
-
|
||||
args:
|
||||
desired_capacity: 3
|
||||
min_size: 0
|
||||
max_size: 5
|
||||
runner:
|
||||
type: "constant"
|
||||
times: 3
|
||||
concurrency: 2
|
||||
context:
|
||||
users:
|
||||
tenants: 2
|
||||
users_per_tenant: 2
|
||||
profiles:
|
||||
type: os.nova.server
|
||||
version: "1.0"
|
||||
properties:
|
||||
name: cirros_server
|
||||
flavor: 1
|
||||
image: "cirros-0.3.5-x86_64-disk"
|
||||
networks:
|
||||
- network: public
|
||||
sla:
|
||||
failure_rate:
|
||||
max: 0
|
||||
|
||||
SenlinPlugin.create_resize_delete_cluster:
|
||||
-
|
||||
args:
|
||||
create_params:
|
||||
desired_capacity: 0
|
||||
min_size: 0
|
||||
max_size: 1
|
||||
resize_params:
|
||||
adj_type: CHANGE_IN_CAPACITY
|
||||
number: 3
|
||||
min_size: 0
|
||||
max_size: 3
|
||||
strict: false
|
||||
runner:
|
||||
type: constant
|
||||
times: 3
|
||||
concurrency: 2
|
||||
context:
|
||||
users:
|
||||
tenants: 2
|
||||
users_per_tenant: 2
|
||||
profiles:
|
||||
type: os.nova.server
|
||||
version: "1.0"
|
||||
properties:
|
||||
name: cirros_server
|
||||
flavor: 1
|
||||
image: "cirros-0.3.5-x86_64-disk"
|
||||
networks:
|
||||
- network: public
|
||||
sla:
|
||||
failure_rate:
|
||||
max: 0
|
||||
|
||||
SenlinPlugin.create_scale_in_delete_cluster:
|
||||
-
|
||||
args:
|
||||
desired_capacity: 3
|
||||
min_size: 0
|
||||
max_size: 5
|
||||
count: 3
|
||||
runner:
|
||||
type: constant
|
||||
times: 3
|
||||
concurrency: 2
|
||||
context:
|
||||
users:
|
||||
tenants: 2
|
||||
users_per_tenant: 2
|
||||
profiles:
|
||||
type: os.nova.server
|
||||
version: "1.0"
|
||||
properties:
|
||||
name: cirros_server
|
||||
flavor: 1
|
||||
image: "cirros-0.3.5-x86_64-disk"
|
||||
networks:
|
||||
- network: public
|
||||
sla:
|
||||
failure_rate:
|
||||
max: 0
|
||||
|
Loading…
Reference in New Issue