7
7
"fmt"
8
8
"io"
9
9
"slices"
10
+ "time"
10
11
11
12
"github.com/kyverno/go-jmespath"
12
13
"k8s.io/klog/v2"
@@ -79,9 +80,7 @@ func filterList(ctx context.Context, client v1.PermissionsServiceClient, filter
79
80
defer close (authzData .removedNNC )
80
81
81
82
req := & v1.LookupResourcesRequest {
82
- Consistency : & v1.Consistency {
83
- Requirement : & v1.Consistency_MinimizeLatency {MinimizeLatency : true },
84
- },
83
+ Consistency : input .Consistency ,
85
84
ResourceObjectType : filter .Rel .ResourceType ,
86
85
Permission : filter .Rel .ResourceRelation ,
87
86
Subject : & v1.SubjectReference {
@@ -173,6 +172,10 @@ func filterWatch(ctx context.Context, client v1.PermissionsServiceClient, watchC
173
172
defer close (authzData .allowedNNC )
174
173
defer close (authzData .removedNNC )
175
174
175
+ logger := klog .LoggerWithValues (klog .FromContext (ctx ), "request" , "watch" , "filter" , filter ).WithCallDepth (1 )
176
+
177
+ logger .V (3 ).Info ("started watch" )
178
+
176
179
watchResource , err := watchClient .Watch (ctx , & v1.WatchRequest {
177
180
OptionalObjectTypes : []string {filter .Rel .ResourceType },
178
181
})
@@ -187,14 +190,18 @@ func filterWatch(ctx context.Context, client v1.PermissionsServiceClient, watchC
187
190
}
188
191
189
192
if err != nil {
190
- fmt . Println ( err )
193
+ logger . V ( 2 ). Error ( err , "watch error" )
191
194
return
192
195
}
193
196
197
+ time .Sleep (input .WatchDelay )
198
+
194
199
for _ , u := range resp .Updates {
195
200
cr , err := client .CheckPermission (ctx , & v1.CheckPermissionRequest {
196
201
Consistency : & v1.Consistency {
197
- Requirement : & v1.Consistency_FullyConsistent {FullyConsistent : true },
202
+ Requirement : & v1.Consistency_AtLeastAsFresh {
203
+ AtLeastAsFresh : resp .ChangesThrough ,
204
+ },
198
205
},
199
206
Resource : & v1.ObjectReference {
200
207
ObjectType : filter .Rel .ResourceType ,
@@ -211,46 +218,45 @@ func filterWatch(ctx context.Context, client v1.PermissionsServiceClient, watchC
211
218
},
212
219
})
213
220
if err != nil {
214
- fmt . Println ( err )
221
+ logger . V ( 2 ). Error ( err , "check permission error" )
215
222
return
216
223
}
217
224
218
225
byteIn , err := json .Marshal (wrapper {ResourceID : u .Relationship .Resource .ObjectId , SubjectID : u .Relationship .Subject .Object .ObjectId })
219
226
if err != nil {
220
- fmt . Println ( err )
227
+ logger . V ( 2 ). Error ( err , "marshal error" )
221
228
return
222
229
}
223
230
var data any
224
231
if err := json .Unmarshal (byteIn , & data ); err != nil {
225
- fmt . Println ( err )
232
+ logger . V ( 2 ). Error ( err , "unmarshal error" )
226
233
return
227
234
}
228
- fmt . Println ( data )
229
- fmt . Println ( "RESPONSE " , string ( byteIn ) )
235
+
236
+ logger . V ( 5 ). Info ( "response " , "data" , data )
230
237
231
238
name , err := filter .Name .Search (data )
232
239
if err != nil {
233
- fmt . Println ( err )
240
+ klog . V ( 2 ). ErrorS ( err , "error extracting name" )
234
241
return
235
242
}
236
- fmt .Println ("GOT NAME" , name )
237
243
if name == nil || len (name .(string )) == 0 {
238
244
return
239
245
}
240
246
namespace , err := filter .Namespace .Search (data )
241
247
if err != nil {
242
- fmt . Println ( err )
248
+ logger . V ( 2 ). Error ( err , "namespace extract error" )
243
249
return
244
250
}
245
- fmt .Println ("GOT NAMESPACE" , namespace )
246
251
if namespace == nil {
247
252
namespace = ""
248
253
}
249
254
nn := types.NamespacedName {Name : name .(string ), Namespace : namespace .(string )}
255
+ logger .V (4 ).Info ("response object" , "namespacedName" , nn .String ())
250
256
251
257
// TODO: this should really be over a single channel to prevent
252
258
// races on add/remove
253
- fmt . Println ( u .Relationship .Resource .ObjectId , cr .Permissionship )
259
+ logger . V ( 4 ). Info ( "result" , "object" , u .Relationship .Resource .ObjectId , "permission" , cr .Permissionship )
254
260
if cr .Permissionship == v1 .CheckPermissionResponse_PERMISSIONSHIP_HAS_PERMISSION {
255
261
authzData .allowedNNC <- nn
256
262
} else {
0 commit comments