From 659afbb03ae5499a709d56d73a98309efd68f3da Mon Sep 17 00:00:00 2001 From: Sai Sindhur Malleni Date: Fri, 29 Jul 2016 16:12:41 -0400 Subject: [PATCH] Adding new Rally Plugin This plugin tracks the the lifecycle of an instance from image creation to deletion. Part of ongoing work to stress glance and see how glance workers affect nova. Change-Id: I20ef48ff810beb3b0e14c41d71aa52e6711dc400 --- browbeat-complete.yaml | 7 ++++ browbeat-config.yaml | 7 ++++ rally/rally-plugins/README.rst | 1 + .../glance_create_boot_delete.py | 39 +++++++++++++++++++ .../glance_create_boot_delete.yml | 38 ++++++++++++++++++ 5 files changed, 92 insertions(+) create mode 100644 rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.py create mode 100644 rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.yml diff --git a/browbeat-complete.yaml b/browbeat-complete.yaml index 0acb751f3..6621b3886 100644 --- a/browbeat-complete.yaml +++ b/browbeat-complete.yaml @@ -60,6 +60,8 @@ rally: - netcreate-boot: rally/rally-plugins/netcreate-boot - netcreate-boot-ping: rally/rally-plugins/netcreate-boot-ping - subnet-router-create: rally/rally-plugins/subnet-router-create + - glance-create-boot-delete: rally/rally-plugins/glance-create-boot-delete + benchmarks: - name: authenticate enabled: true @@ -218,6 +220,11 @@ rally: enabled: true num_networks: 50 file: rally/rally-plugins/subnet-router-create/subnet-router-create.yml + - name: glance-create-boot-delete + enabled: true + flavor_name: m1.tiny + image_location: /home/stack/cirros + file: rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.yml #shaker scenarios require atleast 2 compute nodes shaker: enabled: true diff --git a/browbeat-config.yaml b/browbeat-config.yaml index 97a250a15..86a4c3d09 100644 --- a/browbeat-config.yaml +++ b/browbeat-config.yaml @@ -91,6 +91,7 @@ rally: plugins: - netcreate-boot: rally/rally-plugins/netcreate-boot - subnet-router-create: rally/rally-plugins/subnet-router-create + - glance-create-boot-delete: rally/rally-plugins/glance-create-boot-delete benchmarks: - name: authenticate enabled: true @@ -206,3 +207,9 @@ rally: enabled: true num_networks: 10 file: rally/rally-plugins/subnet-router-create/subnet-router-create.yml + - name: glance-create-boot-delete + enabled: true + image_location: /home/stack/cirros + flavor_name: m1.tiny + file: rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.yml + diff --git a/rally/rally-plugins/README.rst b/rally/rally-plugins/README.rst index a6337d170..db3388af4 100644 --- a/rally/rally-plugins/README.rst +++ b/rally/rally-plugins/README.rst @@ -7,3 +7,4 @@ Current plugins - netcreate-boot-ping ( not complete ) - netcreate-boot - subnet-router-create +- glance-create-boot-delete diff --git a/rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.py b/rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.py new file mode 100644 index 000000000..251f83ebb --- /dev/null +++ b/rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.py @@ -0,0 +1,39 @@ +# 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.task import scenario +from rally.plugins.openstack.scenarios.nova import utils as nova_utils +from rally.plugins.openstack.scenarios.neutron import utils as neutron_utils +from rally.plugins.openstack.scenarios.glance import utils as glance_utils +from rally.task import types +from rally.task import validation + + +class BrowbeatPlugin(neutron_utils.NeutronScenario, + glance_utils.GlanceScenario, + nova_utils.NovaScenario, + scenario.Scenario): + @types.convert(flavor={"type": "nova_flavor"}) + @validation.flavor_exists("flavor") + @validation.required_openstack(users=True) + @scenario.configure(context={"cleanup": ["nova", "neutron", "glance"]}) + def glance_create_boot_delete(self, container_format, image_location, disk_format, flavor, + network_create_args=None, subnet_create_args=None, **kwargs): + image = self._create_image(container_format, image_location, disk_format, **kwargs) + image_id = image.id + net = self._create_network(network_create_args or {}) + self._create_subnet(net, subnet_create_args or {}) + kwargs['nics'] = [{'net-id': net['network']['id']}] + server = self._boot_server(image_id, flavor, **kwargs) + self._delete_server(server) + self._delete_image(image) diff --git a/rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.yml b/rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.yml new file mode 100644 index 000000000..7564db2eb --- /dev/null +++ b/rally/rally-plugins/glance-create-boot-delete/glance_create_boot_delete.yml @@ -0,0 +1,38 @@ +{% set image_location = image_location or "/home/stack/cirros" %} +{% set sla_max_avg_duration = sla_max_avg_duration or 60 %} +{% set sla_max_failure = sla_max_failure or 0 %} +{% set sla_max_seconds = sla_max_seconds or 60 %} +--- +BrowbeatPlugin.glance_create_boot_delete: + - + args: + flavor: + name: '{{flavor_name}}' + image_location: "{{image_location}}" + container_format: "bare" + disk_format: "qcow2" + network_create_args: {} + subnet_create_args: {} + runner: + concurrency: {{concurrency}} + times: {{times}} + type: "constant" + context: + users: + tenants: 1 + users_per_tenant: 8 + quotas: + neutron: + network: -1 + port: -1 + router: -1 + subnet: -1 + nova: + instances: -1 + cores: -1 + ram: -1 + sla: + max_avg_duration: {{sla_max_avg_duration}} + max_seconds_per_iteration: {{sla_max_seconds}} + failure_rate: + max: {{sla_max_failure}}