package org.ovirt.engine.core.common.businessentities; import java.util.HashMap; import org.ovirt.engine.core.common.mode.ApplicationMode; public enum ActionGroup { // vm actions groups CREATE_VM(1, RoleType.USER, false, ApplicationMode.VirtOnly), DELETE_VM(2, RoleType.USER, true, ApplicationMode.VirtOnly), EDIT_VM_PROPERTIES(3, RoleType.USER, true, ApplicationMode.VirtOnly), REBOOT_VM(17, RoleType.USER, true, ApplicationMode.VirtOnly), STOP_VM(18, RoleType.USER, true, ApplicationMode.VirtOnly), SHUT_DOWN_VM(19, RoleType.USER, true, ApplicationMode.VirtOnly), HIBERNATE_VM(21, RoleType.USER, true, ApplicationMode.VirtOnly), RUN_VM(22, RoleType.USER, true, ApplicationMode.VirtOnly), CHANGE_VM_CD(5, RoleType.USER, true, ApplicationMode.VirtOnly), MIGRATE_VM(6, RoleType.USER, true, ApplicationMode.VirtOnly), CONNECT_TO_SERIAL_CONSOLE(1664, RoleType.USER, true, ApplicationMode.VirtOnly), /** * Connect to the console of a virtual machine, but only if no user * has connected before: */ CONNECT_TO_VM(7, RoleType.USER, true, ApplicationMode.VirtOnly), IMPORT_EXPORT_VM(8, RoleType.ADMIN, true, ApplicationMode.VirtOnly), CONFIGURE_VM_NETWORK(9, RoleType.USER, true, ApplicationMode.VirtOnly), CONFIGURE_VM_STORAGE(10, RoleType.USER, true, ApplicationMode.VirtOnly), MOVE_VM(11, RoleType.USER, true, ApplicationMode.VirtOnly), MANIPULATE_VM_SNAPSHOTS(12, RoleType.USER, true, ApplicationMode.VirtOnly), /** * Connect to the console of a virtual machine even if a different * user was connected before: */ RECONNECT_TO_VM(13, RoleType.USER, true, ApplicationMode.VirtOnly), CHANGE_VM_CUSTOM_PROPERTIES(14, RoleType.ADMIN, true, ApplicationMode.VirtOnly), /** * Admin role can specify destinationVdsId to override default target host. */ EDIT_ADMIN_VM_PROPERTIES(15, RoleType.ADMIN, true, ApplicationMode.VirtOnly), CREATE_INSTANCE(16, RoleType.USER, false, ApplicationMode.VirtOnly), // host (vds) actions groups CREATE_HOST(100, RoleType.ADMIN, true), EDIT_HOST_CONFIGURATION(101, RoleType.ADMIN, true), DELETE_HOST(102, RoleType.ADMIN, true), MANIPULATE_HOST(103, RoleType.ADMIN, true), CONFIGURE_HOST_NETWORK(104, RoleType.ADMIN, true), // templates actions groups CREATE_TEMPLATE(200, RoleType.USER, false, ApplicationMode.VirtOnly), EDIT_TEMPLATE_PROPERTIES(201, RoleType.USER, true, ApplicationMode.VirtOnly), DELETE_TEMPLATE(202, RoleType.USER, true, ApplicationMode.VirtOnly), COPY_TEMPLATE(203, RoleType.USER, true, ApplicationMode.VirtOnly), CONFIGURE_TEMPLATE_NETWORK(204, RoleType.USER, true, ApplicationMode.VirtOnly), EDIT_ADMIN_TEMPLATE_PROPERTIES(205, RoleType.ADMIN, true, ApplicationMode.VirtOnly), // vm pools actions groups CREATE_VM_POOL(300, RoleType.USER, false, ApplicationMode.VirtOnly), EDIT_VM_POOL_CONFIGURATION(301, RoleType.USER, true, ApplicationMode.VirtOnly), DELETE_VM_POOL(302, RoleType.USER, true, ApplicationMode.VirtOnly), VM_POOL_BASIC_OPERATIONS(303, RoleType.USER, true, ApplicationMode.VirtOnly), // clusters actions groups CREATE_CLUSTER(400, RoleType.ADMIN, true), EDIT_CLUSTER_CONFIGURATION(401, RoleType.ADMIN, true), DELETE_CLUSTER(402, RoleType.ADMIN, true), CONFIGURE_CLUSTER_NETWORK(403, RoleType.ADMIN, true), ASSIGN_CLUSTER_NETWORK(404, RoleType.ADMIN, true), // users and MLA actions groups MANIPULATE_USERS(500, RoleType.ADMIN, true), MANIPULATE_ROLES(501, RoleType.ADMIN, true), MANIPULATE_PERMISSIONS(502, RoleType.USER, true), ADD_USERS_AND_GROUPS_FROM_DIRECTORY(503, RoleType.USER, true), EDIT_PROFILE(504, RoleType.USER, true), // storage domains actions groups CREATE_STORAGE_DOMAIN(600, RoleType.ADMIN, true, ApplicationMode.VirtOnly), EDIT_STORAGE_DOMAIN_CONFIGURATION(601, RoleType.ADMIN, true, ApplicationMode.VirtOnly), DELETE_STORAGE_DOMAIN(602, RoleType.ADMIN, true, ApplicationMode.VirtOnly), MANIPULATE_STORAGE_DOMAIN(603, RoleType.ADMIN, true, ApplicationMode.VirtOnly), // storage pool actions groups CREATE_STORAGE_POOL(700, RoleType.ADMIN, true, ApplicationMode.VirtOnly), DELETE_STORAGE_POOL(701, RoleType.ADMIN, true, ApplicationMode.VirtOnly), EDIT_STORAGE_POOL_CONFIGURATION(702, RoleType.ADMIN, true, ApplicationMode.VirtOnly), CONFIGURE_STORAGE_POOL_NETWORK(703, RoleType.ADMIN, true), CREATE_STORAGE_POOL_NETWORK(704, RoleType.ADMIN, true), DELETE_STORAGE_POOL_NETWORK(705, RoleType.ADMIN, true), // engine generic CONFIGURE_ENGINE(800, RoleType.ADMIN, true), // Quota CONFIGURE_QUOTA(900, RoleType.ADMIN, true, ApplicationMode.VirtOnly), CONSUME_QUOTA(901, RoleType.USER, true, ApplicationMode.VirtOnly), // Gluster CREATE_GLUSTER_VOLUME(1000, RoleType.ADMIN, true, ApplicationMode.GlusterOnly), MANIPULATE_GLUSTER_VOLUME(1001, RoleType.ADMIN, true, ApplicationMode.GlusterOnly), DELETE_GLUSTER_VOLUME(1002, RoleType.ADMIN, true, ApplicationMode.GlusterOnly), MANIPULATE_GLUSTER_HOOK(1003, RoleType.ADMIN, true, ApplicationMode.GlusterOnly), MANIPULATE_GLUSTER_SERVICE(1004, RoleType.ADMIN, true, ApplicationMode.GlusterOnly), // Disks action groups CREATE_DISK(1100, RoleType.USER, false, ApplicationMode.VirtOnly), ATTACH_DISK(1101, RoleType.USER, true, ApplicationMode.VirtOnly), EDIT_DISK_PROPERTIES(1102, RoleType.USER, true, ApplicationMode.VirtOnly), CONFIGURE_DISK_STORAGE(1103, RoleType.USER, true, ApplicationMode.VirtOnly), DELETE_DISK(1104, RoleType.USER, true, ApplicationMode.VirtOnly), CONFIGURE_SCSI_GENERIC_IO(1105, RoleType.ADMIN, true, ApplicationMode.VirtOnly), ACCESS_IMAGE_STORAGE(1106, RoleType.USER, false, ApplicationMode.VirtOnly), DISK_LIVE_STORAGE_MIGRATION(1107, RoleType.USER, true, ApplicationMode.VirtOnly), SPARSIFY_DISK(1108, RoleType.USER, true, ApplicationMode.VirtOnly), // VNIC Profiles CONFIGURE_NETWORK_VNIC_PROFILE(1203, RoleType.ADMIN, true, ApplicationMode.VirtOnly), CREATE_NETWORK_VNIC_PROFILE(1204, RoleType.ADMIN, true, ApplicationMode.VirtOnly), DELETE_NETWORK_VNIC_PROFILE(1205, RoleType.ADMIN, true, ApplicationMode.VirtOnly), // Login action group LOGIN(1300, RoleType.USER, false), // Inject external events action group INJECT_EXTERNAL_EVENTS(1400, RoleType.ADMIN, false), // Inject external tasks action group INJECT_EXTERNAL_TASKS(1500, RoleType.ADMIN, false), // Tag management action group TAG_MANAGEMENT(1301, RoleType.ADMIN, false), // Bookmark management action group BOOKMARK_MANAGEMENT(1302, RoleType.ADMIN, false), // Event notification management action group EVENT_NOTIFICATION_MANAGEMENT(1303, RoleType.ADMIN, false), // audit log management action group AUDIT_LOG_MANAGEMENT(1304, RoleType.ADMIN, false), // affinity group CRUD commands MANIPULATE_AFFINITY_GROUPS(1550, RoleType.ADMIN, true, ApplicationMode.VirtOnly), // disk profiles CONFIGURE_STORAGE_DISK_PROFILE(1560, RoleType.ADMIN, true, ApplicationMode.VirtOnly), CREATE_STORAGE_DISK_PROFILE(1561, RoleType.ADMIN, true, ApplicationMode.VirtOnly), DELETE_STORAGE_DISK_PROFILE(1562, RoleType.ADMIN, true, ApplicationMode.VirtOnly), ATTACH_DISK_PROFILE(1563, RoleType.USER, true, ApplicationMode.VirtOnly), // MAC pool actions groups CREATE_MAC_POOL(1660, RoleType.ADMIN, true, ApplicationMode.VirtOnly), EDIT_MAC_POOL(1661, RoleType.ADMIN, true, ApplicationMode.VirtOnly), DELETE_MAC_POOL(1662, RoleType.ADMIN, true, ApplicationMode.VirtOnly), CONFIGURE_MAC_POOL(1663, RoleType.ADMIN, true, ApplicationMode.VirtOnly), // cpu profiles DELETE_CPU_PROFILE(1665, RoleType.ADMIN, true, ApplicationMode.VirtOnly), UPDATE_CPU_PROFILE(1666, RoleType.ADMIN, true, ApplicationMode.VirtOnly), CREATE_CPU_PROFILE(1667, RoleType.ADMIN, true, ApplicationMode.VirtOnly), ASSIGN_CPU_PROFILE(1668, RoleType.ADMIN, true, ApplicationMode.VirtOnly); private int id; private RoleType roleType; private boolean allowsViewingChildren; private int applicationMode; private static final HashMap<Integer, ActionGroup> map = new HashMap<>(ActionGroup.values().length); static { for (ActionGroup t : ActionGroup.values()) { map.put(t.id, t); } } private ActionGroup(int value, RoleType type, boolean allowsViewingChildren) { this(value, type, allowsViewingChildren, ApplicationMode.AllModes); } private ActionGroup(int value, RoleType type, boolean allowsViewingChildren, ApplicationMode applicationMode) { id = value; roleType = type; this.allowsViewingChildren = allowsViewingChildren; this.applicationMode = applicationMode.getValue(); } public int getId() { return id; } public RoleType getRoleType() { return roleType; } public boolean allowsViewingChildren() { return allowsViewingChildren; } public static ActionGroup forValue(int value) { return map.get(value); } public int getAvailableInModes() { return applicationMode; } }