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

Reply via email to