import subprocess from aiogram.types import Message, CallbackQuery from app.keyboards.docker_keyboards import container_names_keyboard, container_actions_keyboard async def get_containers(message: Message): sub = subprocess.check_output("docker ps -a").decode() keyboard = container_names_keyboard(sub) await message.answer( text=f"
{sub}
",
parse_mode="HTML",
reply_markup=keyboard.as_markup()
)
async def container_actions(call: CallbackQuery):
name = call.data.split("_")[-1]
keyboard = container_actions_keyboard(name)
await call.message.answer(
text=f"Выберите действие для контейнера {name}",
parse_mode="HTML",
reply_markup=keyboard.as_markup()
)
async def do_container_action(call: CallbackQuery):
_, action, name = call.data.split("_")
match action:
case "start":
subprocess.run(f"docker start {name}")
message = f"Контейнер {name} успешно запущен"
case "stop":
subprocess.run(f"docker stop {name}")
message = f"Контейнер {name} успешно остановлен"
case "restart":
subprocess.run(f"docker restart {name}")
message = f"Контейнер {name} успешно перезапущен"
case "delete":
subprocess.run(f"docker rm -f {name}")
message = f"Контейнер {name} успешно удалён"
case _:
message = f"Произошла необъяснимая ошибка"
await call.message.answer(
text=message,
)