parent
							
								
									4beadb3643
								
							
						
					
					
						commit
						51c881b801
					
				@ -0,0 +1,82 @@
 | 
				
			||||
"""
 | 
				
			||||
This file contains class and functions that extract data from running processes like top and stores them into a data store of the calling codes choice
 | 
				
			||||
dependencies:
 | 
				
			||||
    - top (on the os)
 | 
				
			||||
@TODO:
 | 
				
			||||
    Test this thing on windows to see if it works
 | 
				
			||||
"""
 | 
				
			||||
import pandas as pd
 | 
				
			||||
import numpy as np
 | 
				
			||||
import subprocess
 | 
				
			||||
import os
 | 
				
			||||
import datetime
 | 
				
			||||
# from transport import factory
 | 
				
			||||
import sys
 | 
				
			||||
import hashlib
 | 
				
			||||
import re
 | 
				
			||||
from io import StringIO
 | 
				
			||||
import importlib as IL
 | 
				
			||||
import importlib.util
 | 
				
			||||
 | 
				
			||||
class plugin :
 | 
				
			||||
    """
 | 
				
			||||
    This is a context specific decorator to be used for generic commands. 
 | 
				
			||||
    This decorator should be placed on parsing functions
 | 
				
			||||
    """
 | 
				
			||||
    def __init__(self,**_args):
 | 
				
			||||
        """
 | 
				
			||||
        :name   name of the plugin
 | 
				
			||||
        :mode   restrict to reader/writer
 | 
				
			||||
        :about  tell what the function is about    
 | 
				
			||||
        """
 | 
				
			||||
        self._cmd = _args['cmd'] 
 | 
				
			||||
        self._alias = _args['alias'] if 'alias' in _args else None
 | 
				
			||||
        
 | 
				
			||||
    def __call__(self,pointer,**kwargs):
 | 
				
			||||
        def wrapper(_args,**kwargs):
 | 
				
			||||
            return pointer(_args,**kwargs)
 | 
				
			||||
        #
 | 
				
			||||
        # @TODO:
 | 
				
			||||
        # add attributes to the wrapper object
 | 
				
			||||
        #
 | 
				
			||||
        # self._name = pointer.__name__ if not self._name else self._name
 | 
				
			||||
        # setattr(wrapper,'context',True)
 | 
				
			||||
        setattr(wrapper,'cmd',self._cmd)
 | 
				
			||||
        setattr(wrapper,'alias',self._alias)
 | 
				
			||||
        
 | 
				
			||||
        return wrapper
 | 
				
			||||
      
 | 
				
			||||
def read(**args) :
 | 
				
			||||
    """
 | 
				
			||||
    This function will perform the actual reads of process informations. 
 | 
				
			||||
    @return {user,pid,start,status, name, args, mem,cpu}
 | 
				
			||||
    """
 | 
				
			||||
    # cmd     = args['cmd'] #"ps -eo pid,user,pmem,pcpu,stat,etime,args|awk 'OFS=\";\" {$1=$1; if($5 > 9) print }'"
 | 
				
			||||
    xchar   = ";"
 | 
				
			||||
    
 | 
				
			||||
    try:
 | 
				
			||||
        _parser = args['parser'] if 'parser' in args else None
 | 
				
			||||
        stream = None
 | 
				
			||||
        if _parser and hasattr(_parser,'cmd'):
 | 
				
			||||
            cmd = getattr(_parser,'cmd')
 | 
				
			||||
            handler = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)			
 | 
				
			||||
            stream = str(handler.communicate()[0]).replace("b'",'')
 | 
				
			||||
            return _parser (stream)
 | 
				
			||||
        return stream
 | 
				
			||||
        #
 | 
				
			||||
        # At this point we need to load the parser or return the output as is
 | 
				
			||||
        # if 'parser' in args :
 | 
				
			||||
        #     _parser = args['parser']
 | 
				
			||||
            
 | 
				
			||||
        #     return _parser(stream)
 | 
				
			||||
        # else:
 | 
				
			||||
        #     return stream
 | 
				
			||||
 | 
				
			||||
    except Exception as e:
 | 
				
			||||
        print (e)
 | 
				
			||||
        pass
 | 
				
			||||
    
 | 
				
			||||
# if __name__ == '__main__' :
 | 
				
			||||
#     #
 | 
				
			||||
#     # Being directly called (external use of the )
 | 
				
			||||
#     print(read())
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue