Commit dda388e6 authored by hardy's avatar hardy

fix and improve log mgt

parent 6897bfc1
...@@ -24,17 +24,24 @@ ...@@ -24,17 +24,24 @@
# #
#--------------------------------------------------------------------- #---------------------------------------------------------------------
#import sys #USAGE:
# log=Log_Mgt(IPAddress,Password,Path)
# log.LogRotation()
import re import re
import subprocess import subprocess
import logging
import math
class Log_Mgt: class Log_Mgt:
def __init__(self,IPAddress,Password,path,filesize): def __init__(self,IPAddress,Password,Path):
self.IPAddress=IPAddress self.IPAddress=IPAddress
self.Password="oaicicd" self.Password=Password
self.path=path self.path=Path
self.filesize=filesize
#-----------------$ #-----------------$
#PRIVATE# Methods$ #PRIVATE# Methods$
...@@ -46,42 +53,49 @@ class Log_Mgt: ...@@ -46,42 +53,49 @@ class Log_Mgt:
COMMAND="df "+ self.path COMMAND="df "+ self.path
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE) ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
result = ssh.stdout.readlines() result = ssh.stdout.readlines()
s=result[1].decode('utf-8').rstrip() s=result[1].decode('utf-8').rstrip()#result[1] is the second line with the results we are looking for
tmp=s.split() tmp=s.split()
return tmp[3] return tmp[3] #return avail space from the line
def __GetOldestFile(self): def __GetOldestFile(self):
HOST=self.IPAddress HOST=self.IPAddress
COMMAND="ls -rtl "+ self.path COMMAND="ls -rtl "+ self.path #-rtl will bring oldest file on top
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE) ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
result = ssh.stdout.readlines() result = ssh.stdout.readlines()
s=result[1].decode('utf-8').rstrip() s=result[1].decode('utf-8').rstrip()
tmp=s.split() tmp=s.split()
return tmp[8] return tmp[8]#return filename from the line
#-----------------$ #-----------------$
#PUBLIC Methods$ #PUBLIC Methods$
#-----------------$ #-----------------$
def AvgSize(self):
HOST=self.IPAddress
COMMAND="ls -rtl "+ self.path
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
total_size=0
for i in range(1,len(result)):
s=result[i].decode('utf-8').rstrip()
tmp=s.split()
total_size+=int(tmp[4]) #get filesize
return math.floor(total_size/(len(result)-1)) #compute average file/artifact size
def LogRotation(self): def LogRotation(self):
avail_space = self.__CheckAvailSpace() avail_space =int(self.__CheckAvailSpace())*1000 #avail space in target folder, initially displayed in Gb
print("Avail Space : " + avail_space + " / Artifact Size : " + self.filesize) avg_size=self.AvgSize() #average size of artifacts in the target folder
if filesize > avail_space: logging.debug("Avail Space : " + str(avail_space) + " / Artifact Avg Size : " + str(avg_size))
if avail_space < 2*avg_size: #reserved space is 2x artifact file ; oldest file will be deleted
oldestfile=self.__GetOldestFile() oldestfile=self.__GetOldestFile()
HOST=self.IPAddress HOST=self.IPAddress
COMMAND="echo " + self.Password + " | sudo -S rm "+ self.path + "/" + oldestfile COMMAND="echo " + self.Password + " | sudo -S rm "+ self.path + "/" + oldestfile
print(COMMAND) logging.debug(COMMAND)
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE) ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
else: else:
print("Still some space left for artifacts storage") logging.debug("Still some space left for artifacts storage")
#if __name__ == "__main__":
# IPAddress=sys.argv[1]
# Password=sys.argv[2]
# path=sys.argv[3]
# filesize=sys.argv[4]
# log=Log_Mgt(IPAddress,Password,path,filesize)
# log.LogRotation()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment