PowerEdge: Utforske WSMAN uten opplisting
Summary: Løsninger for Dell-operativsystemer og -applikasjoner på Dell TechCenter – Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu og mer
Symptoms
, fant jeg ut at det blir komplisert etter den første oppregningshandlingen. Det finnes ingen dokumentasjon eller eksempler på hvordan man påkaller get/put/create/delete/custom Actions med de riktige nøkkelegenskapene. Den primære kilden for denne informasjonen er DMTFs WSMAN-spesifikasjon og WSMAN-CIM-bindingsspesifikasjon som er smertefullt lange å følge. Igjen er det meste av innholdet i denne artikkelen fra DMTF-spesifikasjonsdokumentene. Dette er et forsøk på å gjøre denne informasjonen til å fordøye med noen eksempler (på Linux).
Jeg har allerede lagt ut en whitepaper om hvordan du kommer i gang med SFCB og openwsman på https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Hvis du er ny på WSMAN og SFCB, vil pdf være et bedre utgangspunkt enn denne artikkelen. Som i ovennevnte whitepaper omhandler primært openwsman og SFCB CIMOM implementeringer i denne artikkelen
Nå, gitt en WSMAN-server, er det en måte å liste opp alle komponentene som er håndterbare av wsman API? De fleste WSMAN-serverne snakker med en CIMOM på backend og avslører administrasjonsfunksjonene til CIMOMene. Det betyr at administrasjonsfunksjonene til en WSMAN-server avhenger av CIM-leverandørene som er registrert på CIMOM på backend. CIMOM har en iboende funksjon med navnet EnumerateClassNames definert som kan kalles for å liste alle klassene som er registrert på CIMOM.
Cause
Resolution
CIMOMs iboende EnumerateClassNames Funksjonen kan kalles som følger med: 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>...................
Utgangen ser ut som ovenfor, noe som indikerer at i navnerommet root / cimv2, Linux_Processor er en av klassene som er påmeldt. Flere CIM-klasser går i arv når nye klasser melder seg på root eller cimv2, og kommandoen viser alle disse klassenavnene. Vanligvis kan du ignorere alle klassene med CIM_ prefiks. Alle klassene med Linux_ prefiks er klassene registrert av leverandører installert på et Linux-system.
Når du arbeider med Dells iDRAC, er du mest interessert i kurs med DCIM_ prefix.
Med klassenavnlisten bruker du getClass funksjon for å pakke ut Linux_Processor klassedefinisjon som følger:
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
Kommandoen ovenfor viser alle egenskapene som er definert i Linux_Processor lokalt. Betydning noen av egenskapene som er arvet fra andre CIM_* Klasser er ikke oppført med gjeldende implementering. Klassedefinisjoner viser metoder, parametere og nøkkelegenskaper, men kommandoen returnerer bare lokale egenskaper, noe som gjør nøkkelegenskaper uidentifiserbare. Igjen er dette en implementeringsbegrensning i wsmancli.
Mens GetClass er en god start, er utdataene ikke tilstrekkelige til å identifisere nøkkelegenskaper for å påkalle få eller sette eller opprette eller egendefinerte handlinger.
Så, hvilke andre teknikker kan brukes til å oppnå dette? Det er her EPR kan hjelpe.
EPR (End-Point Reference) er en peker til en forekomst med to informasjonsdeler: ResourceURI og et velgersett. Meldingen ResourceURI har klassenavnet som forekomsten er opprettet fra, og velgersettet viser egenskapene en forekomst kan identifiseres unikt med. EPR i en bestemt klasse kan nummereres med en kommando som ligner på:
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>
Av alle prosessorene i målsystemet er utgangen ovenfor av én prosessor.
I utdataene er ressurs-URI-en oppført som https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor og SelectorSet Viser verdiene for __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. Dette betyr at av alle egenskapene i klassen arvet og lokalt definert) kan disse egenskapene brukes til å identifisere en forekomst unikt.
Så du kan forvente et gyldig svar fra en kommando som:
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
Hvis andre egenskaper brukes i forespørselen ovenfor, kan ikke CIMOM i backend identifisere en forekomst unikt. Hvis du vil kjøre egendefinerte metoder på en forekomst, bruker du klassens EPR til å identifisere nøkkelegenskaper for metodeaktivering.
Du kan også liste opp EPR for en forening. Gitt et klassenavn kan man ikke finne ut om det er et standard klassenavn eller en foreningsklasse. En tilknytningsforekomst peker på to forekomster, så EPR inkluderer EPR for forekomstene eller objektene den refererer til. Følgende er et eksempel på det samme:
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 koblinger Linux_ComputerSystem og Linux_Processor, som viser prosessorer er i datasystemer, detaljering GroupComponent og PartComponent seksjoner.
Jeg brukte tid på å forstå EPR og deres bruk for å få tilgang til forekomster, og tenkte at det kunne hjelpe andre. Føl deg fri til å gi meg dine kommentarer eller forslag nedenfor.
Ansvarsfraskrivelse:
Ovennevnte artikkel er kun til informasjonsformål. Innholdet er fra min tolkning av teknologiene og terminologiene som er nevnt. Denne informasjonen leveres som den er og kan inneholde noen typografiske feil og/eller tekniske unøyaktigheter.