如何使用VMware Java vSphere SDK获取VirtualMachine参考?

时间:2013-11-17 20:12:58

标签: powershell powercli vmware-sdk

我熟悉使用PowerCLI中提供的VMware.Vim.dll在C#中使用VMware VIM API。现在我希望能够使用Java使用此API进行编程,但我无法找到它的等价物。 vSphere SDK中的com.vmware.vim.jar似乎没有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 个答案:

答案 0 :(得分:2)

我发现VMware Infrastructure(vSphere)Java API可以执行此操作:

http://sourceforge.net/projects/vijava/files/vijava/

答案 1 :(得分:2)

使用VMware Infrastructure(vSphere)Java API,即代码下面的vijava可以查找库存中的所有VM。

    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());
    }

OR

http://sourceforge.net/p/vijava/discussion/826592/thread/a6c44685#5b30 ---在群集环境中