package org.ovirt.engine.api.restapi.resource;
import java.util.List;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.SchedulingPolicies;
import org.ovirt.engine.api.model.SchedulingPolicy;
import org.ovirt.engine.api.resource.SchedulingPoliciesResource;
import org.ovirt.engine.api.resource.SchedulingPolicyResource;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.common.scheduling.ClusterPolicy;
import org.ovirt.engine.core.common.scheduling.parameters.ClusterPolicyCRUDParameters;
import org.ovirt.engine.core.compat.Guid;
public class BackendSchedulingPoliciesResource extends AbstractBackendCollectionResource<SchedulingPolicy, ClusterPolicy> implements SchedulingPoliciesResource {
private final QueryIdResolver<Guid> queryIdResolver =
new QueryIdResolver<>(VdcQueryType.GetClusterPolicyById,
IdQueryParameters.class);
public BackendSchedulingPoliciesResource() {
super(SchedulingPolicy.class, ClusterPolicy.class);
}
@Override
public SchedulingPolicies list() {
List<ClusterPolicy> SchedulingPolicys =
getBackendCollection(VdcQueryType.GetClusterPolicies, new VdcQueryParametersBase());
return mapCollection(SchedulingPolicys);
}
@Override
public Response add(SchedulingPolicy schedulingPolicy) {
validateParameters(schedulingPolicy, "name");
return performCreate(VdcActionType.AddClusterPolicy, new ClusterPolicyCRUDParameters(null,
map(schedulingPolicy)), queryIdResolver);
}
@Override
public SchedulingPolicyResource getPolicyResource(String id) {
return inject(new BackendSchedulingPolicyResource(id));
}
protected SchedulingPolicies mapCollection(List<ClusterPolicy> entities) {
SchedulingPolicies collection = new SchedulingPolicies();
for (ClusterPolicy entity : entities) {
collection.getSchedulingPolicies().add(addLinks(populate(map(entity), entity)));
}
return collection;
}
}