Sahina Bose has uploaded a new change for review. Change subject: engine:Task monitoring for remove brick ......................................................................
engine:Task monitoring for remove brick Monitoring remove brick tasks that are started from CLI The volume and bricks that are part of the task is updated with the task id Change-Id: I0eb5035a6f9af0b148ac4877939fb174a196f86e Signed-off-by: Sahina Bose <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterTasksSyncJob.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/tasks/GlusterTasksService.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/gluster/GlusterTaskType.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTasksListReturnForXmlRpc.java 4 files changed, 60 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/19616/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterTasksSyncJob.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterTasksSyncJob.java index 62d3a60..362c7bb 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterTasksSyncJob.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterTasksSyncJob.java @@ -1,5 +1,6 @@ package org.ovirt.engine.core.bll.gluster; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -17,7 +18,10 @@ import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.asynctasks.gluster.GlusterAsyncTask; +import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskType; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.VdsStatic; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.constants.gluster.GlusterConstants; import org.ovirt.engine.core.common.errors.VdcBLLException; @@ -28,6 +32,7 @@ import org.ovirt.engine.core.common.job.StepEnum; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.job.ExecutionMessageDirector; +import org.ovirt.engine.core.dao.gluster.GlusterDBUtils; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation; @@ -138,6 +143,9 @@ case REBALANCING_VOLUME: actionType = VdcActionType.StartRebalanceGlusterVolume; break; + case REMOVING_BRICKS: + actionType = VdcActionType.StartRemoveGlusterVolumeBricks; + break; default: actionType = VdcActionType.Unknown; } @@ -173,6 +181,7 @@ ExecutionHandler.updateStepExternalId(asyncStep, task.getTaskId(), ExternalSystemType.GLUSTER); + updateVolumeBricksAndLock(cluster,task); } @@ -189,6 +198,46 @@ } } + private void updateVolumeBricksAndLock(VDSGroup cluster,GlusterAsyncTask task) { + //get volume associated with task + String volumeName = task.getTaskParameters().getVolumeName(); + GlusterVolumeEntity vol = getVolumeDao().getByName(cluster.getId(), volumeName); + + if (vol != null) { + //update volume with task id + getVolumeDao().updateVolumeTask(vol.getId(), task.getTaskId()); + //acquire lock on volume + acquireLock(vol.getId()); + + if (GlusterTaskType.REMOVE_BRICK == task.getType()) { + //update bricks associated with task id + String[] bricks = task.getTaskParameters().getBricks(); + List<GlusterBrickEntity> brickEntities = new ArrayList<>(); + for (String brick: bricks) { + String[] brickParts = brick.split(":", -1); + String hostnameOrIp = brickParts[0]; + String brickDir = brickParts[1]; + GlusterBrickEntity brickEntity = new GlusterBrickEntity(); + VdsStatic server = GlusterDBUtils.getInstance().getServer(cluster.getId(), hostnameOrIp); + if (server == null) { + log.warnFormat("Could not find server {0} in cluster {1}", hostnameOrIp, cluster.getId()); + } else { + brickEntity.setServerId(server.getId()); + brickEntity.setBrickDirectory(brickDir); + brickEntity.setAsyncTask(new GlusterAsyncTask()); + brickEntity.getAsyncTask().setTaskId(task.getTaskId()); + brickEntities.add(brickEntity); + } + } + getBrickDao().updateAllBrickTasksByHostIdBrickDir(brickEntities); + } + + } else { + log.debugFormat("Did not find a volume associated with volumeName {0} and task {1} ", + volumeName, task.getTaskId()); + } + } + protected void endStepJob(Step step) { getJobRepository().updateStep(step); ExecutionContext finalContext = ExecutionHandler.createFinalizingContext(step.getId()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/tasks/GlusterTasksService.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/tasks/GlusterTasksService.java index 94c8897..adc3e83 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/tasks/GlusterTasksService.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/tasks/GlusterTasksService.java @@ -22,7 +22,7 @@ public Map<Guid, GlusterAsyncTask> getTaskListForCluster(Guid id) { VDS upServer = ClusterUtils.getInstance().getUpServer(id); if (upServer == null) { - log.error("No up server in cluster"); + log.debug("No up server in cluster"); return null; } VDSReturnValue returnValue =runVdsCommand(VDSCommandType.GlusterTasksList, diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/gluster/GlusterTaskType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/gluster/GlusterTaskType.java index 8ca0fe7..fa34fe4 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/gluster/GlusterTaskType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/gluster/GlusterTaskType.java @@ -8,6 +8,7 @@ public enum GlusterTaskType { REBALANCE(StepEnum.REBALANCING_VOLUME), REMOVE_BRICK(StepEnum.REMOVING_BRICKS), + UNKNOWN(StepEnum.UNKNOWN), ; private StepEnum step; @@ -31,4 +32,12 @@ public static GlusterTaskType forValue(StepEnum step) { return mappings.get(step); } + + public static GlusterTaskType fromValue(String v) { + try { + return valueOf(v.toUpperCase()); + } catch (IllegalArgumentException e) { + return GlusterTaskType.UNKNOWN; + } + } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTasksListReturnForXmlRpc.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTasksListReturnForXmlRpc.java index d0d041c..e17de7f 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTasksListReturnForXmlRpc.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterTasksListReturnForXmlRpc.java @@ -48,7 +48,7 @@ GlusterAsyncTask task = new GlusterAsyncTask(); task.setTaskId(Guid.createGuidFromString(taskId)); task.setStatus(GlusterAsyncTaskStatus.from((String)map.get(STATUS)).getJobExecutionStatus()); - task.setType(GlusterTaskType.valueOf((String)map.get(TASK_TYPE))); + task.setType(GlusterTaskType.fromValue((String)map.get(TASK_TYPE))); task.setMessage(getMessage((Map<String, Object>)map.get(DATA))); task.setTaskParameters(new GlusterTaskParameters()); task.getTaskParameters().setVolumeName((String)map.get(VOLUME_NAME)); -- To view, visit http://gerrit.ovirt.org/19616 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0eb5035a6f9af0b148ac4877939fb174a196f86e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sahina Bose <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
