44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
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", 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="Выберите контейнер:", reply_markup=keyboard.as_markup())
|
|
|
|
|
|
async def container_actions(callback: CallbackQuery, callback_data: ContainerCallback):
|
|
name = callback_data.name
|
|
keyboard = container_actions_keyboard(name)
|
|
await callback.message.answer(
|
|
text=f"Выберите действие для контейнера {name}",
|
|
parse_mode="HTML",
|
|
reply_markup=keyboard.as_markup()
|
|
)
|
|
|
|
|
|
async def do_container_action(callback: CallbackQuery, callback_data: ActionCallback):
|
|
action, name = callback_data.name, callback_data.action
|
|
|
|
subprocess.run(f"docker {action} {name}", shell=True)
|
|
message = views.actions.get(action).format(name)
|
|
|
|
await callback.message.answer(
|
|
text=message,
|
|
)
|