PowerEdge: explorando o WSMAN além da enumeração

Summary: Soluções de aplicativos e SO da Dell no Dell TechCenter - Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu e muito mais

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

O WSMAN é a API de gerenciamento escolhida para o iDRAC da Dell, e esforços extensivos estão em andamento para tornar o gerenciamento remoto de sistemas o mais abrangente e possível. Depois de estudar o protocolo WSMAN para um plugin
, descobri que ele fica complexo após a ação de enumeração inicial. Não há documentação ou exemplos sobre como invocar ações get/put/create/delete/custom com as propriedades de chave corretas. A fonte primária para essas informações é a especificação WSMAN do DMTF e a especificação de vinculação WSMAN-CIM que são extremamente demoradas de seguir. Novamente, a maior parte do conteúdo deste artigo provém dos documentos de especificação do DMTF. Esta é uma tentativa de fazer com que essas informações sejam digeridas com alguns exemplos (no Linux).

 Já publiquei um white paper sobre como começar a usar o SFCB e openwsman em https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Se você é novo no WSMAN e SFCB, o pdf seria um melhor ponto de partida do que este artigo. Como no whitepaper acima trata principalmente de implementações do Openwsman e SFCB CIMOM neste artigo

Agora, dado um servidor WSMAN, existe uma maneira de listar todos os componentes que são gerenciáveis pela API wsman? A maioria dos servidores WSMAN conversa com um CIMOM no back-end e expõe as funcionalidades de gerenciamento dos CIMOMs. Ou seja, os recursos de gerenciamento de um servidor WSMAN dependem dos provedores CIM registrados no CIMOM no back-end. O CIMOM tem uma função intrínseca pelo nome EnumerateClassNames definido que pode ser acionado para listar todas as classes que estão registradas para o CIMOM.

Cause

Como não há nenhum mapeamento um-para-um para EnumerateClassNames na especificação WSMAN, esse método é chamado como qualquer outra função personalizada no WSMAN. Observe que isso é específico da implementação e se aplica à implementação do wsmancli. Isso pode mudar ou ser atualizado em versões futuras.

Resolution

O INTRÍNSECO CIMOM EnumerateClassNames A função pode ser chamada da seguinte forma com 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>...................
 

O resultado é semelhante ao acima, indicando que no namespace root/cimv2, Linux_Processor é uma das classes cadastradas. Várias classes CIM são herdadas quando novas classes são registradas no root ou cimv2e o comando lista todos esses nomes de classe. Geralmente, você pode ignorar todas as classes com CIM_ prefixo. Todas as classes com prefixo Linux_ são as classes registradas por provedores instalados em um sistema Linux.
Ao trabalhar com o iDRAC da Dell, você está mais interessado em aulas com DCIM_ prefix.

 Com a lista de nomes de classe, use o comando getClass para extrair o Linux_Processor Definição de classe da seguinte forma:

 

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
 

 O comando acima lista todas as propriedades definidas no Linux_Processor localmente. Ou seja, qualquer uma das propriedades herdadas de outras CIM_* classes não são listadas com a implementação atual. As definições de classe revelam métodos, parâmetros e propriedades de chave, mas o comando retorna apenas propriedades locais, tornando as propriedades de chave não identificáveis. Novamente, essa é uma limitação de implementação em wsmancli.

Enquanto GetClass é um bom começo, sua saída não é suficiente para identificar as principais propriedades para invocar ações get ou put ou create ou custom.
Então, que outras técnicas podem ser usadas para conseguir isso? É aqui que os EPRs podem ajudar.


A referência de endpoint (EPR) é um ponteiro para uma instância com duas informações: o ResourceURI e um Conjunto de Seletores. O ResourceURI tem o nome da classe a partir da qual a instância é criada e o Selector Set lista as propriedades com as quais uma instância pode ser identificada exclusivamente. Os EPRs de uma classe específica podem ser enumerados com um comando semelhante 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>



De todos os processadores no sistema de destino, a saída acima é de um processador.
No resultado, o resourceURI é listado como https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor e o SelectorSet Lista os valores de __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. Isso significa que todas as propriedades na classe herdada e definidas localmente) essas propriedades podem ser usadas para identificar exclusivamente uma instância.


 Portanto, você pode esperar uma resposta válida de um comando como:

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 qualquer outra propriedade for usada na solicitação acima, o CIMOM no back-end não poderá identificar uma instância exclusivamente. Para executar métodos personalizados em uma instância, use o EPR da classe para identificar as principais propriedades para a chamada do método.


Você também pode enumerar as EPRs de uma associação. Dado um nome de classe, não é possível descobrir se é um nome de classe padrão ou uma classe de associação. Uma instância de associação aponta para duas instâncias, portanto, seu EPR inclui os EPRs das instâncias ou objetos aos quais se refere. A seguir, um exemplo disso:

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 Ligações Linux_ComputerSystem e Linux_Processor, mostrando que os processadores estão em Sistemas de computador, detalhando GroupComponent e PartComponent seções.

Passei um tempo entendendo EPRs e seu uso para acessar instâncias, pensando que poderia ajudar os outros. Sinta-se livre para me deixar seus comentários ou sugestões abaixo.

Disclaimer:

O artigo acima é apenas para fins informativos. O conteúdo é da minha interpretação das tecnologias e terminologias mencionadas. Essas informações são fornecidas no estado em que se encontram e podem conter alguns erros tipográficos e/ou imprecisões 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.