From a003578957620c1aaf2bf911bcd3d74619666d4a Mon Sep 17 00:00:00 2001 From: Heba Elayoty <31887807+helayoty@users.noreply.github.com> Date: Wed, 25 May 2022 15:56:13 -0700 Subject: [PATCH] feat: Add event recorder to all reconcilers (#26) --- cmd/memberagent/main.go | 8 +++---- .../hub_controller.go | 7 +++++-- .../membercluster/membercluster_controller.go | 5 ++++- .../member_controller.go | 10 +++++---- .../utils/config.go | 21 ------------------- .../membership/membership_controller.go | 12 ++++++----- pkg/utils/common.go | 21 +++++++++++++++++++ 7 files changed, 47 insertions(+), 37 deletions(-) delete mode 100644 pkg/controllers/memberinternalmembercluster/utils/config.go diff --git a/cmd/memberagent/main.go b/cmd/memberagent/main.go index ad12be9f7..b88b827e0 100644 --- a/cmd/memberagent/main.go +++ b/cmd/memberagent/main.go @@ -10,10 +10,6 @@ import ( "flag" "os" - fleetv1alpha1 "github.com/Azure/fleet/apis/v1alpha1" - "github.com/Azure/fleet/pkg/controllers/memberinternalmembercluster" - "github.com/Azure/fleet/pkg/controllers/membership" - "github.com/pkg/errors" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" @@ -23,6 +19,10 @@ import ( ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" "sigs.k8s.io/controller-runtime/pkg/healthz" + + fleetv1alpha1 "github.com/Azure/fleet/apis/v1alpha1" + "github.com/Azure/fleet/pkg/controllers/memberinternalmembercluster" + "github.com/Azure/fleet/pkg/controllers/membership" //+kubebuilder:scaffold:imports ) diff --git a/pkg/controllers/hubinternalmembercluster/hub_controller.go b/pkg/controllers/hubinternalmembercluster/hub_controller.go index 30df89018..b31d0b84d 100644 --- a/pkg/controllers/hubinternalmembercluster/hub_controller.go +++ b/pkg/controllers/hubinternalmembercluster/hub_controller.go @@ -8,16 +8,18 @@ package hubinternalmembercluster import ( "context" - fleetv1alpha1 "github.com/Azure/fleet/apis/v1alpha1" - + "k8s.io/client-go/tools/record" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/log" + + fleetv1alpha1 "github.com/Azure/fleet/apis/v1alpha1" ) // HubReconciler reconciles a InternalMemberCluster object in the hub cluster. type HubReconciler struct { HubClient client.Client + recorder record.EventRecorder } //+kubebuilder:rbac:groups=fleet.azure.com,resources=internalmemberclusters,verbs=get;list;watch;create;update;patch;delete @@ -34,6 +36,7 @@ func (r *HubReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R // SetupWithManager sets up the controller with the Manager. func (r *HubReconciler) SetupWithManager(mgr ctrl.Manager) error { + r.recorder = mgr.GetEventRecorderFor("internalMemberCluster_hub") return ctrl.NewControllerManagedBy(mgr). For(&fleetv1alpha1.InternalMemberCluster{}). Complete(r) diff --git a/pkg/controllers/membercluster/membercluster_controller.go b/pkg/controllers/membercluster/membercluster_controller.go index f6ddcd61e..13fa3c893 100644 --- a/pkg/controllers/membercluster/membercluster_controller.go +++ b/pkg/controllers/membercluster/membercluster_controller.go @@ -15,6 +15,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/tools/record" "k8s.io/klog/v2" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -26,7 +27,8 @@ import ( // Reconciler reconciles a MemberCluster object type Reconciler struct { client.Client - Scheme *runtime.Scheme + Scheme *runtime.Scheme + recorder record.EventRecorder } //+kubebuilder:rbac:groups=fleet.azure.com,resources=memberclusters,verbs=get;list;watch;create;update;patch;delete @@ -78,6 +80,7 @@ func (r *Reconciler) checkAndCreateNamespace(ctx context.Context, mcName string) // SetupWithManager sets up the controller with the Manager. func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { + r.recorder = mgr.GetEventRecorderFor("memberCluster") return ctrl.NewControllerManagedBy(mgr). For(&fleetv1alpha1.MemberCluster{}). Complete(r) diff --git a/pkg/controllers/memberinternalmembercluster/member_controller.go b/pkg/controllers/memberinternalmembercluster/member_controller.go index b3434f676..df96d9f3e 100644 --- a/pkg/controllers/memberinternalmembercluster/member_controller.go +++ b/pkg/controllers/memberinternalmembercluster/member_controller.go @@ -8,15 +8,15 @@ package memberinternalmembercluster import ( "context" - "go.goms.io/fleet/pkg/controllers/memberinternalmembercluster/utils" v1 "k8s.io/api/core/v1" - - fleetv1alpha1 "github.com/Azure/fleet/apis/v1alpha1" - "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/client-go/tools/record" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/log" + + fleetv1alpha1 "github.com/Azure/fleet/apis/v1alpha1" + "github.com/Azure/fleet/pkg/utils" ) // MemberReconciler reconciles a InternalMemberCluster object in the member cluster. @@ -24,6 +24,7 @@ type MemberReconciler struct { hubClient client.Client memberClient client.Client restMapper meta.RESTMapper + recorder record.EventRecorder } func NewMemberReconciler(hubClient client.Client, memberClient client.Client, @@ -51,6 +52,7 @@ func (r *MemberReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr // SetupWithManager sets up the controller with the Manager. func (r *MemberReconciler) SetupWithManager(mgr ctrl.Manager) error { + r.recorder = mgr.GetEventRecorderFor("InternalMemberCluster_member") return ctrl.NewControllerManagedBy(mgr). For(&fleetv1alpha1.InternalMemberCluster{}). Complete(r) diff --git a/pkg/controllers/memberinternalmembercluster/utils/config.go b/pkg/controllers/memberinternalmembercluster/utils/config.go deleted file mode 100644 index 6a6070bee..000000000 --- a/pkg/controllers/memberinternalmembercluster/utils/config.go +++ /dev/null @@ -1,21 +0,0 @@ -package utils - -import ( - "github.com/pkg/errors" - v1 "k8s.io/api/core/v1" - "k8s.io/client-go/rest" - "k8s.io/client-go/tools/clientcmd" -) - -func GetConfigWithSecret(secret v1.Secret) (rest.Config, error) { - kubeConfig, ok := secret.Data["kubeconfig"] - if !ok || len(kubeConfig) == 0 { - return rest.Config{}, errors.New("secret does not contain kubeconfig") - } - restConfig, err := clientcmd.RESTConfigFromKubeConfig(kubeConfig) - if err != nil { - return rest.Config{}, err - } - - return *(restConfig), nil -} diff --git a/pkg/controllers/membership/membership_controller.go b/pkg/controllers/membership/membership_controller.go index 671c1c725..6193a6b70 100644 --- a/pkg/controllers/membership/membership_controller.go +++ b/pkg/controllers/membership/membership_controller.go @@ -8,18 +8,20 @@ package membership import ( "context" - fleetv1alpha1 "github.com/Azure/fleet/apis/v1alpha1" - "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/tools/record" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/log" + + fleetv1alpha1 "github.com/Azure/fleet/apis/v1alpha1" ) // Reconciler reconciles a Membership object type Reconciler struct { client.Client - Scheme *runtime.Scheme + Scheme *runtime.Scheme + recorder record.EventRecorder } //+kubebuilder:rbac:groups=fleet.azure.com,resources=memberships,verbs=get;list;watch;create;update;patch;delete @@ -45,7 +47,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu // SetupWithManager sets up the controller with the Manager. func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error { + r.recorder = mgr.GetEventRecorderFor("membership") return ctrl.NewControllerManagedBy(mgr). - For(&fleetv1alpha1.Membership{}). - Complete(r) + For(&fleetv1alpha1.Membership{}).Complete(r) } diff --git a/pkg/utils/common.go b/pkg/utils/common.go index a43109d41..e21b1d659 100644 --- a/pkg/utils/common.go +++ b/pkg/utils/common.go @@ -1,5 +1,26 @@ package utils +import ( + "github.com/pkg/errors" + v1 "k8s.io/api/core/v1" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/clientcmd" +) + const ( NamespaceNameFormat = "fleet-%s" ) + +// GetConfigWithSecret gets the cluster config from kubernetes secret +func GetConfigWithSecret(secret v1.Secret) (rest.Config, error) { + kubeConfig, ok := secret.Data["kubeconfig"] + if !ok || len(kubeConfig) == 0 { + return rest.Config{}, errors.New("secret does not contain kubeconfig") + } + restConfig, err := clientcmd.RESTConfigFromKubeConfig(kubeConfig) + if err != nil { + return rest.Config{}, err + } + + return *(restConfig), nil +}