77 "fmt"
88 "io"
99 "slices"
10+ "time"
1011
1112 "github.com/kyverno/go-jmespath"
1213 "k8s.io/klog/v2"
@@ -79,9 +80,7 @@ func filterList(ctx context.Context, client v1.PermissionsServiceClient, filter
7980 defer close (authzData .removedNNC )
8081
8182 req := & v1.LookupResourcesRequest {
82- Consistency : & v1.Consistency {
83- Requirement : & v1.Consistency_MinimizeLatency {MinimizeLatency : true },
84- },
83+ Consistency : input .Consistency ,
8584 ResourceObjectType : filter .Rel .ResourceType ,
8685 Permission : filter .Rel .ResourceRelation ,
8786 Subject : & v1.SubjectReference {
@@ -173,6 +172,10 @@ func filterWatch(ctx context.Context, client v1.PermissionsServiceClient, watchC
173172 defer close (authzData .allowedNNC )
174173 defer close (authzData .removedNNC )
175174
175+ logger := klog .LoggerWithValues (klog .FromContext (ctx ), "request" , "watch" , "filter" , filter ).WithCallDepth (1 )
176+
177+ logger .V (3 ).Info ("started watch" )
178+
176179 watchResource , err := watchClient .Watch (ctx , & v1.WatchRequest {
177180 OptionalObjectTypes : []string {filter .Rel .ResourceType },
178181 })
@@ -187,14 +190,18 @@ func filterWatch(ctx context.Context, client v1.PermissionsServiceClient, watchC
187190 }
188191
189192 if err != nil {
190- fmt . Println ( err )
193+ logger . V ( 2 ). Error ( err , "watch error" )
191194 return
192195 }
193196
197+ time .Sleep (input .WatchDelay )
198+
194199 for _ , u := range resp .Updates {
195200 cr , err := client .CheckPermission (ctx , & v1.CheckPermissionRequest {
196201 Consistency : & v1.Consistency {
197- Requirement : & v1.Consistency_FullyConsistent {FullyConsistent : true },
202+ Requirement : & v1.Consistency_AtLeastAsFresh {
203+ AtLeastAsFresh : resp .ChangesThrough ,
204+ },
198205 },
199206 Resource : & v1.ObjectReference {
200207 ObjectType : filter .Rel .ResourceType ,
@@ -211,46 +218,45 @@ func filterWatch(ctx context.Context, client v1.PermissionsServiceClient, watchC
211218 },
212219 })
213220 if err != nil {
214- fmt . Println ( err )
221+ logger . V ( 2 ). Error ( err , "check permission error" )
215222 return
216223 }
217224
218225 byteIn , err := json .Marshal (wrapper {ResourceID : u .Relationship .Resource .ObjectId , SubjectID : u .Relationship .Subject .Object .ObjectId })
219226 if err != nil {
220- fmt . Println ( err )
227+ logger . V ( 2 ). Error ( err , "marshal error" )
221228 return
222229 }
223230 var data any
224231 if err := json .Unmarshal (byteIn , & data ); err != nil {
225- fmt . Println ( err )
232+ logger . V ( 2 ). Error ( err , "unmarshal error" )
226233 return
227234 }
228- fmt . Println ( data )
229- fmt . Println ( "RESPONSE " , string ( byteIn ) )
235+
236+ logger . V ( 5 ). Info ( "response " , "data" , data )
230237
231238 name , err := filter .Name .Search (data )
232239 if err != nil {
233- fmt . Println ( err )
240+ klog . V ( 2 ). ErrorS ( err , "error extracting name" )
234241 return
235242 }
236- fmt .Println ("GOT NAME" , name )
237243 if name == nil || len (name .(string )) == 0 {
238244 return
239245 }
240246 namespace , err := filter .Namespace .Search (data )
241247 if err != nil {
242- fmt . Println ( err )
248+ logger . V ( 2 ). Error ( err , "namespace extract error" )
243249 return
244250 }
245- fmt .Println ("GOT NAMESPACE" , namespace )
246251 if namespace == nil {
247252 namespace = ""
248253 }
249254 nn := types.NamespacedName {Name : name .(string ), Namespace : namespace .(string )}
255+ logger .V (4 ).Info ("response object" , "namespacedName" , nn .String ())
250256
251257 // TODO: this should really be over a single channel to prevent
252258 // 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 )
254260 if cr .Permissionship == v1 .CheckPermissionResponse_PERMISSIONSHIP_HAS_PERMISSION {
255261 authzData .allowedNNC <- nn
256262 } else {
0 commit comments