vmware .net api help проблемы vmware.vim.dll - PullRequest
0 голосов
/ 02 февраля 2012

Ссылка на .net api в Vmware несколько запутана и трудна для понимания.Я смог подключиться к своему хосту vcenter и получить список хостов esxi.Затем я смог получить все работающие модули на хосте, используя HostKernelModuleSystem, и проверить свойства переменной "mod" ... но я не могу понять, как получить информацию о лицензии, я попытался создать объектlic ниже, пробуя всевозможные «типы» из vmware со словом license в типе.но, это никогда не работает, у него есть проблема с преобразованием строки с LicenseManagerLicenseInfo lic = .... Я всегда получаю следующее:

"Невозможно преобразовать тип 'Vmware.Vim.Viewbase' в 'Vmware.Vim.LicenseManagerLicenseInfo'"

, но приведенное выше объявление для" mod "работает нормально.

Я также пытался:

  • HostLicenseConnectInfo
  • LicenseAssignmentManagerLicenseAssignment
  • LicenseManager

Я надеюсь, что кто-то, кто работал с vmware .net api, сможет пролить свет на то, что я делаю неправильно?Я новичок в C # около 1 года :), но эти API-интерфейсы VMware меня несколько смущают.

esxList = client.FindEntityViews(typeof(HostSystem), null, null, null);

foreach (HostSystem host in esxList)
{
    HostKernelModuleSystem mod = (HostKernelModuleSystem)client.GetView(host.ConfigManager.KernelModuleSystem, null);
    LicenseManagerLicenseInfo lic = (LicenseManagerLicenseInfo)client.GetView(host.ConfigManager.LicenseManager, null);

    string name = lic.Name;
}

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Я понял, как это сделать :), с помощью http://vcenter_hostname/mob я смог лучше пройти через API. вот что я сделал, плюс вместо того, чтобы использовать "host" типа HostSystem, я использовал свой экземпляр моего клиента vCenter "client"

VMware.Vim.LicenseManager lic_manager = (VMware.Vim.LicenseManager)client.GetView(client.ServiceContent.LicenseManager, null);
LicenseManagerLicenseInfo[] lic_found = lic_manager.Licenses;

foreach (LicenseManagerLicenseInfo lic in lic_found)
{
    string test = lic.Name.ToString();
    string test2 = lic.LicenseKey.ToString();
}
0 голосов
/ 02 февраля 2012

Мне придется завтра пойти на работу, чтобы посмотреть на это (у меня дома нет ESX и VMWare SDK для .NET), но я немного поработал.

Я написал обобщенный метод, который оборачивает FindEntityViews и принимает фильтр в качестве аргумента.Это облегчает поиск чего угодно.Также я заметил, что поиски возвращаются как ManagedObjectReferences и не могут быть приведены к подклассам.Вы должны сконструировать их, передав ManagedObjectReference в качестве аргумента.

Также я нахожу поиск примеров PowerCLI и наблюдение за классами в непосредственном окне очень полезными в навигации по этому API.Это довольно приличный SDK, но они помещают все классы в единое пространство имен, и существует множество небольших несоответствий стилей (Device вместо Devices и свойства, которые принимают строки вместо перечислений, когда существует перечисление).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...