crane/crane.py
2022-10-21 12:48:19 -05:00

66 lines
2.5 KiB
Python

import pushover
from json import load
from cclient import *
from clogging import *
from cprocess import *
import time
import datetime
import logging
import requests
class Crn:
def __init__(self):
"""Main object, should be calling functions from qlist.py, qlogging.py and qprocess.py"""
# Open the config. Needs a json file with the data in config.json.example
self.st = datetime.datetime.now()
with open('./config.json') as c:
self.config = load(c)
with open('./containers.json') as cts:
self.containers = load(cts)
self.observed_containers = self.containers.values()
# Create the api object
self.cc = requests
# Create the logging and pushover objects
self.tl = logging
self.po = pushover
# Init config.json
self.use_pushover = self.config["use_pushover"]
self.use_log = self.config["use_log"]
self.po_key = self.config["po_key"]
self.po_token = self.config["po_token"]
self.log_path = self.config["log_path"]
self.log_level = self.config["log_level"]
self.host = self.config["host"]
self.port = self.config["port"]
self.username = self.config["username"]
self.password = self.config["password"]
self.endpoint = self.config["endpoint"]
self.start_containers = self.config["start_containers"]
cont_log(self)
cont_notify(self)
self.t = time
#logging in
try:
self.tl.info('Authenticating.')
self.jwt = c_auth(self.cc, self.host, self.port, self.username, self.password)
self.tl.info('Authenticated successfully.')
self.cont_obj = c_get_containers(self.cc, self.host, self.port, self.jwt, self.endpoint)
self.tl.info('Collected container data.')
self.cont_list = build_cont_list(self.cont_obj, self.observed_containers)
self.tl.info('Building container list.')
self.process_cont_list_response = process_cont_list(self.cont_list, c_start_container, self.cc, self.host, self.port, self.jwt, self.endpoint)
except requests.exceptions.RequestException as e:
self.tl.exception(e)
self.po.send_message(e, title="crane API ERROR")
#Main process block
self.et = datetime.datetime.now()
get_script_runtime(self)
if self.use_pushover:
cont_notify_summary(self)
# Run
if __name__== "__main__":
Crn()