Natalie/docker_api/docker_manager.py
2024-11-24 10:28:21 +03:30

44 lines
2.1 KiB
Python

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")