package org.ovirt.engine.api.restapi.resource; import java.util.List; import org.ovirt.engine.api.model.Image; import org.ovirt.engine.api.model.Images; import org.ovirt.engine.api.model.StorageDomain; import org.ovirt.engine.api.resource.ImageResource; import org.ovirt.engine.api.resource.ImagesResource; import org.ovirt.engine.core.common.businessentities.storage.ImageFileType; import org.ovirt.engine.core.common.businessentities.storage.RepoImage; import org.ovirt.engine.core.common.queries.GetImagesListParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public class BackendStorageDomainImagesResource extends AbstractBackendCollectionResource<Image, RepoImage> implements ImagesResource { Guid storageDomainId; public BackendStorageDomainImagesResource(Guid storageDomainId, String... subCollections) { super(Image.class, RepoImage.class); this.storageDomainId = storageDomainId; } @Override public Images list() { GetImagesListParameters getImagesListParams = new GetImagesListParameters(storageDomainId, ImageFileType.All); getImagesListParams.setForceRefresh(true); return mapCollection(getBackendCollection(VdcQueryType.GetImagesList, getImagesListParams)); } @Override public ImageResource getImageResource(String id) { return inject(new BackendStorageDomainImageResource(id, this)); } protected Guid getStorageDomainId() { return storageDomainId; } protected Images mapCollection(List<RepoImage> entities) { Images collection = new Images(); for (RepoImage image : entities) { collection.getImages().add(addLinks(populate(map(image), image))); } return collection; } @Override protected Image addParents(Image image) { StorageDomain sd = new StorageDomain(); sd.setId(storageDomainId.toString()); image.setStorageDomain(sd); return super.addParents(image); } }