Sergey Gotliv has uploaded a new change for review. Change subject: <core | restapi | tools | history | engine | userportal | webadmin>: short summary under 50 chars ......................................................................
<core | restapi | tools | history | engine | userportal | webadmin>: short summary under 50 chars restapi: Adding support for copy/move disk from disk collection. Adding support for the following urls: /api/disks/{disk:id}/copy /api/disks/{disk:id}/move Change-Id: I516341d3e033a94a997ac5320312e75a5ed1576c Bug-Url: https://bugzilla.redhat.com/?????? Signed-off-by: Sergey Gotliv <sgot...@redhat.com> --- M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DiskResource.java M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDiskResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java 4 files changed, 70 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/13973/1 diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DiskResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DiskResource.java index 1349727..c62c448 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DiskResource.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DiskResource.java @@ -15,11 +15,16 @@ */ package org.ovirt.engine.api.resource; +import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.core.Response; import org.jboss.resteasy.annotations.providers.jaxb.Formatted; +import org.ovirt.engine.api.model.Action; +import org.ovirt.engine.api.model.Actionable; import org.ovirt.engine.api.model.Disk; @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML}) @@ -32,4 +37,18 @@ @Path("permissions") public AssignedPermissionsResource getPermissionsResource(); + + @POST + @Formatted + @Actionable + @Path("move") + @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML}) + public Response move(Action action); + + @POST + @Formatted + @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML}) + @Actionable + @Path("copy") + public Response copy(Action action); } diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java index aac3fc0..c675c97 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java @@ -50,13 +50,6 @@ @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML}) public Response deactivate(Action action); - @POST - @Formatted - @Actionable - @Path("move") - @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML}) - public Response move(Action action); - @PUT @Formatted @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML }) diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDiskResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDiskResource.java index 9b2a0d0..0bca24a 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDiskResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDiskResource.java @@ -1,17 +1,26 @@ package org.ovirt.engine.api.restapi.resource; +import org.ovirt.engine.api.model.Action; import org.ovirt.engine.api.model.Disk; import org.ovirt.engine.api.resource.AssignedPermissionsResource; import org.ovirt.engine.api.resource.CreationResource; import org.ovirt.engine.api.resource.DiskResource; import org.ovirt.engine.api.resource.StatisticsResource; import org.ovirt.engine.core.common.VdcObjectType; +import org.ovirt.engine.core.common.action.MoveDiskParameters; +import org.ovirt.engine.core.common.action.MoveDisksParameters; +import org.ovirt.engine.core.common.action.MoveOrCopyImageGroupParameters; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.ImageOperation; import org.ovirt.engine.core.common.queries.GetDiskByDiskIdParameters; import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; -public class BackendDiskResource extends AbstractBackendSubResource<Disk, org.ovirt.engine.core.common.businessentities.Disk> implements DiskResource { +import javax.ws.rs.core.Response; +import java.util.Collections; + +public class BackendDiskResource extends AbstractBackendActionableResource<Disk, org.ovirt.engine.core.common.businessentities.Disk> implements DiskResource { protected BackendDiskResource(String id) { super(id, Disk.class, org.ovirt.engine.core.common.businessentities.Disk.class); @@ -39,6 +48,32 @@ } @Override + public Response move(Action action) { + validateParameters(action, "storageDomain.id|name"); + Guid storageDomainId = getStorageDomainId(action); + Guid imageId = asGuid(get().getImageId()); + MoveDisksParameters params = + new MoveDisksParameters(Collections.singletonList(new MoveDiskParameters( + imageId, + Guid.Empty, + storageDomainId))); + return doAction(VdcActionType.MoveDisks, params, action); + } + + @Override + public Response copy(Action action) { + validateParameters(action, "storageDomain.id|name"); + Guid storageDomainId = getStorageDomainId(action); + Guid imageId = asGuid(get().getImageId()); + MoveOrCopyImageGroupParameters params = + new MoveOrCopyImageGroupParameters(imageId, + Guid.Empty, + storageDomainId, + ImageOperation.Copy); + return doAction(VdcActionType.MoveOrCopyDisk, params, action); + } + + @Override public Disk get() { return performGet(VdcQueryType.GetDiskByDiskId, new GetDiskByDiskIdParameters(guid)); } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java index bad94f0..fbf4783 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java @@ -14,7 +14,9 @@ import org.ovirt.engine.core.common.action.HotPlugDiskToVmParameters; import org.ovirt.engine.core.common.action.MoveDiskParameters; import org.ovirt.engine.core.common.action.MoveDisksParameters; +import org.ovirt.engine.core.common.action.MoveOrCopyImageGroupParameters; import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.ImageOperation; import org.ovirt.engine.core.common.queries.GetDiskByDiskIdParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; @@ -99,6 +101,19 @@ return doAction(VdcActionType.MoveDisks, params, action); } + @Override + public Response copy(Action action) { + validateParameters(action, "storageDomain.id|name"); + Guid storageDomainId = getStorageDomainId(action); + Guid imageId = asGuid(getDisk().getImageId()); + MoveOrCopyImageGroupParameters params = + new MoveOrCopyImageGroupParameters(imageId, + Guid.Empty, + storageDomainId, + ImageOperation.Copy); + return doAction(VdcActionType.MoveOrCopyDisk, params, action); + } + protected Disk getDisk() { return performGet(VdcQueryType.GetDiskByDiskId, new GetDiskByDiskIdParameters(guid)); } -- To view, visit http://gerrit.ovirt.org/13973 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I516341d3e033a94a997ac5320312e75a5ed1576c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sergey Gotliv <sgot...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches