diff --git a/k8s.py b/k8s.py index 035fc54..3cd5f79 100755 --- a/k8s.py +++ b/k8s.py @@ -10,50 +10,45 @@ import lib from kubernetes import client, config as kube_config 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") -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) + +NAMESPACE = False +SERVERS = list() +CONFIG = None +V1 = None +K8S_DETECTED = False + def discovery_servers(): global CONFIG interval = 60 log = logging.getLogger("OutFleet.discovery") - while True: - pods = V1.list_namespaced_pod(NAMESPACE, label_selector="app=shadowbox") - log.debug(f"Started discovery thread every {interval}") - for pod in pods.items: - log.debug(f"Found Outline server pod {pod.metadata.name}") - container_log = V1.read_namespaced_pod_log(name=pod.metadata.name, namespace=NAMESPACE, container='manager-config-json') - secret = json.loads(container_log.replace('\'', '\"')) - config = lib.get_config() - config_servers = find_server(secret, config["servers"]) - #log.info(f"config_servers {config_servers}") - if len(config_servers) > 0: - log.debug(f"Already exist") - pass - else: - with lib.lock: - config["servers"][str(uuid.uuid4())] = { - "cert": secret["certSha256"], - "name": f"{pod.metadata.name}", - "comment": f"{pod.spec.node_name}", - "url": secret["apiUrl"], - } - write_config(config) - log.info(f"Added discovered server") - time.sleep(interval) + if K8S_DETECTED: + while True: + pods = V1.list_namespaced_pod(NAMESPACE, label_selector="app=shadowbox") + log.debug(f"Started discovery thread every {interval}") + for pod in pods.items: + log.debug(f"Found Outline server pod {pod.metadata.name}") + container_log = V1.read_namespaced_pod_log(name=pod.metadata.name, namespace=NAMESPACE, container='manager-config-json') + secret = json.loads(container_log.replace('\'', '\"')) + config = lib.get_config() + config_servers = find_server(secret, config["servers"]) + #log.info(f"config_servers {config_servers}") + if len(config_servers) > 0: + log.debug(f"Already exist") + pass + else: + with lib.lock: + config["servers"][str(uuid.uuid4())] = { + "cert": secret["certSha256"], + "name": f"{pod.metadata.name}", + "comment": f"{pod.spec.node_name}", + "url": secret["apiUrl"], + } + write_config(config) + 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]") -NAMESPACE = False -SERVERS = list() -CONFIG = None -V1 = None def reload_config(): global CONFIG @@ -110,6 +101,8 @@ def reload_config(): try: kube_config.load_incluster_config() V1 = client.CoreV1Api() + if V1 != None: + K8S_DETECTED = True try: with open("/var/run/secrets/kubernetes.io/serviceaccount/namespace") as f: NAMESPACE = f.read().strip() diff --git a/lib.py b/lib.py index 1c40580..05c15ac 100755 --- a/lib.py +++ b/lib.py @@ -99,13 +99,13 @@ class Server: "keys": self.client.get_keys(), } self.log = logging.getLogger(f'OutFleet.server[{self.data["name"]}]') - 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) - self.log.addHandler(file_handler) + # 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) + # self.log.addHandler(file_handler) def info(self) -> ServerDict: return self.data @@ -114,9 +114,20 @@ class Server: # Looking for any users with provided name. len(result) != 1 is a problem. result = [] for key in self.client.get_keys(): - if key.key_id == name: + if key.name == name: + # self.log.info("NEW RUN") result.append(name) 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: self.log.warning( f"check_client found client `{name}` inconsistent. Found {len(result)} keys." diff --git a/main.py b/main.py index e94282a..293e654 100755 --- a/main.py +++ b/main.py @@ -24,9 +24,7 @@ logging.basicConfig( ) log = logging.getLogger("OutFleet") -log.setLevel(logging.INFO) file_handler = logging.FileHandler("sync.log") -file_handler.setLevel(logging.DEBUG) formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) @@ -363,14 +361,6 @@ def sync(): lines=lines, ) 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: if request.form.get("wipe") == 'all': for server in SERVERS: