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