package org.ovirt.engine.api.restapi.resource; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.Vm; import org.ovirt.engine.api.resource.AffinityGroupVmResource; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.scheduling.AffinityGroup; import org.ovirt.engine.core.common.scheduling.parameters.AffinityGroupCRUDParameters; import org.ovirt.engine.core.compat.Guid; public class BackendAffinityGroupVmResource extends AbstractBackendActionableResource<Vm, org.ovirt.engine.core.common.businessentities.VM> implements AffinityGroupVmResource { private Guid groupId; public BackendAffinityGroupVmResource(Guid groupId, String vmId) { super(vmId, Vm.class, org.ovirt.engine.core.common.businessentities.VM.class); this.groupId = groupId; } @Override public Response remove() { AffinityGroup group = getGroup(); if (group == null || !group.getVmIds().remove(asGuid(id))) { throw new WebApplicationException(Response.Status.NOT_FOUND); } return performAction( VdcActionType.EditAffinityGroup, new AffinityGroupCRUDParameters(groupId, group) ); } private org.ovirt.engine.core.common.scheduling.AffinityGroup getGroup() { return getEntity( org.ovirt.engine.core.common.scheduling.AffinityGroup.class, VdcQueryType.GetAffinityGroupById, new IdQueryParameters(groupId), groupId.toString() ); } }