package org.ovirt.engine.api.restapi.resource;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.AffinityGroup;
import org.ovirt.engine.api.resource.AffinityGroupResource;
import org.ovirt.engine.api.resource.AffinityGroupVmsResource;
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.parameters.AffinityGroupCRUDParameters;
public class BackendAffinityGroupResource
extends AbstractBackendSubResource<AffinityGroup, org.ovirt.engine.core.common.scheduling.AffinityGroup>
implements AffinityGroupResource {
public BackendAffinityGroupResource(String id) {
super(id, AffinityGroup.class,
org.ovirt.engine.core.common.scheduling.AffinityGroup.class);
}
@Override
public AffinityGroup get() {
return performGet(VdcQueryType.GetAffinityGroupById, new IdQueryParameters(guid));
}
@Override
public AffinityGroup update(final AffinityGroup incoming) {
return performUpdate(incoming,
new QueryIdResolver<>(VdcQueryType.GetAffinityGroupById, IdQueryParameters.class),
VdcActionType.EditAffinityGroup,
(model, entity) -> new AffinityGroupCRUDParameters(guid, map(incoming, entity)));
}
@Override
public AffinityGroupVmsResource getVmsResource() {
return inject(new BackendAffinityGroupVmsResource(guid));
}
@Override
public Response remove() {
get();
AffinityGroupCRUDParameters params = new AffinityGroupCRUDParameters();
params.setAffinityGroupId(asGuid(id));
return performAction(VdcActionType.RemoveAffinityGroup, params);
}
}