Развертывание модуля расширения
После реализации модуля расширения Bmc необходимо позаботиться о том, чтобы его можно было развернуть в Docker.
Образ необходим для того, чтобы можно было запустить приложение в docker-compose на стенде.
После того, как приложение будет развернуто можно будет проверить работу системной операции в UI EMS.
Сбор статуса LED
Сборка в docker
Для сборки docker образа создадим в проекте Dockerfile
Подробнее об этом описано здесь:
- https://docs.docker.com/reference/dockerfile/
- https://docs.docker.com/language/dotnet/
- https://learn.microsoft.com/ru-ru/visualstudio/containers/container-build?view=vs-2022
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
Подробнее об этом описано здесь:
- https://docs.docker.com/reference/dockerfile/
- https://docs.docker.com/language/dotnet/
- https://learn.microsoft.com/ru-ru/visualstudio/containers/container-build?view=vs-2022
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
Подробнее об этом описано здесь:
- https://docs.docker.com/reference/dockerfile/
- https://docs.docker.com/language/dotnet/
- https://learn.microsoft.com/ru-ru/visualstudio/containers/container-build?view=vs-2022
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
- Зайти в проводник
- Найти заведенное устройство
- Открыть карточку устройства
- На вкладке "Общая информация" -> "Основная информация" в поле "Энергопотребление" будет отображено значение энергопотребления
Подробнее можно прочитать в руководстве пользователя