Skip to content

Repository files navigation

Менеджер Виртуальных Машин (Client-Server App)

Это клиент-серверное приложение, реализованное с использованием Python (asyncio, asyncpg) и PostgreSQL. Приложение предназначено для учета виртуальных машин (ВМ), где каждая ВМ имеет уникальный идентификатор, объем выделенной RAM, количество выделенных CPU и один или несколько жестких дисков с уникальными идентификаторами и объемом.

Сервер обрабатывает команды от клиентов (ВМ) и внутренние команды администратора, а данные ВМ сохраняются в базе данных PostgreSQL (без использования ORM, с использованием asyncpg). Клиент-серверное взаимодействие происходит через сокеты (TCP), а авторизация позволяет клиенту управлять только своей виртуальной машиной.


Функциональность

  • Аутентификация ВМ:

    • Команда:
      AUTH <vm_id> <password>
      
    • Пример:
      AUTH vm1 secret
      
    • Клиент (виртуальная машина) должен аутентифицироваться, чтобы получить доступ к своим данным. Если пароль неверен, доступ не предоставляется.
  • Добавление ВМ:

    • Команда:
      ADD_VM <vm_id> <ram> <cpu> disk1:capacity disk2:capacity ...
      
    • Пример:
      ADD_VM vm1 2048 2 disk1:100 disk2:200
      
    • Добавление данных новой виртуальной машины возможно только для авторизованного клиента, и клиент может управлять только своей ВМ (vm_id должен совпадать с тем, который использовался при авторизации).
  • Обновление данных ВМ:

    • Команда:
      UPDATE_VM <ram> <cpu> disk1:capacity disk2:capacity ...
      
    • Пример:
      UPDATE_VM 4096 4 disk1:150 disk3:300
      
    • Позволяет обновить параметры виртуальной машины, если клиент аутентифицирован.
  • Вывод списков:

    • LIST_CONNECTED:
      Выводит список ВМ, подключенных к серверу (на основе in-memory кеша).
    • LIST_AUTHORIZED:
      Выводит список авторизованных ВМ, полученных из базы данных.
    • LIST_ALL:
      Выводит список всех ВМ, когда-либо подключавшихся к серверу.
    • LIST_DISKS:
      Выводит список всех жестких дисков с их параметрами, а также информацию о привязке к ВМ.
  • Выход (Лог-аут):

    • Команда:
      LOGOUT
      
    • Завершает сессию для авторизованного клиента.
  • Внутренние команды сервера:
    Администратор может вводить команды через консоль сервера (например, LIST_CONNECTED, LIST_AUTHORIZED, LIST_ALL, LIST_DISKS, EXIT).


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages