Развертывание модуля расширения

После реализации модуля расширения Bmc необходимо позаботиться о том, чтобы его можно было развернуть в Docker.

Образ необходим для того, чтобы можно было запустить приложение в docker-compose на стенде.

После того, как приложение будет развернуто можно будет проверить работу системной операции в UI EMS.

Сбор статуса LED

Сборка в docker

Для сборки docker образа создадим в проекте Dockerfile

Подробнее об этом описано здесь:

Dockerfile проекта-примера:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
LABEL ems.bmc.led-state=default
USER app
WORKDIR /app
EXPOSE 8080

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build

WORKDIR /src
COPY ["BmcHandler.csproj", "."]
RUN dotnet restore "./BmcHandler.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "./BmcHandler.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "./BmcHandler.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "BmcHandler.dll"]

Выполним сборку docker образа:

docker build --tag bmc-handler-led ./

Развертывание

В процессе работы система EMS ищет docker сервис с лейблом "ems.bmc.led-state.model" и значением, которое совпадает с названием модели устройства или docker сервис с лейблом "ems.bmc.led-state.vendor" значение которого совпадает с названием производителя устройства.

Если не находит, то ищет сервис с лейблом "ems.bmc.led-state", если не находит, то ищет сервис с лейблом "ems.bmc".

Список лейблов с описанием:

Один на выбор:

  • LABEL ems.bmc.led-state.model
    • Для привязки модуля расширения к операции для конкретной модели устройства.
    • Для этого объявите этот лейбл с названием модели устройства в качестве значения лейбла.
  • LABEL ems.bmc.led-state.vendor
    • Для привязки модуля расширения к операции для производителя устройства.
    • Для этого объявите этот лейбл с названием производителя устройства в качестве значения лейбла.
  • LABEL ems.bmc.led-state
    • Для привязки модуля расширения к операции для всех устройств.
    • Для этого объявите этот лейбл с любым значением.

Дополнительные:

  • LABEL ems.service.secure=default - активация защищенного соединения, в случае использования tls на gRPC сервере.
  • LABEL ems.service.port=8081 - порт, который прослушивает сервер.
  • LABEL ems.grpc-service.healthcheck=81 - порт для проверки доступности сервера.

Лейблы необходимо указывать в Dockerfile проекта.

Для развертывания контейнера в EMS используется Docker-compose, который позволяет настроить межсервисное общение.

Для этого необходимо создать файл docker-compose.yml и определить в нем следующие атрибуты:

networks:
 default:
  # Имя сети, необходимо чтобы контейнеры были в одной сети
  name: 'ems-network'

services:
  # Название вашего сервиса
  bmc-handler-led:
    # Процесс сборки через Dockerfile
    build:
      context: .
      dockerfile: Dockerfile
    ports:
    # Порты для обращения к сервису внешний:внутренний
      - 55555:8080

Для запуска проекта в директории с файлом docker-compose.yml необходимо выполнить команду:

docker compose up --build -d

Убедитесь в том, что контейнер запущен:

docker ps -a | grep 'bmc-handler-led'

Пример вывода:

CONTAINER ID   IMAGE            COMMAND                  CREATED              STATUS              PORTS                    NAMES
122ffc95ec59   project-bmc-handler-led   "dotnet BmcHandler.…"   About a minute ago   Up About a minute   0.0.0.0:55555->8080/tcp   project-bmc-handler-led-1

Проверка в EMS

Развертывание проекта должно происходить на виртуальной машине с работоспособным EMS.

После завершения разработки поместите получившийся проект на стенд и запустите созданный ранее docker-compose.

Для чистоты проверки в UI EMS необходимо остановить Docker-контейнер стандартного модуля расширения по BMC, а именно контейнер ems-bmc-manager-1.

Алгоритм проверки в UI EMS:

  • Авторизоваться в EMS
  • Завести оборудование от производителя Huawei с сетевым интерфейсом по Redfish
  • Зайти в меню "Управление"
  • Найти раздел "BMC" и выбрать пункт "Изменить LED"
  • Нажать на кнопку "Добавить оборудование" и найти созданное устройство
  • Отобразится список устройств со статусом LED

Подробнее можно прочитать в руководстве пользователя

Выключение оборудования

Сборка в docker

Для сборки docker образа создадим в проекте Dockerfile

Подробнее об этом описано здесь:

Dockerfile проекта-примера:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
LABEL ems.bmc.power-off=default
USER app
WORKDIR /app
EXPOSE 8080

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build

WORKDIR /src
COPY ["BmcHandler.csproj", "."]
RUN dotnet restore "./BmcHandler.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "./BmcHandler.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "./BmcHandler.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "BmcHandler.dll"]

Выполним сборку docker образа:

docker build --tag bmc-handler-power-off ./

Развертывание

В процессе работы система EMS ищет docker сервис с лейблом "ems.bmc.power-off.model" и значением, которое совпадает с названием модели устройства или docker сервис с лейблом "ems.bmc.power-off.vendor" значение которого совпадает с названием производителя устройства.

Если не находит, то ищет сервис с лейблом "ems.bmc.power-off", если не находит, то ищет сервис с лейблом "ems.bmc".

Список лейблов с описанием:

Один на выбор:

  • LABEL ems.bmc.power-off.model
    • Для привязки модуля расширения к операции для конкретной модели устройства.
    • Для этого объявите этот лейбл с названием модели устройства в качестве значения лейбла.
  • LABEL ems.bmc.power-off.vendor
    • Для привязки модуля расширения к операции для производителя устройства.
    • Для этого объявите этот лейбл с названием производителя устройства в качестве значения лейбла.
  • LABEL ems.bmc.power-off
    • Для привязки модуля расширения к операции для всех устройств.
    • Для этого объявите этот лейбл с любым значением.

Дополнительные:

  • LABEL ems.service.secure=default - активация защищенного соединения, в случае использования tls на gRPC сервере.
  • LABEL ems.service.port=8081 - порт, который прослушивает сервер.
  • LABEL ems.grpc-service.healthcheck=81 - порт для проверки доступности сервера.

Лейблы необходимо указывать в Dockerfile проекта.

Для развертывания контейнера в EMS используется Docker-compose, который позволяет настроить межсервисное общение.

Для этого необходимо создать файл docker-compose.yml и определить в нем следующие атрибуты:

networks:
 default:
  # Имя сети, необходимо чтобы контейнеры были в одной сети
  name: 'ems-network'

services:
  # Название вашего сервиса
  bmc-handler-power-off:
    # Процесс сборки через Dockerfile
    build:
      context: .
      dockerfile: Dockerfile
    ports:
    # Порты для обращения к сервису внешний:внутренний
      - 44449:8080

Для запуска проекта в директории с файлом docker-compose.yaml необходимо выполнить команду:

docker compose up -d

Убедитесь в том, что контейнер запущен:

docker ps -a | grep 'bmc-handler-power-off'

Пример вывода:

CONTAINER ID   IMAGE                           COMMAND                 CREATED              STATUS              PORTS                    NAMES
122ffc95ec59   project-bmc-handler-power-off   "dotnet BmcHandler.…"   About a minute ago   Up About a minute   0.0.0.0:44449->8080/tcp   project-bmc-handler-power-off-1

Проверка в EMS

Развертывание проекта должно происходить на виртуальной машине с работоспособным EMS.

После завершения разработки поместите получившийся проект на стенд и запустите созданный ранее docker-compose.

Для чистоты проверки в UI EMS необходимо остановить Docker-контейнер стандартного модуля расширения по BMC, а именно контейнер ems-bmc-manager-1.

Алгоритм проверки в UI EMS:

  • Авторизоваться в EMS
  • Завести оборудование от производителя Huawei с сетевым интерфейсом по Redfish
  • Зайти в меню "Управление"
  • Найти раздел "BMC" и выбрать пункт "Выключить"
  • Выбрать заведенное устройство производителя Huawei
  • Нажать кнопку "Запуск" и дождаться завершения процесса

Подробнее можно прочитать в руководстве пользователя

Сбор значения энергопотребления устройства

Сборка в docker

Для сборки docker образа создадим в проекте Dockerfile

Подробнее об этом описано здесь:

Dockerfile проекта-примера:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
LABEL ems.bmc.power-usage=default
USER app
WORKDIR /app
EXPOSE 8080

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build

WORKDIR /src
COPY ["BmcHandler.csproj", "."]
RUN dotnet restore "./BmcHandler.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "./BmcHandler.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "./BmcHandler.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "BmcHandler.dll"]

Выполним сборку docker образа:

docker build --tag bmc-handler-power-usage ./

Развертывание

В процессе работы система EMS ищет docker сервис с лейблом "ems.bmc.power-usage.model" и значением, которое совпадает с названием модели устройства или docker сервис с лейблом "ems.bmc.power-usage.vendor" значение которого совпадает с названием производителя устройства.

Если не находит, то ищет сервис с лейблом "ems.bmc.power-usage", если не находит, то ищет сервис с лейблом "ems.bmc".

Список лейблов с описанием:

Один на выбор:

  • LABEL ems.bmc.power-usage.model
    • Для привязки модуля расширения к операции для конкретной модели устройства.
    • Для этого объявите этот лейбл с названием модели устройства в качестве значения лейбла.
  • LABEL ems.bmc.power-usage.vendor
    • Для привязки модуля расширения к операции для производителя устройства.
    • Для этого объявите этот лейбл с названием производителя устройства в качестве значения лейбла.
  • LABEL ems.bmc.power-usage
    • Для привязки модуля расширения к операции для всех устройств.
    • Для этого объявите этот лейбл с любым значением.

Дополнительные:

  • LABEL ems.service.secure=default - активация защищенного соединения, в случае использования tls на gRPC сервере.
  • LABEL ems.service.port=8081 - порт, который прослушивает сервер.
  • LABEL ems.grpc-service.healthcheck=81 - порт для проверки доступности сервера.

Лейблы необходимо указывать в Dockerfile проекта.

Для развертывания контейнера в EMS используется Docker-compose, который позволяет настроить межсервисное общение.

Для этого необходимо создать файл docker-compose.yml и определить в нем следующие атрибуты:

networks:
 default:
  # Имя сети, необходимо чтобы контейнеры были в одной сети
  name: 'ems-network'

services:
  # Название вашего сервиса
  bmc-handler-power-usage:
    # Процесс сборки через Dockerfile
    build:
      context: .
      dockerfile: Dockerfile
    ports:
    # Порты для обращения к сервису внешний:внутренний
      - 44444:8080

Для запуска проекта в директории с файлом docker-compose.yml необходимо выполнить команду:

docker compose up --build -d

Убедитесь в том, что контейнер запущен:

docker ps -a | grep 'bmc-handler-power-usage'

Пример вывода:

CONTAINER ID   IMAGE            COMMAND                  CREATED              STATUS              PORTS                        NAMES
122ffc95ec59   project-bmc-handler-power-usage   "dotnet BmcHandler.…"   About a minute ago   Up About a minute   0.0.0.0:44444->8080/tcp   project-bmc-handler-power-usage-1

Проверка в EMS

Развертывание проекта должно происходить на виртуальной машине с работоспособным EMS.

После завершения разработки поместите получившийся проект на стенд и запустите созданный ранее docker-compose.

Для чистоты проверки в UI EMS необходимо остановить Docker-контейнер стандартного модуля расширения по BMC, а именно контейнер ems-bmc-manager-1.

Алгоритм проверки в UI EMS:

  • Авторизоваться в EMS
  • Завести оборудование с сетевым интерфейсом по Redfish
  • Зайти в проводник
  • Найти заведенное устройство
  • Открыть карточку устройства
  • На вкладке "Общая информация" -> "Основная информация" в поле "Энергопотребление" будет отображено значение энергопотребления

Подробнее можно прочитать в руководстве пользователя