Hello Yair Zaslavsky,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/15565

to review the following change.

Change subject: core: adding root command id
......................................................................

core: adding root command id

Adding root command Id to DAO and business
entity.
Root command Id represents the command Id of the command
that started the flow that eventually tasks were created
on its behalf in child commands

Change-Id: Ie72ede51fe24af79b46146eaa8b53725511d5538
Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com>
---
M backend/manager/dbscripts/async_tasks_sp.sql
A 
backend/manager/dbscripts/upgrade/03_03_0210_add_root_command_id_to_async_tasks.sql
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
8 files changed, 46 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/65/15565/1

diff --git a/backend/manager/dbscripts/async_tasks_sp.sql 
b/backend/manager/dbscripts/async_tasks_sp.sql
index 03c3d0c9..e790841 100644
--- a/backend/manager/dbscripts/async_tasks_sp.sql
+++ b/backend/manager/dbscripts/async_tasks_sp.sql
@@ -12,6 +12,7 @@
        v_task_params_class varchar(256),
        v_step_id UUID,
        v_command_id UUID,
+       v_root_command_id UUID,
         v_entity_type varchar(128),
         v_started_at timestamp,
        v_storage_pool_id UUID,
@@ -20,8 +21,8 @@
 RETURNS VOID
    AS $procedure$
 BEGIN
-INSERT INTO async_tasks(action_type, result, status, vdsm_task_id, task_id, 
action_parameters,action_params_class, task_parameters, task_params_class, 
step_id, command_id, started_at,storage_pool_id, task_type)
-       VALUES(v_action_type, v_result, v_status, v_vdsm_task_id, v_task_id, 
v_action_parameters,v_action_params_class, v_task_parameters, 
v_task_params_class, v_step_id, v_command_id, v_started_at, v_storage_pool_id, 
v_async_task_type);
+INSERT INTO async_tasks(action_type, result, status, vdsm_task_id, task_id, 
action_parameters,action_params_class, task_parameters, task_params_class, 
step_id, command_id, root_command_id, started_at,storage_pool_id, task_type)
+       VALUES(v_action_type, v_result, v_status, v_vdsm_task_id, v_task_id, 
v_action_parameters,v_action_params_class, v_task_parameters, 
v_task_params_class, v_step_id, v_command_id, v_root_command_id, v_started_at, 
v_storage_pool_id, v_async_task_type);
 INSERT INTO async_tasks_entities (async_task_id,entity_id,entity_type)
        SELECT v_task_id,fnsplitteruuid(v_entity_ids),v_entity_type;
 END; $procedure$
@@ -38,7 +39,8 @@
        v_task_parameters text,
        v_task_params_class varchar(256),
        v_step_id UUID,
-       v_command_id UUID)
+       v_command_id UUID,
+       v_root_command_id UUID)
 RETURNS VOID
 
        --The [async_tasks] table doesn't have a timestamp column. Optimistic 
concurrency logic cannot be generated
@@ -54,6 +56,7 @@
           task_params_class = v_task_params_class,
           step_id = v_step_id,
           command_id = v_command_id,
+          root_command_id = v_root_command_id,
           vdsm_task_id = v_vdsm_task_id
       WHERE task_id = v_task_id;
 END; $procedure$
@@ -70,6 +73,7 @@
        v_task_params_class varchar(256),
        v_step_id UUID,
        v_command_id UUID,
+       v_root_command_id UUID,
         v_entity_type varchar(128),
         v_started_at timestamp,
        v_storage_pool_id UUID,
@@ -80,9 +84,9 @@
 BEGIN
       IF NOT EXISTS (SELECT 1 from async_tasks where async_tasks.task_id = 
v_task_id) THEN
             PERFORM Insertasync_tasks(v_action_type, v_result, v_status, 
v_vdsm_task_id, v_task_id, v_action_parameters,
-            v_action_params_class, v_task_parameters, v_task_params_class, 
v_step_id, v_command_id, v_entity_type, v_started_at, v_storage_pool_id, 
v_async_task_type, v_entity_ids);
+            v_action_params_class, v_task_parameters, v_task_params_class, 
v_step_id, v_command_id, v_root_command_id, v_entity_type, v_started_at, 
v_storage_pool_id, v_async_task_type, v_entity_ids);
       ELSE
-            PERFORM Updateasync_tasks(v_action_type, v_result, v_status, 
v_vdsm_task_id, v_task_id, v_action_parameters,  v_action_params_class, 
v_task_parameters, v_task_params_class, v_step_id, v_command_id);
+            PERFORM Updateasync_tasks(v_action_type, v_result, v_status, 
v_vdsm_task_id, v_task_id, v_action_parameters,  v_action_params_class, 
v_task_parameters, v_task_params_class, v_step_id, v_command_id, 
v_root_command_id);
       END IF;
 END; $procedure$
 LANGUAGE plpgsql;
diff --git 
a/backend/manager/dbscripts/upgrade/03_03_0210_add_root_command_id_to_async_tasks.sql
 
b/backend/manager/dbscripts/upgrade/03_03_0210_add_root_command_id_to_async_tasks.sql
new file mode 100644
index 0000000..3e5cbff
--- /dev/null
+++ 
b/backend/manager/dbscripts/upgrade/03_03_0210_add_root_command_id_to_async_tasks.sql
@@ -0,0 +1 @@
+select fn_db_add_column('async_tasks', 'root_command_id', 'UUID DEFAULT NULL');
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java
index de345e1..3393328 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java
@@ -39,6 +39,7 @@
                             new VdcActionParametersBase(),
                             creationInfo.getStepId(),
                             asyncTask == null ? Guid.NewGuid() : 
asyncTask.getCommandId(),
+                            asyncTask == null ? Guid.NewGuid() : 
asyncTask.getRootCommandId(),
                             creationInfo.getStoragePoolID(),
                             creationInfo.getTaskType());
             creationInfo.setTaskType(AsyncTaskType.unknown);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
index 1a2bc0b..5d80672 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
@@ -1512,11 +1512,14 @@
             asyncTask = DbFacade.getInstance().getAsyncTaskDao().get(taskId);
         }
         if (asyncTask != null) {
+            VdcActionParametersBase parentParameters = 
getParentParameters(parentCommand);
             asyncTask.setaction_type(parentCommand);
             asyncTask.setVdsmTaskId(asyncTaskCreationInfo.getVdsmTaskId());
-            asyncTask.setActionParameters(getParentParameters(parentCommand));
+            asyncTask.setActionParameters(parentParameters);
             asyncTask.setTaskParameters(getParameters());
             asyncTask.setStepId(asyncTaskCreationInfo.getStepId());
+            asyncTask.setCommandId(getCommandId());
+            asyncTask.setRootCommandId(parentParameters.getCommandId());
             
asyncTask.setStoragePoolId(asyncTaskCreationInfo.getStoragePoolID());
             asyncTask.setTaskType(asyncTaskCreationInfo.getTaskType());
         } else {
@@ -1536,14 +1539,17 @@
     private AsyncTasks createAsyncTask(
             AsyncTaskCreationInfo asyncTaskCreationInfo,
             VdcActionType parentCommand) {
+        VdcActionParametersBase parentParameters = 
getParentParameters(parentCommand);
         return new AsyncTasks(parentCommand,
                 AsyncTaskResultEnum.success,
                 AsyncTaskStatusEnum.running,
                 asyncTaskCreationInfo.getVdsmTaskId(),
-                getParentParameters(parentCommand),
+                parentParameters,
                 getParameters(),
                 asyncTaskCreationInfo.getStepId(),
-                getCommandId(), asyncTaskCreationInfo.getStoragePoolID(),
+                getCommandId(),
+                parentParameters.getCommandId(),
+                asyncTaskCreationInfo.getStoragePoolID(),
                 asyncTaskCreationInfo.getTaskType());
     }
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java
index 49d9116..48fa3d5 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java
@@ -19,7 +19,13 @@
     }
 
     public AsyncTasks(VdcActionType action_type, AsyncTaskResultEnum result, 
AsyncTaskStatusEnum status, Guid vdsmTaskId,
-            VdcActionParametersBase parentParameters, VdcActionParametersBase 
taskParameters, NGuid stepId, Guid commandId, Guid storagePoolId, AsyncTaskType 
taskType) {
+            VdcActionParametersBase parentParameters,
+            VdcActionParametersBase taskParameters,
+            NGuid stepId,
+            Guid commandId,
+            Guid rootCommandId,
+            Guid storagePoolId,
+            AsyncTaskType taskType) {
         this.actionType = action_type;
         this.result = result;
         this.status = status;
@@ -29,6 +35,7 @@
         this.stepId = stepId;
         this.startTime = new Date();
         this.commandId = commandId;
+        this.rootCommandId = rootCommandId;
         this.storagePoolId = storagePoolId;
         this.taskId = Guid.NewGuid();
         this.taskType = taskType;
@@ -128,6 +135,14 @@
 
     private Guid commandId = Guid.Empty;
 
+    public Guid getRootCommandId() {
+        return rootCommandId;
+    }
+
+    public void setRootCommandId(Guid rootCommandId) {
+        this.rootCommandId = rootCommandId;
+    }
+
     public Guid getCommandId() {
         return commandId;
     }
@@ -135,6 +150,8 @@
     public void setCommandId(Guid commandId) {
         this.commandId = commandId;
     }
+
+    private Guid rootCommandId = Guid.Empty;
 
     public Guid getStoragePoolId() {
         return storagePoolId;
@@ -163,6 +180,7 @@
         results = prime * results + ((vdsmTaskId == null) ? 0 : 
vdsmTaskId.hashCode());
         results = prime * results + ((stepId == null) ? 0 : stepId.hashCode());
         results = prime * results + ((commandId == null) ? 0 : 
commandId.hashCode());
+        results = prime * results + ((rootCommandId == null) ? 0 : 
rootCommandId.hashCode());
         results = prime * results + ((actionParameters == null) ? 0 : 
actionParameters.hashCode());
         results = prime * results + ((actionType == null) ? 0 : 
actionType.hashCode());
         results = prime * results + ((result == null) ? 0 : result.hashCode());
@@ -189,6 +207,7 @@
                 && ObjectUtils.objectsEqual(taskId, other.taskId)
                 && ObjectUtils.objectsEqual(stepId, other.stepId)
                 && ObjectUtils.objectsEqual(commandId, other.commandId)
+                && ObjectUtils.objectsEqual(rootCommandId, other.rootCommandId)
                 && ObjectUtils.objectsEqual(actionParameters, 
other.actionParameters)
                 && actionType == other.actionType
                 && result == other.result
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
index 2129e13..f2e5287 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java
@@ -58,6 +58,7 @@
             
entity.setTaskParameters(deserializeParameters(rs.getString("task_parameters"),rs.getString("task_params_class")));
             
entity.setStepId(NGuid.createGuidFromString(rs.getString("step_id")));
             
entity.setCommandId(Guid.createGuidFromString(rs.getString("command_id")));
+            
entity.setRootCommandId(Guid.createGuidFromString(rs.getString("root_command_id")));
             
entity.setStartTime(DbFacadeUtils.fromDate(rs.getTimestamp("started_at")));
             entity.setTaskType(AsyncTaskType.forValue(rs.getInt("task_type")));
             
entity.setStoragePoolId(Guid.createGuidFromString(rs.getString("storage_pool_id")));
@@ -90,6 +91,7 @@
             
addValue("task_params_class",task.getTaskParameters().getClass().getName());
             addValue("step_id", task.getStepId());
             addValue("command_id", task.getCommandId());
+            addValue("root_command_id", task.getRootCommandId());
         }
 
         private static String serializeParameters(VdcActionParametersBase 
params) {
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
index 7ce276e..fe5ffd9 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java
@@ -62,6 +62,7 @@
         newAsyncTask.setActionParameters(params);
         newAsyncTask.setTaskParameters(taskParams);
         newAsyncTask.setCommandId(Guid.NewGuid());
+        newAsyncTask.setRootCommandId(Guid.NewGuid());
         newAsyncTask.setTaskType(AsyncTaskType.copyImage);
         newAsyncTask.setStoragePoolId(Guid.NewGuid());
 
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 41cae72..b21349b 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -48,6 +48,7 @@
         <column>result</column>
         <column>action_parameters</column>
         <column>command_id</column>
+        <column>root_command_id</column>
         <column>started_at</column>
         <column>storage_pool_id</column>
         <column>task_type</column>
@@ -59,6 +60,7 @@
             <value>0</value> <!--  Success -->
             <null />
             <value>340fd52b-3400-4cdd-8d3f-c9d03704b0aa</value>
+            <value>340fd52b-3400-4cdd-8d3f-c9d03704b000</value>
             <value>2010-12-01 14:13:07</value>
             <value>6d849ebf-755f-4552-ad09-9a090cda105d</value>
             <value>3</value>
@@ -71,6 +73,7 @@
             <value>0</value> <!--  Success -->
             <null />
             <value>340fd52b-3400-4cdd-8d3f-c9d03704b0ab</value>
+            <value>340fd52b-3400-4cdd-8d3f-c9d03704b000</value>
             <value>2010-12-01 14:13:07</value>
             <value>6d849ebf-755f-4552-ad09-9a090cda105d</value>
             <value>3</value>


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie72ede51fe24af79b46146eaa8b53725511d5538
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
Gerrit-Reviewer: Yair Zaslavsky <yzasl...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to