Третий стрим

This commit is contained in:
2024-03-17 21:28:49 +04:00
parent a498a04481
commit 17cd64bdbc
29 changed files with 618 additions and 50 deletions

View File

@ -2,47 +2,42 @@ import subprocess
from aiogram.types import Message, CallbackQuery
from app import views
from app.callbacks.callback_docker import ContainerCallback, ActionCallback
from app.keyboards.docker_keyboards import container_names_keyboard, container_actions_keyboard
from app.utils.text_splitter import split_text
async def get_containers(message: Message):
sub = subprocess.check_output("docker ps -a").decode()
sub = subprocess.check_output("docker ps -a", shell=True).decode()
messages = split_text(sub)
for m in messages:
await message.answer(
text=f"<pre><code>{m}</code></pre>",
parse_mode="HTML",
)
keyboard = container_names_keyboard(sub)
await message.answer(
text=f"<pre><code>{sub}</code></pre>",
parse_mode="HTML",
reply_markup=keyboard.as_markup()
)
await message.answer(text="Выберите контейнер:", reply_markup=keyboard.as_markup())
async def container_actions(call: CallbackQuery):
name = call.data.split("_")[-1]
async def container_actions(callback: CallbackQuery, callback_data: ContainerCallback):
name = callback_data.name
keyboard = container_actions_keyboard(name)
await call.message.answer(
await callback.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"Произошла необъяснимая ошибка"
async def do_container_action(callback: CallbackQuery, callback_data: ActionCallback):
action, name = callback_data.name, callback_data.action
await call.message.answer(
subprocess.run(f"docker {action} {name}", shell=True)
message = views.actions.get(action).format(name)
await callback.message.answer(
text=message,
)