Yair Zaslavsky has uploaded a new change for review.

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: Icb916417a910be7334937333b1767e40d59e0cf4
Signed-off-by: Yair Zaslavsky <[email protected]>
---
M backend/manager/dbscripts/async_tasks_sp.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/filters/pgsql.properties
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, 40 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/38/15138/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/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 1a06def..7139211 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
@@ -1521,7 +1521,9 @@
                 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/filters/pgsql.properties 
b/backend/manager/modules/dal/src/test/filters/pgsql.properties
index db77ed3..a72ef39 100644
--- a/backend/manager/modules/dal/src/test/filters/pgsql.properties
+++ b/backend/manager/modules/dal/src/test/filters/pgsql.properties
@@ -1,6 +1,6 @@
 engine.db.username = postgres
 engine.db.password = redhat
-engine.db.url = jdbc:postgresql://localhost/engine_test
+engine.db.url = jdbc:postgresql://localhost/engine2
 engine.db.driver = org.postgresql.Driver
 engine.db.datafactory = org.ovirt.engine.core.dao.PostgresDataTypeFactory
 engine.db.initsql = 
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 5e9e28a..243b15c 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/15138
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icb916417a910be7334937333b1767e40d59e0cf4
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to