diff --git a/magnum/tests/functional/api/v1/test_bay.py b/magnum/tests/functional/api/v1/test_bay.py index fc7e73782f..a7ed14de2b 100644 --- a/magnum/tests/functional/api/v1/test_bay.py +++ b/magnum/tests/functional/api/v1/test_bay.py @@ -101,8 +101,8 @@ class BayTest(base.BaseMagnumTest): self.bay_uuid = model.uuid self.addOnException(self.copy_logs_handler( lambda: list( - self._get_bay_by_id(self.bay_uuid)[1].node_addresses + - self._get_bay_by_id(self.bay_uuid)[1].master_addresses), + [self._get_bay_by_id(self.bay_uuid)[1].master_addresses, + self._get_bay_by_id(self.bay_uuid)[1].node_addresses]), self.baymodel.coe, self.keypair)) self.bay_client.wait_for_created_bay(model.uuid, delete_on_error=False) diff --git a/magnum/tests/functional/common/base.py b/magnum/tests/functional/common/base.py index 4747e7c69c..8498ce95a8 100644 --- a/magnum/tests/functional/common/base.py +++ b/magnum/tests/functional/common/base.py @@ -23,6 +23,9 @@ from magnum.tests.functional.common import config from magnum.tests.functional.common import manager +COPY_LOG_HELPER = "magnum/tests/contrib/copy_instance_logs.sh" + + class BaseMagnumTest(base.BaseTestCase): """Sets up configuration required for functional tests""" @@ -172,7 +175,8 @@ class BaseMagnumTest(base.BaseTestCase): and copy addresses from there locally. :param get_nodes_fn: function that takes no parameters and returns - a list of node IPs to get logs from + a list of node IPs which are in such form: + [[master_nodes], [slave_nodes]]. :param coe: the COE type of the nodes """ @@ -187,28 +191,35 @@ class BaseMagnumTest(base.BaseTestCase): msg = "Failed to copy logs for bay" nodes_addresses = get_nodes_fn() - for node_address in nodes_addresses: - log_name = "node-" + func_name - try: - base_path = os.path.split(os.path.dirname( - os.path.abspath(magnum.__file__)))[0] - script = "magnum/tests/contrib/copy_instance_logs.sh" - full_location = os.path.join(base_path, script) - cls.LOG.debug("running %s" % full_location) - cls.LOG.debug("keypair: %s" % keypair) - subprocess.check_call([ - full_location, - node_address, - coe, - log_name, - str(keypair) - ]) - except Exception: - cls.LOG.exception(msg) - cls.LOG.exception("failed to copy from %s to %s%s-%s" % - (node_address, - "/opt/stack/logs/bay-nodes/", - log_name, node_address)) + master_nodes = nodes_addresses[0] + slave_nodes = nodes_addresses[1] + + base_path = os.path.split(os.path.dirname( + os.path.abspath(magnum.__file__)))[0] + full_location = os.path.join(base_path, COPY_LOG_HELPER) + + def do_copy_logs(prefix, nodes_address): + log_name = prefix + "-" + func_name + for node_address in nodes_address: + try: + cls.LOG.debug("running %s" % full_location) + cls.LOG.debug("keypair: %s" % keypair) + subprocess.check_call([ + full_location, + node_address, + coe, + log_name, + str(keypair) + ]) + except Exception: + cls.LOG.exception(msg) + cls.LOG.exception( + "failed to copy from %s to %s%s-%s" % + (node_address, "/opt/stack/logs/bay-nodes/", + log_name, node_address)) + + do_copy_logs('master', master_nodes) + do_copy_logs('node', slave_nodes) except Exception: cls.LOG.exception(msg) diff --git a/magnum/tests/functional/python_client_base.py b/magnum/tests/functional/python_client_base.py index b7eff47384..8567a199f5 100644 --- a/magnum/tests/functional/python_client_base.py +++ b/magnum/tests/functional/python_client_base.py @@ -248,8 +248,8 @@ extendedKeyUsage = clientAuth self.addOnException( self.copy_logs_handler( - lambda: list(self.cs.bays.get(self.bay.uuid).node_addresses + - self.cs.bays.get(self.bay.uuid).master_addresses), + lambda: list([self.cs.bays.get(self.bay.uuid).master_addresses, + self.cs.bays.get(self.bay.uuid).node_addresses]), self.baymodel.coe, 'default')) self._wait_for_bay_complete(self.bay)