From 18a46991b4eddc635f7a9b81df57ac804f37a15c Mon Sep 17 00:00:00 2001 From: lucaspalomodevelop Date: Wed, 13 Dec 2023 21:31:29 +0100 Subject: [PATCH] add files --- DockerDomunicator.py | 19 +++++++++++ main.py | 77 ++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 7 ++++ 3 files changed, 103 insertions(+) create mode 100644 DockerDomunicator.py create mode 100755 main.py create mode 100644 requirements.txt diff --git a/DockerDomunicator.py b/DockerDomunicator.py new file mode 100644 index 0000000..2080974 --- /dev/null +++ b/DockerDomunicator.py @@ -0,0 +1,19 @@ +import docker + + +class DockerDomunicator: + def __init__(self): + self.docker_client = docker.from_env() + + def get_services(self): + return self.docker_client.containers.list() + + def get_service(self, service_name): + return self.docker_client.containers.get(service_name) + + def is_service_running(self, service_name: str): + try: + service = self.get_service(service_name) + return service.status == "running" + except docker.errors.NotFound: + return False diff --git a/main.py b/main.py new file mode 100755 index 0000000..89ad6b2 --- /dev/null +++ b/main.py @@ -0,0 +1,77 @@ +#!/bin/python3 + +import os +import DockerDomunicator as DockerDomunicator + + +VERSION = "0.0.1" +call_dir = "" + +DockerDomunicator = DockerDomunicator.DockerDomunicator() + + +class style: + BLACK = "\033[30m" + RED = "\033[31m" + GREEN = "\033[32m" + YELLOW = "\033[33m" + BLUE = "\033[34m" + MAGENTA = "\033[35m" + CYAN = "\033[36m" + WHITE = "\033[37m" + UNDERLINE = "\033[4m" + RESET = "\033[0m" + + +accepted_dockerfiles = [ + "docker-compose.yml", + "docker-compose.yaml", + "docker-compose.yml.j2", + "docker-compose.yaml.j2", +] + + +def is_valid_service(service): + service_dir = call_dir + "/services/" + service + for dockerfile in accepted_dockerfiles: + if os.path.isfile(service_dir + "/" + dockerfile): + return True + return False + + +def get_services(): + services = [] + services_dir = call_dir + "/services" + for service in os.listdir(services_dir): + # print("Checking service " + service) + if os.path.isdir(services_dir + "/" + service) and is_valid_service(service): + services.append(service) + else: + print( + style.RED + + "Service " + + services_dir + + "/" + + service + + " is not a valid service" + + style.RESET + ) + return services + + +if __name__ == "__main__": + call_dir = os.getcwd() + print("DoOrg v" + VERSION) + print("call dir: " + call_dir) + services = get_services() + print("Services:") + for service in services: + color = ( + style.GREEN if DockerDomunicator.is_service_running(service) else style.RED + ) + print(color + " - " + service + style.RESET) + + print("Docker services:") + docker_services = DockerDomunicator.get_services() + for service in docker_services: + print(" - " + service.name) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..4576bcc --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +certifi==2023.11.17 +charset-normalizer==3.3.2 +docker==7.0.0 +idna==3.6 +packaging==23.2 +requests==2.31.0 +urllib3==2.1.0