package org.ovirt.engine.api.restapi.resource; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.DiskSnapshot; import org.ovirt.engine.api.model.StorageDomain; import org.ovirt.engine.api.resource.DiskSnapshotResource; import org.ovirt.engine.core.common.action.RemoveDiskSnapshotsParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.storage.Disk; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; public class BackendStorageDomainDiskSnapshotResource extends AbstractBackendActionableResource<DiskSnapshot, Disk> implements DiskSnapshotResource { private final String storageDomainId; protected BackendStorageDomainDiskSnapshotResource(String id, BackendStorageDomainDiskSnapshotsResource parent) { super(id, DiskSnapshot.class, Disk.class); this.storageDomainId = parent.getStorageDomainId().toString(); } public String getStorageDomainId() { return storageDomainId; } @Override public DiskSnapshot get() { DiskSnapshot diskSnapshot = performGet(VdcQueryType.GetDiskSnapshotByImageId, new IdQueryParameters(guid)); // this code generates back-link to the corresponding SD diskSnapshot.setStorageDomain(new StorageDomain()); diskSnapshot.getStorageDomain().setId(this.storageDomainId); return diskSnapshot; } @Override public Response remove() { get(); return performAction(VdcActionType.RemoveDiskSnapshots, new RemoveDiskSnapshotsParameters(guid)); } }