from .api import DockerManager from config.settings import DockerConfig from tui.terminal_menu import terminal_menu def docker_manager_menu(): config = DockerConfig() docker_hosts = config.get_docker_hosts_list() docker_hosts.append('Add Docker host') docker_hosts.append('Back to main menu') selected_docker_host = terminal_menu(docker_hosts, "Docker hosts") while selected_docker_host != "Back to main menu": if selected_docker_host == "Add Docker host": host_name = input("Enter Docker host name: ") url = input("Enter Docker host URL: ") port = input("Enter Docker host port: ") config.set_new_docker_host(host_name, url, port) else: docker_host = config.get_docker_host(selected_docker_host) docker_manager = DockerManager(docker_host) docker_menu = [ "List containers", "List images", "Update images", "Back to Docker hosts" ] selected_docker_menu_option = terminal_menu(docker_menu, docker_host) while selected_docker_menu_option != "Back to Docker hosts": if selected_docker_menu_option == "List containers": containers_list = docker_manager.containers.list_containers() for c in containers_list: image = c.attrs['Config']['Image'] print(f"Container ID: {c.id[:12]} - Image: {image}") update_confirm = input("Do you want to update images (y/n): ") if update_confirm.lower() == 'y': for c in containers_list: print(f"Updating container: {c.id[:12]}") image = docker_manager.images.pull_image(c.attrs['Config']['Image']) print(f"Pulled image {image.tags[0]}") print(f"Finished updating {len(containers_list)} images") selected_docker_menu_option = terminal_menu(docker_menu, docker_host) selected_docker_host = terminal_menu(docker_hosts, "Docker hosts")