@@ -18,7 +18,6 @@ package controller
18
18
19
19
import (
20
20
"fmt"
21
- "k8s.io/klog"
22
21
"time"
23
22
24
23
"github.com/pkg/errors"
@@ -41,13 +40,15 @@ import (
41
40
"k8s.io/client-go/tools/cache"
42
41
"k8s.io/client-go/tools/record"
43
42
"k8s.io/client-go/util/workqueue"
43
+ "k8s.io/klog"
44
44
45
45
rbacsyncv1alpha "github.com/cruise-automation/rbacsync/pkg/apis/rbacsync/v1alpha"
46
46
clientset "github.com/cruise-automation/rbacsync/pkg/generated/clientset/versioned"
47
47
rbacsyncscheme "github.com/cruise-automation/rbacsync/pkg/generated/clientset/versioned/scheme"
48
48
informers "github.com/cruise-automation/rbacsync/pkg/generated/informers/externalversions/rbacsync/v1alpha"
49
49
listers "github.com/cruise-automation/rbacsync/pkg/generated/listers/rbacsync/v1alpha"
50
50
"github.com/cruise-automation/rbacsync/pkg/groups"
51
+ "github.com/cruise-automation/rbacsync/pkg/metrics"
51
52
)
52
53
53
54
const (
@@ -58,6 +59,8 @@ const (
58
59
EventReasonConfigEnqueued = "ConfigEnqueued"
59
60
EventReasonBindingConfigured = "BindingConfigured"
60
61
EventReasonBindingDeleted = "BindingDeleted"
62
+ EventReasonBindingDuplicated = "BindingDuplicated"
63
+ EventReasonBindingWarning = "BindingWarning"
61
64
EventReasonBindingError = "BindingError"
62
65
EventReasonUnknownGroup = "UnknownGroup"
63
66
)
@@ -278,8 +281,10 @@ func (c *Controller) enqueue(obj interface{}) {
278
281
switch obj .(type ) {
279
282
case * rbacsyncv1alpha.RBACSyncConfig :
280
283
c .queue .AddRateLimited (key )
284
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindRBACSyncConfig , EventReasonConfigEnqueued ).Inc ()
281
285
case * rbacsyncv1alpha.ClusterRBACSyncConfig :
282
286
c .clusterqueue .AddRateLimited (key )
287
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindClusterRBACSyncConfig , EventReasonConfigEnqueued ).Inc ()
283
288
default :
284
289
klog .Warningf ("ignoring object of type %T: %#v" , obj , obj )
285
290
return // skip event emit below
@@ -344,6 +349,7 @@ func (c *Controller) handleConfig(config *rbacsyncv1alpha.RBACSyncConfig) error
344
349
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
345
350
EventReasonBindingError , "RoleRef kind %q invalid for RBACSyncConfig on group %q, use only Role or ClusterRole" ,
346
351
binding .RoleRef .Kind , binding .Group )
352
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindRBACSyncConfig , EventReasonBindingError ).Inc ()
347
353
continue
348
354
}
349
355
@@ -354,9 +360,11 @@ func (c *Controller) handleConfig(config *rbacsyncv1alpha.RBACSyncConfig) error
354
360
if groups .IsNotFound (err ) {
355
361
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
356
362
EventReasonUnknownGroup , "group %v not found" , binding .Group )
363
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindRBACSyncConfig , EventReasonUnknownGroup ).Inc ()
357
364
} else if groups .IsUnknownMemberships (err ) {
358
365
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
359
366
EventReasonBindingError , "group %v lookup failed: %v" , binding .Group , err )
367
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindRBACSyncConfig , EventReasonBindingError ).Inc ()
360
368
// An error occurred looking up the groups, it should be marked as active
361
369
// so the rolebindings are not deleted in the cleanup.
362
370
active [name ] = struct {}{}
@@ -367,8 +375,9 @@ func (c *Controller) handleConfig(config *rbacsyncv1alpha.RBACSyncConfig) error
367
375
368
376
if len (members ) == 0 {
369
377
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
370
- EventReasonBindingError , "%v/%v has no members for group %v" ,
378
+ EventReasonBindingWarning , "%v/%v has no members for group %v" ,
371
379
config .Namespace , config .Name , binding .Group )
380
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindRBACSyncConfig , EventReasonBindingWarning ).Inc ()
372
381
continue
373
382
}
374
383
@@ -378,7 +387,8 @@ func (c *Controller) handleConfig(config *rbacsyncv1alpha.RBACSyncConfig) error
378
387
// result will be the same. Accordingly, we log the bad
379
388
// configuration and move on.
380
389
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
381
- EventReasonBindingError , "duplicate binding %v ignored" , name )
390
+ EventReasonBindingDuplicated , "duplicate binding %v ignored" , name )
391
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindRoleBinding , EventReasonBindingDuplicated ).Inc ()
382
392
continue
383
393
}
384
394
@@ -403,6 +413,7 @@ func (c *Controller) handleConfig(config *rbacsyncv1alpha.RBACSyncConfig) error
403
413
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
404
414
EventReasonBindingError , "unable to update or create RoleBinding %v/%v: %v" ,
405
415
rb .Namespace , rb .Name , err )
416
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindRoleBinding , EventReasonBindingError ).Inc ()
406
417
continue
407
418
}
408
419
@@ -416,7 +427,7 @@ func (c *Controller) handleConfig(config *rbacsyncv1alpha.RBACSyncConfig) error
416
427
c .recorder .Eventf (config , corev1 .EventTypeNormal ,
417
428
EventReasonBindingConfigured ,
418
429
"RoleBinding %v/%v configured" , created .Namespace , created .Name )
419
-
430
+ metrics . RBACSyncBindingStatus . WithLabelValues ( metrics . LabelKindRoleBinding , EventReasonBindingConfigured ). Inc ()
420
431
}
421
432
422
433
selector , err := buildChildSelector (config .Name )
@@ -451,6 +462,7 @@ func (c *Controller) handleConfig(config *rbacsyncv1alpha.RBACSyncConfig) error
451
462
EventReasonBindingError ,
452
463
"RoleBinding %v/%v could not be deleted: %v" ,
453
464
rb .Namespace , rb .Name , err )
465
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindRoleBinding , EventReasonBindingError ).Inc ()
454
466
continue
455
467
}
456
468
@@ -459,6 +471,7 @@ func (c *Controller) handleConfig(config *rbacsyncv1alpha.RBACSyncConfig) error
459
471
460
472
c .recorder .Eventf (config , corev1 .EventTypeNormal ,
461
473
EventReasonBindingDeleted , "RoleBinding %v/%v deleted" , rb .Namespace , rb .Name )
474
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindRoleBinding , EventReasonBindingDeleted ).Inc ()
462
475
}
463
476
464
477
return nil
@@ -507,6 +520,7 @@ func (c *Controller) handleClusterConfig(config *rbacsyncv1alpha.ClusterRBACSync
507
520
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
508
521
EventReasonBindingError , "RoleRef kind %q invalid for ClusterRBACSyncConfig on group %q, use only ClusterRole" ,
509
522
binding .RoleRef .Kind , binding .Group )
523
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindClusterRBACSyncConfig , EventReasonBindingError ).Inc ()
510
524
continue
511
525
}
512
526
name := config .Name + "-" + binding .Group + "-" + binding .RoleRef .Name
@@ -516,9 +530,11 @@ func (c *Controller) handleClusterConfig(config *rbacsyncv1alpha.ClusterRBACSync
516
530
if groups .IsNotFound (err ) {
517
531
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
518
532
EventReasonUnknownGroup , "group %v not found" , binding .Group )
533
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindClusterRBACSyncConfig , EventReasonUnknownGroup ).Inc ()
519
534
} else if groups .IsUnknownMemberships (err ) {
520
535
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
521
536
EventReasonBindingError , "group %v lookup failed: %v" , binding .Group , err )
537
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindClusterRBACSyncConfig , EventReasonBindingError ).Inc ()
522
538
// In the case of unknown memberships from the grouper, we want to keep what already exists
523
539
// so we mark the binding as active.
524
540
active [name ] = struct {}{}
@@ -529,8 +545,9 @@ func (c *Controller) handleClusterConfig(config *rbacsyncv1alpha.ClusterRBACSync
529
545
530
546
if len (members ) == 0 {
531
547
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
532
- EventReasonBindingError , "%v has no members for group %v" ,
548
+ EventReasonBindingWarning , "%v has no members for group %v" ,
533
549
config .Name , binding .Group )
550
+ metrics .RBACSyncConfigStatus .WithLabelValues (metrics .LabelKindClusterRBACSyncConfig , EventReasonBindingWarning ).Inc ()
534
551
continue
535
552
}
536
553
@@ -540,7 +557,8 @@ func (c *Controller) handleClusterConfig(config *rbacsyncv1alpha.ClusterRBACSync
540
557
// result will be the same. Accordingly, we log the bad
541
558
// configuration and move on.
542
559
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
543
- EventReasonBindingError , "duplicate binding %v ignored" , name )
560
+ EventReasonBindingDuplicated , "duplicate binding %v ignored" , name )
561
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindClusterRoleBinding , EventReasonBindingDuplicated ).Inc ()
544
562
continue
545
563
}
546
564
@@ -564,6 +582,7 @@ func (c *Controller) handleClusterConfig(config *rbacsyncv1alpha.ClusterRBACSync
564
582
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
565
583
EventReasonBindingError ,
566
584
"unable to update or create ClusterRoleBinding %v: %v" , crb .Name , err )
585
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindClusterRoleBinding , EventReasonBindingError ).Inc ()
567
586
continue
568
587
}
569
588
@@ -577,6 +596,7 @@ func (c *Controller) handleClusterConfig(config *rbacsyncv1alpha.ClusterRBACSync
577
596
c .recorder .Eventf (config , corev1 .EventTypeNormal ,
578
597
EventReasonBindingConfigured ,
579
598
"ClusterRoleBinding %v configured" , created .Name )
599
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindClusterRoleBinding , EventReasonBindingConfigured ).Inc ()
580
600
}
581
601
582
602
selector , err := buildChildSelector (config .Name )
@@ -609,6 +629,7 @@ func (c *Controller) handleClusterConfig(config *rbacsyncv1alpha.ClusterRBACSync
609
629
c .recorder .Eventf (config , corev1 .EventTypeWarning ,
610
630
EventReasonBindingError ,
611
631
"ClusterRoleBinding %v could not be deleted: %v" , crb .Name , err )
632
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindClusterRoleBinding , EventReasonBindingError ).Inc ()
612
633
continue
613
634
}
614
635
@@ -617,6 +638,7 @@ func (c *Controller) handleClusterConfig(config *rbacsyncv1alpha.ClusterRBACSync
617
638
618
639
c .recorder .Eventf (config , corev1 .EventTypeNormal ,
619
640
EventReasonBindingDeleted , "ClusterRoleBinding %v deleted" , crb .Name )
641
+ metrics .RBACSyncBindingStatus .WithLabelValues (metrics .LabelKindClusterRoleBinding , EventReasonBindingDeleted ).Inc ()
620
642
}
621
643
622
644
return nil
0 commit comments