get membercluster resource from cache

This commit is contained in:
lihanbo 2020-12-26 10:57:47 +08:00 committed by Hongcai Ren
parent 1c760c6b1f
commit e568db711e
3 changed files with 19 additions and 10 deletions

View File

@ -134,7 +134,6 @@ func setupControllers(mgr controllerruntime.Manager) {
executionController := &execution.Controller{
Client: mgr.GetClient(),
KubeClientSet: kubeClientSet,
KarmadaClient: karmadaClient,
EventRecorder: mgr.GetEventRecorderFor(execution.ControllerName),
RESTMapper: mgr.GetRESTMapper(),
}

View File

@ -18,7 +18,6 @@ import (
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
propagationstrategy "github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
"github.com/karmada-io/karmada/pkg/util"
"github.com/karmada-io/karmada/pkg/util/names"
"github.com/karmada-io/karmada/pkg/util/restmapper"
@ -32,9 +31,8 @@ const (
// Controller is to sync PropagationWork.
type Controller struct {
client.Client // used to operate PropagationWork resources.
KubeClientSet kubernetes.Interface // used to get kubernetes resources.
KarmadaClient karmadaclientset.Interface // used to get MemberCluster resources.
client.Client // used to operate PropagationWork resources.
KubeClientSet kubernetes.Interface // used to get kubernetes resources.
EventRecorder record.EventRecorder
RESTMapper meta.RESTMapper
}
@ -115,8 +113,7 @@ func (c *Controller) tryDeleteWorkload(propagationWork *propagationstrategy.Prop
return err
}
// TODO(RainbowMango): retrieve member cluster from the local cache instead of a real request to API server.
memberCluster, err := c.KarmadaClient.MemberclusterV1alpha1().MemberClusters().Get(context.TODO(), memberClusterName, v1.GetOptions{})
memberCluster, err := util.GetMemberCluster(c.Client, memberClusterName)
if err != nil {
klog.Errorf("Failed to get the given member cluster %s", memberClusterName)
return err
@ -158,8 +155,7 @@ func (c *Controller) dispatchPropagationWork(propagationWork *propagationstrateg
return err
}
// TODO(RainbowMango): retrieve member cluster from the local cache instead of a real request to API server.
memberCluster, err := c.KarmadaClient.MemberclusterV1alpha1().MemberClusters().Get(context.TODO(), memberClusterName, v1.GetOptions{})
memberCluster, err := util.GetMemberCluster(c.Client, memberClusterName)
if err != nil {
klog.Errorf("Failed to the get given member cluster %s", memberClusterName)
return err

View File

@ -1,8 +1,13 @@
package util
import (
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
"context"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
)
// IsMemberClusterReady tells whether the cluster status in 'Ready' condition.
@ -17,3 +22,12 @@ func IsMemberClusterReady(clusterStatus *v1alpha1.MemberClusterStatus) bool {
}
return false
}
// GetMemberCluster returns the given MemberCluster resource
func GetMemberCluster(hostClient client.Client, clusterName string) (*v1alpha1.MemberCluster, error) {
memberCluster := &v1alpha1.MemberCluster{}
if err := hostClient.Get(context.TODO(), types.NamespacedName{Name: clusterName}, memberCluster); err != nil {
return nil, err
}
return memberCluster, nil
}