29 lines
850 B
Python
29 lines
850 B
Python
from datetime import datetime
|
|
|
|
from dateutil.tz import gettz
|
|
from marshmallow import pre_load
|
|
|
|
from .._base import SystemBaseSchema
|
|
|
|
|
|
class ProcessBaseSchema(SystemBaseSchema):
|
|
"""
|
|
Base schema for system processes.
|
|
"""
|
|
|
|
@pre_load
|
|
def pre_load(self, data, **_) -> dict:
|
|
if hasattr(data, 'as_dict'):
|
|
data = data.as_dict()
|
|
|
|
started_ts = data.pop('create_time', None)
|
|
if started_ts is not None:
|
|
data['started'] = datetime.fromtimestamp(started_ts).replace(tzinfo=gettz())
|
|
|
|
data['command_line'] = data.pop('cmdline', None)
|
|
data['cpu_percent'] = data.pop('cpu_percent') / 100
|
|
data['current_directory'] = data.pop('cwd', None)
|
|
data['memory_percent'] = data.pop('memory_percent') / 100
|
|
data['parent_pid'] = data.pop('ppid', None)
|
|
return data
|