#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 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 | 	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