1
0
Fork 0
mirror of https://github.com/ThomasGsp/HyperProxmox.git synced 2025-03-09 15:40:18 +00:00

fix logger issues

This commit is contained in:
Tlams 2018-04-27 16:24:31 +01:00
parent b95ca02485
commit ed48b3227a
4 changed files with 83 additions and 29 deletions

View file

@ -217,7 +217,7 @@ class Instance:
class ThreadAPI(threading.Thread):
#def __init__(self, threadid, name, urls, c, g, r):
def __init__(self, threadid, name, urls, c, g):
def __init__(self, threadid, name, urls, c, g, logger):
""" Pass Global var in this theard."""
global core, generalconf, redis_msg
core = c

View file

@ -18,28 +18,32 @@ import time
import base64
import hashlib
def RunAnalyse(clusters_conf, generalconf, delay=300):
play = Analyse(clusters_conf, generalconf)
def RunAnalyse(clusters_conf, generalconf, logger):
play = Analyse(clusters_conf, generalconf, logger)
while True:
""" Instances types availables: lxc/qemu/all"""
play.run("all")
time.sleep(int(delay))
time.sleep(int(generalconf["analyst"]["walker"]))
class Core:
# def __init__(self, generalconf, Lredis):
def __init__(self, generalconf):
def __init__(self, generalconf, logger):
self.generalconf = generalconf
self.logger = logger
self.logger.write({"thread":threading.get_ident() ,"result": "INFO", "type": "HYPERPROXMOX",
"value": "Start Core process"})
""" LOAD MONGODB """
self.logger.write({"thread": threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX",
"value": "MongoDB connection"})
self.mongo = MongoDB(generalconf["mongodb"]["ip"])
self.mongo.client = self.mongo.connect()
""" LOAD REDIS """
self.logger.write({"thread": threading.get_ident(),"result": "INFO", "type": "HYPERPROXMOX",
"value": "Redis connection"})
self.redis_msg = Redis_wrapper(generalconf["redis"]["ip"],
generalconf["redis"]["port"], 0)
@ -62,13 +66,14 @@ class Core:
self.clusters_conf = self.mongo.get_clusters_conf()["value"]
""" Clean previous lockers """
self.logger.write({"thread": threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX",
"value": "Clean Locker"})
locker = Locker()
locker.unlock(generalconf["analyst"]["walker_lock"], "startup")
thc = threading.Thread(name="Update statistics",
target=RunAnalyse,
args=(self.clusters_conf, self.generalconf,
generalconf["analyst"]["walker"]))
args=(self.clusters_conf, self.generalconf, self.logger))
thc.start()
else:
exit(1)
@ -454,6 +459,48 @@ class Core:
clusters_delete = self.mongo.delete_clusters_conf(cluster)
return clusters_delete
"""
#######################
# DATA MANAGEMENT #
#######################
"""
def managedata(self, json):
if json["action"] == "purge":
if json["type"] == "strict":
listdate = self.mongo.get_all_datekey()
if json["date"] in listdate:
for date in listdate:
if date <= json["date"]:
for instance in self.mongo.get_instances(date):
self.mongo.deletedata("instances", instance["_id"])
for node in self.mongo.get_nodes(date):
self.mongo.deletedata("nodes", node["_id"])
for storage in self.mongo.get_storages(date):
self.mongo.deletedata("storages", storage["_id"])
for disk in self.mongo.get_disks(date):
self.mongo.deletedata("disks", disk["_id"])
else:
purge = {
"value": "This date is not available",
"result": "WARNING",
"type": "HYPERPROXMOX"
}
elif json["type"] == "sequencial":
purge = {
"value": "Not implemented",
"result": "WARNING",
"type": "HYPERPROXMOX"
}
else:
purge = {
"value": "Unknown purging type",
"result": "WARNING",
"type": "HYPERPROXMOX"
}
return purge
"""
#######################

View file

@ -46,11 +46,8 @@ walker: 300
walker_lock: /tmp/hyperproxmoxwalker.lock
[logger]
; Active or not(True/False - Case sensitive !)
debug = False
; debug level 1: "INFO", 2: "WARNING", 3: "ERROR", 4: "CRITICAL", 5: "DEBUG"
logs_level = 1
; logs level 1: "INFO", 2: "WARNING", 3: "ERROR", 4: "CRITICAL", 5: "DEBUG"
logs_level = 5
; Limit IO write, if debug level is active, this value is overwrite to 0
bulk_write = 1

View file

@ -16,17 +16,24 @@ import getpass
import os
import stat
import urllib3
global passhash
import argparse
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
if __name__ == "__main__":
""" Arg parse"""
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("-a", "--api", action="store_true", help="Start only")
args = parser.parse_args()
""" Read conf """
localconf = configparser.ConfigParser()
localconf.read('private/conf/config')
generalconf = {
"logger": {"debug": localconf['logger']['debug'], "logs_level": localconf['logger']['logs_level'],
"logger": {"logs_level": localconf['logger']['logs_level'],
"logs_dir": localconf['logger']['logs_dir'], "bulk_write": localconf['logger']['bulk_write'],
"bulk_size": localconf['logger']['bulk_size']},
@ -42,8 +49,8 @@ if __name__ == "__main__":
""" Active logger"""
logger = Logger(generalconf["logger"])
logger.write({"result": "INFO", "type": "HYPERPROXMOX", "value": "Start logger"})
logger.write({"result": "INFO", "type": "HYPERPROXMOX", "value": ">>>>>>> -- NEW STARTUP -- <<<<<<<"})
logger.write({"thread":threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX", "value": "Start logger"})
logger.write({"thread":threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX", "value": ">>>>>>> -- NEW STARTUP -- <<<<<<<"})
CritConf = CryticalData()
""" Step One: test private key or create it """
@ -56,7 +63,7 @@ if __name__ == "__main__":
print("This action can take some minutes, please wait.")
gen = CritConf.generate_key(localconf['system']['key_pvt'], localconf['system']['key_pub'], passhash)
if gen['result'] == "OK":
logger.write({"result": "INFO", "type": "HYPERPROXMOX", "value": "Key generated in {0}".format(localconf['system']['key_pvt'])})
logger.write({"thread":threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX", "value": "Key generated in {0}".format(localconf['system']['key_pvt'])})
print("Your new key has been generate ! "
"\n - Private Key: {0} "
"\n - Public Key: {1}"
@ -66,7 +73,7 @@ if __name__ == "__main__":
key_pvt = CritConf.read_private_key(localconf['system']['key_pvt'], passhash)
else:
print(gen['Error'])
logger.write({"result": "ERROR", "type": "HYPERPROXMOX", "value": "Your key is not create due to an error: {0}".format(gen['value'])})
logger.write({"thread":threading.get_ident(), "result": "ERROR", "type": "HYPERPROXMOX", "value": "Your key is not create due to an error: {0}".format(gen['value'])})
exit(1)
""" Test valid right for your private Key """
@ -76,7 +83,7 @@ if __name__ == "__main__":
format(oct(stat.S_IMODE(os.stat(localconf['system']['key_pvt']).st_mode))))
os.chmod(localconf['system']['key_pvt'], 0o600)
print("Auto correction... done !")
logger.write({"result": "INFO", "type": "HYPERPROXMOX", "value": "Setting chmod on your key.."})
logger.write({"thread":threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX", "value": "Setting chmod on your key.."})
""" Step two"""
if 'passhash' not in vars():
@ -85,10 +92,10 @@ if __name__ == "__main__":
if key_pvt['result'] != "OK":
print("{0}: {1} "
"\nPlease verify your passphrase".format(key_pvt['type'], key_pvt['value']))
logger.write({"result": "WARNING", "type": "HYPERPROXMOX", "value": "Bad passphrase, try again."})
logger.write({"thread":threading.get_ident(), "result": "WARNING", "type": "HYPERPROXMOX", "value": "Bad passphrase, try again."})
exit(1)
logger.write({"result": "INFO", "type": "HYPERPROXMOX", "value": "Loading keys in memory"})
logger.write({"thread":threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX", "value": "Loading keys in memory"})
key_pub = CritConf.read_public_key(localconf['system']['key_pub'])
generalconf["keys"] = {"key_pvt": key_pvt["value"], "key_pub": key_pub["value"]}
@ -103,13 +110,16 @@ if __name__ == "__main__":
'/api/v1/instance/id/([a-z0-9]+)/status/(start|stop|current|reset|shutdown)', 'Instance',
# AUTH
'/api/v1/login', 'Login'
# '/api/v1/login', 'Login'
# MANAGEMENT CLUSTER
'/api/v1/administration/cluster/(?:[0-9a-zA-Z\_\-]+)', 'Cluster',
'/api/v1/administration/cluster/', 'Cluster',
# '/api/v1/administration/cluster/new', 'Cluster',
# PURGE SYSTEM
'/api/v1/administration/purge/([a-z0-9]+)', 'Purge',
# CACHE DATA (MONGO)
# date/cluster/node/vmid
# Disks mapping
@ -147,10 +157,10 @@ if __name__ == "__main__":
)
""" Init Core thread """
logger.write({"result": "INFO", "type": "HYPERPROXMOX", "value": "Init Core thread"})
core = Core(generalconf)
logger.write({"thread":threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX", "value": "Init Core thread"})
core = Core(generalconf, logger)
""" Init API thread """
logger.write({"result": "INFO", "type": "HYPERPROXMOX", "value": "Init API thread"})
api_th = ThreadAPI(1, "ThreadAPI", urls, core, generalconf)
logger.write({"thread":threading.get_ident(), "result": "INFO", "type": "HYPERPROXMOX", "value": "Init API thread"})
api_th = ThreadAPI(1, "ThreadAPI", urls, core, generalconf, logger)
api_th.start()