package org.ovirt.engine.api.restapi.resource;
import java.util.List;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.DataCenter;
import org.ovirt.engine.api.model.DataCenters;
import org.ovirt.engine.api.model.Versions;
import org.ovirt.engine.api.resource.DataCenterResource;
import org.ovirt.engine.api.resource.DataCentersResource;
import org.ovirt.engine.core.common.action.StoragePoolManagementParameter;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.StoragePool;
import org.ovirt.engine.core.common.interfaces.SearchType;
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.compat.Guid;
public class BackendDataCentersResource extends
AbstractBackendCollectionResource<DataCenter, StoragePool> implements DataCentersResource {
public BackendDataCentersResource() {
super(DataCenter.class, StoragePool.class);
}
@Override
public DataCenters list() {
if (isFiltered()) {
return mapCollection(getBackendCollection(VdcQueryType.GetAllStoragePools,
new VdcQueryParametersBase()));
} else {
return mapCollection(getBackendCollection(SearchType.StoragePool));
}
}
@Override
public DataCenterResource getDataCenterResource(String id) {
return inject(new BackendDataCenterResource(id, this));
}
@Override
public Response add(DataCenter dataCenter) {
validateParameters(dataCenter, "name");
if(!dataCenter.isSetLocal()) {
validateParameters(dataCenter, "local");
}
StoragePool entity = map(dataCenter);
return performCreate(VdcActionType.AddEmptyStoragePool,
new StoragePoolManagementParameter(entity),
new QueryIdResolver<Guid>(VdcQueryType.GetStoragePoolById, IdQueryParameters.class));
}
private DataCenters mapCollection(List<StoragePool> entities) {
DataCenters collection = new DataCenters();
for (StoragePool entity : entities) {
collection.getDataCenters().add(addLinks(populate(map(entity), entity)));
}
return collection;
}
@Override
protected DataCenter deprecatedPopulate(DataCenter model, StoragePool entity) {
IdQueryParameters parameters = new IdQueryParameters(asGuid(model.getId()));
model.setSupportedVersions(getMapper(List.class,
Versions.class).map(getEntity(List.class,
VdcQueryType.GetAvailableStoragePoolVersions,
parameters,
model.getId()),
null));
return model;
}
}