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