mirror of
https://github.com/ThomasGsp/HyperProxmox.git
synced 2025-03-09 15:40:18 +00:00
Many syntaxfix and debug
This commit is contained in:
parent
0decff9b76
commit
d8be9643bb
6 changed files with 60 additions and 43 deletions
|
@ -43,7 +43,7 @@ class General_Search:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
@ -55,27 +55,24 @@ class QueryCache_Infra:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
||||
class QueryDates:
|
||||
def GET(self, keytype):
|
||||
try:
|
||||
result = core.getkey(keytype)
|
||||
except BaseException as e:
|
||||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
||||
class Static_Nodes:
|
||||
def GET(self, date, cluster=None, node=None):
|
||||
if node and cluster:
|
||||
return core.generalsearch('{ "date": {0}, "cluster": {1}, "node": {2} }'.format(date, cluster, node))
|
||||
elif cluster:
|
||||
return core.generalsearch('{ "date": {0}, "cluster": {1} }'.format(date, cluster))
|
||||
else:
|
||||
return core.generalsearch('{ "date": {0}}'.format(date))
|
||||
|
||||
|
||||
class Dates:
|
||||
def GET(self):
|
||||
return core.generalsearch('{ "_id": {id} }'.format(id=nodeid))
|
||||
|
||||
|
||||
""" CLASS DIRECT """
|
||||
class Cluster:
|
||||
|
@ -89,7 +86,7 @@ class Cluster:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
@ -101,7 +98,7 @@ class Cluster:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
@ -113,7 +110,7 @@ class Cluster:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
@ -124,7 +121,7 @@ class Cluster:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
@ -191,7 +188,7 @@ class Instance:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
@ -203,7 +200,7 @@ class Instance:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
@ -214,7 +211,7 @@ class Instance:
|
|||
result = {
|
||||
"result": "ERROR",
|
||||
"type": "PYTHON - API",
|
||||
"value": "{0} {1}".format("Invalid request:", e)
|
||||
"value": "Invalid request: {0}".format(e)
|
||||
}
|
||||
return result
|
||||
|
||||
|
|
|
@ -41,10 +41,13 @@ class Core:
|
|||
|
||||
""" LOAD REDIS """
|
||||
self.redis_msg = Redis_wrapper(generalconf["redis"]["ip"],
|
||||
generalconf["redis"]["port"], 0).connect()
|
||||
generalconf["redis"]["port"], 0)
|
||||
|
||||
self.redis_cache = Redis_wrapper(generalconf["redis"]["ip"],
|
||||
generalconf["redis"]["port"], 3).connect()
|
||||
generalconf["redis"]["port"], 3)
|
||||
|
||||
self.redis_msg.connect()
|
||||
self.redis_cache.connect()
|
||||
|
||||
if self.mongo.client and self.redis_msg:
|
||||
self.mongo.db = self.mongo.client.db
|
||||
|
@ -87,13 +90,21 @@ class Core:
|
|||
except:
|
||||
return json_decode({"value": "Bad request"})
|
||||
|
||||
def getkey(self, keytype):
|
||||
if keytype == "all":
|
||||
return self.mongo.get_all_datekey()
|
||||
elif keytype == "last":
|
||||
return self.mongo.get_last_datekey()
|
||||
|
||||
|
||||
|
||||
def generalquerycacheinfra(self, dest, date, cluster=None, node=None, vmid=None):
|
||||
|
||||
""" Test Redis Cache """
|
||||
hash_object = hashlib.md5(b"{0}-{1}-{2}-{3}-{4}".format(dest, date, cluster, node, vmid))
|
||||
hash_object = hashlib.md5("{0}-{1}-{2}-{3}-{4}".format(dest, date, cluster, node, vmid).encode('utf-8'))
|
||||
hash_hex = hash_object.hexdigest()
|
||||
|
||||
cache = self.redis_cache.get_message(hash_hex)
|
||||
cache = None # self.redis_cache.get_message(hash_hex)
|
||||
|
||||
if cache is None:
|
||||
if dest == "instances":
|
||||
|
|
|
@ -86,13 +86,14 @@ class Analyse:
|
|||
clusters_status = proxmox.get_clusters("{0}:{1}".format(cluster["url"], int(cluster["port"])))
|
||||
clusters_status["date"] = int(insert_time)
|
||||
clusters_status["cluster"] = cluster["name"]
|
||||
self.mongo.insert_clusters(instance)
|
||||
self.mongo.insert_clusters(clusters_status)
|
||||
|
||||
""" UPDATE NODES LIST """
|
||||
nodes_list = proxmox.get_nodes("{0}:{1}".format(cluster["url"], int(cluster["port"])))
|
||||
if nodes_list["result"] == "OK":
|
||||
for value_nodes_list in nodes_list["value"]["data"]:
|
||||
# if value_nodes_list["node"] not in exclude_nodes:
|
||||
list_instances = {}
|
||||
""" TOTAL COUNT CPU and RAM allocate """
|
||||
if (instancetype == "all"):
|
||||
types = ["lxc", "qemu"] # vz...
|
||||
|
@ -114,15 +115,16 @@ class Analyse:
|
|||
#############
|
||||
"""
|
||||
for key_list_instances, value_list_instances in list_instances.items():
|
||||
for instances in value_list_instances:
|
||||
for instance in value_list_instances:
|
||||
""" Update cpu and ram for node """
|
||||
totalcpu = totalcpu + instances["cpus"]
|
||||
totalram = totalram + instances["maxmem"]
|
||||
totalcpu = totalcpu + instance["cpus"]
|
||||
totalram = totalram + instance["maxmem"]
|
||||
|
||||
""" Update instance list """
|
||||
instance["cluster"] = cluster["name"]
|
||||
instance["node"] = value_nodes_list["node"]
|
||||
instance["date"] = int(insert_time)
|
||||
instance["type"] = "" # a revoir
|
||||
self.mongo.insert_instances(instance)
|
||||
|
||||
"""
|
||||
|
@ -162,16 +164,17 @@ class Analyse:
|
|||
"""
|
||||
storages_list = proxmox.get_storages("{0}:{1}".format(cluster["url"], int(cluster["port"])),
|
||||
value_nodes_list["node"])
|
||||
for storage in storages_list:
|
||||
|
||||
for storage in storages_list["value"]["data"]:
|
||||
storage["node"] = value_nodes_list["node"]
|
||||
storage["date"] = int(insert_time)
|
||||
storage["cluster"] = cluster["name"]
|
||||
|
||||
self.mongo.insert_storages(storage)
|
||||
disks_list = proxmox.get_storages("{0}:{1}".format(cluster["url"], int(cluster["port"])),
|
||||
disks_list = proxmox.get_disks("{0}:{1}".format(cluster["url"], int(cluster["port"])),
|
||||
value_nodes_list["node"], storage["storage"])
|
||||
|
||||
for disk in disks_list:
|
||||
for disk in disks_list["value"]["data"]:
|
||||
disk["storage"] = storage["storage"]
|
||||
disk["node"] = value_nodes_list["node"]
|
||||
disk["date"] = int(insert_time)
|
||||
|
|
|
@ -98,14 +98,14 @@ class MongoDB:
|
|||
result = {
|
||||
"result": "OK",
|
||||
"value": json.loads(
|
||||
dumps(self.db[self.collection_clusters].find({'date': date, 'grata': str(grata)})))
|
||||
dumps(self.db[self.collection_clusters].find({'date': int(date)})))
|
||||
}
|
||||
else:
|
||||
result = {
|
||||
"result": "OK",
|
||||
"value": json.loads(
|
||||
dumps(self.db[self.collection_clusters].find_one(
|
||||
{'$and': [{'date': date, 'cluster': cluster}]})))
|
||||
{'$and': [{'date': int(date), 'cluster': cluster}]})))
|
||||
}
|
||||
|
||||
except BaseException as serr:
|
||||
|
@ -205,12 +205,17 @@ class MongoDB:
|
|||
return self.db[self.collection_datekey].insert({'date': int(date), 'status': status})
|
||||
|
||||
def update_datekey(self, date, status):
|
||||
self.db[self.collection_datekey].update({'date': date}, {'$set': {'status': status}}, upsert=False)
|
||||
self.db[self.collection_datekey].update({'date': int(date)}, {'$set': {'status': status}}, upsert=False)
|
||||
|
||||
def get_last_datekey(self):
|
||||
last_id = self.db[self.collection_datekey].find({'status': 'OK'}).sort("date", -1).limit(1)
|
||||
last_id = self.db[self.collection_datekey].find({'status': 'OK'}, {"date": 1, "_id": 0}).sort("date", -1)
|
||||
return {"value": int(json.loads(dumps(last_id))[0]['date'])}
|
||||
|
||||
def get_all_datekey(self):
|
||||
keylist = self.db[self.collection_datekey].find({'status': 'OK'},
|
||||
{"date": 1, "_id": 0}).sort("date", -1)
|
||||
return {"value": json.loads(dumps(keylist))}
|
||||
|
||||
""" NODES MANAGEMENT"""
|
||||
def insert_nodes(self, data):
|
||||
try:
|
||||
|
@ -225,21 +230,22 @@ class MongoDB:
|
|||
"result": "OK",
|
||||
"value": json.loads(
|
||||
dumps(self.db[self.collection_nodes].find(
|
||||
{'$and': [{'date': date, 'grata': str(grata)}]})))
|
||||
{'date': int(date)})))
|
||||
}
|
||||
|
||||
elif not node:
|
||||
result = {
|
||||
"result": "OK",
|
||||
"value": json.loads(
|
||||
dumps(self.db[self.collection_nodes].find(
|
||||
{'$and': [{'date': date, 'cluster': cluster, 'grata': str(grata)}]})))
|
||||
{'$and': [{'date': int(date), 'cluster': cluster}]})))
|
||||
}
|
||||
else:
|
||||
result = {
|
||||
"result": "OK",
|
||||
"value": json.loads(
|
||||
dumps(self.db[self.collection_nodes].find_one(
|
||||
{'$and': [{'date': date, 'cluster': cluster, 'node': node, 'grata': str(grata)}]})))
|
||||
{'$and': [{'date': int(date), 'cluster': cluster, 'node': node}]})))
|
||||
}
|
||||
|
||||
except BaseException as serr:
|
||||
|
|
|
@ -104,7 +104,7 @@ class Proxmox:
|
|||
Get Nodes from cluster
|
||||
:param url: Generic node url (node = physical hypervisor)
|
||||
"""
|
||||
request = "https://{0}/api2/json/clusters/status".format(url)
|
||||
request = "https://{0}/api2/json/cluster/status".format(url)
|
||||
try:
|
||||
nodes = self.nodes = self.socket.get(request,
|
||||
cookies=self.PVEAuthCookie,
|
||||
|
|
|
@ -122,7 +122,7 @@ if __name__ == "__main__":
|
|||
'/api/v1/static/(clusters)/([0-9]+)/', 'QueryCache_Infra',
|
||||
|
||||
# date
|
||||
'/api/v1/static/dates/', 'QueryCache_Dates',
|
||||
'/api/v1/static/dates/(all|last)', 'QueryDates',
|
||||
|
||||
# mongoid
|
||||
'/api/v1/static/(instances|nodes|clusters|storages|disks)/id/([a-z0-9]+)', 'General_Search',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue