package org.ovirt.engine.core.common.job; import java.util.HashMap; import java.util.Map; import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; /** * The {@code StepEnum} stores the name of steps which should be resolved as a descriptive message. */ public enum StepEnum { VALIDATING, EXECUTING, FINALIZING, INSTALLING_HOST, TEST_POWER_MANAGEMENT, ADD_VM_TO_POOL, MIGRATE_VM, CREATING_SNAPSHOTS, RUN_STATELESS_VM, TAKING_VM_FROM_POOL, REMOVING_VM, ADD_VM, // Gluster SETTING_GLUSTER_OPTION, REBALANCING_VOLUME, REMOVING_BRICKS, // Storage ALLOCATE_VOLUME, COPY_VOLUME, AMEND_VOLUME, REMOVE_DEVICE_FROM_DOMAIN, /** * Maps VDSM tasks type to {@code StepEnum} so it can be resolvable as readable description */ COPY_IMAGE(AsyncTaskType.copyImage), MOVE_IMAGE(AsyncTaskType.moveImage), CREATE_VOLUME(AsyncTaskType.createVolume), DELETE_VOLUME(AsyncTaskType.deleteVolume), DELETE_IMAGE(AsyncTaskType.deleteImage), MERGE_SNAPSHOTS(AsyncTaskType.mergeSnapshots), MERGE_SNAPSHOTS_ON_HOST(AsyncTaskType.mergeSnapshots), FINALIZE_MERGE(AsyncTaskType.finalizeMerge), PREPARE_MERGE(AsyncTaskType.prepareMerge), CLONE_IMAGE_STRUCTURE(AsyncTaskType.cloneImageStructure), SYNC_IMAGE_DATA(AsyncTaskType.syncImageData), DOWNLOAD_IMAGE(AsyncTaskType.downloadImage), DOWNLOAD_IMAGE_FROM_STREAM(AsyncTaskType.downloadImageFromStream), ADD_VM_LEASE(AsyncTaskType.addVmLease), REMOVE_VM_LEASE(AsyncTaskType.removeVmLease), UNKNOWN(AsyncTaskType.unknown); /** * Holds the map between the VDSM task to the Step name which represents it. */ private static final Map<AsyncTaskType, StepEnum> asyncTaskToStepEnumMap = new HashMap<>(); /** * Store the correlated VDSM task type with the step name or {@code null} if none. */ private AsyncTaskType asyncTaskType; static { for (StepEnum s : values()) { if (s.asyncTaskType != null) { asyncTaskToStepEnumMap.put(s.asyncTaskType, s); } } } StepEnum() { } StepEnum(AsyncTaskType asyncTaskType) { this.asyncTaskType = asyncTaskType; } public static StepEnum getStepNameByTaskType(AsyncTaskType asyncTaskType) { return asyncTaskToStepEnumMap.get(asyncTaskType); } }