...
1
2
3
4 package taskrunner
5
6 import (
7 "k8s.io/klog/v2"
8 "sigs.k8s.io/cli-utils/pkg/apply/cache"
9 "sigs.k8s.io/cli-utils/pkg/apply/event"
10 "sigs.k8s.io/cli-utils/pkg/inventory"
11 "sigs.k8s.io/cli-utils/pkg/object"
12 "sigs.k8s.io/cli-utils/pkg/object/graph"
13 )
14
15
16 func NewTaskContext(eventChannel chan event.Event, resourceCache cache.ResourceCache) *TaskContext {
17 return &TaskContext{
18 taskChannel: make(chan TaskResult),
19 eventChannel: eventChannel,
20 resourceCache: resourceCache,
21 inventoryManager: inventory.NewManager(),
22 abandonedObjects: make(map[object.ObjMetadata]struct{}),
23 invalidObjects: make(map[object.ObjMetadata]struct{}),
24 graph: graph.New(),
25 }
26 }
27
28
29
30 type TaskContext struct {
31 taskChannel chan TaskResult
32 eventChannel chan event.Event
33 resourceCache cache.ResourceCache
34 inventoryManager *inventory.Manager
35 abandonedObjects map[object.ObjMetadata]struct{}
36 invalidObjects map[object.ObjMetadata]struct{}
37 graph *graph.Graph
38 }
39
40 func (tc *TaskContext) TaskChannel() chan TaskResult {
41 return tc.taskChannel
42 }
43
44 func (tc *TaskContext) EventChannel() chan event.Event {
45 return tc.eventChannel
46 }
47
48 func (tc *TaskContext) ResourceCache() cache.ResourceCache {
49 return tc.resourceCache
50 }
51
52 func (tc *TaskContext) InventoryManager() *inventory.Manager {
53 return tc.inventoryManager
54 }
55
56 func (tc *TaskContext) Graph() *graph.Graph {
57 return tc.graph
58 }
59
60 func (tc *TaskContext) SetGraph(g *graph.Graph) {
61 tc.graph = g
62 }
63
64
65 func (tc *TaskContext) SendEvent(e event.Event) {
66 klog.V(3).Infof("Sending event: %v", e)
67 tc.eventChannel <- e
68 }
69
70
71 func (tc *TaskContext) IsAbandonedObject(id object.ObjMetadata) bool {
72 _, found := tc.abandonedObjects[id]
73 return found
74 }
75
76
77 func (tc *TaskContext) AddAbandonedObject(id object.ObjMetadata) {
78 tc.abandonedObjects[id] = struct{}{}
79 }
80
81
82 func (tc *TaskContext) AbandonedObjects() object.ObjMetadataSet {
83 return object.ObjMetadataSetFromMap(tc.abandonedObjects)
84 }
85
86
87 func (tc *TaskContext) IsInvalidObject(id object.ObjMetadata) bool {
88 _, found := tc.invalidObjects[id]
89 return found
90 }
91
92
93 func (tc *TaskContext) AddInvalidObject(id object.ObjMetadata) {
94 tc.invalidObjects[id] = struct{}{}
95 }
96
97
98 func (tc *TaskContext) InvalidObjects() object.ObjMetadataSet {
99 return object.ObjMetadataSetFromMap(tc.invalidObjects)
100 }
101
View as plain text