From bda4071ae6175de12985ff74a3c21bb898072696 Mon Sep 17 00:00:00 2001 From: Andrey Kurilin Date: Wed, 13 Jun 2018 09:09:00 +0300 Subject: [PATCH] Port rally plugins to use proper modules Sometime ago, all OpenStack related stuff moved from the main repository to the separate one - https://github.com/openstack/rally-openstack . All further development and maintance will be done only in a new repository. As for first major release, the structure is not changed, so only imports should be changed. Also, this patch fixes deprecated usage of validators. Change-Id: Ibd884b4686477ca990271868b0555fbea80e07f1 --- rally/plugins/instanceha.py | 94 +++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 36 deletions(-) diff --git a/rally/plugins/instanceha.py b/rally/plugins/instanceha.py index c96173b..aef9575 100644 --- a/rally/plugins/instanceha.py +++ b/rally/plugins/instanceha.py @@ -1,19 +1,21 @@ -import six -import time -import socket - from os import path +import socket +import time + + from rally.common import logging from rally.common import sshutils -from rally import consts from rally import exceptions -from rally.plugins.openstack import scenario -from rally.plugins.openstack.scenarios.vm import utils as vm_utils -from rally.plugins.openstack.scenarios.cinder import utils as cinder_utils +from rally_openstack import consts +from rally_openstack import scenario +from rally_openstack.scenarios.vm import utils as vm_utils +from rally_openstack.scenarios.cinder import utils as cinder_utils from rally.task import atomic from rally.task import types from rally.task import validation from rally.task import utils as task_utils +import six + LOG = logging.getLogger(__name__) @@ -45,6 +47,7 @@ def failover(self, host, command, port=22, username="", password="", LOG.debug("SSH session of disruptor command timeouted, continue...") pass + def _run_command(self, server_ip, port, username, password, command, pkey=None, key_filename=None): """Run command via SSH on server. @@ -72,6 +75,7 @@ def _run_command(self, server_ip, port, username, password, command, self._wait_for_ssh(ssh) return _run_command_over_ssh(self, ssh, command) + @atomic.action_timer("vm.run_command_over_ssh") def _run_command_over_ssh(self, ssh, command): """Run command inside an instance. @@ -116,6 +120,7 @@ def _run_command_over_ssh(self, ssh, command): return ssh.execute(cmd, stdin=stdin, timeout=10) + def one_killing_iteration(self, server, fip, computes, disruptor_cmd, stop_instance): """Find the host where instance is hosted, disrupt the host and @@ -183,6 +188,7 @@ def one_killing_iteration(self, server, fip, computes, disruptor_cmd, LOG.debug("VM console logs:\n%s", console_logs) raise + def recover_instance_ha(self, image, flavor, computes, volume_args=None, floating_network=None, @@ -284,15 +290,19 @@ def recover_instance_ha(self, image, flavor, computes, ) self._delete_server_with_fip(server, fip, force_delete=force_delete) + @types.convert(image={"type": "glance_image"}, flavor={"type": "nova_flavor"}) -@validation.image_valid_on_flavor("flavor", "image") -@validation.valid_command("command", required=False) -@validation.number("port", minval=1, maxval=65535, nullable=True, - integer_only=True) -@validation.external_network_exists("floating_network") -@validation.required_services(consts.Service.NOVA, consts.Service.CINDER) -@validation.required_openstack(users=True, admin=True) +@validation.add("image_valid_on_flavor", + flavor_param="flavor", image_param="image") +@validation.add("valid_command", param_name="command", required=False) +@validation.add("number", param_name="port", minval=1, maxval=65535, + nullable=True, integer_only=True) +@validation.add("external_network_exists", param_name="floating_network") +@validation.add("required_services", + services=[consts.Service.NOVA, consts.Service.CINDER]) +@validation.add("required_platform", platform="openstack", + users=True, admin=True) @scenario.configure(context={"cleanup@openstack": ["nova", "cinder"], "keypair@openstack": {}, "allow_ssh@openstack": None}, name="InstanceHA.recover_instance_fip_and_volume", @@ -320,15 +330,19 @@ class InstanceHARecoverFIPAndVolume(vm_utils.VMScenario, cinder_utils.CinderBasi max_log_length=max_log_length, **kwargs) + @types.convert(image={"type": "glance_image"}, flavor={"type": "nova_flavor"}) -@validation.image_valid_on_flavor("flavor", "image") -@validation.valid_command("command", required=False) -@validation.number("port", minval=1, maxval=65535, nullable=True, - integer_only=True) -@validation.external_network_exists("floating_network") -@validation.required_services(consts.Service.NOVA, consts.Service.CINDER) -@validation.required_openstack(users=True, admin=True) +@validation.add("image_valid_on_flavor", + flavor_param="flavor", image_param="image") +@validation.add("valid_command", param_name="command", required=False) +@validation.add("number", param_name="port", minval=1, maxval=65535, + nullable=True, integer_only=True) +@validation.add("external_network_exists", param_name="floating_network") +@validation.add("required_services", + services=[consts.Service.NOVA, consts.Service.CINDER]) +@validation.add("required_platform", platform="openstack", + users=True, admin=True) @scenario.configure(context={"cleanup@openstack": ["nova", "cinder"], "keypair@openstack": {}, "allow_ssh@openstack": None}, name="InstanceHA.recover_instance_two_cycles", @@ -357,15 +371,19 @@ class InstanceHARecoverTwoCycle(vm_utils.VMScenario, cinder_utils.CinderBasic): max_log_length=max_log_length, **kwargs) + @types.convert(image={"type": "glance_image"}, flavor={"type": "nova_flavor"}) -@validation.image_valid_on_flavor("flavor", "image") -@validation.valid_command("command", required=False) -@validation.number("port", minval=1, maxval=65535, nullable=True, - integer_only=True) -@validation.external_network_exists("floating_network") -@validation.required_services(consts.Service.NOVA, consts.Service.CINDER) -@validation.required_openstack(users=True, admin=True) +@validation.add("image_valid_on_flavor", + flavor_param="flavor", image_param="image") +@validation.add("valid_command", param_name="command", required=False) +@validation.add("number", param_name="port", minval=1, maxval=65535, + nullable=True, integer_only=True) +@validation.add("external_network_exists", param_name="floating_network") +@validation.add("required_services", + services=[consts.Service.NOVA, consts.Service.CINDER]) +@validation.add("required_platform", platform="openstack", + users=True, admin=True) @scenario.configure(context={"cleanup@openstack": ["nova", "cinder"], "keypair@openstack": {}, "allow_ssh@openstack": None}, name="InstanceHA.recover_stopped_instance_fip", @@ -394,15 +412,19 @@ class InstanceHARecoverStopped(vm_utils.VMScenario, cinder_utils.CinderBasic): max_log_length=max_log_length, **kwargs) + @types.convert(image={"type": "glance_image"}, flavor={"type": "nova_flavor"}) -@validation.image_valid_on_flavor("flavor", "image") -@validation.valid_command("command", required=False) -@validation.number("port", minval=1, maxval=65535, nullable=True, - integer_only=True) -@validation.external_network_exists("floating_network") -@validation.required_services(consts.Service.NOVA, consts.Service.CINDER) -@validation.required_openstack(users=True, admin=True) +@validation.add("image_valid_on_flavor", + flavor_param="flavor", image_param="image") +@validation.add("valid_command", param_name="command", required=False) +@validation.add("number", param_name="port", minval=1, maxval=65535, + nullable=True, integer_only=True) +@validation.add("external_network_exists", param_name="floating_network") +@validation.add("required_services", + services=[consts.Service.NOVA, consts.Service.CINDER]) +@validation.add("required_platform", platform="openstack", + users=True, admin=True) @scenario.configure(context={"cleanup@openstack": ["nova", "cinder"], "keypair@openstack": {}, "allow_ssh@openstack": None}, name="InstanceHA.recover_instance_nova_compute",