如何在vijava中获取vm权限

时间:2015-09-21 10:15:50

标签: java vmware vsphere esxi

我正在尝试使用vijava获取虚拟机的权限,如下所示:

ManagedEntity me = new
InventoryNavigator(rootFolder).searchManagedEntity("VirtualMachine", vmName);
                VirtualMachine vm = (VirtualMachine) me;
for (Permission permission : vm.getPermission()) {
                System.out.println(permission.getPrincipal());
}

有了这个,我获得的权限仅适用于此vm。

如何获得虚拟机的总权限,包括继承?

2 个答案:

答案 0 :(得分:0)

我不确定这是否可行,因为每个权限列表都与特定实体(即VirtualMachine,HostSystem等)相关联。

我这样做的方法是获取虚拟机的底层实体并获取其权限。例如,由于您拥有VirtualMachine对象,因此获取底层HostSystem并检索其权限,等等。

ManagedEntity me = new
InventoryNavigator(rootFolder).searchManagedEntity("VirtualMachine", vmName);
                VirtualMachine vm = (VirtualMachine) me;

// Assuming that you have a ServiceInstance object si.
HostSystem host = (HostSystem)MorUtil.createExactManagedEntity(si
                        .getServerConnection(),vm.getRuntime().host);
Permission[] hostPermissions = host.getPermission();

我希望有所帮助。

答案 1 :(得分:0)

要获得所有继承权限,您应该获得所有父母的权限:

  while (me.getParent() != null) {
        me = me.getParent();
        Permission[] permissions = me.getPermission();
        if (permissions != null) {
            for (Permission p : permissions) {
                // do stuff....
            }
        }
    }