PowerEdge: alla scoperta di WSMAN oltre l'enumerazione

Summary: Soluzioni per sistemi operativi e applicazioni Dell su Dell TechCenter - Progetto Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu e altro ancora

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 è l'API di gestione scelta per Dell iDRAC e sono in corso numerosi sforzi per rendere la gestione dei sistemi remota il più completa e possibile. Dopo aver studiato il protocollo WSMAN per un plug-in
, ho scoperto che diventa complesso dopo l'azione di enumerazione iniziale. Non esiste documentazione o esempi su come richiamare le azioni get/put/create/delete/custom con le proprietà chiave corrette. Le fonti principali di queste informazioni sono la specifica WSMAN di DMTF e la specifica di associazione di WSMAN-CIM, particolarmente lunghe da seguire. Anche in questo caso, la maggior parte del contenuto di questo articolo proviene da documenti delle specifiche DMTF. Questo è un tentativo di fare in modo che le informazioni vengano digerite con alcuni esempi (su Linux).

 Ho già pubblicato un white paper su come iniziare a utilizzare SFCB e openwsman all'indirizzo https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Se non conosci WSMAN e SFCB, il pdf sarebbe un punto di partenza migliore di questo articolo. Come nel white paper precedente, questo articolo

si occupa principalmente delle implementazioni CIMOM di openwsman e SFCB Ora, dato un server WSMAN, c'è un modo per elencare tutti i componenti che sono gestibili dall'API wsman? La maggior parte dei server WSMAN comunica con un CIMOM sul back-end ed espone le funzionalità di gestione dei CIMOM. Questo significa che le funzionalità di gestione di un server WSMAN dipendono dai provider CIM registrati nel CIMOM sul back-end. Il CIMOM ha una funzione intrinseca definita denominata EnumerateClassNames che può essere chiamata per elencare tutte le classi registrate in CIMOM.

Cause

Poiché nella specifica WSMAN non esiste un mapping uno-a-uno per EnumerateClassNames , questo metodo viene richiamato come qualsiasi altra funzione personalizzata in WSMAN. Nota: si tratta di un'implementazione specifica e si applica all'implementazione wsmancli. Potrebbe variare o essere aggiornata nelle versioni future.

Resolution

L'intrinseca di CIMOM EnumerateClassNames la funzione può essere chiamata come segue con 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>...................
 

L'output è simile a quello riportato sopra, indicando che nel namespace root/cimv2, Linux_Processor è una delle classi iscritte. Diverse classi CIM vengono ereditate quando le nuove classi vengono registrate in root oppure cimv2e il comando elenca tutti i nomi di classe. In genere, è possibile ignorare tutte le classi con CIM_ prefisso. Tutte le classi con Linux_ prefisso sono le classi registrate dai provider installati in un sistema Linux.
Quando lavori con iDRAC Dell, ti interessano soprattutto i corsi con DCIM_ prefix.

 Con l'elenco dei nomi delle classi, utilizzare il comando getClass funzione per estrarre il Linux_Processor Definizione di classe come segue:

 

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
 

 Il comando precedente elenca tutte le proprietà definite nel Linux_Processor a livello locale. Ovvero una qualsiasi delle proprietà ereditate da un altro CIM_* Le classi non sono elencate con l'implementazione corrente. Le definizioni di classe rivelano metodi, parametri e proprietà chiave, ma il comando restituisce solo proprietà locali, rendendo le proprietà chiave non identificabili. Anche in questo caso, si tratta di un limite di implementazione in wsmancli.

Mentre GetClass è un buon inizio, il suo output non è sufficiente per identificare le proprietà chiave per richiamare le azioni get o put o create o personalizzate.
Quindi, quali altre tecniche possono essere utilizzate per raggiungere questo obiettivo? È qui che gli EPR possono essere d'aiuto.


L'EPR (End-Point Reference) è un puntatore a un'istanza con due informazioni: ResourceURI e un set di selettori. L'opzione ResourceURI ha il nome della classe da cui viene creata l'istanza e il set di selettori elenca le proprietà con cui un'istanza può essere identificata in modo univoco. Gli EPR di una particolare classe possono essere enumerati con un comando simile a:

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>



Di tutti i processori nel sistema di destinazione, l'output di cui sopra è di un processore.
Nell'output, resourceURI è elencato come https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor e il tasto SelectorSet Elenca i valori di __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. Ciò significa che tutte le proprietà nella classe ereditata e definita localmente possono essere utilizzate per identificare in modo univoco un'istanza.


 È quindi lecito aspettarsi una risposta valida da un comando come:

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



 Se nella richiesta precedente vengono utilizzate altre proprietà, CIMOM nel back-end non è in grado di identificare un'istanza in modo univoco. Per eseguire metodi personalizzati su un'istanza, utilizzare l'EPR della classe per identificare le proprietà chiave per la chiamata al metodo.


È anche possibile enumerare gli EPR di un'associazione. Dato il nome di una classe, non è possibile capire se si tratta di un nome di classe standard o di una classe di associazione. Un'istanza di associazione punta a due istanze, pertanto la relativa EPR include gli EPR delle istanze o degli oggetti a cui si riferisce. Di seguito è riportato un esempio:

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 Collegamenti Linux_ComputerSystem e Linux_Processor, che mostra la presenza dei processori nei sistemi informatici, con GroupComponent e PartComponent sezioni.

Ho passato del tempo a capire gli EPR e il loro utilizzo per accedere alle istanze, pensando che potesse aiutare gli altri. Sentitevi liberi di lasciarmi i vostri commenti o suggerimenti qui sotto.

Dichiarazione di non responsabilità:

l'articolo precedente è solo a scopo informativo. Il contenuto deriva dalla mia interpretazione delle tecnologie e delle terminologie menzionate. Queste informazioni vengono fornite così come sono e potrebbero contenere errori tipografici e/o imprecisioni tecniche.
 

Affected Products

SUSE Linux Enterprise Server 12, Red Hat Enterprise Linux Version 9, Red Hat Enterprise Linux Version 8, SUSE Linux Enterprise Server 15, Ubuntu Server LTS

Products

C Series, HS Series, Modular Infrastructure, Rack Servers, Tower Servers, XE Servers, XR Servers, OEM Server Solutions
Article Properties
Article Number: 000145895
Article Type: Solution
Last Modified: 10 Sept 2026
Version:  6
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.