def check_host(self, chk_timestamp): # rc = RunCommand() tmp = self._rc.run("nova-manage service list ") tmps = tmp.strip().split('\n') host_list = {} for line in tmps[1:len(tmps)]: term = utils.rmSp(line).split(' ') state_str = '' if term[len(term)-3] == ':-)': state_str = 'ALIVE' else: state_str = 'NON-ALIVE' if host_list.has_key(term[1]): host_list[term[1]]['SERVICE'].append({'NAME':term[0], 'STATE':state_str}) else: temp = {} temp['SERVICE'] = [] temp['CHECK_TIMESTAMP'] = chk_timestamp # temp['SERVICE'].append({'NAME':term[0], 'STATE':term[len(term)-3], 'STATUS':term[len(term)-4]}) temp['SERVICE'].append({'NAME':term[0], 'STATE':state_str}) host_list[term[1]] = temp # Update global host_list _tmp_host_list = list(set(self._host_list.keys()).union(set(host_list.keys()))) for host in _tmp_host_list: self._report[host] = {} # old if self._host_list.has_key(host) and host_list.has_key(host): self._host_list[host] = copy.deepcopy(host_list.get(host)) self._host_list[host]['AVAILABLE'] = True # new elif (not self._host_list.has_key(host)) and host_list.has_key(host): self._host_list[host] = copy.deepcopy(host_list.get(host)) self._host_list[host]['AVAILABLE'] = True # Not available elif self._host_list.has_key(host) and (not host_list.has_key(host)): self._host_list[host] = {} self._host_list[host]['AVAILABLE'] = False _host_state = 'ALIVE' for serv in self._host_list[host]['SERVICE']: if serv['STATE'] == 'NON-ALIVE': _host_state = 'NON-ALIVE' break self._report[host]['status'] = _host_state self._report[host]['vm_list'] = []