PowerEdge: изучение WSMAN за пределами перечисления
Summary: Решения Dell для ОС и приложений на портале Dell TechCenter — Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu и многое другое
Symptoms
, я обнаружил, что он становится сложным после первоначального действия перечисления. Нет документации или примеров того, как вызывать действия get/put/create/delete/custom с правильными свойствами ключа. Основным источником этой информации является спецификация WSMAN от компании DMTF и спецификация связывания WSMAN-CIM, слишком объемные, чтобы им следовать. Повторю, большая часть содержимого этой статьи взята из документов спецификации DMTF. Это попытка усвоить эту информацию на некоторых примерах (в Linux).
Технический документ о том, как начать работу с SFCB и openwsman уже опубликован на сайте https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Если вы новичок в WSMAN и SFCB, pdf-файл будет лучшей отправной точкой, чем эта статья. Как и в приведенном выше техническом документе, в этой статье
в основном рассматриваются реализации openwsman и SFCB CIMOM Теперь, имея сервер WSMAN, есть ли способ вывести список всех компонентов, которыми управляет wsman API? Большинство серверов WSMAN взаимодействуют с CIMOM на сервере и предоставляют функции управления CIMOM. То есть возможности управления сервера WSMAN зависят от поставщиков CIM, зарегистрированных в CIMOM на внутреннем сервере. В CIMOM есть внутренняя функция EnumerateClassNames, которую можно вызвать для вывода списка всех классов, зарегистрированных в CIMOM.
Cause
Resolution
Встроенная функция CIMOM EnumerateClassNames можно вызвать следующим образом с помощью 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>...................
Вывод выглядит так, как показано выше, указывая, что в пространстве имен root/cimv2 Linux_Processor является одним из зарегистрированных классов. Несколько классов CIM наследуются, когда новые классы регистрируются в root или cimv2, и команда выводит список всех этих имен классов. Как правило, вы можете игнорировать все классы с помощью CIM_ префикс. Все классы с Linux_ префиксом являются классами, зарегистрированными поставщиками, установленными в системе Linux.
При работе с iDRAC от Dell вас больше всего интересуют занятия с DCIM_ prefix.
В списке имен классов используйте команду getClass для извлечения Linux_Processor определение класса следующим образом:
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
Приведенная выше команда перечисляет все свойства, определенные в свойстве Linux_Processor локально. Имеется в виду любое из свойств, унаследованных от других CIM_* Классы не перечислены в текущей реализации. Определения классов раскрывают методы, параметры и свойства ключей, но команда возвращает только локальные свойства, что делает ключевые свойства неидентифицируемыми. Опять же, это ограничение реализации в wsmancli.
В то время как GetClass является хорошим началом, его выходных данных недостаточно для определения ключевых свойств для вызова действий get, put, create или custom.
Итак, какие еще методы можно использовать для этого? В этом могут помочь РОП.
End-Point Reference (EPR) — это указатель на экземпляр с двумя фрагментами информации: ResourceURI и Селекторный набор. В строке ResourceURI имеет имя класса, из которого создан экземпляр, а в Selector Set перечислены свойства, с помощью которых экземпляр может быть однозначно идентифицирован. ЭПР определенного класса можно перечислить с помощью команды, аналогичной следующей:
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>
Из всех процессоров в целевой системе указанный выше вывод относится к одному процессору.
В выходных данных resourceURI отображается как https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor и SelectorSet перечисляет значения __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. Это означает, что из всех свойств класса inherit и local-defined) эти свойства могут быть использованы для уникальной идентификации экземпляра.
Таким образом, можно ожидать действительный ответ от такой команды, как:
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
Если в вышеуказанном запросе используются какие-либо другие свойства, CIMOM в серверной части не может однозначно идентифицировать экземпляр. Чтобы запустить пользовательские методы в экземпляре, используйте EPR класса для определения ключевых свойств для вызова метода.
Также можно перечислить EPR связи. В случае, если не удается определить, является ли имя класса стандартным именем класса или классом связи. Экземпляр ассоциации указывает на два экземпляра, поэтому его EPR включает в себя EPR экземпляров или объектов, на которые он ссылается. Ниже приведен пример того же самого:
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 Ссылки Linux_ComputerSystem и Linux_Processor, показывающий, что процессоры находятся в компьютерных системах, с подробными сведениями GroupComponent и PartComponent разделов.
Я потратил некоторое время на изучение EPR и их использования для доступа к экземплярам, думая, что это может помочь другим. Не стесняйтесь оставлять мне свои комментарии или предложения ниже.
Дисклеймер:
Вышеуказанная статья носит исключительно информационный характер. Содержание основано на моей интерпретации упомянутых технологий и терминологии. Эта информация предоставляется на условиях «как есть» и может содержать опечатки и/или технические неточности.