]>
git.proxmox.com Git - ceph.git/blob - ceph/qa/tasks/mgr/mgr_test_case.py
2 from unittest
import case
5 from teuthology
import misc
6 from tasks
.ceph_test_case
import CephTestCase
8 # TODO move definition of CephCluster
9 from tasks
.cephfs
.filesystem
import CephCluster
12 class MgrCluster(CephCluster
):
13 def __init__(self
, ctx
):
14 super(MgrCluster
, self
).__init
__(ctx
)
15 self
.mgr_ids
= list(misc
.all_roles_of_type(ctx
.cluster
, 'mgr'))
17 if len(self
.mgr_ids
) == 0:
19 "This task requires at least one manager daemon")
21 self
.mgr_daemons
= dict(
22 [(mgr_id
, self
._ctx
.daemons
.get_daemon('mgr', mgr_id
)) for mgr_id
25 def mgr_stop(self
, mgr_id
):
26 self
.mgr_daemons
[mgr_id
].stop()
28 def mgr_fail(self
, mgr_id
):
29 self
.mon_manager
.raw_cluster_cmd("mgr", "fail", mgr_id
)
31 def mgr_restart(self
, mgr_id
):
32 self
.mgr_daemons
[mgr_id
].restart()
34 def get_mgr_map(self
):
36 self
.mon_manager
.raw_cluster_cmd("status", "--format=json-pretty"))
38 return status
["mgrmap"]
40 def get_active_id(self
):
41 return self
.get_mgr_map()["active_name"]
43 def get_standby_ids(self
):
44 return [s
['name'] for s
in self
.get_mgr_map()["standbys"]]
47 class MgrTestCase(CephTestCase
):
51 super(MgrTestCase
, self
).setUp()
53 # The test runner should have populated this
54 assert self
.mgr_cluster
is not None
56 if len(self
.mgr_cluster
.mgr_ids
) < self
.MGRS_REQUIRED
:
57 raise case
.SkipTest("Only have {0} manager daemons, "
58 "{1} are required".format(
59 len(self
.mgr_cluster
.mgr_ids
), self
.MGRS_REQUIRED
))
61 # Restart all the daemons
62 for daemon
in self
.mgr_cluster
.mgr_daemons
.values():
65 for mgr_id
in self
.mgr_cluster
.mgr_ids
:
66 self
.mgr_cluster
.mgr_fail(mgr_id
)
68 for daemon
in self
.mgr_cluster
.mgr_daemons
.values():
71 # Wait for an active to come up
72 self
.wait_until_true(lambda: self
.mgr_cluster
.get_active_id() != "",
75 expect_standbys
= set(self
.mgr_cluster
.mgr_ids
) \
76 - {self
.mgr_cluster
.get_active_id()}
78 lambda: set(self
.mgr_cluster
.get_standby_ids()) == expect_standbys
,