Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Create and access a list of your products

Einsatzmöglichkeiten für WSMAN über Enumeration hinaus

Summary: Lösungen zu Dell Betriebssystemen und Anwendungen auf Dell TechCenter – Projekt Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu und weitere

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

WSMAN ist die Management-API der Wahl für Dell iDRAC und es werden umfangreiche Anstrengungen unternommen, um die Remote-Systemverwaltung so umfassend und einfach wie möglich zu gestalten. Ich habe kürzlich einige Zeit damit verbracht, das WSMAN-Protokoll zu verstehen, um ein Plug-in zu implementieren, und nach der anfänglichen Aktion „wsman enumeration“ wird das WSMAN-Protokoll schwieriger zu verwenden. Es gibt keine einfache Dokumentation/Beispiele zum Aufrufen der Aktionen get/put/create/delete/custom mit den richtigen Haupteigenschaften.  Die Hauptquelle für diese Informationen sind die technischen Daten zu WSMAN und technischen Daten zur WSMAN-CIM-Bindung der DMTF, deren Befolgung äußerst langwierig ist. Zur Erinnerung, der Großteil des Inhalts dieses Artikels stammt aus den technischen Dokumenten der DMTF. Dies ist ein Versuch, diese Informationen mit einigen Beispielen (unter Linux) leicht umsetzbar zu machen.

 Ich habe bereits ein Whitepaper über die ersten Schritte mit SFCB und openwsman hier veröffentlicht: https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Wenn Sie neu im Umgang mit WSMAN/SFCB sind, ist dieses PDF ein besserer Ausgangspunkt als der vorliegende Artikel. Wie im obigen Whitepaper werden wir uns in diesem Artikel in erster Linie mit Implementierungen von openwsman und SFCB-CIMOM befassen.

 Gibt es bei einem WSMAN-Server eine Möglichkeit, alle Komponenten aufzulisten, die über die WSMAN-API verwaltet werden können? Die meisten WSMAN-Server kommunizieren mit einem CIMOM am Back-End und stellen die Managementfunktionen der CIMOMs zur Verfügung. Das bedeutet, dass die Managementfunktionen eines WSMAN-Servers von den CIM-Anbietern abhängen, die beim CIMOM am Back-End registriert sind. CIMOM verfügt über eine systeminterne Funktion mit dem Namen EnumerateClassNames, die aufgerufen werden kann, um alle Klassen aufzulisten, die bei CIMOM registriert sind.

Cause

Da es in der WSMAN-Spezifikation keine 1:1-Zuordnung für EnumerateClassNames gibt, wird diese Methode wie jede andere benutzerdefinierte Funktion in WSMAN aufgerufen. Beachten Sie, dass dies implementierungsspezifisch ist und für die wsmancli-Implementierung gilt. Dies kann in zukünftigen Versionen abweichen oder aktualisiert werden.

Resolution

Die systeminterne Funktion EnumerateClassNames von CIMOM kann mit wsmancli wie folgt aufgerufen werden:
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>...................
 
Die Ausgabe sieht wie oben aus und weist darauf hin, dass Linux_Processor im Namespace root/cimv2 eine der registrierten Klassen ist. Es gibt eine Reihe von CIM-Klassen, die weitergegeben werden, wenn neue Klassen im Namespace root/cimv2 registriert werden, und der obige Befehl listet auch alle diese Klassennamen auf. In der Regel können Sie alle Klassen mit dem Präfix CIM_ ignorieren. Alle Klassen mit dem Präfix Linux_ sind die Klassen, die von Anbietern registriert werden, die auf einem Linux-System installiert sind. Bei der Arbeit mit dem iDRAC von Dell sind vor allem Klassen mit dem Präfix DCIM_ interessant.

 Nachdem Sie nun über eine Liste aller Klassennamen verfügen, können Sie die systeminterne Funktion getClass verwenden, um die Definition der Klasse Linux_Processor wie folgt zu extrahieren:
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
 
 Mit dem obigen Befehl werden alle Eigenschaften aufgelistet, die lokal im Linux_Processor definiert sind. Das bedeutet, dass alle Eigenschaften, die von anderen Klassen vom Typ CIM_* übernommen werden, nicht mit der aktuellen Implementierung aufgeführt sind. In der Regel können Sie an der Definition einer Klasse erkennen, welche Methoden in der Klasse definiert sind, welche Parameter an diese Methoden übergeben werden müssen und welche Eigenschaften der Klasse die wichtigsten sind usw. Da der obige Befehl jedoch nur die lokalen Eigenschaften zurückgibt, können die Haupteigenschaften in der Klasse nicht identifiziert werden. Auch dies ist derzeit eine Implementierungseinschränkung in wsmancli.

Obwohl die Funktion „GetClass“ ein guter Ausgangspunkt ist, reicht ihre Ausgabe nicht aus, um zu bestimmen, welche Eigenschaften der Klasse als Haupteigenschaften verwendet werden können, damit die Get/Put/Create/Custom-Aktion aufgerufen werden kann. Welche anderen Techniken können verwendet werden, um dies zu erreichen? Hier können EPRs helfen.


EPR (End Point Reference) ist ein Zeiger auf eine Instanz mit zwei Informationen: dem ResourceURI und einem Selektorsatz. Der ResourceURI hat den Klassennamen, aus dem die Instanz erstellt wird, und der Selektorsatz listet die Eigenschaften auf, mit denen eine Instanz eindeutig identifiziert werden kann. EPRs einer bestimmten Klasse können mit einem Befehl ähnlich dem folgenden aufgelistet werden:
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>
 Von allen Prozessoren im Zielsystem bezieht sich die obige Ausgabe nur auf einen einzigen. In der Ausgabe wird der resourceURI als http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor aufgeführt und das SelectorSet listet die Werte __cimnamespace, SystemCreationClassName, SystemName, CreationClassName und DeviceID auf. Das bedeutet, dass von allen Eigenschaften in der Klasse „Linux_Processor“ (übernommen und lokal definiert) diese Eigenschaften verwendet werden können, um eine Instanz eindeutig zu identifizieren.

 Sie können also eine gültige Antwort von einem Befehl wie dem folgenden erwarten:
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
 Wenn andere Eigenschaften in der obigen Anforderung verwendet werden, kann der CIMOM im Back-End eine Instanz nicht eindeutig identifizieren. Wenn einige benutzerdefinierte Methoden für eine Instanz ausgeführt werden müssen, kann die EPR der Klasse verwendet werden, um die Haupteigenschaften zu identifizieren, mit denen eine Methode aufgerufen werden soll.

Sie können auch die EPRs einer Zuordnung auflisten. Bei einem Klassennamen kann man nicht herausfinden, ob es sich um einen Standardklassennamen oder eine Zuordnungsklasse handelt. Da eine Instanz einer Zuordnung Zeiger auf zwei Instanzen hat, verfügt eine EPR einer Zuordnung über die EPRs der Instanzen/Objekte, auf die sich die Zuordnung bezieht. Im Folgenden finden Sie ein Beispiel dafür:
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 ist eine Zuordnung zwischen den Klassen Linux_ComputerSystem und Linux_Processor, die die Beziehung herstellt, dass die Prozessoren in Computersystemen enthalten sind, was die Abschnitte GroupComponent und PartComponent bedingt.

Ich musste einige Zeit damit verbringen, die EPRs zu ermitteln und wie sie für den Zugriff auf einzelne Instanzen verwendet werden können, und dachte, dass es für andere nützlich sein könnte. Hinterlassen Sie mir gerne unten Ihre Kommentare/Vorschläge.

Haftungsausschluss:

Der obige Artikel dient nur zu Informationszwecken. Der Inhalt ergibt sich aus meiner Interpretation der genannten Technologien/Terminologien. Diese Informationen werden ohne Gewähr zur Verfügung gestellt und können typografische Fehler und/oder technische Ungenauigkeiten enthalten.

Affected Products

Ubuntu Server LTS
Article Properties
Article Number: 000145895
Article Type: Solution
Last Modified: 11 Jun 2024
Version:  4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.