Как получить ссылку на VirtualMachine с помощью VMware Java vSphere SDK?
Я знаком с использованием VMware VIM API в C# с использованием VMware.Vim.dll, предоставляемого в PowerCLI. Теперь я хочу иметь возможность программировать с этим API, используя Java, но я не могу найти его эквивалент. Кажется, что com.vmware.vim.jar в vSphere SDK не имеет всех классов, которые упомянуты в справочнике по API здесь:
http://www.vmware.com/support/developer/vc-sdk/
В частности, в Java я не могу понять, как получить экземпляр VirtualMachine. В C# я могу получить все виртуальные машины на автономном гипервизоре, выполнив следующие действия:
String serviceUrl = "https://192.168.1.100/sdk/vimService";
String username = "root";
String password = "MyPassword";
VimClient client = new VimClient();
client.Connect(serviceUrl);
client.Login(username, password);
var virtualMachines = client.FindEntityViews(typeof(VirtualMachine), client.ServiceContent.RootFolder, null, null).OfType<VirtualMachine>();
Как я могу получить это с помощью Java?
2 ответа
Использование Java API инфраструктуры VMware Infrastructure (vSphere), т.е. приведенного ниже кода vijava, позволяет найти все виртуальные машины в инвентаре.
String serviceUrl = "https://Your IP Address/sdk";
String username = "root";
String password = "MyPassword";
ServiceInstance si = new ServiceInstance(new URL(serviceUrl), username , password , true);
Folder rootFolder = si.getRootFolder();
ManagedEntity[] entities = new InventoryNavigator(rootFolder).searchManagedEntities("VirtualMachine");
for (ManagedEntity e : entities) {
vm = (VirtualMachine) e;
System.out.println("vm=" + vm.getName());
}
ИЛИ ЖЕ
http://sourceforge.net/p/vijava/discussion/826592/thread/a6c44685 --- в кластерной среде
Я обнаружил, что Java API инфраструктуры VMware Infrastructure (vSphere) может сделать это: