def _get_current_processes(self):
        # Add all current processes to make sure nothing misses the radar
        process_state_db = {}
        # list of all processes on the node is made here
        all_processes = self.process_info_manager.get_all_processes()
        self.msg_log("DBG: get_current_processes: '%s'" % all_processes,
                     SandeshLevel.SYS_DEBUG)
        for proc_info in all_processes:
            proc_name = self._get_process_name(proc_info)
            proc_pid = int(proc_info['pid'])

            stat = ProcessStat(proc_name,
                               host_ip=self.hostip,
                               hostname=self.hostname)
            stat.process_state = proc_info['statename']
            if 'start' in proc_info:
                stat.start_time = str(proc_info['start'])
                stat.start_count += 1
            stat.pid = proc_pid
            if stat.group not in self.group_names:
                self.group_names.append(stat.group)
            if stat.group not in process_state_db:
                process_state_db[stat.group] = {}
            process_state_db[stat.group][proc_name] = stat
        return process_state_db
Beispiel #2
0
    def _send_process_state(self, process_info):
        pname = self._get_process_name(process_info)
        # update process stats
        if pname in list(key for group in self.process_state_db for key in self.process_state_db[group]):
            for group in self.process_state_db:
                if pname in self.process_state_db[group]:
                    proc_stat = self.process_state_db[group][pname]
        else:
            proc_stat = ProcessStat(pname, host_ip=self.hostip, hostname=self.hostname)

        pstate = process_info['state']
        proc_stat.process_state = pstate

        send_uve = False
        if (pstate == 'PROCESS_STATE_RUNNING'):
            proc_stat.start_count += 1
            proc_stat.start_time = str(int(time.time() * 1000000))
            send_uve = True
            proc_stat.pid = int(process_info['pid'])

        if (pstate == 'PROCESS_STATE_STOPPED'):
            proc_stat.stop_count += 1
            send_uve = True
            proc_stat.stop_time = str(int(time.time() * 1000000))
            proc_stat.last_exit_unexpected = False
            proc_stat.last_cpu = None
            proc_stat.last_time = 0

        if (pstate == 'PROCESS_STATE_EXITED'):
            proc_stat.exit_count += 1
            send_uve = True
            proc_stat.exit_time = str(int(time.time() * 1000000))
            proc_stat.last_cpu = None
            proc_stat.last_time = 0
            if not process_info['expected']:
                self.msg_log('%s with pid: %s exited abnormally' %
                             (pname, process_info['pid']),
                             SandeshLevel.SYS_ERR)
                proc_stat.last_exit_unexpected = True
        send_init_uve = False
        # update process state database
        if proc_stat.group not in self.process_state_db:
            self.process_state_db[proc_stat.group] = {}
            send_init_uve = True
        self.process_state_db[proc_stat.group][pname] = proc_stat
        if send_uve:
            if (send_init_uve):
                self._send_init_info(proc_stat.group)
            self.send_process_state_db([proc_stat.group])
 def get_process_stat_object(self, pname):
     return ProcessStat(pname)
 def __init__(self, pname, sandesh_logger):
     self.logger = sandesh_logger
     ProcessStat.__init__(self, pname)
     (self.group, self.name) = self.get_vrouter_process_info(pname)
 def __init__(self, pname, host_ip, sandesh_logger, hostname=None):
     self.logger = sandesh_logger
     self.host_ip = host_ip
     self.hostname = hostname
     ProcessStat.__init__(self, pname, self.host_ip, hostname=self.hostname)
     (self.group, self.name) = self.get_vrouter_process_info(pname)
 def __init__(self, pname, sandesh_logger):
     self.logger = sandesh_logger
     ProcessStat.__init__(self, pname)
     (self.group, self.name) = self.get_vrouter_process_info(pname)
 def __init__(self, pname):
     ProcessStat.__init__(self, pname)
     (self.group, self.name) = self.get_vrouter_process_info(pname)
 def __init__(self, pname):
     ProcessStat.__init__(self, pname)
     (self.group, self.name) = self.get_vrouter_process_info(pname)