package org.ovirt.engine.api.restapi.resource;
import org.ovirt.engine.api.model.Disk;
import org.ovirt.engine.api.model.Disks;
import org.ovirt.engine.api.resource.DiskResource;
import org.ovirt.engine.api.resource.StatisticsResource;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.DiskImage;
import org.ovirt.engine.core.compat.Guid;
import static org.ovirt.engine.api.restapi.resource.BackendNicsResource.SUB_COLLECTIONS;
public class BackendDiskResource extends BackendDeviceResource<Disk, Disks, DiskImage> implements DiskResource {
protected BackendDiskResource(String id,
AbstractBackendReadOnlyDevicesResource<Disk, Disks, DiskImage> collection,
VdcActionType updateType,
ParametersProvider<Disk, DiskImage> updateParametersProvider,
String[] requiredUpdateFields,
String... subCollections) {
super(Disk.class,
DiskImage.class,
collection.asGuidOr404(id),
collection,
updateType,
updateParametersProvider,
requiredUpdateFields,
SUB_COLLECTIONS);
}
@Override
public StatisticsResource getStatisticsResource() {
EntityIdResolver resolver = new EntityIdResolver() {
public DiskImage lookupEntity(Guid guid) throws BackendFailureException {
return collection.lookupEntity(guid);
}
};
DiskStatisticalQuery query = new DiskStatisticalQuery(resolver, newModel(id));
return inject(new BackendStatisticsResource<Disk, DiskImage>(entityType, guid, query));
}
@Override
protected Disk populate(Disk model, DiskImage entity) {
return ((BackendDisksResource)collection).addStatistics(model, entity, uriInfo, httpHeaders);
}
}