diff --git a/fuelweb_test/tests/tests_upgrade/__init__.py b/fuelweb_test/tests/tests_upgrade/__init__.py index 7a57549df..077fba89c 100644 --- a/fuelweb_test/tests/tests_upgrade/__init__.py +++ b/fuelweb_test/tests/tests_upgrade/__init__.py @@ -18,3 +18,10 @@ from fuelweb_test.tests.tests_upgrade import test_data_driven_upgrade # noqa from fuelweb_test.tests.tests_upgrade import test_data_driven_upgrade_net_tmpl # noqa from fuelweb_test.tests.tests_upgrade import test_data_driven_upgrade_plugin # noqa from fuelweb_test.tests.tests_upgrade import upgrader_tool # noqa + +__all__ = [ + 'test_data_driven_upgrade', + 'test_data_driven_upgrade_net_tmpl', + 'test_data_driven_upgrade_plugin', + 'upgrader_tool' +] diff --git a/fuelweb_test/tests/tests_upgrade/test_data_driven_upgrade_base.py b/fuelweb_test/tests/tests_upgrade/test_data_driven_upgrade_base.py index 27ad028d7..3eb575cf2 100644 --- a/fuelweb_test/tests/tests_upgrade/test_data_driven_upgrade_base.py +++ b/fuelweb_test/tests/tests_upgrade/test_data_driven_upgrade_base.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + import os from distutils.version import StrictVersion @@ -9,8 +11,6 @@ from proboscis.asserts import assert_not_equal from fuelweb_test import logger from fuelweb_test import settings -from fuelweb_test.helpers.utils import run_on_remote -from fuelweb_test.helpers.utils import run_on_remote_get_results from fuelweb_test.tests.base_test_case import TestBasic @@ -46,7 +46,6 @@ class DataDrivenUpgradeBase(TestBasic): if hasattr(self.env, "reinstall_master_node"): self.reinstall_master_node = self.env.reinstall_master_node # pylint: enable=no-member - self.__admin_remote = None @property def backup_path(self): @@ -72,20 +71,7 @@ class DataDrivenUpgradeBase(TestBasic): @property def admin_remote(self): - try: - self.__admin_remote.execute("ls") - # I'm not sure which exception will be raised by paramiko - except Exception as e: - logger.debug( - "Got exception in admin_remote: {!r}\n Reconnecting".format(e) - ) - self.__admin_remote = self.env.d_env.get_admin_remote() - return self.__admin_remote - - @admin_remote.deleter - def admin_remote(self): - if self.__admin_remote: - self.__admin_remote.clear() + return self.env.d_env.get_admin_remote() # pylint: disable=no-member @@ -129,11 +115,9 @@ class DataDrivenUpgradeBase(TestBasic): def cleanup(self): os.remove(self.local_path) os.remove(self.repos_local_path) - del self.admin_remote def install_octane(self): """ Install fuel-octane package to master node""" - del self.admin_remote conf_file = None if settings.FUEL_PROPOSED_REPO_URL: conf_file = '/etc/yum.repos.d/fuel-proposed.repo' @@ -148,21 +132,24 @@ class DataDrivenUpgradeBase(TestBasic): settings.FUEL_PROPOSED_REPO_URL, conf_file) - run_on_remote(self.admin_remote, cmd) + # pylint: disable=no-member + self.admin_remote.check_call(cmd) + # pylint: enable=no-member logger.info("Removing previously installed fuel-octane") - run_on_remote(self.admin_remote, "yum remove -y fuel-octane", - raise_on_assert=False) - run_on_remote( - self.admin_remote, + # pylint: disable=no-member + self.admin_remote.check_call( + "yum remove -y fuel-octane", + raise_on_er=False) + self.admin_remote.check_call( "rm -rf /usr/lib/python2.*/site-packages/octane", - raise_on_assert=False) + raise_on_er=False) logger.info("Installing fuel-octane") - run_on_remote(self.admin_remote, "yum install -y fuel-octane") + self.admin_remote.check_call("yum install -y fuel-octane") - octane_log = ''.join(run_on_remote( - self.admin_remote, - "rpm -q --changelog fuel-octane")) + octane_log = self.admin_remote.check_call( + "rpm -q --changelog fuel-octane").stdout_str + # pylint: enable=no-member logger.info("Octane changes:") logger.info(octane_log) @@ -175,12 +162,11 @@ class DataDrivenUpgradeBase(TestBasic): os.path.abspath(os.path.dirname(__file__)), "octane_patcher.sh"), "/tmp/octane_patcher.sh") - # pylint: enable=no-member - run_on_remote( - self.admin_remote, + self.admin_remote.check_call( "bash /tmp/octane_patcher.sh {}".format( settings.OCTANE_PATCHES)) + # pylint: enable=no-member if settings.FUEL_PROPOSED_REPO_URL: # pylint: disable=no-member @@ -232,11 +218,12 @@ class DataDrivenUpgradeBase(TestBasic): self.install_octane() cmd = "mkdir -p {}".format(self.remote_dir_for_backups) - run_on_remote(self.admin_remote, cmd) + # pylint: disable=no-member + self.admin_remote.check_call(cmd) self.octane_action("backup", backup_path) logger.info("Downloading {}".format(backup_path)) - # pylint: disable=no-member + self.admin_remote.download(backup_path, local_path) # pylint: enable=no-member assert_true(os.path.exists(local_path)) @@ -260,10 +247,11 @@ class DataDrivenUpgradeBase(TestBasic): self.install_octane() cmd = "mkdir -p {}".format(self.remote_dir_for_backups) - run_on_remote(self.admin_remote, cmd) + # pylint: disable=no-member + self.admin_remote.check_call(cmd) logger.info("Uploading {}".format(local_path)) - # pylint: disable=no-member + self.admin_remote.upload(local_path, backup_path) # pylint: enable=no-member logger.info("Applying backup from {}".format(backup_path)) @@ -300,7 +288,7 @@ class DataDrivenUpgradeBase(TestBasic): logger.info("Applying fix for LP:1561092") for node in d_nodes: with self.fuel_web.get_ssh_for_node(node_name=node.name) as remote: - run_on_remote(remote, "service mcollective restart") + remote.check_call("service mcollective restart") def revert_backup(self): assert_not_equal(self.backup_snapshot_name, None, @@ -458,7 +446,7 @@ class DataDrivenUpgradeBase(TestBasic): logger.info("Verify bootstrap on slave {0}".format(remote.host)) cmd = 'cat /etc/*release' - output = run_on_remote_get_results(remote, cmd)['stdout_str'].lower() + output = remote.check_call(cmd).stdout_str.lower() assert_true(os_type in output, "Slave {0} doesn't use {1} image for bootstrap " "after {1} images were enabled, /etc/release " diff --git a/fuelweb_test/tests/tests_upgrade/upgrader_tool.py b/fuelweb_test/tests/tests_upgrade/upgrader_tool.py index c4d5faca2..380e17513 100644 --- a/fuelweb_test/tests/tests_upgrade/upgrader_tool.py +++ b/fuelweb_test/tests/tests_upgrade/upgrader_tool.py @@ -1,5 +1,6 @@ +from __future__ import unicode_literals + import os -import signal from devops.helpers.templates import yaml_template_load from proboscis import test @@ -7,7 +8,6 @@ from proboscis.asserts import assert_true from fuelweb_test import settings, logger from fuelweb_test.helpers.decorators import log_snapshot_after_test -from fuelweb_test.helpers.utils import run_on_remote_get_results from fuelweb_test.tests.tests_upgrade.test_data_driven_upgrade_base import \ DataDrivenUpgradeBase @@ -102,20 +102,15 @@ class UpgradeCustom(DataDrivenUpgradeBase): cmd = "cd {} && ".format(self.tarball_remote_dir) cmd += "tar -xpvf" if ext.endswith("tar") else "lrzuntar" - run_on_remote_get_results(self.admin_remote, cmd) + # pylint: disable=no-member + self.admin_remote.check_call(cmd) + # pylint: enable=no-member cmd = "sh {} --no-rollback --password {}".format( os.path.join(self.tarball_remote_dir, "upgrade.sh"), settings.KEYSTONE_CREDS['password']) - class UpgradeTimeoutError(Exception): - pass - - def handler(): - raise UpgradeTimeoutError("Upgrade via tarball timed out!") - - signal.signal(signal.SIGALRM, handler) - signal.alarm(60 * 60) - run_on_remote_get_results(self.admin_remote, cmd) - signal.alarm(0) + # pylint: disable=no-member + self.admin_remote.check_call(cmd, timeout=60 * 60) + # pylint: enable=no-member self.env.make_snapshot(self.restore_snapshot_name, is_make=True)