PowerEdge: exploración de WSMAN más allá de la enumeración

Summary: Soluciones para aplicaciones y SO de Dell en Dell TechCenter - Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu y mucho más

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 es la API de administración elegida para Dell iDRAC, y se están realizando grandes esfuerzos para que la administración remota del sistema sea lo más completa posible. Después de estudiar el protocolo WSMAN para un complemento
, descubrí que se vuelve complejo después de la acción de enumeración inicial. No hay documentación ni ejemplos sobre cómo invocar acciones get/put/create/delete/custom con las propiedades clave correctas. La fuente principal de esta información es la especificación WSMAN de DMTF y la especificación de vinculación WSMAN-CIM, que son extremadamente largas de seguir. Como mencioné, la mayor parte del contenido de este artículo proviene de los documentos de especificación de DMTF. Este es un intento de hacer que esa información se digiera con algunos ejemplos (en Linux).

 Ya publiqué una documentación técnica sobre cómo comenzar con SFCB y openwsman en https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Si eres nuevo en WSMAN y SFCB, el pdf sería un mejor punto de partida que este artículo. Al igual que en la documentación técnica anterior, se trata principalmente de las implementaciones de Openwsman y SFCB CIMOM en este artículo

Ahora, dado un servidor WSMAN, ¿hay alguna manera de enumerar todos los componentes que se pueden administrar mediante la API de wsman? La mayoría de los servidores WSMAN se comunican con un CIMOM en el back-end y exponen las funcionalidades de administración de los CIMOM. es decir, las funcionalidades de administración de un servidor WSMAN dependen de los proveedores de CIM registrados en el CIMOM en el backend. CIMOM tiene una función intrínseca con el nombre EnumerateClassNames definida a la que se puede llamar para enumerar todas las clases registradas en CIMOM.

Cause

Dado que no hay ninguna correlación uno a uno para EnumerateClassNames en la especificación de WSMAN, este método se invoca como cualquier otra función personalizada en WSMAN. Tenga en cuenta que esto es específico de la implementación y se aplica a la implementación de wsmancli. Podría ser diferente o actualizarse en versiones futuras.

Resolution

La relación intrínseca de CIMOM EnumerateClassNames se puede llamar de la siguiente manera 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>...................
 

El resultado se ve como el anterior, lo que indica que en el espacio de nombres root/cimv2, Linux_Processor es una de las clases registradas. Varias clases CIM se heredan cuando se registran nuevas clases en root o cimv2y el comando enumera todos esos nombres de clase. Por lo general, puede ignorar todas las clases con CIM_ prefijo. Todas las clases con Linux_ prefijo son las clases registradas por los proveedores instalados en un sistema Linux.
Mientras trabaja con la iDRAC de Dell, le interesan principalmente las clases con DCIM_ prefix.

 Con la lista de nombres de clase, use el comando getClass para extraer la función Linux_Processor Definición de clase de la siguiente manera:

 

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
 

 El comando anterior enumera todas las propiedades definidas en el Linux_Processor a nivel local. Es decir, cualquiera de las propiedades que se heredan de otros CIM_* Las clases no se enumeran con la implementación actual. Las definiciones de clase revelan métodos, parámetros y propiedades clave, pero el comando solo devuelve propiedades locales, lo que hace que las propiedades clave no se puedan identificar. Nuevamente, esta es una limitación de implementación en wsmancli.

Si bien GetClass es un buen comienzo, su salida no es suficiente para identificar las propiedades clave para invocar acciones get, put, create o custom.
Entonces, ¿qué otras técnicas se pueden utilizar para lograr esto? Aquí es donde las EPR pueden ayudar.


La referencia de punto final (EPR) es un puntero a una instancia con dos piezas de información: el ResourceURI y un conjunto de selectores. El ResourceURI tiene el nombre de la clase a partir de la cual se crea la instancia y el conjunto de selección enumera las propiedades con las que se puede identificar una instancia de forma única. Las EPR de una clase determinada se pueden enumerar con un comando similar al siguiente:

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 todos los procesadores en el sistema de destino, la salida anterior es de un procesador.
En la salida, el resourceURI aparece como https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor y SelectorSet Enumera los valores de __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. Esto significa que de todas las propiedades de la clase heredadas y definidas localmente, estas propiedades se pueden usar para identificar de forma única una instancia.


 Por lo tanto, puede esperar una respuesta válida de un comando como el siguiente:

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 se utilizan otras propiedades en la solicitud anterior, el CIMOM en el back-end no puede identificar una instancia de manera única. Para ejecutar métodos personalizados en una instancia, utilice la EPR de la clase para identificar las propiedades clave para la invocación de métodos.


También puede enumerar las EPR de una asociación. Con el nombre de clase, no se puede averiguar si se trata de un nombre de clase estándar o de una clase de asociación. Una instancia de asociación apunta a dos instancias, por lo que su EPR incluye las EPR de las instancias u objetos a los que hace referencia. El siguiente es un ejemplo de lo mismo:

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 Enlaces Linux_ComputerSystem y Linux_Processor, que muestra que los procesadores se encuentran en los sistemas informáticos, detallando GroupComponent y PartComponent secciones.

Dediqué tiempo a comprender las EPR y su uso para acceder a instancias, pensando que podría ayudar a otros. No dudes en dejarme tus comentarios o sugerencias a continuación.

Descargo de responsabilidad:

El artículo anterior es solo para fines informativos. El contenido proviene de mi interpretación de las tecnologías y terminologías mencionadas. Esta información se proporciona tal cual y puede contener algunos errores tipográficos o inexactitudes técnicas.
 

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.