Daniel Erez has uploaded a new change for review.
Change subject: rest: delete a disk from disks collection of a snapshot
......................................................................
rest: delete a disk from disks collection of a snapshot
Introduce a support for deleting a specific disk from a snapshot:
DELETE /api/vms/{vm_id}/snapshots/{snapshot_id}/disks/{disk_id}
Change-Id: Ic7fb780516ba715d87e59e98651e9d03dad15845
Feature-Page: http://www.ovirt.org/Features/Snapshots_Overview
Signed-off-by: Daniel Erez <[email protected]>
---
M
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/SnapshotDisksResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotCdRomsResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDiskResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDisksResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotElementsResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotNicsResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotResource.java
7 files changed, 62 insertions(+), 16 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/28/26328/1
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/SnapshotDisksResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/SnapshotDisksResource.java
index f50aa8f..d67812b 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/SnapshotDisksResource.java
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/SnapshotDisksResource.java
@@ -1,9 +1,11 @@
package org.ovirt.engine.api.resource;
+import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
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.Disks;
@@ -17,4 +19,8 @@
@Path("{id}")
public SnapshotDiskResource getDiskSubResource(@PathParam("id") String id);
+
+ @DELETE
+ @Path("{id}")
+ public Response remove(@PathParam("id") String id);
}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotCdRomsResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotCdRomsResource.java
index 65ad463..5dc3254 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotCdRomsResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotCdRomsResource.java
@@ -1,15 +1,18 @@
package org.ovirt.engine.api.restapi.resource;
+import org.ovirt.engine.api.model.CdRom;
import org.ovirt.engine.api.model.CdRoms;
+import org.ovirt.engine.api.model.Snapshot;
import org.ovirt.engine.api.resource.SnapshotCdRomResource;
import org.ovirt.engine.api.resource.SnapshotCdRomsResource;
import org.ovirt.engine.api.restapi.types.CdRomMapper;
import org.ovirt.engine.core.common.businessentities.VM;
-public class BackendSnapshotCdRomsResource extends
BackendSnapshotElementsResource implements SnapshotCdRomsResource {
+public class BackendSnapshotCdRomsResource extends
BackendSnapshotElementsResource<CdRom> implements SnapshotCdRomsResource {
- public BackendSnapshotCdRomsResource(BackendSnapshotResource parent,
String vmId) {
- super(parent, vmId);
+ public BackendSnapshotCdRomsResource(BackendSnapshotResource parent) {
+ super(CdRom.class, Snapshot.class);
+ this.parent = parent;
}
@Override
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDiskResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDiskResource.java
index ac6a353..f5e7f7b 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDiskResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDiskResource.java
@@ -6,13 +6,13 @@
import org.ovirt.engine.api.resource.SnapshotDiskResource;
import javax.ws.rs.core.Response;
-public class BackendSnapshotDiskResource implements SnapshotDiskResource {
+public class BackendSnapshotDiskResource extends BackendDiskResource
implements SnapshotDiskResource {
protected String diskId;
protected BackendSnapshotDisksResource collection;
public BackendSnapshotDiskResource(String diskId,
BackendSnapshotDisksResource collection) {
- super();
+ super(diskId);
this.diskId = diskId;
this.collection = collection;
}
@@ -26,4 +26,9 @@
}
throw new
WebApplicationException(Response.status(Response.Status.NOT_FOUND).build());
}
+
+ @Override
+ protected Disk doPopulate(Disk model,
org.ovirt.engine.core.common.businessentities.Disk entity) {
+ return model;
+ }
}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDisksResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDisksResource.java
index bd99cef..bda5101 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDisksResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotDisksResource.java
@@ -6,13 +6,18 @@
import org.ovirt.engine.api.resource.SnapshotDiskResource;
import org.ovirt.engine.api.resource.SnapshotDisksResource;
import org.ovirt.engine.api.restapi.types.DiskMapper;
+import org.ovirt.engine.core.common.action.RemoveSnapshotImagesParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.DiskImage;
import org.ovirt.engine.core.common.businessentities.VM;
+import javax.ws.rs.core.Response;
+
public class BackendSnapshotDisksResource extends
BackendSnapshotElementsResource implements SnapshotDisksResource {
- public BackendSnapshotDisksResource(BackendSnapshotResource parent, String
vmId) {
- super(parent, vmId);
+ public BackendSnapshotDisksResource(BackendSnapshotResource parent) {
+ super(Disk.class, Snapshot.class);
+ this.parent = parent;
}
@Override
@@ -38,4 +43,13 @@
public SnapshotDiskResource getDiskSubResource(String id) {
return new BackendSnapshotDiskResource(id, this);
}
+
+ @Override
+ public Response performRemove(String id) {
+ getEntity(id); //verifies that entity exists, returns 404 otherwise.
+
+ DiskImage diskImage = (DiskImage)
DiskMapper.map(getDiskSubResource(id).get(), null);
+
+ return performAction(VdcActionType.RemoveSnapshotImages, new
RemoveSnapshotImagesParameters(diskImage));
+ }
}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotElementsResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotElementsResource.java
index 102a212..9d66436 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotElementsResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotElementsResource.java
@@ -1,11 +1,26 @@
package org.ovirt.engine.api.restapi.resource;
-public abstract class BackendSnapshotElementsResource{
+import org.ovirt.engine.api.model.BaseResource;
+import org.ovirt.engine.api.model.Snapshot;
+
+import javax.ws.rs.core.Response;
+
+public abstract class BackendSnapshotElementsResource<R extends BaseResource>
+ extends AbstractBackendCollectionResource<R, Snapshot> {
protected BackendSnapshotResource parent;
- public BackendSnapshotElementsResource(BackendSnapshotResource parent,
String vmId) {
- super();
- this.parent = parent;
+ protected BackendSnapshotElementsResource(Class<R> modelType,
Class<Snapshot> entityType, String... subCollections) {
+ super(modelType, entityType, subCollections);
+ }
+
+ @Override
+ protected Response performRemove(String id) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ protected R doPopulate(R model, Snapshot entity) {
+ return model;
}
}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotNicsResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotNicsResource.java
index 7feb704..b5a21e0 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotNicsResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotNicsResource.java
@@ -1,6 +1,8 @@
package org.ovirt.engine.api.restapi.resource;
+import org.ovirt.engine.api.model.NIC;
import org.ovirt.engine.api.model.Nics;
+import org.ovirt.engine.api.model.Snapshot;
import org.ovirt.engine.api.resource.SnapshotNicResource;
import org.ovirt.engine.api.resource.SnapshotNicsResource;
import org.ovirt.engine.api.restapi.types.NicMapper;
@@ -9,8 +11,9 @@
public class BackendSnapshotNicsResource extends
BackendSnapshotElementsResource implements SnapshotNicsResource {
- public BackendSnapshotNicsResource(BackendSnapshotResource parent, String
vmId) {
- super(parent, vmId);
+ public BackendSnapshotNicsResource(BackendSnapshotResource parent) {
+ super(NIC.class, Snapshot.class);
+ this.parent = parent;
}
@Override
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotResource.java
index 66662ad..24cbced 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendSnapshotResource.java
@@ -96,15 +96,15 @@
@Override
public SnapshotCdRomsResource getSnapshotCdRomsResource() {
- return new BackendSnapshotCdRomsResource(this, id);
+ return inject(new BackendSnapshotCdRomsResource(this));
}
@Override
public SnapshotDisksResource getSnapshotDisksResource() {
- return new BackendSnapshotDisksResource(this, id);
+ return inject(new BackendSnapshotDisksResource(this));
}
@Override
public SnapshotNicsResource getSnapshotNicsResource() {
- return new BackendSnapshotNicsResource(this, id);
+ return inject(new BackendSnapshotNicsResource(this));
}
public void setCollectionResource(BackendSnapshotsResource collection) {
--
To view, visit http://gerrit.ovirt.org/26328
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic7fb780516ba715d87e59e98651e9d03dad15845
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches