メイン コンテンツに進む
  • すばやく簡単にご注文が可能
  • 注文内容の表示、配送状況をトラック
  • 会員限定の特典や割引のご利用
  • 製品リストの作成とアクセスが可能
  • 「Company Administration(会社情報の管理)」では、お使いのDell EMCのサイトや製品、製品レベルでのコンタクト先に関する情報を管理できます。

Знайомство з WSMAN поза перерахуванням

概要: Рішення для ОС і додатків Dell в Dell TechCenter - Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu та інші

この記事は自動翻訳されたものである可能性があります。品質に関するフィードバックがある場合は、このページの下部にあるフォームを使用してお知らせください。

文書の内容


現象

WSMAN є обраним API управління для Dell iDRAC, і докладаються значні зусилля, щоб зробити віддалене управління системою максимально комплексним і простим. Нещодавно я витратив деякий час на розуміння протоколу WSMAN для реалізації плагіна, і після початкової дії з перерахування wsman, протокол WSMAN стає трохи волохатим. Не існує простої документації/прикладів про те, як викликати дії, отримання, розміщення, створення, видалення, з правильними властивостями ключа.  Основним джерелом цієї інформації є специфікації 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, чи є спосіб перерахувати всі компоненти, якими можна керувати за допомогою wsman API? Більшість серверів 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_* , не перераховані в поточній реалізації. Зазвичай з визначення класу можна зрозуміти, які методи визначені в класі, які параметри потрібно передати цим методам, які властивості класу є ключовими властивостями тощо. Але, оскільки наведена вище команда повертає лише властивості Local, ключові властивості в класі не можуть бути ідентифіковані. Знову ж таки, наразі це обмеження реалізації у wsmancli.

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


EPR (End Point Reference) — це покажчик на екземпляр із двома частинами інформації: ResourceURI та селекторним набором. ResourceURI має ім'я класу, з якого створено екземпляр, а селекторний набір перелічує властивості, з якими екземпляр може бути унікально ідентифікований. ЕПР певного класу можна перерахувати за допомогою команди, подібної до такої:
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 класу може бути використаний для ідентифікації ключових властивостей для виклику методу.

Ви також можете перерахувати РВВ асоціації. Отримавши ім'я класу, неможливо зрозуміти, чи є це стандартним ім'ям класу чи класом асоціації. Оскільки екземпляр асоціації має покажчики на два екземпляри, то РВВ асоціації матиме ЕПР екземплярів/об'єктів, на які посилається асоціація. Нижче наведено приклад того самого:
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.

Мені довелося витратити деякий час на те, щоб з'ясувати РВВ і те, як їх можна використовувати для доступу до окремих інстансів, і я подумав, що це може стати в нагоді іншим. Не соромтеся залишати мені свої коментарі/пропозиції нижче.

Відмова від відповідальності:

Наведена вище стаття призначена лише для інформаційних цілей. Зміст взято з моєї інтерпретації згаданих технологій/термінологій. Ця інформація надається як є і може містити деякі друкарські помилки та/або технічні неточності.

文書のプロパティ


影響を受ける製品

Ubuntu Server LTS

最後に公開された日付

11 6月 2024

バージョン

4

文書の種類

Solution