Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Enjoy members-only rewards and discounts
  • Create and access a list of your products
  • Manage your Dell EMC sites, products, and product-level contacts using Company Administration.

Изучение WSMAN за пределами перечисления

Summary: Решения Dell для ОС и приложений на портале Dell TechCenter — Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu и многое другое

This article may have been automatically translated. If you have any feedback regarding its quality, please let us know using the form at the bottom of this page.

Article Content


Symptoms

WSMAN — выбранный API управления для Dell iDRAC, и в настоящее время предпринимаются значительные усилия, чтобы сделать удаленное управление системами максимально комплексным и простым. Недавно я потратил некоторое время на изучение протокола WSMAN, чтобы внедрить подключаемый модуль, а после первоначального действия перечисления wsman протокол WSMAN становится довольно сложным. Нет простых документов/примеров, как вызвать действия get/put/create/delete и пользовательские действия с помощью свойств правой кнопки.  Основным источником этой информации является спецификация WSMAN от компании DMTF и спецификация связывания WSMAN-CIM, слишком объемные, чтобы им следовать. Повторю, большая часть содержимого этой статьи взята из документов спецификации DMTF. Это попытка сделать эту информацию простой для ознакомления, с добавлением нескольких примеров (в Linux).

 Технический документ о том, как начать работу с SFCB и openwsman уже опубликован на сайте https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Если вы еще не пользовались WSMAN/SFCB, то файл PDF будет лучшей отправной точкой, чем эта статья. Как и в приведенном выше техническом документе, в этой статье мы в первую очередь рассматриваем openwsman и SFCB CIMOM.

 У нас есть сервер WSMAN, можно ли вывести список всех компонентов, управляемых API wsman? Большинство серверов WSMAN обмениваются данными с CIMOM на внутреннем сервере и предоставляют доступ к функциям управления CIMOM. То есть возможности управления сервера WSMAN зависят от поставщиков CIM, зарегистрированных в CIMOM на внутреннем сервере. В CIMOM есть внутренняя функция EnumerateClassNames, которую можно вызвать для вывода списка всех классов, зарегистрированных в CIMOM.

Cause

Поскольку в спецификации WSMAN не существует сопоставления «один к одному» для EnumerateClassNames, этот метод вызывается как любая другая пользовательская функция в WSMAN. Обратите внимание, что это зависит от реализации и применимо к реализации wsmancli. Процесс может отличаться или быть обновлен в будущих выпусках.

Resolution

Внутренняя функция CIMOM EnumerateClassNames может быть вызвана следующим образом с помощью wsmancli.
wsman invoke -a EnumerateClassNames --hostname=test_host --port=5985 --username=abc --password=password http://schemas.openwsman.org/wbem/wscim/1/instrinsic  --namespace=root/cimv2
   
 <s:Body>

    <n1:EnumerateClassNames>

      <n1:name>root/cimv2:CIM_Service</n1:name>

      <n1:name>root/cimv2:Syslog_RecordInLog</n1:name>

      <n1:name>root/cimv2:Linux_SambaValidUsersForShare</n1:name>

       <n1:name>root/cimv2:Linux_BaseBoard</n1:name>

      <n1:name>root/cimv2:Linux_SambaForceUserForShare</n1:name>

      <n1:name>root/cimv2:Linux_Processor</n1:name>

      <n1:name>root/cimv2:CIM_RecordForLog</n1:name>

      <n1:name>root/cimv2:Linux_SambaShareForService</n1:name>

      <n1:name>root/cimv2:Linux_SambaServiceConfigurationForService</n1:name>

      <n1:name>root/cimv2:Linux_SambaHostsForService</n1:name>

      <n1:name>root/cimv2:Linux_SambaForceUserForGlobal</n1:name>

      <n1:name>root/cimv2:CIM_OSProcess</n1:name>

      <n1:name>root/cimv2:CIM_RunningOS</n1:name>...................
 
Результат будет выглядеть, как показано выше, указывая, что в пространстве имен root/cimv2 Linux_Processor является одним из зарегистрированных классов. Существует ряд классов CIM, унаследованных при регистрации новых классов в пространстве имен root/cimv2, и указанная выше команда также перечислит все эти имена классов. Как правило, можно игнорировать все классы с префиксом CIM_. Все классы с префиксом Linux_ являются классами, зарегистрированными поставщиками, установленными в системе Linux. При работе с iDRAC от Dell вас в основном интересуют классы с префиксом DCIM_.

 Теперь, когда у вас есть список всех имен классов, вы можете использовать внутреннюю функцию getClass для извлечения определения класса Linux_Processor следующим образом.
wsman invoke -a GetClass --hostname=test_host --port=5985 --username=abc --password=password http://schemas.openwsman.org/wbem/wscim/1/intrinsic/Linux_Processor  --namespace=root/cimv2
 
 После выполнения приведенной выше команды вы получите список всех свойств, локально определенных в Linux_Processor. Это означает, что любые свойства, унаследованные от других классов CIM_*, не включены в текущую реализацию. Как правило, из определения класса можно понять, какие методы определены в классе, какие параметры необходимо передать этим методам, какие свойства класса являются ключевыми и т. д. Однако, поскольку указанная выше команда возвращает только локальные свойства, невозможно определить ключевые свойства класса. В настоящее время это ограничение реализации в wsmancli.

Таким образом, хотя функция GetClass является хорошей отправной точкой, ее вывода недостаточно для определения свойств класса, которые могут быть использованы в качестве ключевых свойств, чтобы можно было вызвать действие get/put/create или пользовательское действие. Какие еще методики можно использовать для этого? В этом случае могут помочь EPR.


EPR (ссылка на конечную точку) — это указатель на экземпляр с двумя фрагментами информации: ResourceURI и Selector Set. ResourceURI содержит имя класса, из которого создается экземпляр, а Selector Set выводит список свойств, с помощью которых экземпляр может быть однозначно идентифицирован. EPR определенного класса можно перечислить с помощью команды, аналогичной следующей:
wsman enumerate -M epr  http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor -h test_host-P 5985 -u abc -p password -O out

 <?xml version="1.0" encoding="UTF-8"?>

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration" xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">

  <s:Header>

    <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>

    <wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/PullResponse</wsa:Action>

    <wsa:RelatesTo>uuid:ca52c9e9-cd47-1d47-8003-a52924d9bed4</wsa:RelatesTo>

    <wsa:MessageID>uuid:ca622bb3-cd47-1d47-8097-a52924d9bed4</wsa:MessageID>

  </s:Header>

  <s:Body>

    <wsen:PullResponse>

      <wsen:EnumerationContext>ca4fdd21-cd47-1d47-8095-a52924d9bed4</wsen:EnumerationContext>

      <wsen:Items>

        <wsa:EndpointReference>

          <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

          <wsa:ReferenceParameters>

            <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor</wsman:ResourceURI>

            <wsman:SelectorSet>

              <wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>

              <wsman:Selector Name="SystemCreationClassName">Linux_ComputerSystem</wsman:Selector>

              <wsman:Selector Name="SystemName">localhost.localdomain</wsman:Selector>

              <wsman:Selector Name="CreationClassName">Linux_Processor</wsman:Selector>

              <wsman:Selector Name="DeviceID">0</wsman:Selector>

            </wsman:SelectorSet>

          </wsa:ReferenceParameters>

        </wsa:EndpointReference>

      </wsen:Items>

    </wsen:PullResponse>

  </s:Body>

</s:Envelope>
 Выше представлены выходные данные только для одного процессора из всех, присутствующих в целевой системе. В выходных данных ResourceURI указан как http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor, а SelectorSet выводит значения __cimnamespace, SystemCreationClassName, SystemName, CreationClassName и DeviceID. Это означает, что из всех свойств класса Linux_Processor (унаследованные и локально определенные) именно эти свойства можно использовать для уникальной идентификации экземпляра.

 Таким образом, можно ожидать действительный ответ от такой команды, как:
wsman get  http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor?SystemCreationClassName="Linux_ComputerSystem",SystemName="localhost.localdomain",CreationClassName="Linux_Processor",DeviceID="3",__cimnamespace="root/cimv2" -h test_host -P 5985 -u abc -p password -O get
 Если в указанном выше запросе используются другие свойства, CIMOM внутреннего сервера не сможет уникально идентифицировать экземпляр. Аналогичным образом, если существует несколько пользовательских методов, для которых необходимо запустить экземпляр, EPR класса можно использовать для определения ключевых свойств для вызова метода.

Также можно перечислить EPR связи. В случае, если не удается определить, является ли имя класса стандартным именем класса или классом связи. Поскольку экземпляр связи имеет указатели на два экземпляра, EPR связи будет содержать EPR экземпляров/объектов, на которые ссылается связь. Пример такого сценария представлен ниже:
wsman enumerate -M epr  http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_CSProcessor -h test_host -P 5985 -u abc -p password -O out

 <?xml version="1.0" encoding="UTF-8"?>

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration" xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">

  <s:Header>

    <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>

    <wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/PullResponse</wsa:Action>

    <wsa:RelatesTo>uuid:2efbfcad-cd4b-1d4b-8003-a52924d9bed4</wsa:RelatesTo>

    <wsa:MessageID>uuid:2efc1c6f-cd4b-1d4b-80b3-a52924d9bed4</wsa:MessageID>

  </s:Header>

  <s:Body>

    <wsen:PullResponse>

      <wsen:EnumerationContext>2ef7f6f5-cd4b-1d4b-80b1-a52924d9bed4</wsen:EnumerationContext>

      <wsen:Items>

        <wsa:EndpointReference>

          <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

          <wsa:ReferenceParameters>

            <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_CSProcessor</wsman:ResourceURI>

            <wsman:SelectorSet>

              <wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>

              <wsman:Selector Name="GroupComponent">

                <wsa:EndpointReference>

                  <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

                  <wsa:ReferenceParameters>

                    <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_ComputerSystem</wsman:ResourceURI>

                    <wsman:SelectorSet>

                      <wsman:Selector Name="CreationClassName">Linux_ComputerSystem</wsman:Selector>

                      <wsman:Selector Name="Name">localhost.localdomain</wsman:Selector>

                      <wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>

                    </wsman:SelectorSet>

                  </wsa:ReferenceParameters>

                </wsa:EndpointReference>

              </wsman:Selector>

              <wsman:Selector Name="PartComponent">

                <wsa:EndpointReference>

                  <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

                  <wsa:ReferenceParameters>

                    <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor</wsman:ResourceURI>

                    <wsman:SelectorSet>

                      <wsman:Selector Name="SystemCreationClassName">Linux_ComputerSystem</wsman:Selector>

                      <wsman:Selector Name="SystemName">localhost.localdomain</wsman:Selector>

                      <wsman:Selector Name="CreationClassName">Linux_Processor</wsman:Selector>

                      <wsman:Selector Name="DeviceID">0</wsman:Selector>

                      <wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>

                    </wsman:SelectorSet>

                  </wsa:ReferenceParameters>

                </wsa:EndpointReference>

              </wsman:Selector>

            </wsman:SelectorSet>

          </wsa:ReferenceParameters>

        </wsa:EndpointReference>

      </wsen:Items>

    </wsen:PullResponse>

  </s:Body>

</s:Envelope>
Linux_CSProcessor — это связь между классами Linux_ComputerSystem и Linux_Processor, которая устанавливает взаимоотношения между процессорами, содержащимися в компьютерных системах, и разделами GroupComponent и PartComponent.

Мне пришлось потратить некоторое время на понимание EPR и того, как их можно использовать для доступа к отдельным экземплярам, предполагая, что это может оказаться полезно для других. Оставьте свои комментарии/предложения ниже.

Отказ от ответственности.

Приведенная выше статья предоставлена исключительно в информационных целях. Содержимое является моей интерпретацией упомянутых технологий/терминологий. Эта информация предоставляется на условиях «как есть» и может содержать некоторые типографские ошибки и/или технические неточности.

Article Properties


Affected Product

Ubuntu Server LTS

Last Published Date

11 Jun 2024

Version

4

Article Type

Solution