Shubhendu Tripathi has uploaded a new change for review.

Change subject: restapi: WIP: REST API stop migrate on brick
......................................................................

restapi: WIP: REST API stop migrate on brick

REST API for stopping the already started migrate brick asynchronous
task on a gluster volume.

Change-Id: I0bba03cf04bed8041cb4e25cac0748afbeed2261
Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com>
---
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/gluster/BackendGlusterBricksResource.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/GlusterBrickMapper.java
4 files changed, 100 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/11/19411/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
index faf9a9d..6efa9b0 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/gluster/GlusterBricksResource.java
@@ -25,12 +25,12 @@
  */
 @Produces({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML })
 public interface GlusterBricksResource {
-    @Path("{action: (migrate)}")
-    public ActionResource getActionSubresource(@PathParam("action") String 
action);
-
     @GET
     @Formatted
     public GlusterBricks list();
+
+    @Path("{action: (migrate|stopmigrate)}/{oid}")
+    public ActionResource getActionSubresource(@PathParam("action") String 
action, @PathParam("oid") String oid);
 
     /**
      * Adds given list of bricks to the volume, and updates the database 
accordingly. The properties
@@ -68,6 +68,20 @@
     @Path("{brick_id}")
     public Response remove(@PathParam("brick_id") String id);
 
+    @POST
+    @Formatted
+    @Consumes({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
+    @Actionable
+    @Path("migrate")
+    public Response migrate(Action action);
+
+    @POST
+    @Formatted
+    @Consumes({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
+    @Actionable
+    @Path("stopmigrate")
+    public Response stopMigrate(Action action);
+
     /**
      * Sub-resource locator method, returns individual GlusterBrickResource on 
which the remainder of the URI is
      * dispatched.
@@ -78,12 +92,5 @@
      */
     @Path("{brick_id}")
     public GlusterBrickResource 
getGlusterBrickSubResource(@PathParam("brick_id") String id);
-
-    @POST
-    @Formatted
-    @Consumes({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
-    @Actionable
-    @Path("migrate")
-    public Response migrate(Action action);
 
 }
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
index 9b9402b..0605724 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
@@ -3408,6 +3408,7 @@
           <xs:element name="server_id" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <xs:element name="brick_dir" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <xs:element ref="status" minOccurs="0" maxOccurs="1"/>
+          <xs:element ref="task" minOccurs="0" maxOccurs="1" />
          </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -3434,6 +3435,26 @@
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:element name="task" type="GlusterTask"/>
+  <xs:complexType name="GlusterTask">
+       <xs:annotation>
+         <xs:appinfo>
+               <jaxb:class name="GlusterTask"/>
+         </xs:appinfo>
+    </xs:annotation>
+       <xs:complexContent>
+         <xs:extension base="BaseResource">
+               <xs:sequence>
+                 <xs:element name="task_id" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+                 <xs:element ref="status" minOccurs="0" maxOccurs="1"/>
+                 <xs:element name="task_type" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+                 <xs:element name="message" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+                 <xs:element name="step_id" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
+                 </xs:sequence>
+               </xs:extension>
+       </xs:complexContent>
+  </xs:complexType>
+
   <xs:element name="stages" type="Stages"/>
   <xs:complexType name="Stages">
     <xs:sequence>
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/gluster/BackendGlusterBricksResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/gluster/BackendGlusterBricksResource.java
index 4cc8e10..f839cb9 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/gluster/BackendGlusterBricksResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/gluster/BackendGlusterBricksResource.java
@@ -230,7 +230,14 @@
     }
 
     @Override
-    public ActionResource getActionSubresource(String action) {
-        return inject(new BackendActionResource(action, ""));
+    public Response stopMigrate(Action action) {
+        validateParameters(action, "bricks");
+        GlusterVolumeRemoveBricksParameters params = toParameters(action);
+        return performAction(VdcActionType.StopRemoveGlusterVolumeBricks, 
params);
+    }
+
+    @Override
+    public ActionResource getActionSubresource(String action, String id) {
+        return inject(new BackendActionResource(action, id));
     }
 }
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/GlusterBrickMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/GlusterBrickMapper.java
index ea74470..6d28a42 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/GlusterBrickMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/GlusterBrickMapper.java
@@ -4,8 +4,12 @@
 import org.ovirt.engine.api.common.util.StatusUtils;
 import org.ovirt.engine.api.model.GlusterBrick;
 import org.ovirt.engine.api.model.GlusterState;
+import org.ovirt.engine.api.model.GlusterTask;
 import org.ovirt.engine.api.model.GlusterVolume;
+import org.ovirt.engine.api.model.Status;
+import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskType;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
+import org.ovirt.engine.core.common.job.JobExecutionStatus;
 import org.ovirt.engine.core.compat.Guid;
 
 /**
@@ -20,15 +24,15 @@
     public static GlusterBrickEntity map(GlusterBrick fromBrick, 
GlusterBrickEntity toBrick) {
         GlusterBrickEntity brick = (toBrick == null) ? new 
GlusterBrickEntity() : toBrick;
 
-        if(fromBrick.isSetId()) {
+        if (fromBrick.isSetId()) {
             
brick.setId(Guid.createGuidFromStringDefaultEmpty(fromBrick.getId()));
         }
 
-        if(fromBrick.isSetServerId()) {
+        if (fromBrick.isSetServerId()) {
             
brick.setServerId(Guid.createGuidFromStringDefaultEmpty(fromBrick.getServerId()));
         }
 
-        if(fromBrick.isSetBrickDir()) {
+        if (fromBrick.isSetBrickDir()) {
             brick.setBrickDirectory(fromBrick.getBrickDir());
         }
         return brick;
@@ -38,30 +42,45 @@
     public static GlusterBrick map(GlusterBrickEntity fromBrick, GlusterBrick 
toBrick) {
         GlusterBrick brick = (toBrick == null) ? new GlusterBrick() : toBrick;
 
-        if(fromBrick.getId() != null) {
+        if (fromBrick.getId() != null) {
             brick.setId(fromBrick.getId().toString());
         }
 
-        if(fromBrick.getServerId() != null) {
+        if (fromBrick.getServerId() != null) {
             brick.setServerId(fromBrick.getServerId().toString());
         }
 
-        if(StringUtils.isNotEmpty(fromBrick.getQualifiedName())) {
-           brick.setName(fromBrick.getQualifiedName());
+        if (StringUtils.isNotEmpty(fromBrick.getQualifiedName())) {
+            brick.setName(fromBrick.getQualifiedName());
         }
 
-        if(fromBrick.getBrickDirectory() != null) {
+        if (fromBrick.getBrickDirectory() != null) {
             brick.setBrickDir(fromBrick.getBrickDirectory());
         }
 
-        if(fromBrick.getStatus() != null) {
+        if (fromBrick.getStatus() != null) {
             brick.setStatus(StatusUtils.create(map(fromBrick.getStatus(), 
null)));
         }
 
-        if(fromBrick.getVolumeId() != null) {
+        if (fromBrick.getVolumeId() != null) {
             brick.setGlusterVolume(new GlusterVolume());
             brick.getGlusterVolume().setId(fromBrick.getVolumeId().toString());
         }
+
+        if (fromBrick.getAsyncTask() != null) {
+            GlusterTask task = new GlusterTask();
+            Guid taskId = fromBrick.getAsyncTask().getTaskId();
+            task.setTaskId(taskId != null ? taskId.toString() : null);
+            GlusterTaskType taskType = fromBrick.getAsyncTask().getType();
+            task.setTaskType(taskType != null ? taskType.name() : null);
+            task.setStatus(map(fromBrick.getAsyncTask().getStatus(), null));
+            task.setMessage(fromBrick.getAsyncTask().getMessage());
+            Guid stepId = fromBrick.getAsyncTask().getStepId();
+            task.setStepId(stepId != null ? stepId.toString() : null);
+
+            brick.setTask(task);
+        }
+
         return brick;
     }
 
@@ -77,4 +96,28 @@
             return null;
         }
     }
+
+    @Mapping(from = JobExecutionStatus.class, to = Status.class)
+    public static Status map(JobExecutionStatus status,
+            Status incoming) {
+        Status st = new Status();
+        if (JobExecutionStatus.STARTED == status) {
+            st.setState(JobExecutionStatus.STARTED.name());
+            return st;
+        }
+        if (JobExecutionStatus.FINISHED == status) {
+            st.setState(JobExecutionStatus.FINISHED.name());
+            return st;
+        }
+        if (JobExecutionStatus.ABORTED == status) {
+            st.setState(JobExecutionStatus.ABORTED.name());
+            return st;
+        }
+        if (JobExecutionStatus.FAILED == status) {
+            st.setState(JobExecutionStatus.FAILED.name());
+            return st;
+        }
+        st.setState(JobExecutionStatus.UNKNOWN.name());
+        return st;
+    }
 }


-- 
To view, visit http://gerrit.ovirt.org/19411
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0bba03cf04bed8041cb4e25cac0748afbeed2261
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shubhendu Tripathi <shtri...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to