rename membercluster api to cluster
Signed-off-by: Kevin Wang <kevinwzf0126@gmail.com>
This commit is contained in:
parent
eb194e9cd5
commit
da394ab07a
|
@ -6,14 +6,14 @@ metadata:
|
|||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.4.1
|
||||
creationTimestamp: null
|
||||
name: memberclusters.membercluster.karmada.io
|
||||
name: memberclusters.cluster.karmada.io
|
||||
spec:
|
||||
group: membercluster.karmada.io
|
||||
group: cluster.karmada.io
|
||||
names:
|
||||
kind: MemberCluster
|
||||
listKind: MemberClusterList
|
||||
plural: memberclusters
|
||||
singular: membercluster
|
||||
singular: cluster
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: membercluster.karmada.io/v1alpha1
|
||||
apiVersion: cluster.karmada.io/v1alpha1
|
||||
kind: MemberCluster
|
||||
metadata:
|
||||
name: cluster-foo
|
||||
|
|
|
@ -89,7 +89,7 @@ func setupControllers(mgr controllerruntime.Manager, stopChan <-chan struct{}) {
|
|||
EventRecorder: mgr.GetEventRecorderFor(membercluster.ControllerName),
|
||||
}
|
||||
if err := MemberClusterController.SetupWithManager(mgr); err != nil {
|
||||
klog.Fatalf("Failed to setup membercluster controller: %v", err)
|
||||
klog.Fatalf("Failed to setup cluster controller: %v", err)
|
||||
}
|
||||
|
||||
MemberClusterStatusController := &status.MemberClusterStatusController{
|
||||
|
|
|
@ -9,7 +9,7 @@ CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code-
|
|||
|
||||
bash "${CODEGEN_PKG}"/generate-groups.sh "deepcopy,client,informer,lister" \
|
||||
github.com/karmada-io/karmada/pkg/generated github.com/karmada-io/karmada/pkg/apis \
|
||||
"propagationstrategy:v1alpha1 membercluster:v1alpha1" \
|
||||
"propagationstrategy:v1alpha1 cluster:v1alpha1" \
|
||||
--output-base "$(dirname "${BASH_SOURCE[0]}")/../../../.." \
|
||||
--go-header-file "${SCRIPT_ROOT}"/hack/boilerplate/boilerplate.go.txt
|
||||
|
||||
|
@ -17,8 +17,8 @@ echo "Generating with register-gen"
|
|||
GO111MODULE=on go install k8s.io/code-generator/cmd/register-gen
|
||||
register-gen \
|
||||
--go-header-file hack/boilerplate/boilerplate.go.txt \
|
||||
--input-dirs=github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1 \
|
||||
--output-package=github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1
|
||||
--input-dirs=github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1 \
|
||||
--output-package=github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1
|
||||
register-gen \
|
||||
--go-header-file hack/boilerplate/boilerplate.go.txt \
|
||||
--input-dirs=github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1 \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Package v1alpha1 is the v1alpha1 version of the API.
|
||||
// +k8s:deepcopy-gen=package,register
|
||||
// +groupName=membercluster.karmada.io
|
||||
// +groupName=cluster.karmada.io
|
||||
package v1alpha1
|
|
@ -14,21 +14,21 @@ import (
|
|||
// +kubebuilder:printcolumn:JSONPath=`.status.conditions[?(@.type=="Ready")].status`,name="Ready",type=string
|
||||
// +kubebuilder:printcolumn:JSONPath=`.metadata.creationTimestamp`,name="Age",type=date
|
||||
|
||||
// MemberCluster represents the desire state and status of a member cluster.
|
||||
type MemberCluster struct {
|
||||
// Cluster represents the desire state and status of a member cluster.
|
||||
type Cluster struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
// Spec represents the specification of the desired behavior of member cluster.
|
||||
Spec MemberClusterSpec `json:"spec"`
|
||||
Spec ClusterSpec `json:"spec"`
|
||||
|
||||
// Status represents the status of member cluster.
|
||||
// +optional
|
||||
Status MemberClusterStatus `json:"status,omitempty"`
|
||||
Status ClusterStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// MemberClusterSpec defines the desired state of a member cluster.
|
||||
type MemberClusterSpec struct {
|
||||
// ClusterSpec defines the desired state of a member cluster.
|
||||
type ClusterSpec struct {
|
||||
// ManageMode specifies the relationship between control plane and member cluster,
|
||||
// the mode determines how to reach each other.
|
||||
// +optional
|
||||
|
@ -99,9 +99,9 @@ const (
|
|||
ClusterConditionReady = "Ready"
|
||||
)
|
||||
|
||||
// MemberClusterStatus contains information about the current status of a
|
||||
// ClusterStatus contains information about the current status of a
|
||||
// cluster updated periodically by cluster controller.
|
||||
type MemberClusterStatus struct {
|
||||
type ClusterStatus struct {
|
||||
// KubernetesVersion represents version of the member cluster.
|
||||
// +optional
|
||||
KubernetesVersion string `json:"kubernetesVersion,omitempty"`
|
||||
|
@ -142,11 +142,11 @@ type NodeSummary struct {
|
|||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// MemberClusterList contains a list of member cluster
|
||||
type MemberClusterList struct {
|
||||
// ClusterList contains a list of member cluster
|
||||
type ClusterList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
|
||||
// Items holds a list of MemberCluster.
|
||||
Items []MemberCluster `json:"items"`
|
||||
// Items holds a list of Cluster.
|
||||
Items []Cluster `json:"items"`
|
||||
}
|
|
@ -48,7 +48,7 @@ func (in *LocalSecretReference) DeepCopy() *LocalSecretReference {
|
|||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *MemberCluster) DeepCopyInto(out *MemberCluster) {
|
||||
func (in *Cluster) DeepCopyInto(out *Cluster) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
|
@ -57,18 +57,18 @@ func (in *MemberCluster) DeepCopyInto(out *MemberCluster) {
|
|||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemberCluster.
|
||||
func (in *MemberCluster) DeepCopy() *MemberCluster {
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
|
||||
func (in *Cluster) DeepCopy() *Cluster {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(MemberCluster)
|
||||
out := new(Cluster)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *MemberCluster) DeepCopyObject() runtime.Object {
|
||||
func (in *Cluster) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
|
@ -76,13 +76,13 @@ func (in *MemberCluster) DeepCopyObject() runtime.Object {
|
|||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *MemberClusterList) DeepCopyInto(out *MemberClusterList) {
|
||||
func (in *ClusterList) DeepCopyInto(out *ClusterList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]MemberCluster, len(*in))
|
||||
*out = make([]Cluster, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
|
@ -90,18 +90,18 @@ func (in *MemberClusterList) DeepCopyInto(out *MemberClusterList) {
|
|||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemberClusterList.
|
||||
func (in *MemberClusterList) DeepCopy() *MemberClusterList {
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.
|
||||
func (in *ClusterList) DeepCopy() *ClusterList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(MemberClusterList)
|
||||
out := new(ClusterList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *MemberClusterList) DeepCopyObject() runtime.Object {
|
||||
func (in *ClusterList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ func (in *MemberClusterList) DeepCopyObject() runtime.Object {
|
|||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *MemberClusterSpec) DeepCopyInto(out *MemberClusterSpec) {
|
||||
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
|
||||
*out = *in
|
||||
if in.SecretRef != nil {
|
||||
in, out := &in.SecretRef, &out.SecretRef
|
||||
|
@ -126,18 +126,18 @@ func (in *MemberClusterSpec) DeepCopyInto(out *MemberClusterSpec) {
|
|||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemberClusterSpec.
|
||||
func (in *MemberClusterSpec) DeepCopy() *MemberClusterSpec {
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.
|
||||
func (in *ClusterSpec) DeepCopy() *ClusterSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(MemberClusterSpec)
|
||||
out := new(ClusterSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *MemberClusterStatus) DeepCopyInto(out *MemberClusterStatus) {
|
||||
func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) {
|
||||
*out = *in
|
||||
if in.APIEnablements != nil {
|
||||
in, out := &in.APIEnablements, &out.APIEnablements
|
||||
|
@ -157,12 +157,12 @@ func (in *MemberClusterStatus) DeepCopyInto(out *MemberClusterStatus) {
|
|||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemberClusterStatus.
|
||||
func (in *MemberClusterStatus) DeepCopy() *MemberClusterStatus {
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
|
||||
func (in *ClusterStatus) DeepCopy() *ClusterStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(MemberClusterStatus)
|
||||
out := new(ClusterStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
|
@ -9,7 +9,7 @@ import (
|
|||
)
|
||||
|
||||
// GroupName specifies the group name used to register the objects.
|
||||
const GroupName = "membercluster.karmada.io"
|
||||
const GroupName = "cluster.karmada.io"
|
||||
|
||||
// GroupVersion specifies the group and the version used to register the objects.
|
||||
var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1alpha1"}
|
||||
|
@ -42,8 +42,8 @@ func init() {
|
|||
// Adds the list of known types to Scheme.
|
||||
func addKnownTypes(scheme *runtime.Scheme) error {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&MemberCluster{},
|
||||
&MemberClusterList{},
|
||||
&Cluster{},
|
||||
&ClusterList{},
|
||||
)
|
||||
// AddToGroupVersion allows the serialization of client types like ListOptions.
|
||||
v1.AddToGroupVersion(scheme, SchemeGroupVersion)
|
|
@ -16,7 +16,7 @@ import (
|
|||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
"sigs.k8s.io/controller-runtime/pkg/predicate"
|
||||
|
||||
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
propagationstrategy "github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
"github.com/karmada-io/karmada/pkg/util/names"
|
||||
|
@ -166,7 +166,7 @@ func (c *Controller) dispatchPropagationWork(propagationWork *propagationstrateg
|
|||
}
|
||||
|
||||
// syncToMemberClusters ensures that the state of the given object is synchronized to member clusters.
|
||||
func (c *Controller) syncToMemberClusters(memberCluster *v1alpha1.MemberCluster, propagationWork *propagationstrategy.PropagationWork) error {
|
||||
func (c *Controller) syncToMemberClusters(memberCluster *v1alpha1.Cluster, propagationWork *propagationstrategy.PropagationWork) error {
|
||||
memberClusterDynamicClient, err := util.NewClusterDynamicClientSet(memberCluster, c.KubeClientSet)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -15,21 +15,21 @@ import (
|
|||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
|
||||
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
"github.com/karmada-io/karmada/pkg/util/names"
|
||||
)
|
||||
|
||||
const (
|
||||
// ControllerName is the controller name that will be used when reporting events.
|
||||
ControllerName = "membercluster-controller"
|
||||
ControllerName = "cluster-controller"
|
||||
executionSpaceLabelKey = "karmada.io/executionspace"
|
||||
executionSpaceLabelValue = ""
|
||||
)
|
||||
|
||||
// Controller is to sync MemberCluster.
|
||||
// Controller is to sync Cluster.
|
||||
type Controller struct {
|
||||
client.Client // used to operate MemberCluster resources.
|
||||
client.Client // used to operate Cluster resources.
|
||||
KubeClientSet kubernetes.Interface // used to get kubernetes resources.
|
||||
EventRecorder record.EventRecorder
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ type Controller struct {
|
|||
func (c *Controller) Reconcile(req controllerruntime.Request) (controllerruntime.Result, error) {
|
||||
klog.V(4).Infof("Reconciling memberCluster %s", req.NamespacedName.Name)
|
||||
|
||||
memberCluster := &v1alpha1.MemberCluster{}
|
||||
memberCluster := &v1alpha1.Cluster{}
|
||||
if err := c.Client.Get(context.TODO(), req.NamespacedName, memberCluster); err != nil {
|
||||
// The resource may no longer exist, in which case we stop processing.
|
||||
if errors.IsNotFound(err) {
|
||||
|
@ -59,10 +59,10 @@ func (c *Controller) Reconcile(req controllerruntime.Request) (controllerruntime
|
|||
|
||||
// SetupWithManager creates a controller and register to controller manager.
|
||||
func (c *Controller) SetupWithManager(mgr controllerruntime.Manager) error {
|
||||
return controllerruntime.NewControllerManagedBy(mgr).For(&v1alpha1.MemberCluster{}).Complete(c)
|
||||
return controllerruntime.NewControllerManagedBy(mgr).For(&v1alpha1.Cluster{}).Complete(c)
|
||||
}
|
||||
|
||||
func (c *Controller) syncMemberCluster(memberCluster *v1alpha1.MemberCluster) (controllerruntime.Result, error) {
|
||||
func (c *Controller) syncMemberCluster(memberCluster *v1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||
// create execution space
|
||||
err := c.createExecutionSpace(memberCluster)
|
||||
if err != nil {
|
||||
|
@ -73,7 +73,7 @@ func (c *Controller) syncMemberCluster(memberCluster *v1alpha1.MemberCluster) (c
|
|||
return c.ensureFinalizer(memberCluster)
|
||||
}
|
||||
|
||||
func (c *Controller) removeMemberCluster(memberCluster *v1alpha1.MemberCluster) (controllerruntime.Result, error) {
|
||||
func (c *Controller) removeMemberCluster(memberCluster *v1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||
err := c.removeExecutionSpace(memberCluster)
|
||||
if apierrors.IsNotFound(err) {
|
||||
return c.removeFinalizer(memberCluster)
|
||||
|
@ -96,7 +96,7 @@ func (c *Controller) removeMemberCluster(memberCluster *v1alpha1.MemberCluster)
|
|||
}
|
||||
|
||||
// removeExecutionSpace delete the given execution space
|
||||
func (c *Controller) removeExecutionSpace(memberCluster *v1alpha1.MemberCluster) error {
|
||||
func (c *Controller) removeExecutionSpace(memberCluster *v1alpha1.Cluster) error {
|
||||
executionSpace, err := names.GenerateExecutionSpaceName(memberCluster.Name)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to generate execution space name for member cluster %s, err is %v", memberCluster.Name, err)
|
||||
|
@ -111,7 +111,7 @@ func (c *Controller) removeExecutionSpace(memberCluster *v1alpha1.MemberCluster)
|
|||
}
|
||||
|
||||
// ensureRemoveExecutionSpace make sure the given execution space has been deleted
|
||||
func (c *Controller) ensureRemoveExecutionSpace(memberCluster *v1alpha1.MemberCluster) (bool, error) {
|
||||
func (c *Controller) ensureRemoveExecutionSpace(memberCluster *v1alpha1.Cluster) (bool, error) {
|
||||
executionSpace, err := names.GenerateExecutionSpaceName(memberCluster.Name)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to generate execution space name for member cluster %s, err is %v", memberCluster.Name, err)
|
||||
|
@ -129,7 +129,7 @@ func (c *Controller) ensureRemoveExecutionSpace(memberCluster *v1alpha1.MemberCl
|
|||
return true, nil
|
||||
}
|
||||
|
||||
func (c *Controller) removeFinalizer(memberCluster *v1alpha1.MemberCluster) (controllerruntime.Result, error) {
|
||||
func (c *Controller) removeFinalizer(memberCluster *v1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||
if !controllerutil.ContainsFinalizer(memberCluster, util.MemberClusterControllerFinalizer) {
|
||||
return controllerruntime.Result{}, nil
|
||||
}
|
||||
|
@ -143,7 +143,7 @@ func (c *Controller) removeFinalizer(memberCluster *v1alpha1.MemberCluster) (con
|
|||
return controllerruntime.Result{}, nil
|
||||
}
|
||||
|
||||
func (c *Controller) ensureFinalizer(memberCluster *v1alpha1.MemberCluster) (controllerruntime.Result, error) {
|
||||
func (c *Controller) ensureFinalizer(memberCluster *v1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||
if controllerutil.ContainsFinalizer(memberCluster, util.MemberClusterControllerFinalizer) {
|
||||
return controllerruntime.Result{}, nil
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ func (c *Controller) ensureFinalizer(memberCluster *v1alpha1.MemberCluster) (con
|
|||
}
|
||||
|
||||
// createExecutionSpace create member cluster execution space when member cluster joined
|
||||
func (c *Controller) createExecutionSpace(memberCluster *v1alpha1.MemberCluster) error {
|
||||
func (c *Controller) createExecutionSpace(memberCluster *v1alpha1.Cluster) error {
|
||||
executionSpace, err := names.GenerateExecutionSpaceName(memberCluster.Name)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to generate execution space name for member cluster %s, err is %v", memberCluster.Name, err)
|
||||
|
@ -177,7 +177,7 @@ func (c *Controller) createExecutionSpace(memberCluster *v1alpha1.MemberCluster)
|
|||
}
|
||||
_, err = c.KubeClientSet.CoreV1().Namespaces().Create(context.TODO(), memberClusterES, v1.CreateOptions{})
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to create execution space for membercluster %v", memberCluster.Name)
|
||||
klog.Errorf("Failed to create execution space for cluster %v", memberCluster.Name)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -17,13 +17,13 @@ import (
|
|||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
|
||||
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
)
|
||||
|
||||
const (
|
||||
// ControllerName is the controller name that will be used when reporting events.
|
||||
ControllerName = "membercluster-status-controller"
|
||||
ControllerName = "cluster-status-controller"
|
||||
clusterReady = "ClusterReady"
|
||||
clusterHealthy = "cluster is reachable and health endpoint responded with ok"
|
||||
clusterNotReady = "ClusterNotReady"
|
||||
|
@ -32,9 +32,9 @@ const (
|
|||
clusterNotReachableMsg = "cluster is not reachable"
|
||||
)
|
||||
|
||||
// MemberClusterStatusController is to sync status of MemberCluster.
|
||||
// MemberClusterStatusController is to sync status of Cluster.
|
||||
type MemberClusterStatusController struct {
|
||||
client.Client // used to operate MemberCluster resources.
|
||||
client.Client // used to operate Cluster resources.
|
||||
KubeClientSet kubernetes.Interface // used to get kubernetes resources.
|
||||
EventRecorder record.EventRecorder
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ type MemberClusterStatusController struct {
|
|||
func (c *MemberClusterStatusController) Reconcile(req controllerruntime.Request) (controllerruntime.Result, error) {
|
||||
klog.V(4).Infof("Syncing memberCluster status: %s", req.NamespacedName.String())
|
||||
|
||||
memberCluster := &v1alpha1.MemberCluster{}
|
||||
memberCluster := &v1alpha1.Cluster{}
|
||||
if err := c.Client.Get(context.TODO(), req.NamespacedName, memberCluster); err != nil {
|
||||
// The resource may no longer exist, in which case we stop processing.
|
||||
if errors.IsNotFound(err) {
|
||||
|
@ -59,8 +59,8 @@ func (c *MemberClusterStatusController) Reconcile(req controllerruntime.Request)
|
|||
return controllerruntime.Result{}, nil
|
||||
}
|
||||
|
||||
// start syncing status only when the finalizer is present on the given MemberCluster to
|
||||
// avoid conflict with membercluster controller.
|
||||
// start syncing status only when the finalizer is present on the given Cluster to
|
||||
// avoid conflict with cluster controller.
|
||||
if !controllerutil.ContainsFinalizer(memberCluster, util.MemberClusterControllerFinalizer) {
|
||||
klog.V(2).Infof("waiting finalizer present for member cluster: %s", memberCluster.Name)
|
||||
return controllerruntime.Result{Requeue: true}, nil
|
||||
|
@ -71,10 +71,10 @@ func (c *MemberClusterStatusController) Reconcile(req controllerruntime.Request)
|
|||
|
||||
// SetupWithManager creates a controller and register to controller manager.
|
||||
func (c *MemberClusterStatusController) SetupWithManager(mgr controllerruntime.Manager) error {
|
||||
return controllerruntime.NewControllerManagedBy(mgr).For(&v1alpha1.MemberCluster{}).Complete(c)
|
||||
return controllerruntime.NewControllerManagedBy(mgr).For(&v1alpha1.Cluster{}).Complete(c)
|
||||
}
|
||||
|
||||
func (c *MemberClusterStatusController) syncMemberClusterStatus(memberCluster *v1alpha1.MemberCluster) (controllerruntime.Result, error) {
|
||||
func (c *MemberClusterStatusController) syncMemberClusterStatus(memberCluster *v1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||
// create a ClusterClient for the given member cluster
|
||||
clusterClient, err := util.NewClusterClientSet(memberCluster, c.KubeClientSet)
|
||||
if err != nil {
|
||||
|
@ -82,7 +82,7 @@ func (c *MemberClusterStatusController) syncMemberClusterStatus(memberCluster *v
|
|||
return controllerruntime.Result{Requeue: true}, err
|
||||
}
|
||||
|
||||
var currentClusterStatus = v1alpha1.MemberClusterStatus{}
|
||||
var currentClusterStatus = v1alpha1.ClusterStatus{}
|
||||
|
||||
// get the health status of member cluster
|
||||
online, healthy := getMemberClusterHealthStatus(clusterClient)
|
||||
|
@ -124,7 +124,7 @@ func (c *MemberClusterStatusController) syncMemberClusterStatus(memberCluster *v
|
|||
}
|
||||
|
||||
// updateStatusIfNeeded calls updateStatus only if the status of the member cluster is not the same as the old status
|
||||
func (c *MemberClusterStatusController) updateStatusIfNeeded(memberCluster *v1alpha1.MemberCluster, currentClusterStatus v1alpha1.MemberClusterStatus) (controllerruntime.Result, error) {
|
||||
func (c *MemberClusterStatusController) updateStatusIfNeeded(memberCluster *v1alpha1.Cluster, currentClusterStatus v1alpha1.ClusterStatus) (controllerruntime.Result, error) {
|
||||
if !equality.Semantic.DeepEqual(memberCluster.Status, currentClusterStatus) {
|
||||
klog.V(4).Infof("Start to update memberCluster status: %s", memberCluster.Name)
|
||||
memberCluster.Status = currentClusterStatus
|
||||
|
@ -205,7 +205,7 @@ func generateReadyCondition(online, healthy bool) []v1.Condition {
|
|||
return conditions
|
||||
}
|
||||
|
||||
func setTransitionTime(oldClusterStatus, newClusterStatus *v1alpha1.MemberClusterStatus) {
|
||||
func setTransitionTime(oldClusterStatus, newClusterStatus *v1alpha1.ClusterStatus) {
|
||||
// preserve the last transition time if the status of member cluster not changed
|
||||
if util.IsMemberClusterReady(oldClusterStatus) == util.IsMemberClusterReady(newClusterStatus) {
|
||||
if len(oldClusterStatus.Conditions) != 0 {
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
kubeclient "k8s.io/client-go/kubernetes"
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
memberclusterapi "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
memberclusterapi "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"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/karmadactl/options"
|
||||
|
@ -51,7 +51,7 @@ var (
|
|||
}
|
||||
)
|
||||
|
||||
var resourceKind = v1alpha1.SchemeGroupVersion.WithKind("MemberCluster")
|
||||
var resourceKind = v1alpha1.SchemeGroupVersion.WithKind("Cluster")
|
||||
|
||||
const (
|
||||
// TODO(RainbowMango) token and caData key both used by command and controller.
|
||||
|
@ -234,7 +234,7 @@ func RunJoin(cmdOut io.Writer, karmadaConfig KarmadaConfig, opts CommandJoinOpti
|
|||
return nil
|
||||
}
|
||||
|
||||
memberClusterObj := &memberclusterapi.MemberCluster{}
|
||||
memberClusterObj := &memberclusterapi.Cluster{}
|
||||
memberClusterObj.Name = opts.MemberClusterName
|
||||
memberClusterObj.Spec.APIEndpoint = memberClusterConfig.Host
|
||||
memberClusterObj.Spec.SecretRef = &memberclusterapi.LocalSecretReference{
|
||||
|
@ -372,7 +372,7 @@ func ensureClusterRoleBindingExist(client kubeclient.Interface, clusterRoleBindi
|
|||
return createdObj, nil
|
||||
}
|
||||
|
||||
func createMemberClusterObject(controlPlaneClient *karmadaclientset.Clientset, memberClusterObj *memberclusterapi.MemberCluster, errorOnExisting bool) (*memberclusterapi.MemberCluster, error) {
|
||||
func createMemberClusterObject(controlPlaneClient *karmadaclientset.Clientset, memberClusterObj *memberclusterapi.Cluster, errorOnExisting bool) (*memberclusterapi.Cluster, error) {
|
||||
memberCluster, exist, err := GetMemberCluster(controlPlaneClient, memberClusterObj.Namespace, memberClusterObj.Name)
|
||||
if err != nil {
|
||||
klog.Errorf("failed to create member cluster object. member cluster: %s/%s, error: %v", memberClusterObj.Namespace, memberClusterObj.Name, err)
|
||||
|
@ -398,7 +398,7 @@ func createMemberClusterObject(controlPlaneClient *karmadaclientset.Clientset, m
|
|||
}
|
||||
|
||||
// GetMemberCluster tells if a member cluster (namespace/name) already joined to control plane.
|
||||
func GetMemberCluster(client karmadaclientset.Interface, namespace string, name string) (*memberclusterapi.MemberCluster, bool, error) {
|
||||
func GetMemberCluster(client karmadaclientset.Interface, namespace string, name string) (*memberclusterapi.Cluster, bool, error) {
|
||||
memberCluster, err := client.MemberclusterV1alpha1().MemberClusters().Get(context.TODO(), name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
if apierrors.IsNotFound(err) {
|
||||
|
@ -413,7 +413,7 @@ func GetMemberCluster(client karmadaclientset.Interface, namespace string, name
|
|||
}
|
||||
|
||||
// CreateMemberCluster creates a new member cluster object in control plane.
|
||||
func CreateMemberCluster(controlPlaneClient karmadaclientset.Interface, cluster *memberclusterapi.MemberCluster) (*memberclusterapi.MemberCluster, error) {
|
||||
func CreateMemberCluster(controlPlaneClient karmadaclientset.Interface, cluster *memberclusterapi.Cluster) (*memberclusterapi.Cluster, error) {
|
||||
memberCluster, err := controlPlaneClient.MemberclusterV1alpha1().MemberClusters().Create(context.TODO(), cluster, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
klog.Warningf("failed to create member cluster. member cluster: %s/%s, error: %v", cluster.Namespace, cluster.Name, err)
|
||||
|
|
|
@ -99,7 +99,7 @@ func (j *CommandUnjoinOption) AddFlags(flags *pflag.FlagSet) {
|
|||
flags.StringVar(&j.MemberClusterKubeConfig, "member-cluster-kubeconfig", "",
|
||||
"Path of the member cluster's kubeconfig.")
|
||||
flags.BoolVar(&j.forceDeletion, "force", false,
|
||||
"Delete membercluster and secret resources even if resources in the member cluster targeted for unjoin are not removed successfully.")
|
||||
"Delete cluster and secret resources even if resources in the member cluster targeted for unjoin are not removed successfully.")
|
||||
}
|
||||
|
||||
// RunUnjoin is the implementation of the 'unjoin' command.
|
||||
|
|
|
@ -3,44 +3,44 @@ package cache
|
|||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/scheduler/framework"
|
||||
)
|
||||
|
||||
// Cache is an interface for scheduler internal cache.
|
||||
type Cache interface {
|
||||
AddCluster(cluster *v1alpha1.MemberCluster)
|
||||
UpdateCluster(cluster *v1alpha1.MemberCluster)
|
||||
DeleteCluster(cluster *v1alpha1.MemberCluster)
|
||||
AddCluster(cluster *v1alpha1.Cluster)
|
||||
UpdateCluster(cluster *v1alpha1.Cluster)
|
||||
DeleteCluster(cluster *v1alpha1.Cluster)
|
||||
// Snapshot returns a snapshot of the current clusters info
|
||||
Snapshot() *Snapshot
|
||||
}
|
||||
|
||||
type schedulerCache struct {
|
||||
mutex sync.RWMutex
|
||||
clusters map[string]*v1alpha1.MemberCluster
|
||||
clusters map[string]*v1alpha1.Cluster
|
||||
}
|
||||
|
||||
// NewCache instantiates a cache used only by scheduler.
|
||||
func NewCache() Cache {
|
||||
return &schedulerCache{
|
||||
clusters: make(map[string]*v1alpha1.MemberCluster),
|
||||
clusters: make(map[string]*v1alpha1.Cluster),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *schedulerCache) AddCluster(cluster *v1alpha1.MemberCluster) {
|
||||
func (c *schedulerCache) AddCluster(cluster *v1alpha1.Cluster) {
|
||||
c.mutex.Lock()
|
||||
defer c.mutex.Unlock()
|
||||
c.clusters[cluster.Name] = cluster
|
||||
}
|
||||
|
||||
func (c *schedulerCache) UpdateCluster(cluster *v1alpha1.MemberCluster) {
|
||||
func (c *schedulerCache) UpdateCluster(cluster *v1alpha1.Cluster) {
|
||||
c.mutex.Lock()
|
||||
defer c.mutex.Unlock()
|
||||
c.clusters[cluster.Name] = cluster
|
||||
}
|
||||
|
||||
func (c *schedulerCache) DeleteCluster(cluster *v1alpha1.MemberCluster) {
|
||||
func (c *schedulerCache) DeleteCluster(cluster *v1alpha1.Cluster) {
|
||||
c.mutex.Lock()
|
||||
defer c.mutex.Unlock()
|
||||
delete(c.clusters, cluster.Name)
|
||||
|
|
|
@ -6,7 +6,7 @@ import (
|
|||
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
memberclusterapi "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
memberclusterapi "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
lister "github.com/karmada-io/karmada/pkg/generated/listers/propagationstrategy/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/scheduler/cache"
|
||||
|
@ -92,8 +92,8 @@ func (g *genericScheduler) findClustersThatFit(
|
|||
ctx context.Context,
|
||||
fwk framework.Framework,
|
||||
placement *v1alpha1.Placement,
|
||||
clusterInfo *cache.Snapshot) ([]*memberclusterapi.MemberCluster, error) {
|
||||
var out []*memberclusterapi.MemberCluster
|
||||
clusterInfo *cache.Snapshot) ([]*memberclusterapi.Cluster, error) {
|
||||
var out []*memberclusterapi.Cluster
|
||||
clusters := clusterInfo.GetClusters()
|
||||
for _, c := range clusters {
|
||||
resMap := fwk.RunFilterPlugins(ctx, placement, c.Cluster())
|
||||
|
@ -113,7 +113,7 @@ func (g *genericScheduler) prioritizeClusters(
|
|||
ctx context.Context,
|
||||
fwk framework.Framework,
|
||||
placement *v1alpha1.Placement,
|
||||
clusters []*memberclusterapi.MemberCluster) (result framework.ClusterScoreList, err error) {
|
||||
clusters []*memberclusterapi.Cluster) (result framework.ClusterScoreList, err error) {
|
||||
scoresMap, err := fwk.RunScorePlugins(ctx, placement, clusters)
|
||||
if err != nil {
|
||||
return result, err
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"errors"
|
||||
"strings"
|
||||
|
||||
membercluster "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
membercluster "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
)
|
||||
|
||||
|
@ -15,10 +15,10 @@ type Framework interface {
|
|||
|
||||
// RunFilterPlugins runs the set of configured Filter plugins for resources on
|
||||
// the given cluster.
|
||||
RunFilterPlugins(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.MemberCluster) PluginToResult
|
||||
RunFilterPlugins(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.Cluster) PluginToResult
|
||||
|
||||
// RunScorePlugins runs the set of configured Score plugins, it returns a map of plugin name to cores
|
||||
RunScorePlugins(ctx context.Context, placement *v1alpha1.Placement, clusters []*membercluster.MemberCluster) (PluginToClusterScores, error)
|
||||
RunScorePlugins(ctx context.Context, placement *v1alpha1.Placement, clusters []*membercluster.Cluster) (PluginToClusterScores, error)
|
||||
}
|
||||
|
||||
// Plugin is the parent type for all the scheduling framework plugins.
|
||||
|
@ -31,7 +31,7 @@ type Plugin interface {
|
|||
type FilterPlugin interface {
|
||||
Plugin
|
||||
// Filter is called by the scheduling framework.
|
||||
Filter(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.MemberCluster) *Result
|
||||
Filter(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.Cluster) *Result
|
||||
}
|
||||
|
||||
// Result indicates the result of running a plugin. It consists of a code, a
|
||||
|
@ -124,7 +124,7 @@ type ScorePlugin interface {
|
|||
// Score is called on each filtered cluster. It must return success and an integer
|
||||
// indicating the rank of the cluster. All scoring plugins must return success or
|
||||
// the resource will be rejected.
|
||||
Score(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.MemberCluster) (float64, *Result)
|
||||
Score(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.Cluster) (float64, *Result)
|
||||
}
|
||||
|
||||
// ClusterScore represent the cluster score.
|
||||
|
|
|
@ -3,7 +3,7 @@ package clusteraffinity
|
|||
import (
|
||||
"context"
|
||||
|
||||
membercluster "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
membercluster "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/scheduler/framework"
|
||||
)
|
||||
|
@ -30,7 +30,7 @@ func (p *ClusterAffinity) Name() string {
|
|||
}
|
||||
|
||||
// Filter checks if the cluster matched the placement cluster affinity constraint.
|
||||
func (p *ClusterAffinity) Filter(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.MemberCluster) *framework.Result {
|
||||
func (p *ClusterAffinity) Filter(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.Cluster) *framework.Result {
|
||||
affinity := placement.ClusterAffinity
|
||||
if affinity != nil {
|
||||
for _, clusterName := range affinity.ExcludeClusters {
|
||||
|
@ -54,6 +54,6 @@ func (p *ClusterAffinity) Filter(ctx context.Context, placement *v1alpha1.Placem
|
|||
}
|
||||
|
||||
// Score calculates the score on the candidate cluster.
|
||||
func (p *ClusterAffinity) Score(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.MemberCluster) (float64, *framework.Result) {
|
||||
func (p *ClusterAffinity) Score(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.Cluster) (float64, *framework.Result) {
|
||||
return 0, nil
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
membercluster "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
membercluster "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/scheduler/framework"
|
||||
plugins2 "github.com/karmada-io/karmada/pkg/scheduler/framework/plugins"
|
||||
|
@ -52,7 +52,7 @@ func NewFramework(plugins []string) framework.Framework {
|
|||
|
||||
// RunFilterPlugins runs the set of configured Filter plugins for resources on the cluster.
|
||||
// If any of the result is not success, the cluster is not suited for the resource.
|
||||
func (frw *frameworkImpl) RunFilterPlugins(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.MemberCluster) framework.PluginToResult {
|
||||
func (frw *frameworkImpl) RunFilterPlugins(ctx context.Context, placement *v1alpha1.Placement, cluster *membercluster.Cluster) framework.PluginToResult {
|
||||
result := make(framework.PluginToResult, len(frw.filterPlugins))
|
||||
for _, p := range frw.filterPlugins {
|
||||
pluginResult := p.Filter(ctx, placement, cluster)
|
||||
|
@ -64,7 +64,7 @@ func (frw *frameworkImpl) RunFilterPlugins(ctx context.Context, placement *v1alp
|
|||
|
||||
// RunFilterPlugins runs the set of configured Filter plugins for resources on the cluster.
|
||||
// If any of the result is not success, the cluster is not suited for the resource.
|
||||
func (frw *frameworkImpl) RunScorePlugins(ctx context.Context, placement *v1alpha1.Placement, clusters []*membercluster.MemberCluster) (framework.PluginToClusterScores, error) {
|
||||
func (frw *frameworkImpl) RunScorePlugins(ctx context.Context, placement *v1alpha1.Placement, clusters []*membercluster.Cluster) (framework.PluginToClusterScores, error) {
|
||||
result := make(framework.PluginToClusterScores, len(frw.filterPlugins))
|
||||
for _, p := range frw.scorePlugins {
|
||||
for i, cluster := range clusters {
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
package framework
|
||||
|
||||
import (
|
||||
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
)
|
||||
|
||||
// ClusterInfo is cluster level aggregated information.
|
||||
type ClusterInfo struct {
|
||||
// Overall cluster information.
|
||||
cluster *v1alpha1.MemberCluster
|
||||
cluster *v1alpha1.Cluster
|
||||
}
|
||||
|
||||
// NewClusterInfo creates a ClusterInfo object.
|
||||
func NewClusterInfo(cluster *v1alpha1.MemberCluster) *ClusterInfo {
|
||||
func NewClusterInfo(cluster *v1alpha1.Cluster) *ClusterInfo {
|
||||
return &ClusterInfo{
|
||||
cluster: cluster,
|
||||
}
|
||||
}
|
||||
|
||||
// Cluster returns overall information about this cluster.
|
||||
func (n *ClusterInfo) Cluster() *v1alpha1.MemberCluster {
|
||||
func (n *ClusterInfo) Cluster() *v1alpha1.Cluster {
|
||||
if n == nil {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
"k8s.io/client-go/util/workqueue"
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
memclusterapi "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
memclusterapi "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||
informerfactory "github.com/karmada-io/karmada/pkg/generated/informers/externalversions"
|
||||
|
@ -195,42 +195,42 @@ func (s *Scheduler) handleErr(err error, key interface{}) {
|
|||
}
|
||||
|
||||
func (s *Scheduler) addCluster(obj interface{}) {
|
||||
membercluster, ok := obj.(*memclusterapi.MemberCluster)
|
||||
membercluster, ok := obj.(*memclusterapi.Cluster)
|
||||
if !ok {
|
||||
klog.Errorf("cannot convert to MemberCluster: %v", obj)
|
||||
klog.Errorf("cannot convert to Cluster: %v", obj)
|
||||
return
|
||||
}
|
||||
klog.V(3).Infof("add event for membercluster %s", membercluster.Name)
|
||||
klog.V(3).Infof("add event for cluster %s", membercluster.Name)
|
||||
|
||||
s.schedulerCache.AddCluster(membercluster)
|
||||
}
|
||||
|
||||
func (s *Scheduler) updateCluster(_, newObj interface{}) {
|
||||
newCluster, ok := newObj.(*memclusterapi.MemberCluster)
|
||||
newCluster, ok := newObj.(*memclusterapi.Cluster)
|
||||
if !ok {
|
||||
klog.Errorf("cannot convert newObj to MemberCluster: %v", newObj)
|
||||
klog.Errorf("cannot convert newObj to Cluster: %v", newObj)
|
||||
return
|
||||
}
|
||||
klog.V(3).Infof("update event for membercluster %s", newCluster.Name)
|
||||
klog.V(3).Infof("update event for cluster %s", newCluster.Name)
|
||||
s.schedulerCache.UpdateCluster(newCluster)
|
||||
}
|
||||
|
||||
func (s *Scheduler) deleteCluster(obj interface{}) {
|
||||
var cluster *memclusterapi.MemberCluster
|
||||
var cluster *memclusterapi.Cluster
|
||||
switch t := obj.(type) {
|
||||
case *memclusterapi.MemberCluster:
|
||||
case *memclusterapi.Cluster:
|
||||
cluster = t
|
||||
case cache.DeletedFinalStateUnknown:
|
||||
var ok bool
|
||||
cluster, ok = t.Obj.(*memclusterapi.MemberCluster)
|
||||
cluster, ok = t.Obj.(*memclusterapi.Cluster)
|
||||
if !ok {
|
||||
klog.Errorf("cannot convert to memclusterapi.MemberCluster: %v", t.Obj)
|
||||
klog.Errorf("cannot convert to memclusterapi.Cluster: %v", t.Obj)
|
||||
return
|
||||
}
|
||||
default:
|
||||
klog.Errorf("cannot convert to memclusterapi.MemberCluster: %v", t)
|
||||
klog.Errorf("cannot convert to memclusterapi.Cluster: %v", t)
|
||||
return
|
||||
}
|
||||
klog.V(3).Infof("delete event for membercluster %s", cluster.Name)
|
||||
klog.V(3).Infof("delete event for cluster %s", cluster.Name)
|
||||
s.schedulerCache.DeleteCluster(cluster)
|
||||
}
|
||||
|
|
|
@ -8,11 +8,11 @@ import (
|
|||
kubeclientset "k8s.io/client-go/kubernetes"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
)
|
||||
|
||||
// IsMemberClusterReady tells whether the cluster status in 'Ready' condition.
|
||||
func IsMemberClusterReady(clusterStatus *v1alpha1.MemberClusterStatus) bool {
|
||||
func IsMemberClusterReady(clusterStatus *v1alpha1.ClusterStatus) bool {
|
||||
for _, condition := range clusterStatus.Conditions {
|
||||
// TODO(RainbowMango): Condition type should be defined in API, and after that update this hard code accordingly.
|
||||
if condition.Type == v1alpha1.ClusterConditionReady {
|
||||
|
@ -24,9 +24,9 @@ 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{}
|
||||
// GetMemberCluster returns the given Cluster resource
|
||||
func GetMemberCluster(hostClient client.Client, clusterName string) (*v1alpha1.Cluster, error) {
|
||||
memberCluster := &v1alpha1.Cluster{}
|
||||
if err := hostClient.Get(context.TODO(), types.NamespacedName{Name: clusterName}, memberCluster); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ const (
|
|||
const (
|
||||
// MemberClusterControllerFinalizer is added to MemberCluster to ensure PropagationWork as well as the
|
||||
// execution space (namespace) is deleted before itself is deleted.
|
||||
MemberClusterControllerFinalizer = "karmada.io/membercluster-controller"
|
||||
MemberClusterControllerFinalizer = "karmada.io/cluster-controller"
|
||||
|
||||
// ExecutionControllerFinalizer is added to PropagationWork to ensure manifests propagated to member cluster
|
||||
// is deleted before PropagationWork itself is deleted.
|
||||
|
|
|
@ -6,7 +6,7 @@ import (
|
|||
"k8s.io/client-go/rest"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
memberclusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
memberclusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
propagationv1alpha1 "github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
)
|
||||
|
||||
|
@ -16,7 +16,7 @@ var aggregatedScheme = runtime.NewScheme()
|
|||
func init() {
|
||||
var _ = scheme.AddToScheme(aggregatedScheme) // add Kubernetes schemes
|
||||
var _ = propagationv1alpha1.AddToScheme(aggregatedScheme) // add propagation schemes
|
||||
var _ = memberclusterv1alpha1.AddToScheme(aggregatedScheme) // add membercluster schemes
|
||||
var _ = memberclusterv1alpha1.AddToScheme(aggregatedScheme) // add cluster schemes
|
||||
}
|
||||
|
||||
// NewSchema returns a singleton schema set which aggregated Kubernetes's schemes and extended schemes.
|
||||
|
|
|
@ -10,7 +10,7 @@ import (
|
|||
"k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
|
||||
"github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -35,8 +35,8 @@ type DynamicClusterClient struct {
|
|||
}
|
||||
|
||||
// NewClusterClientSet returns a ClusterClient for the given member cluster.
|
||||
func NewClusterClientSet(c *v1alpha1.MemberCluster, client kubeclientset.Interface) (*ClusterClient, error) {
|
||||
clusterConfig, err := buildMemberClusterConfig(c, client)
|
||||
func NewClusterClientSet(c *v1alpha1.Cluster, client kubeclientset.Interface) (*ClusterClient, error) {
|
||||
clusterConfig, err := buildClusterConfig(c, client)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -49,8 +49,8 @@ func NewClusterClientSet(c *v1alpha1.MemberCluster, client kubeclientset.Interfa
|
|||
}
|
||||
|
||||
// NewClusterDynamicClientSet returns a dynamic client for the given member cluster.
|
||||
func NewClusterDynamicClientSet(c *v1alpha1.MemberCluster, client kubeclientset.Interface) (*DynamicClusterClient, error) {
|
||||
clusterConfig, err := buildMemberClusterConfig(c, client)
|
||||
func NewClusterDynamicClientSet(c *v1alpha1.Cluster, client kubeclientset.Interface) (*DynamicClusterClient, error) {
|
||||
clusterConfig, err := buildClusterConfig(c, client)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -62,19 +62,19 @@ func NewClusterDynamicClientSet(c *v1alpha1.MemberCluster, client kubeclientset.
|
|||
return &clusterClientSet, nil
|
||||
}
|
||||
|
||||
func buildMemberClusterConfig(memberCluster *v1alpha1.MemberCluster, client kubeclientset.Interface) (*rest.Config, error) {
|
||||
clusterName := memberCluster.Name
|
||||
apiEndpoint := memberCluster.Spec.APIEndpoint
|
||||
func buildClusterConfig(cluster *v1alpha1.Cluster, client kubeclientset.Interface) (*rest.Config, error) {
|
||||
clusterName := cluster.Name
|
||||
apiEndpoint := cluster.Spec.APIEndpoint
|
||||
if apiEndpoint == "" {
|
||||
return nil, fmt.Errorf("the api endpoint of cluster %s is empty", clusterName)
|
||||
}
|
||||
|
||||
secretName := memberCluster.Spec.SecretRef.Name
|
||||
secretName := cluster.Spec.SecretRef.Name
|
||||
if secretName == "" {
|
||||
return nil, fmt.Errorf("cluster %s does not have a secret name", clusterName)
|
||||
}
|
||||
|
||||
secret, err := client.CoreV1().Secrets(memberCluster.Spec.SecretRef.Namespace).Get(context.TODO(), secretName, metav1.GetOptions{})
|
||||
secret, err := client.CoreV1().Secrets(cluster.Spec.SecretRef.Namespace).Get(context.TODO(), secretName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import (
|
|||
"k8s.io/klog/v2"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
propagationstrategy "github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
)
|
||||
|
@ -38,7 +38,7 @@ func New(client client.Client) OverrideManager {
|
|||
}
|
||||
|
||||
func (o *overrideManagerImpl) ApplyOverridePolicies(rawObj *unstructured.Unstructured, clusterName string) error {
|
||||
clusterObj := &clusterv1alpha1.MemberCluster{}
|
||||
clusterObj := &clusterv1alpha1.Cluster{}
|
||||
if err := o.Client.Get(context.TODO(), client.ObjectKey{Name: clusterName}, clusterObj); err != nil {
|
||||
klog.Errorf("Failed to get member cluster: %s, error: %v", clusterName, err)
|
||||
return err
|
||||
|
@ -62,7 +62,7 @@ func (o *overrideManagerImpl) ApplyOverridePolicies(rawObj *unstructured.Unstruc
|
|||
}
|
||||
|
||||
// applyClusterOverrides will apply overrides according to ClusterOverridePolicy instructions.
|
||||
func (o *overrideManagerImpl) applyClusterOverrides(rawObj *unstructured.Unstructured, cluster *clusterv1alpha1.MemberCluster) error {
|
||||
func (o *overrideManagerImpl) applyClusterOverrides(rawObj *unstructured.Unstructured, cluster *clusterv1alpha1.Cluster) error {
|
||||
|
||||
// TODO(RainbowMango): implements later after ClusterOverridePolicy get on board.
|
||||
|
||||
|
@ -70,7 +70,7 @@ func (o *overrideManagerImpl) applyClusterOverrides(rawObj *unstructured.Unstruc
|
|||
}
|
||||
|
||||
// applyNamespacedOverrides will apply overrides according to OverridePolicy instructions.
|
||||
func (o *overrideManagerImpl) applyNamespacedOverrides(rawObj *unstructured.Unstructured, cluster *clusterv1alpha1.MemberCluster) error {
|
||||
func (o *overrideManagerImpl) applyNamespacedOverrides(rawObj *unstructured.Unstructured, cluster *clusterv1alpha1.Cluster) error {
|
||||
// get all namespace-scoped override policies
|
||||
policyList := &propagationstrategy.OverridePolicyList{}
|
||||
if err := o.Client.List(context.TODO(), policyList, &client.ListOptions{Namespace: rawObj.GetNamespace()}); err != nil {
|
||||
|
@ -101,7 +101,7 @@ func (o *overrideManagerImpl) applyNamespacedOverrides(rawObj *unstructured.Unst
|
|||
return nil
|
||||
}
|
||||
|
||||
func (o *overrideManagerImpl) getMatchedOverridePolicy(policies []propagationstrategy.OverridePolicy, resource *unstructured.Unstructured, cluster *clusterv1alpha1.MemberCluster) []propagationstrategy.OverridePolicy {
|
||||
func (o *overrideManagerImpl) getMatchedOverridePolicy(policies []propagationstrategy.OverridePolicy, resource *unstructured.Unstructured, cluster *clusterv1alpha1.Cluster) []propagationstrategy.OverridePolicy {
|
||||
// select policy in which at least one resource selector matches target resource.
|
||||
resourceMatches := make([]propagationstrategy.OverridePolicy, 0)
|
||||
for _, policy := range policies {
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
|
||||
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/apis/propagationstrategy/v1alpha1"
|
||||
)
|
||||
|
||||
|
@ -47,7 +47,7 @@ func ResourceMatches(resource *unstructured.Unstructured, rs v1alpha1.ResourceSe
|
|||
|
||||
// ClusterMatches tells if specific cluster matches the affinity.
|
||||
// TODO(RainbowMango): Now only support ClusterAffinity.ClusterNames. More rules will be implemented later.
|
||||
func ClusterMatches(cluster *clusterv1alpha1.MemberCluster, affinity v1alpha1.ClusterAffinity) bool {
|
||||
func ClusterMatches(cluster *clusterv1alpha1.Cluster, affinity v1alpha1.ClusterAffinity) bool {
|
||||
for _, clusterName := range affinity.ClusterNames {
|
||||
if cluster.Name == clusterName {
|
||||
return true
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
"k8s.io/client-go/tools/clientcmd"
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
clusterapi "github.com/karmada-io/karmada/pkg/apis/membercluster/v1alpha1"
|
||||
clusterapi "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
karmada "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
"github.com/karmada-io/karmada/test/helper"
|
||||
|
@ -43,7 +43,7 @@ var (
|
|||
restConfig *rest.Config
|
||||
kubeClient kubernetes.Interface
|
||||
karmadaClient karmada.Interface
|
||||
memberClusters []*clusterapi.MemberCluster
|
||||
memberClusters []*clusterapi.Cluster
|
||||
memberClusterNames []string
|
||||
memberClusterClients []*util.ClusterClient
|
||||
testNamespace = fmt.Sprintf("karmada-e2e-%s", rand.String(3))
|
||||
|
@ -97,13 +97,13 @@ var _ = ginkgo.AfterSuite(func() {
|
|||
}, TestSuiteTeardownTimeOut.Seconds())
|
||||
|
||||
// fetchMemberClusters will fetch all member clusters we have.
|
||||
func fetchMemberClusters(client karmada.Interface) ([]*clusterapi.MemberCluster, error) {
|
||||
func fetchMemberClusters(client karmada.Interface) ([]*clusterapi.Cluster, error) {
|
||||
clusterList, err := client.MemberclusterV1alpha1().MemberClusters().List(context.TODO(), v1.ListOptions{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
clusters := make([]*clusterapi.MemberCluster, 0, len(clusterList.Items))
|
||||
clusters := make([]*clusterapi.Cluster, 0, len(clusterList.Items))
|
||||
for _, cluster := range clusterList.Items {
|
||||
pinedCluster := cluster
|
||||
clusters = append(clusters, &pinedCluster)
|
||||
|
@ -113,7 +113,7 @@ func fetchMemberClusters(client karmada.Interface) ([]*clusterapi.MemberCluster,
|
|||
}
|
||||
|
||||
// isMemberClusterMeetRequirements checks if current environment meet the requirements of E2E.
|
||||
func isMemberClusterMeetRequirements(clusters []*clusterapi.MemberCluster) (bool, error) {
|
||||
func isMemberClusterMeetRequirements(clusters []*clusterapi.Cluster) (bool, error) {
|
||||
// check if member cluster number meets requirements
|
||||
if len(clusters) < MinimumMemberCluster {
|
||||
return false, fmt.Errorf("needs at lease %d member cluster to run, but got: %d", MinimumMemberCluster, len(clusters))
|
||||
|
|
Loading…
Reference in New Issue