package org.ovirt.engine.core.bll; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.utils.VmDeviceUtils; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.GraphicsParameters; import org.ovirt.engine.core.common.businessentities.GraphicsDevice; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.vdsbroker.ResourceManager; public abstract class AbstractGraphicsDeviceCommand<T extends GraphicsParameters> extends CommandBase<T> { @Inject protected ResourceManager resourceManager; @Inject protected VmDeviceUtils vmDeviceUtils; public AbstractGraphicsDeviceCommand(T parameters, CommandContext cmdContext) { super(parameters, cmdContext); if (parameters.isVm()) { setVmId(parameters.getDev().getVmId()); } else { setVmTemplateId(parameters.getDev().getVmId()); } } @Override protected boolean validate() { GraphicsDevice dev = getParameters().getDev(); if (dev == null) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_DEVICE_MUST_BE_SPECIFIED); } if (getParameters().isVm() && getVm() == null) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_VM_NOT_FOUND); } if (!getParameters().isVm() && getVmTemplate() == null) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_TEMPLATE_DOES_NOT_EXIST); } if (dev.getGraphicsType() == null) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_GRAPHIC_TYPE_MUST_BE_SPECIFIED); } return true; } @Override public List<PermissionSubject> getPermissionCheckSubjects() { List<PermissionSubject> permissionList = new ArrayList<>(); permissionList.add(new PermissionSubject(getVmBaseId(), getParameters().isVm() ? VdcObjectType.VM : VdcObjectType.VmTemplate, getActionType().getActionGroup())); return permissionList; } protected Guid getVmBaseId() { return getParameters().getDev().getVmId(); } }