package org.ovirt.engine.core.bll; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.core.compat.Guid; public abstract class ExternalEventCommandBase<T extends VdcActionParametersBase> extends CommandBase<T> { public ExternalEventCommandBase(T parameters, CommandContext cmdContext) { super(parameters, cmdContext); } protected List<PermissionSubject> getPermissionList(AuditLog event){ List<PermissionSubject> permissionList = new ArrayList<>(); if (event.getStorageDomainId() != null) { permissionList.add(new PermissionSubject(new Guid(event.getStorageDomainId().toString()), VdcObjectType.Storage, ActionGroup.INJECT_EXTERNAL_EVENTS)); } if (event.getStoragePoolId() != null) { permissionList.add(new PermissionSubject(new Guid(event.getStoragePoolId().toString()), VdcObjectType.StoragePool, ActionGroup.INJECT_EXTERNAL_EVENTS)); } if (event.getUserId() != null) { permissionList.add(new PermissionSubject(new Guid(event.getUserId().toString()), VdcObjectType.User, ActionGroup.INJECT_EXTERNAL_EVENTS)); } if (event.getClusterId() != null) { permissionList.add(new PermissionSubject(new Guid(event.getClusterId().toString()), VdcObjectType.Cluster, ActionGroup.INJECT_EXTERNAL_EVENTS)); } if (event.getVmId() != null) { permissionList.add(new PermissionSubject(new Guid(event.getVmId().toString()), VdcObjectType.VM, ActionGroup.INJECT_EXTERNAL_EVENTS)); } if (event.getVmTemplateId() != null) { permissionList.add(new PermissionSubject(new Guid(event.getVmTemplateId().toString()), VdcObjectType.VmTemplate, ActionGroup.INJECT_EXTERNAL_EVENTS)); } if (event.getVdsId() != null) { permissionList.add(new PermissionSubject(new Guid(event.getVdsId().toString()), VdcObjectType.VDS, ActionGroup.INJECT_EXTERNAL_EVENTS)); } if (permissionList.isEmpty()) { // Global Event permissionList.add(new PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID, VdcObjectType.System, ActionGroup.INJECT_EXTERNAL_EVENTS)); } return permissionList; } }