Hello Ravi Nori,
I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/14103
to review the following change.
Change subject: engine : Introduction of Poller, CommandEntity and Ehcache
......................................................................
engine : Introduction of Poller, CommandEntity and Ehcache
The poller interface eliminates all dependencies from the
AsyncTaskManager and the bll package
The CommandEntity has all required parameters to recreate
Change-Id: I7c1e4619819a6e323fd5bf0bd3568b666aff63ff
Signed-off-by: Ravi Nori <[email protected]>
Signed-off-by: Yair Zaslavsky <[email protected]>
---
M backend/manager/modules/bll/pom.xml
M
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
A
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CacheProviderFactory.java
A
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CacheWrapper.java
M
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
A
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandEntitCacheHandlerImpl.java
A
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandEntityCacheHandler.java
A
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EhcacheWrapperImpl.java
M
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
M
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/CommandCoordinator.java
A
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/Poller.java
A
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/CommandEntity.java
12 files changed, 319 insertions(+), 19 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/14103/1
diff --git a/backend/manager/modules/bll/pom.xml
b/backend/manager/modules/bll/pom.xml
index 20c92f5..5f7c672 100644
--- a/backend/manager/modules/bll/pom.xml
+++ b/backend/manager/modules/bll/pom.xml
@@ -111,6 +111,14 @@
<version>1.6</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>net.sf.ehcache</groupId>
+ <artifactId>ehcache</artifactId>
+ <version>2.6.5</version>
+ <type>pom</type>
+ </dependency>
+
</dependencies>
<build>
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
index 7b5c58a..749b15e 100644
---
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskManager.java
@@ -11,7 +11,6 @@
import java.util.concurrent.TimeUnit;
import org.apache.commons.lang.exception.ExceptionUtils;
-import org.ovirt.engine.core.bll.Backend;
import org.ovirt.engine.core.bll.tasks.interfaces.CommandCoordinator;
import org.ovirt.engine.core.bll.tasks.interfaces.SPMTask;
import org.ovirt.engine.core.common.AuditLogType;
@@ -26,7 +25,6 @@
import org.ovirt.engine.core.common.config.ConfigValues;
import org.ovirt.engine.core.common.errors.VdcBLLException;
import org.ovirt.engine.core.common.errors.VdcBllErrors;
-import org.ovirt.engine.core.common.vdscommands.IrsBaseVDSCommandParameters;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.compat.DateTime;
import org.ovirt.engine.core.compat.Guid;
@@ -46,7 +44,7 @@
/**
* AsyncTaskManager: Singleton, manages all tasks in the system.
*/
-final class AsyncTaskManager {
+public final class AsyncTaskManager {
private static final Log log = LogFactory.getLog(AsyncTaskManager.class);
/** Map which consist all tasks that currently are monitored **/
@@ -300,9 +298,7 @@
for (Guid storagePoolID : poolsOfActiveTasks) {
try {
Map<Guid, AsyncTaskStatus> map =
- (Map<Guid, AsyncTaskStatus>)
Backend.getInstance().getResourceManager().RunVdsCommand(
- VDSCommandType.SPMGetAllTasksStatuses,
- new
IrsBaseVDSCommandParameters(storagePoolID)).getReturnValue();
+ (Map<Guid, AsyncTaskStatus>)
coco.getAllTasksStatuses(storagePoolID);
if (map != null) {
poolsAsyncTaskMap.put(storagePoolID, map);
}
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CacheProviderFactory.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CacheProviderFactory.java
new file mode 100644
index 0000000..69f3acb
--- /dev/null
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CacheProviderFactory.java
@@ -0,0 +1,37 @@
+package org.ovirt.engine.core.bll.tasks;
+
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.config.CacheConfiguration;
+import net.sf.ehcache.config.PersistenceConfiguration;
+import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
+
+public class CacheProviderFactory {
+ private static final int MAX_ELEMENTS = 50;
+ private static CacheManager manager = CacheManager.create();
+
+ public static <K, V> CacheWrapper<K, V> getCacheWrapper(String name) {
+ return new EhcacheWrapperImpl<K, V>(getCache(name));
+ }
+
+ private static Cache getCache(String name) {
+ Cache cache = manager.getCache(name);
+ if (cache == null) {
+ cache = initGetCache(name);
+ manager.addCache(cache);
+ }
+ return cache;
+ }
+
+ private static Cache initGetCache(final String name) {
+ //Create a Cache specifying its configuration.
+ Cache cache = new Cache(
+ new CacheConfiguration(name, MAX_ELEMENTS)
+ .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LRU)
+ .eternal(true)
+ .diskExpiryThreadIntervalSeconds(0)
+ .persistence(new
PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.LOCALTEMPSWAP)));
+ return cache;
+ }
+
+}
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CacheWrapper.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CacheWrapper.java
new file mode 100644
index 0000000..4ce085c
--- /dev/null
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CacheWrapper.java
@@ -0,0 +1,12 @@
+package org.ovirt.engine.core.bll.tasks;
+
+public interface CacheWrapper<K, V> {
+
+ void put(K key, V value);
+
+ V get(K key);
+
+ void remove(final K key);
+
+ public boolean containsKey(K key);
+}
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
index 5f8ec11..cf93a5c 100644
---
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
@@ -1,10 +1,11 @@
package org.ovirt.engine.core.bll.tasks;
-import org.ovirt.engine.core.bll.tasks.interfaces.CommandCoordinator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
+
import javax.transaction.Transaction;
+
import org.ovirt.engine.core.bll.Backend;
import org.ovirt.engine.core.bll.CommandBase;
import org.ovirt.engine.core.bll.CommandsFactory;
@@ -12,6 +13,7 @@
import org.ovirt.engine.core.bll.interfaces.BackendInternal;
import org.ovirt.engine.core.bll.job.ExecutionContext;
import org.ovirt.engine.core.bll.job.ExecutionHandler;
+import org.ovirt.engine.core.bll.tasks.interfaces.CommandCoordinator;
import org.ovirt.engine.core.bll.tasks.interfaces.SPMTask;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
@@ -24,6 +26,7 @@
import org.ovirt.engine.core.common.businessentities.AsyncTaskStatus;
import org.ovirt.engine.core.common.businessentities.AsyncTaskStatusEnum;
import org.ovirt.engine.core.common.businessentities.AsyncTasks;
+import org.ovirt.engine.core.common.businessentities.CommandEntity;
import org.ovirt.engine.core.common.job.ExternalSystemType;
import org.ovirt.engine.core.common.job.JobExecutionStatus;
import org.ovirt.engine.core.common.job.Step;
@@ -49,11 +52,11 @@
public static CommandCoordinatorImpl getInstance() {
return instance;
}
-
- Map<NGuid, ExecutionContext> executionContextMap;
+ CacheWrapper<NGuid, ExecutionContext> executionContextMap;
+ CommandEntityCacheHandler commandEntityDAO = new
CommandEntitCacheHandlerImpl();
private CommandCoordinatorImpl() {
- executionContextMap = new HashMap<>();
+ executionContextMap = CacheProviderFactory.<NGuid,
ExecutionContext>getCacheWrapper(EXECUTION_CONTEXT_MAP_NAME);
}
@Override
@@ -68,10 +71,27 @@
context = createFinalizingContext(stepId.getValue());
executionContextMap.put(stepId, context);
}
+ if (stepId != null) {
+ CommandEntity commandEntity = commandEntityDAO.get(stepId);
+ if (!actionType.equals(commandEntity.getCommandType())) {
+ throw new RuntimeException("action types dont match");
+ } else {
+ log.info("in CommandManager.endAction action types match "
+ actionType.toString());
+ }
+ Map<String, Object> data = commandEntity.getData();
+ VdcActionParametersBase paramsOfCommand =
(VdcActionParametersBase) data.get("params");
+ if (!parameters.equals(paramsOfCommand)) {
+ throw new RuntimeException("parameters dont match");
+ } else {
+ log.info("in CommandManager.endAction parameters match " +
parameters.toString());
+ }
+ }
CommandBase<?> command =
CommandsFactory.getInstance().CreateCommand(actionType, parameters);
command.setContext(new CommandContext(context));
return command.endAction();
+// return new DecoratedCommand(command, dbAsyncTask).endAction();
} finally {
+ commandEntityDAO.remove(stepId);
}
}
@@ -153,7 +173,11 @@
task.setEntityType(entityType);
task.setAssociatedEntities(entityIds);
AsyncTaskUtils.addOrUpdateTaskInDB(task);
-
+ commandEntityDAO.put(
+ task.getParameters().getDbAsyncTask().getStepId(),
+ command.getCommandId(),
+ command.getParameters().getParentParameters() == null ?
Guid.Empty : command.getParameters().getParentParameters().getCommandId(),
+ task);
getAsyncTaskManager().lockAndAddTaskToManager(task);
retValue = task.getTaskID();
updateStepExternalId(taskStep, retValue, ExternalSystemType.VDSM);
@@ -381,6 +405,18 @@
}
}
+ @Override
+ public AsyncTaskStatus getTaskStatus(Guid storagePoolID, Guid taskID) {
+ Object tempVar = runVdsCommand(VDSCommandType.SPMGetTaskStatus,
+ new SPMTaskGuidBaseVDSCommandParameters(storagePoolID,
taskID)).getReturnValue();
+ return (AsyncTaskStatus) ((tempVar instanceof AsyncTaskStatus) ?
tempVar : null);
+ }
+ @Override
+ public Map<Guid, AsyncTaskStatus> getAllTasksStatuses(Guid storagePoolID) {
+ return (Map<Guid, AsyncTaskStatus>)
runVdsCommand(VDSCommandType.SPMGetAllTasksStatuses,
+ new
IrsBaseVDSCommandParameters(storagePoolID)).getReturnValue();
+ }
+
private BackendInternal getBackend() {
return Backend.getInstance();
}
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandEntitCacheHandlerImpl.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandEntitCacheHandlerImpl.java
new file mode 100644
index 0000000..26c5cd0
--- /dev/null
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandEntitCacheHandlerImpl.java
@@ -0,0 +1,43 @@
+package org.ovirt.engine.core.bll.tasks;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.ovirt.engine.core.common.businessentities.CommandEntity;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.NGuid;
+
+public class CommandEntitCacheHandlerImpl implements CommandEntityCacheHandler
{
+
+ private static final String COMMAND_MAP_NAME = "commandMap";
+ CacheWrapper<NGuid, CommandEntity> commandMap;
+
+ public CommandEntitCacheHandlerImpl() {
+ commandMap = CacheProviderFactory.<NGuid,
CommandEntity>getCacheWrapper(COMMAND_MAP_NAME);
+ }
+
+ @Override
+ public CommandEntity get(NGuid stepId) {
+ return commandMap.get(stepId);
+ }
+
+ @Override
+ public void remove(NGuid stepId) {
+ commandMap.remove(stepId);
+ }
+
+ @Override
+ public void put(NGuid stepId, Guid commandId, Guid parentCommandId,
SPMAsyncTask task) {
+ commandMap.put(stepId, buildGetCommandEntity(commandId,
parentCommandId, task));
+ }
+
+ private CommandEntity buildGetCommandEntity(Guid commandId, Guid
parentCommandId, SPMAsyncTask task) {
+ CommandEntity entity = new CommandEntity();
+ entity.setId(commandId);
+ entity.setParentCommandId(parentCommandId);
+
entity.setCommandType(task.getParameters().getDbAsyncTask().getaction_type());
+ Map<String, Object> data = new HashMap<String, Object>();
+ data.put("params",
task.getParameters().getDbAsyncTask().getActionParameters());
+ return entity;
+ }
+}
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandEntityCacheHandler.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandEntityCacheHandler.java
new file mode 100644
index 0000000..b358e7f
--- /dev/null
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandEntityCacheHandler.java
@@ -0,0 +1,15 @@
+package org.ovirt.engine.core.bll.tasks;
+
+import org.ovirt.engine.core.common.businessentities.CommandEntity;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.NGuid;
+
+public interface CommandEntityCacheHandler {
+
+ public CommandEntity get(NGuid stepId);
+
+ public void remove(NGuid stepId);
+
+ public void put(NGuid stepId, Guid commandId, Guid parentCommandId,
SPMAsyncTask task);
+
+}
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EhcacheWrapperImpl.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EhcacheWrapperImpl.java
new file mode 100644
index 0000000..97358a2
--- /dev/null
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EhcacheWrapperImpl.java
@@ -0,0 +1,42 @@
+package org.ovirt.engine.core.bll.tasks;
+
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.Element;
+
+public class EhcacheWrapperImpl<K, V> implements CacheWrapper<K, V> {
+
+ private final Cache cache;
+
+ public EhcacheWrapperImpl(final Cache cache) {
+ this.cache = cache;
+ }
+
+ @Override
+ public void put(final K key, final V value) {
+ getCache().put(new Element(key, value));
+ }
+
+ @Override
+ public V get(final K key) {
+ Element element = getCache().get(key);
+ if (element != null) {
+ return (V) element.getValue();
+ }
+ return null;
+ }
+
+ @Override
+ public void remove(final K key) {
+ getCache().remove(key);
+ }
+
+ public Cache getCache() {
+ return cache;
+ }
+
+ @Override
+ public boolean containsKey(final K key) {
+ return getCache().isKeyInCache(key) || getCache().get(key) != null;
+ }
+}
+
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
index 0e5668f..0f4c258 100644
---
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/SPMAsyncTask.java
@@ -1,6 +1,5 @@
package org.ovirt.engine.core.bll.tasks;
-import org.ovirt.engine.core.bll.Backend;
import static
org.ovirt.engine.core.common.config.ConfigValues.UknownTaskPrePollingLapse;
import org.ovirt.engine.core.bll.tasks.interfaces.CommandCoordinator;
@@ -12,8 +11,6 @@
import org.ovirt.engine.core.common.config.Config;
import org.ovirt.engine.core.common.errors.VdcBllErrors;
import org.ovirt.engine.core.common.job.JobExecutionStatus;
-import
org.ovirt.engine.core.common.vdscommands.SPMTaskGuidBaseVDSCommandParameters;
-import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
@@ -396,10 +393,7 @@
AsyncTaskStatus returnValue = null;
try {
- Object tempVar = Backend.getInstance().getResourceManager()
- .RunVdsCommand(VDSCommandType.SPMGetTaskStatus,
- new
SPMTaskGuidBaseVDSCommandParameters(getStoragePoolID(),
getTaskID())).getReturnValue();
- returnValue = (AsyncTaskStatus) ((tempVar instanceof
AsyncTaskStatus) ? tempVar : null);
+ returnValue = coco.getTaskStatus(getStoragePoolID(), getTaskID());
}
catch (RuntimeException e) {
log.error(
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/CommandCoordinator.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/CommandCoordinator.java
index 0a119fc..a7c381a 100644
---
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/CommandCoordinator.java
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/CommandCoordinator.java
@@ -1,5 +1,5 @@
package org.ovirt.engine.core.bll.tasks.interfaces;
-public abstract class CommandCoordinator implements CallBack, TaskHelper {
+public abstract class CommandCoordinator implements CallBack, TaskHelper,
Poller {
}
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/Poller.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/Poller.java
new file mode 100644
index 0000000..d0606a7
--- /dev/null
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/interfaces/Poller.java
@@ -0,0 +1,11 @@
+package org.ovirt.engine.core.bll.tasks.interfaces;
+
+import java.util.Map;
+import org.ovirt.engine.core.common.businessentities.AsyncTaskStatus;
+import org.ovirt.engine.core.compat.Guid;
+
+public interface Poller {
+ Map<Guid, AsyncTaskStatus> getAllTasksStatuses(Guid storagePoolID);
+ AsyncTaskStatus getTaskStatus(Guid storagePoolID, Guid taskID);
+}
+
diff --git
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/CommandEntity.java
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/CommandEntity.java
new file mode 100644
index 0000000..3637092
--- /dev/null
+++
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/CommandEntity.java
@@ -0,0 +1,106 @@
+package org.ovirt.engine.core.common.businessentities;
+
+import java.util.Date;
+import java.util.Map;
+
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.NGuid;
+
+public class CommandEntity implements BusinessEntity<Guid> {
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((commandId == null) ? 0 :
commandId.hashCode());
+ result = prime * result + ((commandType == null) ? 0 :
commandType.hashCode());
+ result = prime * result + ((createdAt == null) ? 0 :
createdAt.hashCode());
+ result = prime * result + ((data == null) ? 0 : data.hashCode());
+ result = prime * result + ((parentCommandId == null) ? 0 :
parentCommandId.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (!(obj instanceof CommandEntity))
+ return false;
+ CommandEntity other = (CommandEntity) obj;
+ if (commandId == null) {
+ if (other.commandId != null)
+ return false;
+ } else if (!commandId.equals(other.commandId))
+ return false;
+ if (commandType != other.commandType)
+ return false;
+ if (createdAt == null) {
+ if (other.createdAt != null)
+ return false;
+ } else if (!createdAt.equals(other.createdAt))
+ return false;
+ if (data == null) {
+ if (other.data != null)
+ return false;
+ } else if (!data.equals(other.data))
+ return false;
+ if (parentCommandId == null) {
+ if (other.parentCommandId != null)
+ return false;
+ } else if (!parentCommandId.equals(other.parentCommandId))
+ return false;
+ return true;
+ }
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5293055556971973650L;
+ private Guid commandId;
+ private NGuid parentCommandId;
+ private VdcActionType commandType;
+ private Map<String, Object> data;
+ private Date createdAt;
+
+ public Date getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Date createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Map<String, Object> getData() {
+ return data;
+ }
+
+ public void setData(Map<String, Object> data) {
+ this.data = data;
+ }
+
+ public Guid getId() {
+ return commandId;
+ }
+
+ public void setId(Guid commandId) {
+ this.commandId = commandId;
+ }
+
+ public NGuid getParentCommandId() {
+ return parentCommandId;
+ }
+
+ public void setParentCommandId(NGuid parentCommandId) {
+ this.parentCommandId = parentCommandId;
+ }
+
+ public VdcActionType getCommandType() {
+ return commandType;
+ }
+
+ public void setCommandType(VdcActionType type) {
+ this.commandType = type;
+ }
+}
--
To view, visit http://gerrit.ovirt.org/14103
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7c1e4619819a6e323fd5bf0bd3568b666aff63ff
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yair Zaslavsky <[email protected]>
Gerrit-Reviewer: Ravi Nori <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches