]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
tests: add mimic support for test_rbd_mirror_is_up()
authorGuillaume Abrioux <gabrioux@redhat.com>
Thu, 5 Jul 2018 13:16:19 +0000 (15:16 +0200)
committerGuillaume Abrioux <gabrioux@redhat.com>
Wed, 11 Jul 2018 12:42:31 +0000 (14:42 +0200)
prior mimic, the data structure returned by `ceph -s -f json` used to
gather information about rbd-mirror daemons looked like below:

```
  "servicemap": {
    "epoch": 8,
    "modified": "2018-07-05 13:21:06.207483",
    "services": {
      "rbd-mirror": {
        "daemons": {
          "summary": "",
          "ceph-nano-luminous-faa32aebf00b": {
            "start_epoch": 8,
            "start_stamp": "2018-07-05 13:21:04.668450",
            "gid": 14107,
            "addr": "172.17.0.2:0/2229952892",
            "metadata": {
              "arch": "x86_64",
              "ceph_version": "ceph version 12.2.5 (cad919881333ac92274171586c827e01f554a70a) luminous (stable)",
              "cpu": "Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz",
              "distro": "centos",
              "distro_description": "CentOS Linux 7 (Core)",
              "distro_version": "7",
              "hostname": "ceph-nano-luminous-faa32aebf00b",
              "instance_id": "14107",
              "kernel_description": "#1 SMP Wed Mar 14 15:12:16 UTC 2018",
              "kernel_version": "4.9.87-linuxkit-aufs",
              "mem_swap_kb": "1048572",
              "mem_total_kb": "2046652",
              "os": "Linux"
            }
          }
        }
      }
    }
  }
```

This part has changed from mimic and became:
```
  "servicemap": {
    "epoch": 2,
    "modified": "2018-07-04 09:54:36.164786",
    "services": {
      "rbd-mirror": {
        "daemons": {
          "summary": "",
          "14151": {
            "start_epoch": 2,
            "start_stamp": "2018-07-04 09:54:35.541272",
            "gid": 14151,
            "addr": "192.168.1.80:0/240942528",
            "metadata": {
              "arch": "x86_64",
              "ceph_release": "mimic",
              "ceph_version": "ceph version 13.2.0 (79a10589f1f80dfe21e8f9794365ed98143071c4) mimic (stable)",
              "ceph_version_short": "13.2.0",
              "cpu": "Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz",
              "distro": "centos",
              "distro_description": "CentOS Linux 7 (Core)",
              "distro_version": "7",
              "hostname": "ceph-rbd-mirror0",
              "id": "ceph-rbd-mirror0",
              "instance_id": "14151",
              "kernel_description": "#1 SMP Wed May 9 18:05:47 UTC 2018",
              "kernel_version": "3.10.0-862.2.3.el7.x86_64",
              "mem_swap_kb": "1572860",
              "mem_total_kb": "1015548",
              "os": "Linux"
            }
          }
        }
      }
    }
  }
```

This patch modifies the function `test_rbd_mirror_is_up()` in
`test_rbd_mirror.py` so it works with `mimic` and keeps backward compatibility
with `luminous`

(cherry picked from commit 09d795b5b737a05164772f5e3ba469577d605344)
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
tests/conftest.py
tests/functional/tests/rbd-mirror/test_rbd_mirror.py

index ebee2d1864e056220f6b678be56adac2adcfe167..13435b0fb00cd4008e101309b77f96d673927b00 100644 (file)
@@ -107,6 +107,7 @@ def node(host, request):
         docker=docker,
         osds=osds,
         ceph_stable_release=ceph_stable_release,
+        ceph_release_num=ceph_release_num,
     )
     return data
 
index e195f41e8a2a3aa8eeca5b83472c9fd10726b29c..c76a29952181b7068264b823b6c479c1658274d8 100644 (file)
@@ -61,6 +61,15 @@ class TestRbdMirrors(object):
     @pytest.mark.no_docker
     @pytest.mark.from_luminous
     def test_rbd_mirror_is_up(self, node, host):
+        ceph_release_num=node['ceph_release_num']
+        ceph_stable_release=node['ceph_stable_release']
+        hostname=node["vars"]["inventory_hostname"]
+        cluster=node["cluster_name"]
+        daemons = []
+        if node['docker']:
+            docker_exec_cmd = 'docker exec ceph-rbd-mirror-{hostname}'.format(hostname=hostname)
+        else:
+            docker_exec_cmd = ''
         hostname = node["vars"]["inventory_hostname"]
         cluster = node['cluster_name']
         cmd = "sudo ceph --name client.bootstrap-rbd --keyring /var/lib/ceph/bootstrap-rbd/{cluster}.keyring --cluster={cluster} --connect-timeout 5 -f json -s".format(
@@ -81,5 +90,12 @@ class TestRbdMirrors(object):
             cluster=cluster
         )
         output = host.check_output(cmd)
-        daemons = [i for i in json.loads(output)["servicemap"]["services"]["rbd-mirror"]["daemons"]]
-        assert hostname in daemons
+        status = json.loads(output)
+        daemon_ids = [i for i in status["servicemap"]["services"]["rbd-mirror"]["daemons"].keys() if i != "summary"]
+        if ceph_release_num[ceph_stable_release] > ceph_release_num['luminous']:
+            for daemon_id in daemon_ids:
+                daemons.append(status["servicemap"]["services"]["rbd-mirror"]["daemons"][daemon_id]["metadata"]["hostname"])
+            result = hostname in daemons
+        else:
+            result = hostname in daemon_ids
+        assert result
\ No newline at end of file