Skip to content

Commit

Permalink
restapi: incorrect href for parent href
Browse files Browse the repository at this point in the history
If User send REST API request  for ovirt-engine/api/disks/{diskid}/disksnapshots?include_active&include_template he will get this  incorrect href back <parent href="/ovirt-engine/api/disks/{diskid}" id="{parentid}"/>.
Now it will get correct output that will look like this <parent href="/ovirt-engine/api/disks/{diskid}/disksnapshots/{parentid}" id="{parentid}"/>.

Bug-Url: https://bugzilla.redhat.com/2013697
Signed-off-by: Artiom Divak <adivak@redhat.com>
  • Loading branch information
ArtiomDivak committed Aug 7, 2022
1 parent 995f4a0 commit 3ef23c7
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.ovirt.engine.core.common.action.ActionType;
import org.ovirt.engine.core.common.action.RemoveDiskSnapshotsParameters;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.QueryReturnValue;
import org.ovirt.engine.core.common.queries.QueryType;
import org.ovirt.engine.core.compat.Guid;

Expand All @@ -28,13 +29,19 @@ protected BackendDiskSnapshotResource(String id, BackendDiskSnapshotsResource pa
public DiskSnapshot get() {
DiskSnapshot diskSnapshot = performGet(QueryType.GetDiskSnapshotByImageId,
new IdQueryParameters(guid), Disk.class);

diskSnapshot.setDisk(new Disk());
diskSnapshot.getDisk().setId(diskId.toString());
diskSnapshot.getDisk().setHref(backendDiskSnapshotsResource.buildParentHref(diskId.toString(), false));
diskSnapshot.setHref(backendDiskSnapshotsResource.buildHref(diskId.toString(), diskSnapshot.getId().toString()));
if (diskSnapshot.getParent() != null) {
diskSnapshot.getParent().setHref(backendDiskSnapshotsResource.buildHref(diskId.toString(),
diskSnapshot.getParent().getId()));
QueryReturnValue result = runQuery(QueryType.GetDiskIdBySnapshotId,
new IdQueryParameters(new Guid(diskSnapshot.getParent().getId())));
if (result.getSucceeded() && result.getReturnValue() != null) {
diskSnapshot.getParent().setHref(backendDiskSnapshotsResource.buildHref(
result.getReturnValue().toString(),
diskSnapshot.getParent().getId()));
}
}
return diskSnapshot;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@
import org.ovirt.engine.api.model.DiskSnapshots;
import org.ovirt.engine.api.resource.DiskSnapshotResource;
import org.ovirt.engine.api.resource.DiskSnapshotsResource;
import org.ovirt.engine.api.restapi.types.Mapper;
import org.ovirt.engine.api.restapi.util.ParametersHelper;
import org.ovirt.engine.core.common.queries.DiskSnapshotsQueryParameters;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.QueryReturnValue;
import org.ovirt.engine.core.common.queries.QueryType;
import org.ovirt.engine.core.compat.Guid;

Expand All @@ -35,16 +38,28 @@ public DiskSnapshots list() {

protected DiskSnapshots mapCollection(List<org.ovirt.engine.core.common.businessentities.storage.Disk> entities) {
DiskSnapshots collection = new DiskSnapshots();
Mapper<org.ovirt.engine.core.common.businessentities.storage.Disk, DiskSnapshot> mapper =
getMapper(org.ovirt.engine.core.common.businessentities.storage.Disk.class, DiskSnapshot.class);

for (org.ovirt.engine.core.common.businessentities.storage.Disk disk : entities) {
DiskSnapshot diskSnapshot = getMapper(org.ovirt.engine.core.common.businessentities.storage.Disk.class, DiskSnapshot.class).map(disk, null);
DiskSnapshot diskSnapshot = mapper.map(disk, null);
diskSnapshot.setDisk(new Disk());
diskSnapshot.getDisk().setId(this.diskId.toString());
collection.getDiskSnapshots().add(addLinks(populate(diskSnapshot, disk), Disk.class));
diskSnapshot.setHref(buildHref(diskId.toString(), diskSnapshot.getId().toString()));
diskSnapshot.setHref(buildHref(diskId.toString(), diskSnapshot.getId()));
getBackendCollection(QueryType.GetDiskSnapshotByImageId,
new DiskSnapshotsQueryParameters(diskId, includeActive(), includeTemplate()));
if (diskSnapshot.getParent() != null) {
diskSnapshot.getParent().setHref(buildParentHref(diskId.toString(), false));
QueryReturnValue result = runQuery(QueryType.GetDiskIdBySnapshotId,
new IdQueryParameters(new Guid(diskSnapshot.getParent().getId())));
if (result.getSucceeded() && result.getReturnValue() != null) {
diskSnapshot.getParent().setHref(buildHref(
result.getReturnValue().toString(),
diskSnapshot.getParent().getId()));
}
}
}

return collection;
}

Expand Down

0 comments on commit 3ef23c7

Please sign in to comment.