Skip to content
/ summus Public

πŸ₯‡first place on kibhack hackathon | telegram bot for cloud.ru management

License

Notifications You must be signed in to change notification settings

ktp0li/summus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

88 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

summus summus_sbercloud_bot.t.me

summus - ΠΎΡ‚ Π»Π°Ρ‚. высочайний, Π²Π΅Ρ€Ρ…ΠΎΠ²Π½Ρ‹ΠΉ

Π§Ρ‚ΠΎ это?

Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π±ΠΎΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с SberCloud. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ машинами, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ, сСтями, ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ сущностями, прСдоставляСмыми SberCloud.

Установка ΠΈ запуск

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния
  • TOKEN - Ρ‚ΠΎΠΊΠ΅Π½ Telegram Π±ΠΎΡ‚Π°

Docker

docker-compose up

Standalone

pip3 install -r requirements.txt
python3 -m src

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ сСрвисы

  • Elastic Cloud Server
  • Enterprise Management
  • NAT Gateway
  • Virtual Private Cloud
  • Subnet
  • Image Management Service
  • Cloud Eye

Roadmap

  • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ минимального Π±ΠΎΡ‚Π° с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ возмоТностями управлСния рСсурсами:
    • ECS
    • EPS
    • NAT
    • VPC
    • IMS
    • Subnet
    • CEM
  • ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько тСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΡ€ΠΎΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ аспСкты Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΎΡ‚Π°

  • ΠŸΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ Π±ΠΎΡ‚ΠΎΠΌ большС сСрвисов SberCloud
  • Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ систСму Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ
  • Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ user-friendly интСрфСйс (ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ Π²Ρ‹Π±ΠΎΡ€Π° рСсурса ΠΈΠ· ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ)

ВрСбования

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅

  • МоТно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² рСсурсов.
  • МоТно ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ доступных конфигурациях рСсуров.
  • Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° ΠΏΠΎ всСм потрСбляСмым рСсурсам.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сгСнСрированный Ρ‚Π΅Ρ€Ρ€Π°Ρ„ΠΎΡ€ΠΌ-ΠΊΠΎΠ΄ для рСсурса вмСсто создания.
  • Π•ΡΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ рСсурса.

ΠΠ΅Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅

  • Использован SDK.
  • Авторизация с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ контроля ΠΏΡ€Π°Π² доступа ΠΈ грамотная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° отсутствия Ρƒ Π±ΠΎΡ‚Π° ΠΏΡ€Π°Π².
  • НСслоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ сСрвиса.
  • Код ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ тСстами.

ДокумСнтация

Как Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ?

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с запросами ΠΊ SDK Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ aiogram. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ сСрвис (Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Endpoint ΠΈ соотвСтствСнно SDK HuaweiCloud (SDK HuaweiCloud совмСстим с SberCloud). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдлагаСтся Π² SDK, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ SDK ΠΈ Π² ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… модулях, нСслоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ модуля (этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ взаимодСйствуСт с HuaweiCloud)

Π€Π°ΠΉΠ»: src/modules/<MODULE_SHORT_NAME_LOWERCASE>.py

from enum import Enum

from aiogram import F, Router, types
from aiogram.types.callback_query import CallbackQuery
from aiogram.utils.keyboard import InlineKeyboardBuilder, InlineKeyboardMarkup
from aiogram.filters.callback_data import CallbackData
from aiogram.filters.state import StatesGroup, State
from aiogram.fsm.context import FSMContext

from src.module import Module
from src.utils import add_exit_button


# ОбъявлСниС модуля
<MODULE_SHORT_NAME> = Module(
    name='<MODULE_PRETTY_NAME>',
    router=Router(name='<MODULE_SHORT_NAME>')
)

# Бписок дСйствий модуля
class Action(str, Enum):
    CREATE = 'create'
    LIST = 'list'
    SHOW = 'show'
    <CUSTOM_ACTION> = '<CUSTOM_PRETTY_ACTION>'

class <MODULE_SHORT_NAME>Callback(CallbackData, prefix='<MODULE_SHORT_NAME>'):
    action: Action

def keyboard() -> InlineKeyboardMarkup:
    builder = InlineKeyboardBuilder()

    for action in Action:
        builder.button(
            text=action.value.title(),
            callback_data=<MODULE_SHORT_NAME>Callback(action=action.value),
        )

    add_exit_button(builder)
    builder.adjust(2)

    return builder.as_markup()

# ДСйствиС модуля
@<MODULE_SHORT_NAME>.router.callback_query(<MODULE_SHORT_NAME>Callback.filter(F.action == Action.<CUSTOM_ACTION>))
async def CUSTOM_ACTION(call: CallbackQuery, state: FSMContext):
    await call.message.answer('Hello, world!')
    await call.answer()

Π€Π°ΠΉΠ»: src/modules/__init__.py

from .vpc import VPC
from .eps import EPS
from .subnet import SUBNET
from .nat import NAT
from .ecs import ECS
from .<MODULE_SHORT_NAME_LOWERCASE> import <MODULE_SHORT_NAME>

modules = (EPS, VPC, SUBNET, NAT, ECS, <MODULE_SHORT_NAME>)

Π˜Ρ‚ΠΎΠ³:

Screenshot of example module

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ взаимодСйствия с SDK см. Π² src/modules

ВСстированиС

Для тСстирования ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pytest

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния для тСстирования
  • TOKEN - Ρ‚ΠΎΠΊΠ΅Π½ Telegram Π±ΠΎΡ‚Π°
  • AK - Access Key Id
  • SK - Secret Access Key
  • PROJECT_ID
  • ACCOUNT_ID
pytest src/test.py

К ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠ»ΠΈ Ρ€ΡƒΠΊΠΈ

ЛицСнзия

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ лицСнзируСтся ΠΏΠΎΠ΄ GNU GPLv3.

About

πŸ₯‡first place on kibhack hackathon | telegram bot for cloud.ru management

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published