Делаем сами: плагины в vClient

VMware vClient - основная консоль управления vSphere. А еще в vClient можно добавлять плагины - дополнительные модули, для работы из одного окна консоли. Такие плагины делает как сама VMware для некоторых своих продуктов (например, VMware vCenter Update Manager), так и сторонние разработчики - EMC, NetApp и многие прочие.
У М.Михеева есть специальная страничка с плагинами.

Плагины могут быть двух видов - web и .net. Web - это соответственно веб-странички, на .net плагины обычно очень похожи на "родные" части vClient.
И если для разработки своего плагина на .net нужно быть программистом, то web-приложений у нас в сети уже обычно имеется.
Так почему бы нам не добавить немного полезности?

Поехали!
В пути установки vClient (по умолчанию это "C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client" - у меня так, потому что ОС 64битная) есть папка для плагинов (Plugins). В нее нам необходимо положить .xml-файл с настройкой подключения к необходимому нам веб-приложению.

Краткий формат файла такой:
<scriptConfiguration version="1.0">
    <key>Google search plugin</key>
    <description>Google search tab for VMs</description>
    <multiVCsupported>false</multiVCsupported>
    <extension parent="InventoryView.VirtualMachine">
        <title locale="en">Google</title>
        <url display="window">http://google.com/webhp?output=html/</url>
    </extension>
</scriptConfiguration>

Разберем, что есть что:

  1. <key> - уникальный идентификатор плагина
  2. <description> - необязательный параметр - краткое описание плагина (будет отображаться в Plug-in Manager)
  3. <multiVCsupported> - позволяет запросить нужный нам vCenter (нам это не нужно)
  4. <extension> - отвечает за то, где и как будет отображаться наш плагин.
    parent - обязательный атрибут, указывающий точку, где будет отображаться наш плагин. Он может принять одно из множества значений в группах HomeView (для вида Home в консоли), InventoryView (в объектах Inventory), Toolbars (кнопочки), MainMenus и InventoryMenus (в меню консоли сверху и контекстное меню при клике правой кнопкой на объекте Inventory соответственно).
    Так как у нас веб-страничка, то соответственно выбираем из группы Inventory. В этой группе много объектов. Например, Cluster, Datacenter, Datastore, Hostsystem, Network, Template, VirtualMachine, VirtualApp и т.п. По названию можно догадаться, что они означают.
    Я указал "InventoryView.VirtualMachine" - соответственно мой плагин отображаться будет среди закладок при выборе виртуальной машины.
  5. <title>- название отображаемого элемента плагина, в нашем случае - название закладки.
    locale="en" - обязательный атрибут, указывающий для какого языка данное название предназначено. Так что, если у вас стоит немецкая версия клиента, можно указать "de", и немецкое название (Gugl :))
  6. <url display="window"&gt - самое главное - url нашего приложения.
На самом деле параметров больше. Для тех, кому интересно, ниже даю ссылочную информацию.

Механизм работы такой: по адресу web-приложения передается параметр moref (Managed Object Reference) - информация по текущей сессии, и объекту на котором сработал плагин. Информация  эта примерно такого вида:
/moref=VirtualMachine:304&serverGuid=&locale=en&serviceUrl=https://esx11.veskin.lab/sdk.
Соответственно на стороне приложения предполагается, что скрипт или программа обработает строку и получит все необходимые данные.
Потому, я долго подбирал, как должен выглядеть url Гугла:
http://www.google.com/webhp?output=html/,
иначе он просто давал ошибку 404, страницы "/moref" на гугл.ком нет.


Этот способ, как подключить плагин внутри локальной консоли клиента. Соответственно эти же xml нужно подложить на всех машинах, где стоит клиент vSphere и нужен этот плагин.
Но есть возможноть осуществить дистрибуцию плагина на все консоли централизовано через vCenter.
Мой британский коллега по Veeam Рикки Эль-Казим написал программу для создания и регистрации веб-приложения в VMware vCenter. Программа создает xml и регистрирует его в vCenter. Дальше можно, после подключения консоли к серверу, установить этот плагин.

В Veeam пока не сделали для своих продуктов плагины в vClient. Но так как Reporter Dashboard, Business View, Backup & Replication Enterprise Manager - это веб-консоли, то их можно воткнуть самому. Другой мой коллега по Veeam на своем блоге разместил уже подготовленные xml. Пользуйтесь на здоровье (и свой страх и риск ;))


Так как создание, подключение и работа с такими плагинами это ваша инициатива, и никто официальную поддержку осуществлять не будет, то добавлю несколько мыслей по поводу возможных проблем.

  1. Аутентификация. Проверьте, что локальный браузер нормально открывает нужную страницу веб-приложения.
  2. URL-приложения. Не забудьте указать правильный протокол (http или https) и порт.
  3. Передача moref-данных.
    Если вашему приложению нужны эти данные, проверьте, как приложение обрабатывает их (если приложение - ваша собственная разработка).
    Если данные не нужны - позаботьтесь, чтобы они тогда не мешали (как у меня с Google).
    Еще, я обнаружил, что в url не должно быть знака "&", иначе, плагин даже не отобразиться в клиенте.
  4. Проверьте корректность вашего xml. Закрытие тегов.
  5. Если что, логи vClient лежат по адресу: "%USERPROFILE%\Local Settings\Application Data\VMware\vpx"


Ну, и немного ссылок по теме: