Remove sample plugins
Change-Id: I0ac1ef19892bd0fe3a05efed0f3e7525516638d2
This commit is contained in:
parent
425a2a7630
commit
f84169337d
@ -1,90 +0,0 @@
|
||||
# Copyright 2013: Mirantis Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.common import logging
|
||||
from rally import consts
|
||||
from rally.plugins.openstack import osclients
|
||||
from rally.task import context
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@context.configure(name="create_flavor", platform="openstack", order=1000)
|
||||
class CreateFlavorContext(context.Context):
|
||||
"""Create sample flavor
|
||||
|
||||
This sample create flavor with specified options before task starts and
|
||||
delete it after task completion.
|
||||
To create your own context plugin, inherit it from
|
||||
rally.task.context.Context
|
||||
"""
|
||||
|
||||
CONFIG_SCHEMA = {
|
||||
"type": "object",
|
||||
"$schema": consts.JSON_SCHEMA,
|
||||
"additionalProperties": False,
|
||||
"properties": {
|
||||
"flavor_name": {
|
||||
"type": "string",
|
||||
},
|
||||
"ram": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"vcpus": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"disk": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def setup(self):
|
||||
"""This method is called before the task start."""
|
||||
try:
|
||||
# use rally.osclients to get necessary client instance
|
||||
nova = osclients.Clients(
|
||||
self.context["admin"]["credential"]).nova()
|
||||
# and then do what you need with this client
|
||||
self.context["flavor"] = nova.flavors.create(
|
||||
# context settings are stored in self.config
|
||||
name=self.config.get("flavor_name", "rally_test_flavor"),
|
||||
ram=self.config.get("ram", 1),
|
||||
vcpus=self.config.get("vcpus", 1),
|
||||
disk=self.config.get("disk", 1)).to_dict()
|
||||
LOG.debug("Flavor with id '%s'", self.context["flavor"]["id"])
|
||||
except Exception as e:
|
||||
msg = "Can't create flavor: %s" % e
|
||||
if logging.is_debug():
|
||||
LOG.exception(msg)
|
||||
else:
|
||||
LOG.warning(msg)
|
||||
|
||||
def cleanup(self):
|
||||
"""This method is called after the task finish."""
|
||||
try:
|
||||
nova = osclients.Clients(
|
||||
self.context["admin"]["credential"]).nova()
|
||||
nova.flavors.delete(self.context["flavor"]["id"])
|
||||
LOG.debug("Flavor '%s' deleted", self.context["flavor"]["id"])
|
||||
except Exception as e:
|
||||
msg = "Can't delete flavor: %s" % e
|
||||
if logging.is_debug():
|
||||
LOG.exception(msg)
|
||||
else:
|
||||
LOG.warning(msg)
|
@ -1,23 +0,0 @@
|
||||
{
|
||||
"Dummy.openstack": [
|
||||
{
|
||||
"args": {
|
||||
"sleep": 0.01
|
||||
},
|
||||
"runner": {
|
||||
"type": "constant",
|
||||
"times": 5,
|
||||
"concurrency": 1
|
||||
},
|
||||
"context": {
|
||||
"users": {
|
||||
"tenants": 1,
|
||||
"users_per_tenant": 1
|
||||
},
|
||||
"create_flavor": {
|
||||
"ram": 1024
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
---
|
||||
Dummy.openstack:
|
||||
-
|
||||
args:
|
||||
sleep: 0.01
|
||||
runner:
|
||||
type: "constant"
|
||||
times: 5
|
||||
concurrency: 1
|
||||
context:
|
||||
users:
|
||||
tenants: 1
|
||||
users_per_tenant: 1
|
||||
create_flavor:
|
||||
ram: 512
|
@ -1,60 +0,0 @@
|
||||
# Copyright 2013: Mirantis Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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 random
|
||||
|
||||
from rally.common.plugin import plugin
|
||||
from rally import consts
|
||||
from rally.task import runner
|
||||
|
||||
|
||||
@plugin.configure(name="random_times")
|
||||
class RandomTimesScenarioRunner(runner.ScenarioRunner):
|
||||
"""Sample of scenario runner plugin.
|
||||
|
||||
Run scenario random number of times, which is chosen between min_times and
|
||||
max_times.
|
||||
"""
|
||||
|
||||
CONFIG_SCHEMA = {
|
||||
"type": "object",
|
||||
"$schema": consts.JSON_SCHEMA,
|
||||
"properties": {
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"min_times": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"max_times": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
}
|
||||
},
|
||||
"additionalProperties": True
|
||||
}
|
||||
|
||||
def _run_scenario(self, cls, method_name, context, args):
|
||||
# runners settings are stored in self.config
|
||||
min_times = self.config.get("min_times", 1)
|
||||
max_times = self.config.get("max_times", 1)
|
||||
|
||||
for i in range(random.randrange(min_times, max_times)):
|
||||
run_args = (i, cls, method_name,
|
||||
runner._get_scenario_context(context), args)
|
||||
result = runner._run_scenario_once(run_args)
|
||||
# use self.send_result for result of each iteration
|
||||
self._send_result(result)
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"Dummy.dummy": [
|
||||
{
|
||||
"runner": {
|
||||
"type": "random_times",
|
||||
"min_times": 10,
|
||||
"max_times": 20,
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
Dummy.dummy:
|
||||
-
|
||||
args:
|
||||
sleep: 2
|
||||
runner:
|
||||
type: "random_times"
|
||||
min_times: 10
|
||||
max_times: 20
|
@ -1,44 +0,0 @@
|
||||
# Copyright 2013: Mirantis Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.task import atomic
|
||||
from rally.task import validation
|
||||
|
||||
|
||||
@validation.add("required_services", services=[consts.Service.NOVA])
|
||||
@validation.add("required_platform", platform="openstack", users=True)
|
||||
@scenario.configure(name="ScenarioPlugin.list_flavors")
|
||||
class ListFlavors(scenario.OpenStackScenario):
|
||||
|
||||
@atomic.action_timer("list_flavors")
|
||||
def _list_flavors(self):
|
||||
"""Sample of usage clients - list flavors
|
||||
|
||||
You can use self.context, self.admin_clients and self.clients which are
|
||||
initialized on scenario instance creation.
|
||||
"""
|
||||
self.clients("nova").flavors.list()
|
||||
|
||||
@atomic.action_timer("list_flavors_as_admin")
|
||||
def _list_flavors_as_admin(self):
|
||||
"""The same with admin clients."""
|
||||
self.admin_clients("nova").flavors.list()
|
||||
|
||||
def run(self):
|
||||
"""List flavors."""
|
||||
self._list_flavors()
|
||||
self._list_flavors_as_admin()
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"ScenarioPlugin.list_flavors": [
|
||||
{
|
||||
"runner": {
|
||||
"type": "serial",
|
||||
"times": 5,
|
||||
},
|
||||
"context": {
|
||||
"create_flavor": {
|
||||
"ram": 512,
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
---
|
||||
ScenarioPlugin.list_flavors:
|
||||
-
|
||||
runner:
|
||||
type: "serial"
|
||||
times: 5
|
||||
context:
|
||||
users:
|
||||
tenants: 1
|
||||
users_per_tenant: 1
|
@ -1,51 +0,0 @@
|
||||
# Copyright 2015: Mirantis Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.common.plugin import plugin
|
||||
from rally.task import sla
|
||||
|
||||
|
||||
@plugin.configure(name="max_duration_range")
|
||||
class MaxDurationRange(sla.SLA):
|
||||
"""Maximum allowed duration range in seconds."""
|
||||
|
||||
CONFIG_SCHEMA = {
|
||||
"type": "number",
|
||||
"minimum": 0.0,
|
||||
"exclusiveMinimum": True
|
||||
}
|
||||
|
||||
def __init__(self, criterion_value):
|
||||
super(MaxDurationRange, self).__init__(criterion_value)
|
||||
self._min = 0
|
||||
self._max = 0
|
||||
|
||||
def add_iteration(self, iteration):
|
||||
|
||||
# Skipping failed iterations (that raised exceptions)
|
||||
if iteration.get("error"):
|
||||
return self.success # This field is defined in base class
|
||||
|
||||
# Updating _min and _max values
|
||||
self._max = max(self._max, iteration["duration"])
|
||||
self._min = min(self._min, iteration["duration"])
|
||||
|
||||
# Updating successfulness based on new max and min values
|
||||
self.success = self._max - self._min <= self.criterion_value
|
||||
return self.success
|
||||
|
||||
def details(self):
|
||||
return ("%s - Maximum allowed duration range: %.2f%% <= %.2f%%" %
|
||||
(self.status(), self._max - self._min, self.criterion_value))
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
"Dummy.dummy": [
|
||||
{
|
||||
"args": {
|
||||
"sleep": 0.01
|
||||
},
|
||||
"runner": {
|
||||
"type": "constant",
|
||||
"times": 5,
|
||||
"concurrency": 1
|
||||
},
|
||||
"sla": {
|
||||
"max_duration_range": 2.5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
Dummy.dummy:
|
||||
-
|
||||
args:
|
||||
sleep: 0.01
|
||||
runner:
|
||||
type: "constant"
|
||||
times: 5
|
||||
concurrency: 1
|
||||
sla:
|
||||
max_duration_range: 2.5
|
@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
samples_unpacked_dir=$(dirname "${BASH_SOURCE[0]}")
|
||||
dirs=( $(find "$samples_unpacked_dir" -maxdepth 1 -type d -printf '%P\n') )
|
||||
samples=~/.rally/plugins/samples
|
||||
mkdir -p "$samples"
|
||||
for dir in "${dirs[@]}"; do
|
||||
cp -r $samples_unpacked_dir/$dir $samples
|
||||
printf "\nTo test $dir plugin run next command:\n"
|
||||
printf "rally task start --task $samples/$dir/test_$dir.yaml\n"
|
||||
printf "or \nrally task start --task $samples/$dir/test_$dir.json\n"
|
||||
done
|
Loading…
x
Reference in New Issue
Block a user