#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 = &scheme.Builder{GroupVersion: SchemeGroupVersion} | ||||
| ) | ||||
| 
 | ||||
| func (in *Jenkins) GetObjectKind() schema.ObjectKind { return in } | ||||
|  |  | |||
|  | @ -1,16 +1,22 @@ | |||
| package jenkins | ||||
| 
 | ||||
| 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/log" | ||||
| 
 | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	"k8s.io/apimachinery/pkg/types" | ||||
| 	"k8s.io/client-go/util/workqueue" | ||||
| 	"sigs.k8s.io/controller-runtime/pkg/event" | ||||
| 	"sigs.k8s.io/controller-runtime/pkg/handler" | ||||
| 	"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{} | ||||
| 
 | ||||
| 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) { | ||||
| 	if req := e.getOwnerReconcileRequests(evt.MetaOld); req != nil { | ||||
| 		q.Add(*req) | ||||
| 	req1 := e.getOwnerReconcileRequests(evt.MetaOld) | ||||
| 	req2 := e.getOwnerReconcileRequests(evt.MetaNew) | ||||
| 
 | ||||
| 	if req1 != nil || req2 != nil { | ||||
| 		jenkinsName := "unknown" | ||||
| 		if req1 != nil { | ||||
| 			jenkinsName = req1.Name | ||||
| 		} | ||||
| 		if req2 != nil { | ||||
| 			jenkinsName = req2.Name | ||||
| 		} | ||||
| 
 | ||||
| 		log.Log.WithValues("cr", jenkinsName).Info( | ||||
| 			fmt.Sprintf("%T/%s has been updated", evt.ObjectNew, evt.MetaNew.GetName())) | ||||
| 	} | ||||
| 	if req := e.getOwnerReconcileRequests(evt.MetaNew); req != nil { | ||||
| 		q.Add(*req) | ||||
| 
 | ||||
| 	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 | ||||
| } | ||||
| 
 | ||||
| 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
 | ||||
| 	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 { | ||||
| 		return errors.WithStack(err) | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue