PowerEdge : exploration de WSMAN au-delà de l’énumération

Summary: Système d’exploitation Dell et solutions d’applications sur Dell TechCenter - Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu et bien plus encore

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 est l’API de gestion choisie pour Dell iDRAC, et des efforts considérables sont en cours pour rendre la gestion des systèmes à distance aussi complète et aussi complète que possible. Après avoir étudié le protocole WSMAN pour un plugin
, j’ai trouvé qu’il devenait complexe suite à l’action d’énumération initiale. Il n’y a pas de documentation ou d’exemples sur la façon d’appeler des actions get/put/create/delete/custom avec les propriétés de clé appropriées. La principale source de ces informations est la spécification WSMAN de DMTF et la spécification de liaison WSMAN-CIM qui sont extrêmement longues à suivre. Là encore, la plupart du contenu de cet article provient des documents de spécification DMTF. Il s’agit d’une tentative de rendre cette information digérée avec quelques exemples (sous Linux).

 J’ai déjà publié un livre blanc sur la façon de commencer avec SFCB et openwsman à l’adresse https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Si vous êtes nouveau sur WSMAN et SFCB, le pdf serait un meilleur point de départ que cet article. Comme dans le livre blanc ci-dessus, traite principalement des implémentations openwsman et SFCB CIMOM dans cet article

Maintenant, étant donné un serveur WSMAN, existe-t-il un moyen de répertorier tous les composants qui sont gérables par l’API wsman ? La plupart des serveurs WSMAN communiquent avec un CIMOM sur le back-end et exposent les fonctionnalités de gestion des CIMOM. Cela signifie que les capacités de gestion d’un serveur WSMAN dépendent des fournisseurs CIM qui sont enregistrés sur le CIMOM qui se trouve sur le back-end. Le CIMOM a une fonction intrinsèque du nom EnumerateClassNames qui peut être appelée pour répertorier toutes les classes enregistrées sur CIMOM.

Cause

Étant donné qu’il n’y a pas de mappage un-à-un pour EnumerateClassNames dans la spécification WSMAN, cette méthode est appelée comme n’importe quelle autre fonction personnalisée dans WSMAN. Notez que ceci est spécifique à l’implémentation et s’applique à l’implémentation wsmancli. Cela pourrait être différent ou mis à jour dans les prochaines versions.

Resolution

L’intrinsèque du CIMOM EnumerateClassNames peut être appelée comme suit avec 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>...................
 

Le résultat ressemble à ce qui précède, indiquant que dans l’espace de nommage root/cimv2, Linux_Processor est l’une des classes inscrites. Plusieurs classes CIM sont héritées lorsque de nouvelles classes s’enregistrent dans root ou cimv2, et la commande répertorie tous ces noms de classe. En règle générale, vous pouvez ignorer toutes les classes avec CIM_ . Toutes les classes avec Linux_ préfixe sont les classes enregistrées par les fournisseurs installés sur un système Linux.
Lorsque vous travaillez avec l’iDRAC de Dell, vous êtes particulièrement intéressé par les cours avec DCIM_ prefix.

 Avec la liste des noms de classe, utilisez la commande getClass pour extraire le fichier Linux_Processor La définition de la classe est la suivante :

 

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
 

 La commande ci-dessus répertorie toutes les propriétés définies dans le fichier Linux_Processor localement. C’est-à-dire l’une des propriétés héritées d’autres CIM_* Les classes ne sont pas répertoriées avec l’implémentation actuelle. Les définitions de classe révèlent les méthodes, les paramètres et les propriétés de clé, mais la commande ne renvoie que les propriétés locales, ce qui rend les propriétés clés non identifiables. Encore une fois, il s’agit d’une limitation de mise en œuvre dans wsmancli.

Tandis que GetClass est un bon début, sa sortie ne suffit pas à identifier les propriétés clés pour appeler des actions get or put ou create ou custom.
Alors, quelles autres techniques peuvent être utilisées pour y parvenir ? C’est là que les EPR peuvent vous aider.


La référence de point final (EPR) est un pointeur vers une instance avec deux éléments d’information : le ResourceURI et un ensemble de sélecteurs. L' ResourceURI a le nom de classe à partir duquel l’instance est créée et le Selector Set répertorie les propriétés avec lesquelles une instance peut être identifiée de manière unique. Les EPR d’une classe particulière peuvent être énumérées à l’aide d’une commande similaire à :

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>



De tous les processeurs du système cible, la sortie ci-dessus est celle d’un seul processeur.
Dans la sortie, l’URI de ressource est répertorié comme suit : https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor et SelectorSet Répertorie les valeurs de __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. Cela signifie que pour toutes les propriétés de la classe héritées et définies localement, ces propriétés peuvent être utilisées pour identifier de manière unique une instance.


 Vous pouvez donc vous attendre à une réponse valide d’une commande telle que :

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



 Si d’autres propriétés sont utilisées dans la demande ci-dessus, le CIMOM du back-end ne peut pas identifier une instance de manière unique. Pour exécuter des méthodes personnalisées sur une instance, utilisez l’EPR de la classe afin d’identifier les propriétés clés pour l’appel de méthode.


Vous pouvez également énumérer les EPR d’une association. Pour un nom de classe donné, il n’est pas possible de savoir s’il s’agit d’un nom de classe standard ou d’association. Une instance d’association pointe vers deux instances, de sorte que son EPR inclut les EPR des instances ou des objets auxquels elle fait référence. Voici un exemple de la même chose :

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 Liens Linux_ComputerSystem et Linux_Processor, montrant les processeurs dans les systèmes informatiques, en détaillant GroupComponent et PartComponent des sections de l’Île-du-Prince

J’ai passé du temps à comprendre les EPR et leur utilisation pour accéder aux instances, pensant que cela pourrait aider les autres. N’hésitez pas à me laisser vos commentaires ou suggestions ci-dessous.

Avis de non-responsabilité :

L’article ci-dessus est fourni à titre informatif uniquement. Le contenu provient de mon interprétation des technologies et des terminologies mentionnées. Ces informations sont fournies en l’état et peuvent contenir des erreurs typographiques et/ou des inexactitudes techniques.
 

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.