跳转至主要内容
  • 快速、轻松地下订单
  • 查看订单并跟踪您的发货状态
  • 创建并访问您的产品列表

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

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

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

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.

原因

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

解决方案

Внутренняя функция 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 и того, как их можно использовать для доступа к отдельным экземплярам, предполагая, что это может оказаться полезно для других. Оставьте свои комментарии/предложения ниже.

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

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

受影响的产品

Ubuntu Server LTS
文章属性
文章编号: 000145895
文章类型: Solution
上次修改时间: 11 6月 2024
版本:  4
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。