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/пользовательские действия с правильными свойствами ключа.  Основным источником этой информации являются спецификация DMTF WSMAN и спецификация привязки 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, есть ли способ вывести список всех компонентов, которыми управляет wsman API? Большинство серверов WSMAN взаимодействуют с CIMOM на сервере и предоставляют функции управления CIMOM. Это означает, что возможности управления сервером WSMAN зависят от поставщиков CIM, зарегистрированных в CIMOM на сервере. В CIMOM определена встроенная функция EnumerateClassNames , которую можно вызвать для вывода списка всех классов, зарегистрированных в CIMOM.

Cause

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

Resolution

Встроенная функция EnumerateClassNames CIMOM может быть вызвана следующим образом с помощью 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_* , не перечислены в текущей реализации. Обычно из определения класса можно понять, какие методы определены в классе, какие параметры нужно передать этим методам, какие свойства класса являются ключевыми и т.д. Но, поскольку приведенная выше команда возвращает только свойства Local, ключевые свойства в классе не могут быть идентифицированы. Опять же, в настоящее время это ограничение реализации в wsmancli.

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


EPR (End Point Reference) — это указатель на экземпляр с двумя частями информации: 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