Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Enjoy members-only rewards and discounts
  • Create and access a list of your products

Utforske WSMAN utover oppregning

Summary: Dell-OS og programløsninger på Dell TechCenter – Prosjekt Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu, og mer

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 er den valgte administrasjons-API-en for Dell iDRAC, og omfattende arbeid er i gang for å gjøre ekstern systemadministrasjon så omfattende og enkel som mulig. Jeg har nylig brukt litt tid på å forstå WSMAN-protokollen for å implementere et plugin, og etter den første WSMAN-oppregningen blir WSMAN-protokollen litt hårete. Det er ingen enkel dokumentasjon / eksempler på hvordan du påkaller få / sette / opprette / slette / egendefinerte handlinger 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 lett å 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 / SFCB, vil pdf være et bedre utgangspunkt enn denne artikkelen. Som i hvitboken ovenfor vil vi først og fremst ta for oss implementeringer av openwsman og SFCB CIMOM i denne artikkelen.

 Nå, gitt en WSMAN-server, er det en måte å liste opp alle komponentene som kan administreres av wsman API? De fleste WSMAN-serverne snakker med en CIMOM på baksiden 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

Siden det ikke finnes én-til-én-tilordning for EnumerateClassNames i WSMAN-spesifikasjonen, aktiveres denne metoden på samme måte som alle andre egendefinerte funksjoner i WSMAN. Vær oppmerksom på at dette er implementeringsspesifikt og gjelder implementering av wsmancli. Dette kan være annerledes eller oppdateres i fremtidige versjoner.

Resolution

CIMOMs iboende EnumerateClassNames-funksjon 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 vil se ut som ovenfor, noe som indikerer at i navnerommet root / cimv2 er Linux_Processor en av klassene som er registrert. Det finnes en rekke CIM-klasser som arves når nye klasser registreres i root/cimv2-navnerommet, og kommandoen ovenfor vil også liste opp alle disse klassenavnene. Som en generell regel kan du ignorere alle klassene med CIM_ prefiks. Alle klassene med Linux_ prefiks er klassene som er registrert av leverandører installert på et Linux-system. Når du arbeider med Dells idrac, er du for det meste interessert i kurs med DCIM_ prefiks.

 Nå som du har en liste over alle klassenavnene, kan du bruke getClass iboende funksjon for å trekke ut definisjonen av Linux_Processor-klassen 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. Det betyr at noen av egenskapene som arves fra andre CIM_* -klasser, ikke er oppført med gjeldende implementering. Vanligvis fra en klasses definisjon kan du finne ut hvilke metoder som er definert i klassen, hvilke parametere som må sendes til disse metodene og hvilke egenskaper klassen er nøkkelegenskaper osv. Men siden kommandoen ovenfor bare returnerer de lokale egenskapene, kan ikke nøkkelegenskapene i klassen identifiseres. Igjen, dette er for øyeblikket en implementeringsbegrensning i wsmancli.

Så selv om GetClass-funksjonen er et godt utgangspunkt, er resultatet av det ikke tilstrekkelig nok til å bestemme hvilke egenskaper klassen kan brukes som nøkkelegenskaper slik at get/put/create/custom-handling kan påkalles. Så, hvilke andre teknikker kan brukes til å oppnå dette? Det er her EPR kan hjelpe.


EPR (sluttpunktreferanse) er en peker til en forekomst med to informasjonsdeler: ResourceURI og et velgersett. ResourceURI har klassenavnet forekomsten er opprettet fra, og velgersettet viser egenskapene en forekomst kan identifiseres unikt med. EPR av 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 bare av én prosessor. I utdataene resourceURI er oppført som http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor og SelectorSet viser verdiene __cimnamespace, SystemCreationClassName, SystemName , CreationClassName og DeviceID. Dette betyr at for alle egenskapene i Linux_Processor-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, vil ikke CIMOM i back-end kunne identifisere en forekomst unikt. På samme måte, hvis det er noen egendefinerte metoder som må kjøres en forekomst, kan EPR for klassen brukes til å identifisere nøkkelegenskapene du kan påkalle en metode med.

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. Siden en forekomst av en forening har pekere til to forekomster, vil en EPR av en forening ha EPR av forekomstene / objektene foreningen 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 er en tilknytning mellom Linux_ComputerSystem - og Linux_Processor-klassene som etablerer forholdet mellom prosessorene i datasystemer, og dermed delene GroupComponent og PartComponent.

Jeg måtte bruke litt tid på å finne ut EPR og hvordan de kan brukes til å få tilgang til individuelle forekomster, tenkte det kunne komme til nytte for andre. Føl deg fri til å forlate meg dine kommentarer / forslag nedenfor.

Ansvarsfraskrivelse:

Ovennevnte artikkel er kun til informasjonsformål. Innholdet er fra min tolkning av teknologiene / terminologiene som er nevnt. Denne informasjonen leveres som den er og kan inneholde noen typografiske feil og/eller tekniske unøyaktigheter.

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.