PowerEdge: Procházení služby WSMAN nad rámec výčtu
Summary: Ř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ší
Symptoms
jsem zjistil, že po počátečním výčtu je to složité. Neexistuje žádná dokumentace ani 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 o zpracování těchto informací pomocí několika příkladů (v Linuxu).
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 s WSMAN a SFCB začínáte, pdf by bylo lepším výchozím bodem než tento článek. Stejně jako ve výše uvedeném dokumentu whitepaper se v tomto článku
primárně zabývá implementacemi openwsman a SFCB CIMOM Nyní, vzhledem k serveru WSMAN, existuje způsob, jak vypsat všechny komponenty, které jsou spravovatelné pomocí wsman API? Většina serverů WSMAN komunikuje s CIMOM na backendu a zveřejň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
Resolution
Podstatná část systému CIMOM EnumerateClassNames lze volat následujícím způsobem s 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 vypadá jako výše, což znamená, že v oboru názvů root/cimv2 Linux_Processor je jednou ze zapsaných tříd. Několik tříd CIM je zděděno, když se zaregistrují nové třídy root nebo cimv2a příkaz zobrazí seznam všech těchto názvů tříd. Obecně můžete ignorovat všechny třídy pomocí CIM_ předpona. Všechny třídy s předponou Linux_ jsou třídy registrované zprostředkovateli nainstalovanými v systému Linux.
Při práci s řadičem iDRAC společnosti Dell vás zajímají především přednášky s DCIM_ prefix.
V seznamu názvů tříd použijte getClass pro extrahování Linux_Processor Definice třídy takto:
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 vypíše všechny vlastnosti, které jsou definovány v Linux_Processor lokálně. Znamená všechny vlastnosti, které jsou zděděny z jiných CIM_* Třídy nejsou uvedeny s aktuální implementací. Definice tříd odhalují metody, parametry a vlastnosti klíče, ale příkaz vrací pouze místní vlastnosti, takže vlastnosti klíče jsou neidentifikovatelné. Opět se jedná o omezení implementace v wsmancli.
Zatímco GetClass je dobrý začátek, jeho výstup nestačí k identifikaci klíčových vlastností pro vyvolání get nebo put nebo create nebo vlastních akcí.
Jaké další techniky lze tedy použít k dosažení tohoto cíle? A právě zde mohou pomoci EPR.
End-Point Reference (EPR) je ukazatel na instanci se dvěma informacemi: ResourceURI a sadu selektorů. Kód ResourceURI obsahuje název třídy, ze které je instance vytvořena, a sada selektorů uvádí vlastnosti, se kterými lze instanci jednoznačně identifikovat. EPR konkrétní třídy lze vytvořit výčet 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 je výše uvedený výstup tvořen jedním procesorem.
Ve výstupu resourceURI je uveden jako https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor a dále SelectorSet Uvádí hodnoty __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. To znamená, že všechny vlastnosti ve třídě 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, CIMOM v back-endu nemůže instanci jednoznačně identifikovat. Chcete-li spustit vlastní metody v instanci, použijte EPR třídy k identifikaci klíčových vlastností pro vyvolání metody.
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. Instance přidružení odkazuje na dvě instance, takže její EPR zahrnuje EPR instancí nebo objektů, na které 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 Odkazy Linux_ComputerSystem a Linux_Processor, ukazující, že procesory jsou v počítačových systémech, s podrobnostmi GroupComponent a PartComponent sekce.
Strávil jsem nějaký čas pochopením EPR a jejich využitím pro přístup k instancím, protože jsem si myslel, že by to mohlo pomoci ostatním. Neváhejte mi zanechat své komentáře nebo 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í a terminologií. Tyto informace jsou poskytovány tak, jak jsou, a mohou obsahovat některé typografické chyby nebo technické nepřesnosti.