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
Symptoms
, 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
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.