コード例 #1
0
ファイル: MonitorDemo.py プロジェクト: kevinjs/vmrebirth
    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'] = []