????
Current Path : /usr/lib/python2.6/site-packages/clcommon/ |
Current File : //usr/lib/python2.6/site-packages/clcommon/clfunc.py |
#!/usr/bin/python import sys, subprocess, os, signal, re LVE_FILE = '/proc/lve/list' # GET VERSION from /proc/lve/list def get_lve_version(): try: f = open(LVE_FILE,'r') lines = f.readlines() try: LVE_VERSION = [int(lines[0][0]),'OK'] except IndexError: LVE_VERSION = [None,'clcommon: get_lve_version: Can`t get data from ' + LVE_FILE] if LVE_VERSION[0] > 6: LVE_VERISON = [6,'OK'] except IOError: LVE_VERSION = [None,'clcommon: get_lve_version: Can`t open file ' + LVE_FILE] return LVE_VERSION BYTES_CONVERSION_TABLE = { 'K': 1, 'M': 1024, 'G': 1024 * 1024, 'T': 1024 * 1024 * 1024 } def validate_cpu(val): ''' check that val is a valid CPU limit (0-100 int or speed (% or MHZ\GHZ)) return val if ok a ''' data = str(val) regexp_int = re.compile(r'\d{1,2}0?$') # old cpu limit regexp_speedp = re.compile(r'\d+(?:\.\d+)?%$') # speed % regexp_speedf = re.compile(r'\d+(?:\.\d+)?(mhz|ghz)+$', re.IGNORECASE) # speed freq p1 = regexp_int.match(data) p2 = regexp_speedp.match(data) p3 = regexp_speedf.match(data) if p1 != None or p2 != None or p3 != None: return val return None def validate_int(val, min_val = 0, max_val = sys.maxint): ''' Check that val - is a string number return val as a string ''' try: dig_val = int(val) except ValueError: return None if max_val >= dig_val >= min_val: return val def memory_to_page(val, min_val=0, max_val=sys.maxint): try: suffix = val[-1] if suffix.isdigit(): suffix = 'K' val = val+suffix result = int(float(val[:-1]) * BYTES_CONVERSION_TABLE[suffix.upper()] / 4) if max_val >= result >= min_val: return result except (IndexError, ValueError, KeyError): pass return None def page_to_memory(pages): if pages < 256: # KB return str(pages*4)+'K' if pages < 262144: #MB return str(round(float(pages)*4/1024,2))+'M' return str(round(float(pages)*4/(1024*1024),2))+'G' #GB def reload_processes( item, username ): ps = subprocess.Popen(['/bin/ps','-U',username,'-u',username],stdout=subprocess.PIPE) lines = ps.communicate()[0].split("\n") for row in lines: parts = row.rstrip().split() try: parts[-1].index(item) os.kill( int(parts[0]), signal.SIGHUP ) except (IndexError, ValueError, OSError): continue