def test_get_hosts_from_zk(self): hosts = get_hosts_from_zk(self.zk_client) assert_that(len(hosts), is_(0)) networks = [Network("nw1", [NetworkType.VM])] dsid = str(uuid.uuid4()) datastores = [Datastore(dsid, "ds1", DatastoreType.SHARED_VMFS)] # Register two hosts agent_host = "localhost" agent1_port = 12345 req1 = get_register_host_request( agent_host, agent1_port, agent_id="host1", networks=networks, datastores=datastores, image_datastore=dsid, availability_zone="az1", ) agent2_port = 12346 req2 = get_register_host_request( agent_host, agent2_port, agent_id="host2", networks=networks, datastores=datastores, image_datastore=dsid, availability_zone="az1", ) # Register two hosts resp = self.chairman_client.register_host(req1) assert_that(resp.result, is_(RegisterHostResultCode.OK)) resp = self.chairman_client.register_host(req2) assert_that(resp.result, is_(RegisterHostResultCode.OK)) hosts = get_hosts_from_zk(self.zk_client) # map list to dict indexed by host id hosts = dict((h.id, h) for h in hosts) assert_that(len(hosts), is_(2)) _h1 = hosts[req1.config.agent_id] _h2 = hosts[req2.config.agent_id] # Verify that the requests match the hosts that were # constructed by get_hosts_from_zk assert_that(req1.config.agent_id, _h1.id) assert_that(req2.config.agent_id, _h2.id) assert_that(req1.config.address.host, _h1.address) assert_that(req2.config.address.port, _h2.port)
def test_get_hosts_from_zk(self): hosts = get_hosts_from_zk(self.zk_client) assert_that(len(hosts), is_(0)) networks = [Network("nw1", [NetworkType.VM])] dsid = str(uuid.uuid4()) datastores = [Datastore(dsid, "ds1", DatastoreType.SHARED_VMFS)] # Register two hosts agent_host = "localhost" agent1_port = 12345 req1 = get_register_host_request(agent_host, agent1_port, agent_id="host1", networks=networks, datastores=datastores, image_datastore=dsid, availability_zone="az1") agent2_port = 12346 req2 = get_register_host_request(agent_host, agent2_port, agent_id="host2", networks=networks, datastores=datastores, image_datastore=dsid, availability_zone="az1") # Register two hosts resp = self.chairman_client.register_host(req1) assert_that(resp.result, is_(RegisterHostResultCode.OK)) resp = self.chairman_client.register_host(req2) assert_that(resp.result, is_(RegisterHostResultCode.OK)) hosts = get_hosts_from_zk(self.zk_client) # map list to dict indexed by host id hosts = dict((h.id, h) for h in hosts) assert_that(len(hosts), is_(2)) _h1 = hosts[req1.config.agent_id] _h2 = hosts[req2.config.agent_id] # Verify that the requests match the hosts that were # constructed by get_hosts_from_zk assert_that(req1.config.agent_id, _h1.id) assert_that(req2.config.agent_id, _h2.id) assert_that(req1.config.address.host, _h1.address) assert_that(req2.config.address.port, _h2.port)
def register_host(self): # Agent just registered, i.e. restarted # discard current config self.discard_config() image_ds = self.image_datastore.id avail_zone = self.availability_zone req = get_register_host_request(self.host, self.port, agent_id=self.id, networks=self.networks, datastores=self.datastores, image_datastore=image_ds, availability_zone=avail_zone) resp = self.chairman.register_host(req) if resp.result != RegisterHostResultCode.OK: msg = ("Host registration failed for host id %s with error" " code %s" % (self.id, resp.result)) raise Exception(msg)