github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/dashboard/dashboardexecute/control_hooks_dashboard_event.go (about)

     1  package dashboardexecute
     2  
     3  import (
     4  	"context"
     5  	"github.com/turbot/steampipe/pkg/control/controlstatus"
     6  	"time"
     7  
     8  	"github.com/turbot/steampipe/pkg/dashboard/dashboardevents"
     9  )
    10  
    11  // DashboardEventControlHooks is a struct which implements ControlHooks,
    12  // and raises ControlComplete and ControlError dashboard events
    13  type DashboardEventControlHooks struct {
    14  	CheckRun *CheckRun
    15  }
    16  
    17  func NewDashboardEventControlHooks(r *CheckRun) *DashboardEventControlHooks {
    18  	return &DashboardEventControlHooks{
    19  		CheckRun: r,
    20  	}
    21  }
    22  
    23  func (c *DashboardEventControlHooks) OnStart(ctx context.Context, _ *controlstatus.ControlProgress) {
    24  	// nothing to do
    25  }
    26  
    27  func (c *DashboardEventControlHooks) OnControlStart(context.Context, controlstatus.ControlRunStatusProvider, *controlstatus.ControlProgress) {
    28  }
    29  
    30  func (c *DashboardEventControlHooks) OnControlComplete(ctx context.Context, controlRun controlstatus.ControlRunStatusProvider, progress *controlstatus.ControlProgress) {
    31  	event := &dashboardevents.ControlComplete{
    32  		Control:     controlRun,
    33  		Progress:    progress,
    34  		Name:        c.CheckRun.Name,
    35  		ExecutionId: c.CheckRun.executionTree.id,
    36  		Session:     c.CheckRun.SessionId,
    37  		Timestamp:   time.Now(),
    38  	}
    39  	c.CheckRun.executionTree.workspace.PublishDashboardEvent(ctx, event)
    40  }
    41  
    42  func (c *DashboardEventControlHooks) OnControlError(ctx context.Context, controlRun controlstatus.ControlRunStatusProvider, progress *controlstatus.ControlProgress) {
    43  	var event = &dashboardevents.ControlError{
    44  		Control:     controlRun,
    45  		Progress:    progress,
    46  		Name:        c.CheckRun.Name,
    47  		ExecutionId: c.CheckRun.executionTree.id,
    48  		Session:     c.CheckRun.SessionId,
    49  		Timestamp:   time.Now(),
    50  	}
    51  	c.CheckRun.executionTree.workspace.PublishDashboardEvent(ctx, event)
    52  }
    53  
    54  func (c *DashboardEventControlHooks) OnComplete(ctx context.Context, _ *controlstatus.ControlProgress) {
    55  	// nothing to do - LeafNodeDone will be sent anyway
    56  }