package org.ovirt.engine.api.restapi.resource; import java.util.List; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.AffinityGroup; import org.ovirt.engine.api.model.AffinityGroups; import org.ovirt.engine.api.resource.AffinityGroupResource; import org.ovirt.engine.api.resource.AffinityGroupsResource; 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; import org.ovirt.engine.core.compat.Guid; public class BackendAffinityGroupsResource extends AbstractBackendCollectionResource<AffinityGroup, org.ovirt.engine.core.common.scheduling.AffinityGroup> implements AffinityGroupsResource { private String clusterId; public BackendAffinityGroupsResource(String clusterId) { super(AffinityGroup.class, org.ovirt.engine.core.common.scheduling.AffinityGroup.class); this.clusterId = clusterId; } @Override public AffinityGroups list() { List<org.ovirt.engine.core.common.scheduling.AffinityGroup> entities = getBackendCollection(VdcQueryType.GetAffinityGroupsByClusterId, new IdQueryParameters(asGuid(clusterId))); return mapCollection(entities); } private AffinityGroups mapCollection(List<org.ovirt.engine.core.common.scheduling.AffinityGroup> entities) { AffinityGroups collection = new AffinityGroups(); for (org.ovirt.engine.core.common.scheduling.AffinityGroup entity : entities) { collection.getAffinityGroups().add(addLinks(populate(map(entity), entity))); } return collection; } @Override public Response add(AffinityGroup affinityGroup) { org.ovirt.engine.core.common.scheduling.AffinityGroup backendEntity = getMapper(AffinityGroup.class, org.ovirt.engine.core.common.scheduling.AffinityGroup.class).map(affinityGroup, null); backendEntity.setClusterId(asGuid(clusterId)); return performCreate(VdcActionType.AddAffinityGroup, new AffinityGroupCRUDParameters(null, backendEntity), new QueryIdResolver<Guid>(VdcQueryType.GetAffinityGroupById, IdQueryParameters.class), true); } @Override public AffinityGroupResource getGroupResource(String id) { return inject(new BackendAffinityGroupResource(id)); } }