#26 Log info when CR, Secret or ConfigMap has changed
This commit is contained in:
parent
9f93b904d4
commit
94979d15d1
|
|
@ -22,3 +22,5 @@ var (
|
||||||
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
|
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
|
||||||
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
|
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (in *Jenkins) GetObjectKind() schema.ObjectKind { return in }
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,22 @@
|
||||||
package jenkins
|
package jenkins
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
|
||||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
|
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
|
||||||
|
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/event"
|
"sigs.k8s.io/controller-runtime/pkg/event"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/handler"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||||
)
|
)
|
||||||
|
|
||||||
// enqueueRequestForJenkins enqueues a Request for secrets and configmaps created by jenkins-operator.
|
// enqueueRequestForJenkins enqueues a Request for Secrets and ConfigMaps created by jenkins-operator.
|
||||||
type enqueueRequestForJenkins struct{}
|
type enqueueRequestForJenkins struct{}
|
||||||
|
|
||||||
func (e *enqueueRequestForJenkins) Create(evt event.CreateEvent, q workqueue.RateLimitingInterface) {
|
func (e *enqueueRequestForJenkins) Create(evt event.CreateEvent, q workqueue.RateLimitingInterface) {
|
||||||
|
|
@ -20,11 +26,28 @@ func (e *enqueueRequestForJenkins) Create(evt event.CreateEvent, q workqueue.Rat
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *enqueueRequestForJenkins) Update(evt event.UpdateEvent, q workqueue.RateLimitingInterface) {
|
func (e *enqueueRequestForJenkins) Update(evt event.UpdateEvent, q workqueue.RateLimitingInterface) {
|
||||||
if req := e.getOwnerReconcileRequests(evt.MetaOld); req != nil {
|
req1 := e.getOwnerReconcileRequests(evt.MetaOld)
|
||||||
q.Add(*req)
|
req2 := e.getOwnerReconcileRequests(evt.MetaNew)
|
||||||
|
|
||||||
|
if req1 != nil || req2 != nil {
|
||||||
|
jenkinsName := "unknown"
|
||||||
|
if req1 != nil {
|
||||||
|
jenkinsName = req1.Name
|
||||||
}
|
}
|
||||||
if req := e.getOwnerReconcileRequests(evt.MetaNew); req != nil {
|
if req2 != nil {
|
||||||
q.Add(*req)
|
jenkinsName = req2.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Log.WithValues("cr", jenkinsName).Info(
|
||||||
|
fmt.Sprintf("%T/%s has been updated", evt.ObjectNew, evt.MetaNew.GetName()))
|
||||||
|
}
|
||||||
|
|
||||||
|
if req1 != nil {
|
||||||
|
q.Add(*req1)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if req2 != nil {
|
||||||
|
q.Add(*req2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -52,3 +75,27 @@ func (e *enqueueRequestForJenkins) getOwnerReconcileRequests(object metav1.Objec
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type jenkinsDecorator struct {
|
||||||
|
handler handler.EventHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *jenkinsDecorator) Create(evt event.CreateEvent, q workqueue.RateLimitingInterface) {
|
||||||
|
e.handler.Create(evt, q)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *jenkinsDecorator) Update(evt event.UpdateEvent, q workqueue.RateLimitingInterface) {
|
||||||
|
if !reflect.DeepEqual(evt.ObjectOld.(*v1alpha1.Jenkins).Spec, evt.ObjectNew.(*v1alpha1.Jenkins).Spec) {
|
||||||
|
log.Log.WithValues("cr", evt.MetaNew.GetName()).Info(
|
||||||
|
fmt.Sprintf("%T/%s has been updated", evt.ObjectNew, evt.MetaNew.GetName()))
|
||||||
|
}
|
||||||
|
e.handler.Update(evt, q)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *jenkinsDecorator) Delete(evt event.DeleteEvent, q workqueue.RateLimitingInterface) {
|
||||||
|
e.handler.Delete(evt, q)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *jenkinsDecorator) Generic(evt event.GenericEvent, q workqueue.RateLimitingInterface) {
|
||||||
|
e.handler.Generic(evt, q)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,8 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Watch for changes to primary resource Jenkins
|
// Watch for changes to primary resource Jenkins
|
||||||
err = c.Watch(&source.Kind{Type: &v1alpha1.Jenkins{}}, &handler.EnqueueRequestForObject{})
|
decorator := jenkinsDecorator{handler: &handler.EnqueueRequestForObject{}}
|
||||||
|
err = c.Watch(&source.Kind{Type: &v1alpha1.Jenkins{}}, &decorator)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.WithStack(err)
|
return errors.WithStack(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue