diff --git a/fuelweb_test/helpers/ceph.py b/fuelweb_test/helpers/ceph.py index a55a3c82b..15d289b2f 100644 --- a/fuelweb_test/helpers/ceph.py +++ b/fuelweb_test/helpers/ceph.py @@ -232,3 +232,13 @@ def get_rbd_images_list(remote, pool): """ cmd = 'rbd --pool {pool} --format json ls -l'.format(pool=pool) return run_on_remote(remote, cmd, jsonify=True) + + +def get_version(remote): + """Returns Ceph version + + :param remote: devops.helpers.helpers.SSHClient + :return: str + """ + cmd = 'ceph --version' + return run_on_remote(remote, cmd)[0].split(' ')[2] diff --git a/fuelweb_test/models/fuel_web_client.py b/fuelweb_test/models/fuel_web_client.py index a316c6a5a..8f2726880 100644 --- a/fuelweb_test/models/fuel_web_client.py +++ b/fuelweb_test/models/fuel_web_client.py @@ -939,6 +939,10 @@ class FuelWebClient(object): nodes_dict.keys()))[0] return self.get_ssh_for_node(node_name) + @logwrap + def get_ssh_for_nailgun_node(self, nailgun_node): + return self.environment.d_env.get_ssh_to_remote(nailgun_node['ip']) + @logwrap def is_node_discovered(self, nailgun_node): return any( diff --git a/fuelweb_test/tests/test_ceph.py b/fuelweb_test/tests/test_ceph.py index c502b3101..3c0436d59 100644 --- a/fuelweb_test/tests/test_ceph.py +++ b/fuelweb_test/tests/test_ceph.py @@ -15,6 +15,7 @@ from six import BytesIO import time +from pkg_resources import parse_version from proboscis.asserts import assert_true, assert_false, assert_equal from proboscis import SkipTest from proboscis import test @@ -291,6 +292,7 @@ class CephHA(TestBasic): Scenario: 1. Revert snapshot with ceph cluster in HA mode 2. Check ceph status + 3. Check ceph version, should less 0.81 Duration 10m Snapshot check_ceph_ha @@ -301,6 +303,26 @@ class CephHA(TestBasic): self.fuel_web.check_ceph_status(cluster_id) + versions = [] + for node in self.fuel_web.client.list_cluster_nodes(cluster_id): + role = '_'.join(node['roles']) + logger.debug('{} has role {}'.format(node['fqdn'], role)) + with self.fuel_web.get_ssh_for_nailgun_node(node) as remote: + version = ceph.get_version(remote) + logger.info('On {} ceph version is {}'.format(node['fqdn'], + version)) + versions.append({'name': node['fqdn'], 'ceph_version': version}) + + def check_ver(v): + # Check version. True if version bigger or equal 0.81 + # FIXME: should bigger then 0.93 after upgrade to hammer + return not (parse_version(v['ceph_version']) < + parse_version('0.81')) + + bad_nodes = filter(check_ver, versions) + assert_true(len(bad_nodes) == 0, + message="Nodes should have Ceph version less " + "then 0.81 {}".format(bad_nodes)) # Run ostf self.fuel_web.run_ostf( cluster_id=cluster_id,