Passer au contenu principal
  • Passer des commandes rapidement et facilement
  • Afficher les commandes et suivre l’état de votre expédition
  • Créez et accédez à une liste de vos produits

Procházení služby WSMAN nad rámec výčtu

Résumé: Řešení aplikací a operačního systému Dell na kanálu Dell TechCenter – Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu a další

Cet article concerne Cet article ne concerne pas Cet article n’est associé à aucun produit spécifique. Toutes les versions du produit ne sont pas identifiées dans cet article.

Symptômes

WSMAN je zvoleným rozhraním API pro správu řadiče Dell iDRAC a v současné době se pracuje na tom, aby vzdálená správa systému byla co nejkomplexnější a nejjednodušší. Nedávno jsem strávil nějaký čas s protokolem WSMAN pro implementaci doplňků a po počáteční akci výčtu wsman je protokol WSMAN trochu zmatečný. Neexistuje žádná jednoduchá dokumentace/příklady, jak vyvolat akce get/put/create/delete/custom se správnými vlastnostmi klíče.  Primárním zdrojem těchto informací je specifikace WSMAN DMTF a specifikace vazeb WSMAN-CIM, jejichž dodržování je bolestně zdlouhavé. Opět platí, že většina obsahu tohoto článku pochází z dokumentace specifikací DMTF. Toto je pokus vysvětlení těchto informací pomocí několika příkladů (v systému Linux).

 Již jsem zveřejnil dokument whitepaper o tom, jak začít se službou SFCB a openwsman na adrese https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Pokud se službou WSMAN/SFCB začínáte, soubor pdf by byl lepším výchozím bodem než tento článek. Stejně jako ve výše uvedeném dokumentu whitepaper se v tomto článku budeme primárně zabývat implementacemi openwsman a SFCB CIMOM.

 Existuje způsob, jak zobrazit seznam všech komponent, které lze spravovat pomocí rozhraní wsman API? Většina serverů WSMAN komunikuje s funkcí CIMOM na backendu a zpřístupňuje funkce správy CIMOM. To znamená, že možnosti správy serveru WSMAN závisí na poskytovatelích CIM registrovaných ve funkci CIMOM na backendu. Služba CIMOM má vnitřní funkci s definovaným názvem EnumerateClassNames, kterou lze volat pro výpis všech tříd, které jsou registrovány ve službě CIMOM.

Cause

Vzhledem k tomu, že ve specifikaci WSMAN neexistuje žádné mapování typu „jeden na jeden“ pro funkci EnumerateClassNames, je tato metoda vyvolána jako jakákoli jiná vlastní funkce ve službě WSMAN. Upozorňujeme, že se to týká pouze konkrétní implementace wsmancli. To se může v budoucích verzích lišit nebo aktualizovat.

Résolution

Vnitřní funkci CIMOM EnumerateClassNames lze volat následujícím způsobem pomocí rozhraní 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>...................
 
Výstup bude vypadat jako ten výše uvedený, který značí, že v oboru názvů root/cimv2 je Linux_Processor jednou z registrovaných tříd. Existuje několik tříd CIM, které jsou zděděny při registraci nových tříd v oboru názvů root/cimv2 a výše uvedený příkaz vypíše všechny jejich názvy. Obecně platí, že můžete ignorovat všechny třídy s předponou CIM_. Všechny třídy s předponou Linux_ jsou třídy, které jsou registrovány poskytovateli nainstalovanými v systému Linux. Při práci s řadičem iDRAC společnosti Dell vás budou zajímat především třídy s předponou DCIM_.

 Teď, když máte seznam všech názvů tříd, můžete použít vnitřní funkci getClass k extrahování definice třídy Linux_Processor následujícím způsobem:
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
 
 Výše uvedený příkaz zobrazí seznam všech vlastností, které jsou místně definovány ve třídě Linux_Processor. To znamená, že žádná z vlastností, které jsou zděděny z jiných tříd CIM_*, nejsou uvedeny v aktuální implementaci. Obvykle z definice třídy můžete zjistit, jaké metody jsou ve třídě definovány, jaké parametry je třeba těmto metodám předat a jaké vlastnosti třídy jsou klíčové atd. Vzhledem k tomu, že výše uvedený příkaz vrací pouze místní vlastnosti, nelze klíčové vlastnosti ve třídě identifikovat. Opět se v současné době jedná o omezení implementace v rozhraní wsmancli.

I když je tedy funkce GetClass dobrým výchozím bodem, její výstup není dostatečný k určení toho, jaké vlastnosti třídy lze použít jako klíčové, aby bylo možné vyvolat akci get/put/create/custom. Jaké další techniky lze tedy použít k dosažení tohoto cíle? A právě zde mohou pomoci reference EPR.


EPR (End Point Reference) je ukazatel na instanci se dvěma informacemi: ResourceURI a Selector Set. ResourceURI má název třídy, ze které je instance vytvořena, a Selector Set uvádí vlastnosti, se kterými lze instanci jednoznačně identifikovat. Reference EPR konkrétní třídy lze vypsat pomocí příkazu podobného následujícímu:
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>
 Ze všech procesorů v cílovém systému patří výše uvedený výstup pouze jednomu procesoru. Ve výstupu resourceURI je uveden jako http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor a SelectorSet uvádí hodnoty __cimnamespace, SystemCreationClassName, SystemName, CreationClassName a DeviceID. To znamená, že ze všech vlastností ve třídě Linux_Processor (zděděné a místně definované) lze tyto vlastnosti použít k jednoznačné identifikaci instance.

 Od příkazu tedy můžete očekávat platnou odpověď, jako je:
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
 Pokud jsou ve výše uvedeném požadavku použity nějaké další vlastnosti, funkce CIMOM v backendu nebude moci instanci jednoznačně identifikovat. Podobně pokud existují nějaké vlastní metody, které je třeba spustit v instanci, lze pomocí referencí EPR třídy určit klíčové vlastnosti, pomocí kterých se má metoda vyvolat.

Můžete také vypsat reference EPR asociace. Vzhledem k názvu třídy nelze zjistit, zda se jedná o standardní název třídy nebo asociační třídu. Vzhledem k tomu, že instance asociace má ukazatele na dvě instance, reference EPR asociace bude mít referenci EPR instancí/objektů, na které asociace odkazuje. Následuje příklad téhož:
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 je asociací mezi třídami Linux_ComputerSystemLinux_Processor, které vytváří vztah, ve kterou jsou procesory obsaženy v počítačových systémech, a tedy v oddílech GroupComponent a PartComponent.

Musel jsem strávit nějaký čas vymýšlením referencí EPR a toho, jak by je šlo použít pro přístup k jednotlivým instancím. Snad se to bude hodit i někomu dalšímu. Neváhejte mi zanechat své komentáře/návrhy níže.

Zřeknutí se odpovědnosti:

Výše uvedený článek má pouze informativní charakter. Obsah vychází z mé interpretace zmíněných technologií/terminologií. Tyto informace jsou poskytovány tak, jak jsou, a mohou obsahovat některé typografické chyby a/nebo technické nepřesnosti.

Produits concernés

Ubuntu Server LTS
Propriétés de l’article
Numéro d’article: 000145895
Type d’article: Solution
Dernière modification: 11 juin 2024
Version:  4
Trouvez des réponses à vos questions auprès d’autres utilisateurs Dell
Services de support
Vérifiez si votre appareil est couvert par les services de support.