Ejemplo n.º 1
0
    def setUp(self):
        super(TestMon, self).setUp()

        # I'm using CephCluster to generate the status objects to use as fixtures, I'm not
        # actually running the simulator or anything like that because this is a unit test.
        cluster = CephCluster()
        cluster.create(self.SERVERS)
        self.fsid = cluster.fsid

        # This will appear to be a completely happy healthy quorum of mons
        self.mon_status = msgpack.unpackb(
            cluster.get_cluster_object('ceph_fake', 'mon_status',
                                       None).data)['data']

        # XXX hmm, perhaps synthesizing this stuff should go into
        # ceph_cluster and then it be sensibly kept up to date with
        # synthesized quorum changes.
        self.server1_status = deepcopy(self.mon_status)
        self.server2_status = deepcopy(self.mon_status)
        self.server3_status = deepcopy(self.mon_status)
        for (server_status, name, rank, state) in [
            (self.server1_status, 'server1', 0, 'leader'),
            (self.server2_status, 'server2', 1, 'peon'),
            (self.server3_status, 'server3', 2, 'peon'),
        ]:
            server_status['name'] = name
            server_status['rank'] = rank
            server_status['state'] = state

        self.service_status = [{
            'id': 'server1',
            'type': 'mon',
            'cluster': cluster.name,
            'fsid': cluster.fsid,
            'status': self.server1_status,
            'server': 'server1',
            'running': True
        }, {
            'id': 'server1',
            'type': 'mon',
            'cluster': cluster.name,
            'fsid': cluster.fsid,
            'status': self.server2_status,
            'server': 'server2',
            'running': True
        }, {
            'id': 'server1',
            'type': 'mon',
            'cluster': cluster.name,
            'fsid': cluster.fsid,
            'status': self.server3_status,
            'server': 'server3',
            'running': True
        }]
        self.rpc.get_sync_object = mock.Mock(return_value=self.mon_status)
        self.rpc.status_by_service = mock.Mock(
            return_value=self.service_status)