Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,17 @@ import (
"fmt"
"time"

clusterv1beta1 "go.goms.io/fleet/apis/cluster/v1beta1"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this not be with the fleet packages down below?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, didn't pay attention to the import group, will fix it in a follow up PR

apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/rand"
"k8s.io/klog/v2"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/client"

clusterv1beta1 "go.goms.io/fleet/apis/cluster/v1beta1"
"sigs.k8s.io/controller-runtime/pkg/predicate"

fleetnetv1alpha1 "go.goms.io/fleet-networking/api/v1alpha1"
fleetnetv1beta1 "go.goms.io/fleet-networking/api/v1beta1"
Expand Down Expand Up @@ -53,26 +54,26 @@ type Reconciler struct {
func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
imcKRef := klog.KRef(req.Namespace, req.Name)
startTime := time.Now()
klog.V(2).InfoS("Reconciliation starts", "internalMemberCluster", imcKRef)
klog.V(2).InfoS("Reconciliation starts", "internalMemberCluster", imcKRef, "agentType", r.AgentType)
defer func() {
latency := time.Since(startTime).Milliseconds()
klog.V(2).InfoS("Reconciliation ends", "internalMemberCluster", imcKRef, "latency", latency)
klog.V(2).InfoS("Reconciliation ends", "internalMemberCluster", imcKRef, "latency", latency, "agentType", r.AgentType)
}()

var imc clusterv1beta1.InternalMemberCluster
if err := r.HubClient.Get(ctx, req.NamespacedName, &imc); err != nil {
if apierrors.IsNotFound(err) {
klog.V(4).InfoS("internal member cluster object is not found", "internalMemberCluster", imcKRef)
klog.V(4).InfoS("internal member cluster object is not found", "internalMemberCluster", imcKRef, "agentType", r.AgentType)
return ctrl.Result{}, nil
}
klog.ErrorS(err, "Failed to get internal member cluster object", "internalMemberCluster", imcKRef)
klog.ErrorS(err, "Failed to get internal member cluster object", "internalMemberCluster", imcKRef, "agentType", r.AgentType)
return ctrl.Result{}, err
}

switch imc.Spec.State {
case clusterv1beta1.ClusterStateLeave:
// The member cluster is leaving the fleet.
klog.V(2).InfoS("member cluster has left the fleet; performing cleanup", "internalMemberCluster", imcKRef)
klog.V(2).InfoS("member cluster has left the fleet; performing cleanup", "internalMemberCluster", imcKRef, "agentType", r.AgentType)

// Clean up fleet networking related resources.
if r.AgentType == clusterv1beta1.MultiClusterServiceAgent && r.EnabledNetworkingFeatures {
Expand Down Expand Up @@ -100,7 +101,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
requeueAfter := time.Millisecond * (time.Duration(hbInterval) + time.Duration(rand.Int63nRange(0, jitterRange)-jitterRange/2))
return ctrl.Result{RequeueAfter: requeueAfter}, nil
default:
klog.ErrorS(fmt.Errorf("cluster is of an invalid state"), "internalMemberCluster", imcKRef, "clusterState", imc.Spec.State)
klog.ErrorS(fmt.Errorf("cluster is of an invalid state"), "internalMemberCluster", imcKRef, "clusterState", imc.Spec.State, "agentType", r.AgentType)
}

return ctrl.Result{}, nil
Expand Down Expand Up @@ -137,12 +138,7 @@ func (r *Reconciler) updateAgentStatus(ctx context.Context, imc *clusterv1beta1.
}

if err := r.HubClient.Status().Update(ctx, imc); err != nil {
if apierrors.IsConflict(err) {
klog.V(2).InfoS("Failed to update internal member cluster status due to conflicts", "internalMemberCluster", klog.KObj(imc))
return nil
}

klog.ErrorS(err, "Failed to update internal member cluster status", "internalMemberCluster", klog.KObj(imc))
klog.ErrorS(err, "Failed to update internal member cluster status", "internalMemberCluster", imcKObj, "agentType", r.AgentType)
return err
}
return nil
Expand Down Expand Up @@ -228,6 +224,6 @@ func (r *Reconciler) cleanupServiceExportRelatedResources(ctx context.Context) e
// SetupWithManager sets up the controller with the Manager.
func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).
For(&clusterv1beta1.InternalMemberCluster{}).
For(&clusterv1beta1.InternalMemberCluster{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
Complete(r)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package v1beta1

import (
"context"
"flag"
"go/build"
"log"
"os"
Expand All @@ -23,7 +24,6 @@ import (
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/envtest"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"

clusterv1beta1 "go.goms.io/fleet/apis/cluster/v1beta1"
Expand Down Expand Up @@ -68,8 +68,14 @@ func TestAPIs(t *testing.T) {
}

var _ = BeforeSuite(func() {
klog.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true)))

By("Setup klog")
var err error
fs := flag.NewFlagSet("klog", flag.ContinueOnError)
klog.InitFlags(fs)
Expect(fs.Parse([]string{"--v", "5", "-add_dir_header", "true"})).Should(Succeed())
klog.InitFlags(flag.CommandLine)
flag.Parse()
ctx, cancel = context.WithCancel(context.TODO())

By("bootstrap the test environment")
Expand Down
Loading