44 lines
2.1 KiB
Python
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")
|