11using  System . Net ; 
2+ using  System . Threading . Tasks ; 
23using  Microsoft . Azure . Functions . Worker ; 
34using  Microsoft . Azure . Functions . Worker . Http ; 
45
@@ -31,20 +32,36 @@ private async Async.Task<HttpResponseData> Get(HttpRequestData req) {
3132            return  await  _context . RequestHandling . NotOk ( req ,  request . ErrorV ,  "task get" ) ; 
3233        } 
3334
34-         if  ( request . OkV . TaskId  !=   null )  { 
35-             var  task  =  await  _context . TaskOperations . GetByTaskId ( request . OkV . TaskId . Value ) ; 
35+         if  ( request . OkV . TaskId  is   Guid   taskId )  { 
36+             var  task  =  await  _context . TaskOperations . GetByTaskId ( taskId ) ; 
3637            if  ( task  ==  null )  { 
37-                 return  await  _context . RequestHandling . NotOk ( req ,  new  Error ( ErrorCode . INVALID_REQUEST ,  new [ ]  {  "unable to find task" 
38-                 } ) ,  "task get" ) ; 
39- 
38+                 return  await  _context . RequestHandling . NotOk ( 
39+                     req , 
40+                     new  Error ( 
41+                         ErrorCode . INVALID_REQUEST , 
42+                         new [ ]  {  "unable to find task"  } ) , 
43+                     "task get" ) ; 
4044            } 
41-             task . Nodes  =  await  _context . NodeTasksOperations . GetNodeAssignments ( request . OkV . TaskId . Value ) . ToListAsync ( ) ; 
42-             task . Events  =  await  _context . TaskEventOperations . GetSummary ( request . OkV . TaskId . Value ) . ToListAsync ( ) ; 
43- 
44-             var  response  =  req . CreateResponse ( HttpStatusCode . OK ) ; 
45-             await  response . WriteAsJsonAsync ( task ) ; 
46-             return  response ; 
4745
46+             var  ( nodes ,  events )  =  await  ( 
47+                 _context . NodeTasksOperations . GetNodeAssignments ( taskId ) . ToListAsync ( ) . AsTask ( ) , 
48+                 _context . TaskEventOperations . GetSummary ( taskId ) . ToListAsync ( ) . AsTask ( ) ) ; 
49+ 
50+             var  result  =  new  TaskSearchResult ( 
51+                 JobId :  task . JobId , 
52+                 TaskId :  task . TaskId , 
53+                 State :  task . State , 
54+                 Os :  task . Os , 
55+                 Config :  task . Config , 
56+                 Error :  task . Error , 
57+                 Auth :  task . Auth , 
58+                 Heartbeat :  task . Heartbeat , 
59+                 EndTime :  task . EndTime , 
60+                 UserInfo :  task . UserInfo , 
61+                 Nodes :  nodes , 
62+                 Events :  events ) ; 
63+ 
64+             return  await  RequestHandling . Ok ( req ,  result ) ; 
4865        } 
4966
5067        var  tasks  =  await  _context . TaskOperations . SearchAll ( ) . ToListAsync ( ) ; 
@@ -55,7 +72,7 @@ private async Async.Task<HttpResponseData> Get(HttpRequestData req) {
5572
5673
5774    private  async  Async . Task < HttpResponseData >  Post ( HttpRequestData  req )  { 
58-         var  request  =  await  RequestHandling . ParseRequest < TaskConfig > ( req ) ; 
75+         var  request  =  await  RequestHandling . ParseRequest < TaskCreate > ( req ) ; 
5976        if  ( ! request . IsOk )  { 
6077            return  await  _context . RequestHandling . NotOk ( 
6178                req , 
@@ -68,7 +85,19 @@ private async Async.Task<HttpResponseData> Post(HttpRequestData req) {
6885            return  await  _context . RequestHandling . NotOk ( req ,  userInfo . ErrorV ,  "task create" ) ; 
6986        } 
7087
71-         var  checkConfig  =  await  _context . Config . CheckConfig ( request . OkV ) ; 
88+         var  create  =  request . OkV ; 
89+         var  cfg  =  new  TaskConfig ( 
90+             JobId :  create . JobId , 
91+             PrereqTasks :  create . PrereqTasks , 
92+             Task :  create . Task , 
93+             Vm :  null , 
94+             Pool :  create . Pool , 
95+             Containers :  create . Containers , 
96+             Tags :  create . Tags , 
97+             Debug :  create . Debug , 
98+             Colocate :  create . Colocate ) ; 
99+ 
100+         var  checkConfig  =  await  _context . Config . CheckConfig ( cfg ) ; 
72101        if  ( ! checkConfig . IsOk )  { 
73102            return  await  _context . RequestHandling . NotOk ( 
74103                req , 
@@ -82,23 +111,23 @@ private async Async.Task<HttpResponseData> Post(HttpRequestData req) {
82111            return  response ; 
83112        } 
84113
85-         var  job  =  await  _context . JobOperations . Get ( request . OkV . JobId ) ; 
114+         var  job  =  await  _context . JobOperations . Get ( cfg . JobId ) ; 
86115        if  ( job  ==  null )  { 
87116            return  await  _context . RequestHandling . NotOk ( 
88117                req , 
89118                new  Error ( ErrorCode . INVALID_REQUEST ,  new [ ]  {  "unable to find job"  } ) , 
90-                 request . OkV . JobId . ToString ( ) ) ; 
119+                 cfg . JobId . ToString ( ) ) ; 
91120        } 
92121
93122        if  ( job . State  !=  JobState . Enabled  &&  job . State  !=  JobState . Init )  { 
94123            return  await  _context . RequestHandling . NotOk ( 
95124                req , 
96125                new  Error ( ErrorCode . UNABLE_TO_ADD_TASK_TO_JOB ,  new [ ]  {  $ "unable to add a job in state { job . State } "} ) , 
97-                 request . OkV . JobId . ToString ( ) ) ; 
126+                 cfg . JobId . ToString ( ) ) ; 
98127        } 
99128
100-         if  ( request . OkV . PrereqTasks  !=  null )  { 
101-             foreach  ( var  taskId  in  request . OkV . PrereqTasks )  { 
129+         if  ( cfg . PrereqTasks  !=  null )  { 
130+             foreach  ( var  taskId  in  cfg . PrereqTasks )  { 
102131                var  prereq  =  await  _context . TaskOperations . GetByTaskId ( taskId ) ; 
103132
104133                if  ( prereq  ==  null )  { 
@@ -110,7 +139,7 @@ private async Async.Task<HttpResponseData> Post(HttpRequestData req) {
110139            } 
111140        } 
112141
113-         var  task  =  await  _context . TaskOperations . Create ( request . OkV ,   request . OkV . JobId ,  userInfo . OkV ) ; 
142+         var  task  =  await  _context . TaskOperations . Create ( cfg ,   cfg . JobId ,  userInfo . OkV ) ; 
114143
115144        if  ( ! task . IsOk )  { 
116145            return  await  _context . RequestHandling . NotOk ( 
0 commit comments