1
1
package router
2
2
3
3
import (
4
+ "encoding/json"
4
5
"strings"
5
6
"sync"
6
7
@@ -16,7 +17,7 @@ import (
16
17
17
18
type triggers struct {
18
19
lock sync.RWMutex
19
- matchers map [schema. GroupVersionKind ]map [enqueueTarget ]map [string ]objectMatcher
20
+ matchers map [groupVersionKind ]map [enqueueTarget ]map [string ]objectMatcher
20
21
trigger backend.Trigger
21
22
gvkLookup backend.Backend
22
23
scheme * runtime.Scheme
@@ -32,11 +33,15 @@ type enqueueTarget struct {
32
33
gvk schema.GroupVersionKind
33
34
}
34
35
36
+ func (et enqueueTarget ) MarshalText () ([]byte , error ) {
37
+ return []byte (et .gvk .String () + ": " + et .key ), nil
38
+ }
39
+
35
40
func (m * triggers ) invokeTriggers (req Request ) {
36
41
m .lock .RLock ()
37
42
defer m .lock .RUnlock ()
38
43
39
- for et , matchers := range m .matchers [req .GVK ] {
44
+ for et , matchers := range m .matchers [groupVersionKind { req .GVK } ] {
40
45
if et .gvk == req .GVK &&
41
46
et .key == req .Key {
42
47
continue
@@ -59,10 +64,10 @@ func (m *triggers) register(gvk schema.GroupVersionKind, key string, targetGVK s
59
64
key : key ,
60
65
gvk : gvk ,
61
66
}
62
- matchers , ok := m .matchers [targetGVK ]
67
+ matchers , ok := m .matchers [groupVersionKind { targetGVK } ]
63
68
if ! ok {
64
69
matchers = map [enqueueTarget ]map [string ]objectMatcher {}
65
- m .matchers [targetGVK ] = matchers
70
+ m .matchers [groupVersionKind { targetGVK } ] = matchers
66
71
}
67
72
68
73
matcherKey := mr .String ()
@@ -112,7 +117,7 @@ func (m *triggers) UnregisterAndTrigger(req Request) {
112
117
m .lock .Lock ()
113
118
defer m .lock .Unlock ()
114
119
115
- remainingMatchers := map [schema. GroupVersionKind ]map [enqueueTarget ]map [string ]objectMatcher {}
120
+ remainingMatchers := map [groupVersionKind ]map [enqueueTarget ]map [string ]objectMatcher {}
116
121
117
122
for targetGVK , matchers := range m .matchers {
118
123
for target , mts := range matchers {
@@ -121,7 +126,7 @@ func (m *triggers) UnregisterAndTrigger(req Request) {
121
126
continue
122
127
}
123
128
for _ , mt := range mts {
124
- if targetGVK != req .GVK || mt .Namespace != req .Namespace || mt .Name != req .Name {
129
+ if targetGVK . GroupVersionKind != req .GVK || mt .Namespace != req .Namespace || mt .Name != req .Name {
125
130
// If the matcher matches the deleted object exactly, then skip the matcher.
126
131
if remainingMatchers [targetGVK ] == nil {
127
132
remainingMatchers [targetGVK ] = make (map [enqueueTarget ]map [string ]objectMatcher )
@@ -131,7 +136,7 @@ func (m *triggers) UnregisterAndTrigger(req Request) {
131
136
}
132
137
remainingMatchers [targetGVK ][target ][mt .String ()] = mt
133
138
}
134
- if targetGVK == req .GVK && mt .Match (req .Namespace , req .Name , req .Object ) {
139
+ if targetGVK . GroupVersionKind == req .GVK && mt .Match (req .Namespace , req .Name , req .Object ) {
135
140
log .Debugf ("Triggering [%s] [%v] from [%s] [%v] on delete" , target .key , target .gvk , req .Key , req .GVK )
136
141
_ = m .trigger .Trigger (req .Ctx , target .gvk , target .key , 0 )
137
142
}
@@ -141,3 +146,22 @@ func (m *triggers) UnregisterAndTrigger(req Request) {
141
146
142
147
m .matchers = remainingMatchers
143
148
}
149
+
150
+ func (m * triggers ) Dump (indent bool ) ([]byte , error ) {
151
+ m .lock .RLock ()
152
+ defer m .lock .RUnlock ()
153
+
154
+ if ! indent {
155
+ return json .Marshal (m .matchers )
156
+ }
157
+
158
+ return json .MarshalIndent (m .matchers , "" , " " )
159
+ }
160
+
161
+ type groupVersionKind struct {
162
+ schema.GroupVersionKind
163
+ }
164
+
165
+ func (gvk groupVersionKind ) MarshalText () ([]byte , error ) {
166
+ return []byte (gvk .String ()), nil
167
+ }
0 commit comments