Outfleet::log fixing

This commit is contained in:
mmilavkin
2024-03-24 17:58:54 +02:00
parent e818d63cad
commit 9709d2f029
3 changed files with 53 additions and 59 deletions

75
k8s.py
View File

@ -10,50 +10,45 @@ import lib
from kubernetes import client, config as kube_config from kubernetes import client, config as kube_config
from kubernetes.client.rest import ApiException from kubernetes.client.rest import ApiException
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
datefmt="%d-%m-%Y %H:%M:%S",
)
log = logging.getLogger("OutFleet.k8s") log = logging.getLogger("OutFleet.k8s")
file_handler = logging.FileHandler("sync.log")
file_handler.setLevel(logging.DEBUG) NAMESPACE = False
formatter = logging.Formatter( SERVERS = list()
"%(asctime)s - %(name)s - %(levelname)s - %(message)s" CONFIG = None
) V1 = None
file_handler.setFormatter(formatter) K8S_DETECTED = False
log.addHandler(file_handler)
def discovery_servers(): def discovery_servers():
global CONFIG global CONFIG
interval = 60 interval = 60
log = logging.getLogger("OutFleet.discovery") log = logging.getLogger("OutFleet.discovery")
while True: if K8S_DETECTED:
pods = V1.list_namespaced_pod(NAMESPACE, label_selector="app=shadowbox") while True:
log.debug(f"Started discovery thread every {interval}") pods = V1.list_namespaced_pod(NAMESPACE, label_selector="app=shadowbox")
for pod in pods.items: log.debug(f"Started discovery thread every {interval}")
log.debug(f"Found Outline server pod {pod.metadata.name}") for pod in pods.items:
container_log = V1.read_namespaced_pod_log(name=pod.metadata.name, namespace=NAMESPACE, container='manager-config-json') log.debug(f"Found Outline server pod {pod.metadata.name}")
secret = json.loads(container_log.replace('\'', '\"')) container_log = V1.read_namespaced_pod_log(name=pod.metadata.name, namespace=NAMESPACE, container='manager-config-json')
config = lib.get_config() secret = json.loads(container_log.replace('\'', '\"'))
config_servers = find_server(secret, config["servers"]) config = lib.get_config()
#log.info(f"config_servers {config_servers}") config_servers = find_server(secret, config["servers"])
if len(config_servers) > 0: #log.info(f"config_servers {config_servers}")
log.debug(f"Already exist") if len(config_servers) > 0:
pass log.debug(f"Already exist")
else: pass
with lib.lock: else:
config["servers"][str(uuid.uuid4())] = { with lib.lock:
"cert": secret["certSha256"], config["servers"][str(uuid.uuid4())] = {
"name": f"{pod.metadata.name}", "cert": secret["certSha256"],
"comment": f"{pod.spec.node_name}", "name": f"{pod.metadata.name}",
"url": secret["apiUrl"], "comment": f"{pod.spec.node_name}",
} "url": secret["apiUrl"],
write_config(config) }
log.info(f"Added discovered server") write_config(config)
time.sleep(interval) log.info(f"Added discovered server")
time.sleep(interval)
@ -93,10 +88,6 @@ def write_config(config):
) )
log.info("Updated config in Kubernetes ConfigMap [config-outfleet]") log.info("Updated config in Kubernetes ConfigMap [config-outfleet]")
NAMESPACE = False
SERVERS = list()
CONFIG = None
V1 = None
def reload_config(): def reload_config():
global CONFIG global CONFIG
@ -110,6 +101,8 @@ def reload_config():
try: try:
kube_config.load_incluster_config() kube_config.load_incluster_config()
V1 = client.CoreV1Api() V1 = client.CoreV1Api()
if V1 != None:
K8S_DETECTED = True
try: try:
with open("/var/run/secrets/kubernetes.io/serviceaccount/namespace") as f: with open("/var/run/secrets/kubernetes.io/serviceaccount/namespace") as f:
NAMESPACE = f.read().strip() NAMESPACE = f.read().strip()

27
lib.py
View File

@ -99,13 +99,13 @@ class Server:
"keys": self.client.get_keys(), "keys": self.client.get_keys(),
} }
self.log = logging.getLogger(f'OutFleet.server[{self.data["name"]}]') self.log = logging.getLogger(f'OutFleet.server[{self.data["name"]}]')
file_handler = logging.FileHandler("sync.log") # file_handler = logging.FileHandler("sync.log")
file_handler.setLevel(logging.DEBUG) # file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter( # formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s" # "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
) # )
file_handler.setFormatter(formatter) # file_handler.setFormatter(formatter)
self.log.addHandler(file_handler) # self.log.addHandler(file_handler)
def info(self) -> ServerDict: def info(self) -> ServerDict:
return self.data return self.data
@ -114,9 +114,20 @@ class Server:
# Looking for any users with provided name. len(result) != 1 is a problem. # Looking for any users with provided name. len(result) != 1 is a problem.
result = [] result = []
for key in self.client.get_keys(): for key in self.client.get_keys():
if key.key_id == name: if key.name == name:
# self.log.info("NEW RUN")
result.append(name) result.append(name)
self.log.info(f"check_client found client `{name}` config is correct.") self.log.info(f"check_client found client `{name}` config is correct.")
# self.log.info("self.client:")
# self.log.info(self.client)
# self.log.info("key.key_id:")
# self.log.info(key.key_id)
# self.log.info("key:")
# self.log.info(key)
# self.log.info("result:")
# self.log.info(result)
# self.log.info("self.client.get_keys():")
# self.log.info(self.client.get_keys())
if len(result) != 1: if len(result) != 1:
self.log.warning( self.log.warning(
f"check_client found client `{name}` inconsistent. Found {len(result)} keys." f"check_client found client `{name}` inconsistent. Found {len(result)} keys."

10
main.py
View File

@ -24,9 +24,7 @@ logging.basicConfig(
) )
log = logging.getLogger("OutFleet") log = logging.getLogger("OutFleet")
log.setLevel(logging.INFO)
file_handler = logging.FileHandler("sync.log") file_handler = logging.FileHandler("sync.log")
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter( formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s" "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
) )
@ -363,14 +361,6 @@ def sync():
lines=lines, lines=lines,
) )
if request.method == "POST": if request.method == "POST":
log = logging.getLogger("sync")
file_handler = logging.FileHandler("sync.log")
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
file_handler.setFormatter(formatter)
log.addHandler(file_handler)
with lock: with lock:
if request.form.get("wipe") == 'all': if request.form.get("wipe") == 'all':
for server in SERVERS: for server in SERVERS: