def query_disk_usage(path): try: disk_usage = psutil.disk_usage(path) except OSError: raise_user_exc(KoenigErrorCode.DISK_PATH_NOT_FOUND) return serialize(disk_usage, koenig_thrift.TDiskUsage)
def __serialize_dict(obj_dict, ttype): if not isinstance(obj_dict, dict): raise_user_exc(KoenigErrorCode.PARAMETER_TYPE_INVALID) func = partial(__serialize, ttype=ttype) return {k: func(obj) for k, obj in obj_dict.iteritems()}
def __serialize_list(obj_list, ttype): if not isinstance(obj_list, (list, tuple)): raise_user_exc(KoenigErrorCode.PARAMETER_TYPE_INVALID) func = partial(__serialize, ttype=ttype) return [func(obj) for obj in obj_list]
def query_net_connections(): try: net_connections = psutil.net_connections() except AccessDenied: raise_user_exc(KoenigErrorCode.ACCESS_DENIED) return serialize(net_connections, koenig_thrift.TNetworkConnections, _list=True)
def query_process_by_pid(pid): try: process = psutil.Process(pid) except AccessDenied: raise_user_exc(KoenigErrorCode.ACCESS_DENIED) except NoSuchProcess: raise_system_exc(KoenigErrorCode.PROCESS_NOT_FOUND) process = __extend_process(process) return serialize(process, koenig_thrift.TProcess)
def query_processes_by_pids(pids): threads = [] for pid in pids: try: process = psutil.Process(pid) except AccessDenied: raise_user_exc(KoenigErrorCode.ACCESS_DENIED) except NoSuchProcess: raise_system_exc(KoenigErrorCode.PROCESS_NOT_FOUND) threads.append(gevent.spawn(__extend_process, process)) gevent.joinall(threads) result = {thread.value.__dict__['pid']: thread.value for thread in threads} return serialize(result, koenig_thrift.TProcess, _map=True)