@@ -2,7 +2,6 @@ package impl
22
33import (
44 "context"
5- "strconv"
65
76 cloudeventInterfaces "github.com/flyteorg/flyteadmin/pkg/async/cloudevent/interfaces"
87
@@ -17,7 +16,6 @@ import (
1716
1817 "github.com/flyteorg/flytestdlib/contextutils"
1918
20- "github.com/flyteorg/flyteadmin/pkg/manager/impl/shared"
2119 "github.com/flyteorg/flytestdlib/promutils"
2220 "github.com/prometheus/client_golang/prometheus"
2321
@@ -74,11 +72,6 @@ const (
7472 alreadyInTerminalStatus
7573)
7674
77- var isParent = common .NewMapFilter (map [string ]interface {}{
78- shared .ParentTaskExecutionID : nil ,
79- shared .ParentID : nil ,
80- })
81-
8275func getNodeExecutionContext (ctx context.Context , identifier * core.NodeExecutionIdentifier ) context.Context {
8376 ctx = contextutils .WithProjectDomain (ctx , identifier .ExecutionId .Project , identifier .ExecutionId .Domain )
8477 ctx = contextutils .WithExecutionID (ctx , identifier .ExecutionId .Name )
@@ -369,48 +362,23 @@ func (m *NodeExecutionManager) GetNodeExecution(
369362 return nodeExecution , nil
370363}
371364
372- func (m * NodeExecutionManager ) listNodeExecutions (
373- ctx context.Context , identifierFilters []common.InlineFilter ,
374- requestFilters string , limit uint32 , requestToken string , sortBy * admin.Sort , mapFilters []common.MapFilter ) (
375- * admin.NodeExecutionList , error ) {
376-
377- filters , err := util .AddRequestFilters (requestFilters , common .NodeExecution , identifierFilters )
378- if err != nil {
365+ func (m * NodeExecutionManager ) ListNodeExecutions (
366+ ctx context.Context , request admin.NodeExecutionListRequest ) (* admin.NodeExecutionList , error ) {
367+ // Check required fields
368+ if err := validation .ValidateNodeExecutionListRequest (request ); err != nil {
379369 return nil , err
380370 }
381- var sortParameter common.SortParameter
382- if sortBy != nil {
383- sortParameter , err = common .NewSortParameter (* sortBy )
384- if err != nil {
385- return nil , err
386- }
387- }
388- offset , err := validation .ValidateToken (requestToken )
389- if err != nil {
390- return nil , errors .NewFlyteAdminErrorf (codes .InvalidArgument ,
391- "invalid pagination token %s for ListNodeExecutions" , requestToken )
392- }
393- listInput := repoInterfaces.ListResourceInput {
394- Limit : int (limit ),
395- Offset : offset ,
396- InlineFilters : filters ,
397- SortParameter : sortParameter ,
398- }
371+ ctx = getExecutionContext (ctx , request .WorkflowExecutionId )
399372
400- listInput . MapFilters = mapFilters
401- output , err := m . db . NodeExecutionRepo (). List ( ctx , listInput )
373+ nodeExecutions , token , err := util . ListNodeExecutionsForWorkflow ( ctx , m . db , request . WorkflowExecutionId ,
374+ request . UniqueParentId , request . Filters , request . Limit , request . Token , request . SortBy )
402375 if err != nil {
403- logger .Debugf (ctx , "Failed to list node executions for request with err %v" , err )
404376 return nil , err
405377 }
406378
407- var token string
408- if len (output .NodeExecutions ) == int (limit ) {
409- token = strconv .Itoa (offset + len (output .NodeExecutions ))
410- }
411- nodeExecutionList , err := m .transformNodeExecutionModelList (ctx , output .NodeExecutions )
379+ nodeExecutionList , err := m .transformNodeExecutionModelList (ctx , nodeExecutions )
412380 if err != nil {
413- logger .Debugf (ctx , "failed to transform node execution models for request with err: %v" , err )
381+ logger .Debugf (ctx , "failed to transform node execution models for request [%+v] with err: %v" , request , err )
414382 return nil , err
415383 }
416384
@@ -420,42 +388,6 @@ func (m *NodeExecutionManager) listNodeExecutions(
420388 }, nil
421389}
422390
423- func (m * NodeExecutionManager ) ListNodeExecutions (
424- ctx context.Context , request admin.NodeExecutionListRequest ) (* admin.NodeExecutionList , error ) {
425- // Check required fields
426- if err := validation .ValidateNodeExecutionListRequest (request ); err != nil {
427- return nil , err
428- }
429- ctx = getExecutionContext (ctx , request .WorkflowExecutionId )
430-
431- identifierFilters , err := util .GetWorkflowExecutionIdentifierFilters (ctx , * request .WorkflowExecutionId )
432- if err != nil {
433- return nil , err
434- }
435- var mapFilters []common.MapFilter
436- if request .UniqueParentId != "" {
437- parentNodeExecution , err := util .GetNodeExecutionModel (ctx , m .db , & core.NodeExecutionIdentifier {
438- ExecutionId : request .WorkflowExecutionId ,
439- NodeId : request .UniqueParentId ,
440- })
441- if err != nil {
442- return nil , err
443- }
444- parentIDFilter , err := common .NewSingleValueFilter (
445- common .NodeExecution , common .Equal , shared .ParentID , parentNodeExecution .ID )
446- if err != nil {
447- return nil , err
448- }
449- identifierFilters = append (identifierFilters , parentIDFilter )
450- } else {
451- mapFilters = []common.MapFilter {
452- isParent ,
453- }
454- }
455- return m .listNodeExecutions (
456- ctx , identifierFilters , request .Filters , request .Limit , request .Token , request .SortBy , mapFilters )
457- }
458-
459391// Filters on node executions matching the execution parameters (execution project, domain, and name) as well as the
460392// parent task execution id corresponding to the task execution identified in the request params.
461393func (m * NodeExecutionManager ) ListNodeExecutionsForTask (
@@ -465,23 +397,23 @@ func (m *NodeExecutionManager) ListNodeExecutionsForTask(
465397 return nil , err
466398 }
467399 ctx = getTaskExecutionContext (ctx , request .TaskExecutionId )
468- identifierFilters , err := util .GetWorkflowExecutionIdentifierFilters (
469- ctx , * request .TaskExecutionId .NodeExecutionId .ExecutionId )
470- if err != nil {
471- return nil , err
472- }
473- parentTaskExecutionModel , err := util .GetTaskExecutionModel (ctx , m .db , request .TaskExecutionId )
400+
401+ nodeExecutions , token , err := util .ListNodeExecutionsForTask (ctx , m .db , request .TaskExecutionId ,
402+ request .TaskExecutionId .NodeExecutionId .ExecutionId , request .Filters , request .Limit , request .Token , request .SortBy )
474403 if err != nil {
475404 return nil , err
476405 }
477- nodeIDFilter , err := common . NewSingleValueFilter (
478- common . NodeExecution , common . Equal , shared . ParentTaskExecutionID , parentTaskExecutionModel . ID )
406+
407+ nodeExecutionList , err := m . transformNodeExecutionModelList ( ctx , nodeExecutions )
479408 if err != nil {
409+ logger .Debugf (ctx , "failed to transform node execution models for request [%+v] with err: %v" , request , err )
480410 return nil , err
481411 }
482- identifierFilters = append (identifierFilters , nodeIDFilter )
483- return m .listNodeExecutions (
484- ctx , identifierFilters , request .Filters , request .Limit , request .Token , request .SortBy , nil )
412+
413+ return & admin.NodeExecutionList {
414+ NodeExecutions : nodeExecutionList ,
415+ Token : token ,
416+ }, nil
485417}
486418
487419func (m * NodeExecutionManager ) GetNodeExecutionData (
0 commit comments