如何在vijava中获取vm权限

how to get vm permissions in vijava

我正在尝试像这样使用 vijava 获取虚拟机的权限:

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

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

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

我不确定这是否可行,因为每个权限列表都与特定实体(即 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();

希望对您有所帮助。

要获得所有继承的权限,您应该像这样获得所有 parents 权限:

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