add e2e for schedule with clusteraffinitise
Signed-off-by: changzhen <changzhen5@huawei.com>
This commit is contained in:
parent
a34b18dc14
commit
709ad8d06a
|
@ -0,0 +1,425 @@
|
|||
package e2e
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/onsi/ginkgo/v2"
|
||||
"github.com/onsi/gomega"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/rand"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
|
||||
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1"
|
||||
controllercluster "github.com/karmada-io/karmada/pkg/controllers/cluster"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
"github.com/karmada-io/karmada/pkg/util/helper"
|
||||
"github.com/karmada-io/karmada/test/e2e/framework"
|
||||
testhelper "github.com/karmada-io/karmada/test/helper"
|
||||
)
|
||||
|
||||
var _ = ginkgo.Describe("[ClusterAffinities] propagation testing", func() {
|
||||
ginkgo.When("[PropagationPolicy] replica scheduling type is Duplicated", func() {
|
||||
ginkgo.Context("schedule with multi clusterAffinity", func() {
|
||||
var deployment *appsv1.Deployment
|
||||
var policy *policyv1alpha1.PropagationPolicy
|
||||
var member1LabelKey, member2LabelKey string
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
member1LabelKey = "member1-" + rand.String(RandomStrLength)
|
||||
member2LabelKey = "member2-" + rand.String(RandomStrLength)
|
||||
|
||||
deployment = testhelper.NewDeployment(testNamespace, deploymentNamePrefix+rand.String(RandomStrLength))
|
||||
policy = testhelper.NewPropagationPolicy(deployment.Namespace, deployment.Name, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinities: []policyv1alpha1.ClusterAffinityTerm{
|
||||
{
|
||||
AffinityName: "group1",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{LabelSelector: &metav1.LabelSelector{MatchLabels: map[string]string{member1LabelKey: "ok"}}},
|
||||
},
|
||||
{
|
||||
AffinityName: "group2",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{LabelSelector: &metav1.LabelSelector{MatchLabels: map[string]string{member2LabelKey: "ok"}}},
|
||||
},
|
||||
{
|
||||
AffinityName: "group3",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{LabelSelector: &metav1.LabelSelector{MatchLabels: map[string]string{"no-exist-cluster": "ok"}}},
|
||||
},
|
||||
{
|
||||
AffinityName: "group4",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member1"}},
|
||||
},
|
||||
}})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.UpdateClusterLabels(karmadaClient, "member1", map[string]string{member1LabelKey: "ok"})
|
||||
framework.UpdateClusterLabels(karmadaClient, "member2", map[string]string{member2LabelKey: "ok"})
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.DeleteClusterLabels(karmadaClient, "member1", map[string]string{member1LabelKey: ""})
|
||||
framework.DeleteClusterLabels(karmadaClient, "member2", map[string]string{member2LabelKey: ""})
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreatePropagationPolicy(karmadaClient, policy)
|
||||
framework.CreateDeployment(kubeClient, deployment)
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name)
|
||||
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.It("propagate deployment and then update the cluster label", func() {
|
||||
// 1. wait for deployment present on member1 cluster
|
||||
framework.WaitDeploymentPresentOnClusterFitWith("member1", deployment.Namespace, deployment.Name, func(deployment *appsv1.Deployment) bool { return true })
|
||||
|
||||
// 2. update member1 cluster label to make it's unmatched with the policy
|
||||
framework.UpdateClusterLabels(karmadaClient, "member1", map[string]string{member1LabelKey: "not-ok"})
|
||||
framework.WaitDeploymentDisappearOnCluster("member1", deployment.Namespace, deployment.Name)
|
||||
|
||||
// 3. wait for deployment present on member2 cluster
|
||||
framework.WaitDeploymentPresentOnClusterFitWith("member2", deployment.Namespace, deployment.Name, func(deployment *appsv1.Deployment) bool { return true })
|
||||
|
||||
// 4. update member2 cluster label to make it's unmatched with the policy
|
||||
framework.UpdateClusterLabels(karmadaClient, "member2", map[string]string{member2LabelKey: "not-ok"})
|
||||
framework.WaitDeploymentDisappearOnCluster("member2", deployment.Namespace, deployment.Name)
|
||||
|
||||
// 5. wait for deployment present on member1 cluster
|
||||
framework.WaitDeploymentPresentOnClusterFitWith("member1", deployment.Namespace, deployment.Name, func(deployment *appsv1.Deployment) bool { return true })
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.Context("schedule change from clusterAffinity to clusterAffinities", func() {
|
||||
var deployment *appsv1.Deployment
|
||||
var policy *policyv1alpha1.PropagationPolicy
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
deployment = testhelper.NewDeployment(testNamespace, deploymentNamePrefix+rand.String(RandomStrLength))
|
||||
policy = testhelper.NewPropagationPolicy(deployment.Namespace, deployment.Name, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinity: &policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member1"}},
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreatePropagationPolicy(karmadaClient, policy)
|
||||
framework.CreateDeployment(kubeClient, deployment)
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name)
|
||||
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.It("propagate deployment and then update the cluster label", func() {
|
||||
// 1. wait for deployment present on member1 cluster
|
||||
framework.WaitDeploymentPresentOnClusterFitWith("member1", deployment.Namespace, deployment.Name, func(deployment *appsv1.Deployment) bool { return true })
|
||||
|
||||
// 2. update policy placement with clusterAffinities
|
||||
policy.Spec.Placement.ClusterAffinity = nil
|
||||
policy.Spec.Placement.ClusterAffinities = []policyv1alpha1.ClusterAffinityTerm{{
|
||||
AffinityName: "group1",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member2"}},
|
||||
}}
|
||||
framework.UpdatePropagationPolicyWithSpec(karmadaClient, policy.Namespace, policy.Name, policy.Spec)
|
||||
|
||||
// 3. wait for deployment present on member2 cluster
|
||||
framework.WaitDeploymentPresentOnClusterFitWith("member2", deployment.Namespace, deployment.Name, func(deployment *appsv1.Deployment) bool { return true })
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.Context("schedule change from clusterAffinities to clusterAffinity", func() {
|
||||
var deployment *appsv1.Deployment
|
||||
var policy *policyv1alpha1.PropagationPolicy
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
deployment = testhelper.NewDeployment(testNamespace, deploymentNamePrefix+rand.String(RandomStrLength))
|
||||
policy = testhelper.NewPropagationPolicy(deployment.Namespace, deployment.Name, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinities: []policyv1alpha1.ClusterAffinityTerm{{
|
||||
AffinityName: "group1",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member1"}},
|
||||
}},
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreatePropagationPolicy(karmadaClient, policy)
|
||||
framework.CreateDeployment(kubeClient, deployment)
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name)
|
||||
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.It("propagate deployment and then update the cluster label", func() {
|
||||
// 1. wait for deployment present on member1 cluster
|
||||
framework.WaitDeploymentPresentOnClusterFitWith("member1", deployment.Namespace, deployment.Name, func(deployment *appsv1.Deployment) bool { return true })
|
||||
|
||||
// 2. update policy placement with clusterAffinities
|
||||
policy.Spec.Placement.ClusterAffinity = &policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member2"}}
|
||||
policy.Spec.Placement.ClusterAffinities = nil
|
||||
framework.UpdatePropagationPolicyWithSpec(karmadaClient, policy.Namespace, policy.Name, policy.Spec)
|
||||
|
||||
// 3. wait for deployment present on member2 cluster
|
||||
framework.WaitDeploymentPresentOnClusterFitWith("member2", deployment.Namespace, deployment.Name, func(deployment *appsv1.Deployment) bool { return true })
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.When("[ClusterPropagationPolicy] replica scheduling type is Duplicated", func() {
|
||||
ginkgo.Context("schedule with multi clusterAffinity", func() {
|
||||
var policy *policyv1alpha1.ClusterPropagationPolicy
|
||||
var clusterRole *rbacv1.ClusterRole
|
||||
var member1LabelKey, member2LabelKey string
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
member1LabelKey = "member1-" + rand.String(RandomStrLength)
|
||||
member2LabelKey = "member2-" + rand.String(RandomStrLength)
|
||||
|
||||
clusterRole = testhelper.NewClusterRole(clusterRoleNamePrefix+rand.String(RandomStrLength), nil)
|
||||
policy = testhelper.NewClusterPropagationPolicy(clusterRole.Name, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: clusterRole.APIVersion,
|
||||
Kind: clusterRole.Kind,
|
||||
Name: clusterRole.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinities: []policyv1alpha1.ClusterAffinityTerm{
|
||||
{
|
||||
AffinityName: "group1",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{LabelSelector: &metav1.LabelSelector{MatchLabels: map[string]string{member1LabelKey: "ok"}}},
|
||||
},
|
||||
{
|
||||
AffinityName: "group2",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{LabelSelector: &metav1.LabelSelector{MatchLabels: map[string]string{member2LabelKey: "ok"}}},
|
||||
},
|
||||
{
|
||||
AffinityName: "group3",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{LabelSelector: &metav1.LabelSelector{MatchLabels: map[string]string{"no-exist-cluster": "ok"}}},
|
||||
},
|
||||
{
|
||||
AffinityName: "group4",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member1"}},
|
||||
},
|
||||
}})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.UpdateClusterLabels(karmadaClient, "member1", map[string]string{member1LabelKey: "ok"})
|
||||
framework.UpdateClusterLabels(karmadaClient, "member2", map[string]string{member2LabelKey: "ok"})
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.DeleteClusterLabels(karmadaClient, "member1", map[string]string{member1LabelKey: ""})
|
||||
framework.DeleteClusterLabels(karmadaClient, "member2", map[string]string{member2LabelKey: ""})
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreateClusterPropagationPolicy(karmadaClient, policy)
|
||||
framework.CreateClusterRole(kubeClient, clusterRole)
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.RemoveClusterPropagationPolicy(karmadaClient, policy.Name)
|
||||
framework.RemoveClusterRole(kubeClient, clusterRole.Name)
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.It("propagate clusterRole and then update the cluster label", func() {
|
||||
// 1. wait for clusterRole present on member1 cluster
|
||||
framework.WaitClusterRolePresentOnClusterFitWith("member1", clusterRole.Name, func(clusterRole *rbacv1.ClusterRole) bool { return true })
|
||||
|
||||
// 2. update member1 cluster label to make it's unmatched with the policy
|
||||
framework.UpdateClusterLabels(karmadaClient, "member1", map[string]string{member1LabelKey: "not-ok"})
|
||||
framework.WaitClusterRoleDisappearOnCluster("member1", clusterRole.Name)
|
||||
|
||||
// 3. wait for clusterRole present on member2 cluster
|
||||
framework.WaitClusterRolePresentOnClusterFitWith("member2", clusterRole.Name, func(clusterRole *rbacv1.ClusterRole) bool { return true })
|
||||
|
||||
// 4. update member2 cluster label to make it's unmatched with the policy
|
||||
framework.UpdateClusterLabels(karmadaClient, "member2", map[string]string{member2LabelKey: "not-ok"})
|
||||
framework.WaitClusterRoleDisappearOnCluster("member2", clusterRole.Name)
|
||||
|
||||
// 5. wait for deployment present on member1 cluster
|
||||
framework.WaitClusterRolePresentOnClusterFitWith("member1", clusterRole.Name, func(clusterRole *rbacv1.ClusterRole) bool { return true })
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.Context("schedule change from clusterAffinity to clusterAffinities", func() {
|
||||
var policy *policyv1alpha1.ClusterPropagationPolicy
|
||||
var clusterRole *rbacv1.ClusterRole
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
clusterRole = testhelper.NewClusterRole(clusterRoleNamePrefix+rand.String(RandomStrLength), nil)
|
||||
policy = testhelper.NewClusterPropagationPolicy(clusterRole.Name, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: clusterRole.APIVersion,
|
||||
Kind: clusterRole.Kind,
|
||||
Name: clusterRole.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinity: &policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member1"}},
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreateClusterPropagationPolicy(karmadaClient, policy)
|
||||
framework.CreateClusterRole(kubeClient, clusterRole)
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.RemoveClusterPropagationPolicy(karmadaClient, policy.Name)
|
||||
framework.RemoveClusterRole(kubeClient, clusterRole.Name)
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.It("propagate clusterRole and then update the cluster label", func() {
|
||||
// 1. wait for clusterRole present on member1 cluster
|
||||
framework.WaitClusterRolePresentOnClusterFitWith("member1", clusterRole.Name, func(clusterRole *rbacv1.ClusterRole) bool { return true })
|
||||
|
||||
// 2. update policy placement with clusterAffinities
|
||||
policy.Spec.Placement.ClusterAffinity = nil
|
||||
policy.Spec.Placement.ClusterAffinities = []policyv1alpha1.ClusterAffinityTerm{{
|
||||
AffinityName: "group1",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member2"}},
|
||||
}}
|
||||
framework.UpdateClusterPropagationPolicyWithSpec(karmadaClient, policy.Name, policy.Spec)
|
||||
|
||||
// 3. wait for clusterRole present on member2 cluster
|
||||
framework.WaitClusterRolePresentOnClusterFitWith("member2", clusterRole.Name, func(clusterRole *rbacv1.ClusterRole) bool { return true })
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.Context("schedule change from clusterAffinities to clusterAffinity", func() {
|
||||
var policy *policyv1alpha1.ClusterPropagationPolicy
|
||||
var clusterRole *rbacv1.ClusterRole
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
clusterRole = testhelper.NewClusterRole(clusterRoleNamePrefix+rand.String(RandomStrLength), nil)
|
||||
policy = testhelper.NewClusterPropagationPolicy(clusterRole.Name, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: clusterRole.APIVersion,
|
||||
Kind: clusterRole.Kind,
|
||||
Name: clusterRole.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinities: []policyv1alpha1.ClusterAffinityTerm{{
|
||||
AffinityName: "group1",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member1"}},
|
||||
}},
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreateClusterPropagationPolicy(karmadaClient, policy)
|
||||
framework.CreateClusterRole(kubeClient, clusterRole)
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.RemoveClusterPropagationPolicy(karmadaClient, policy.Name)
|
||||
framework.RemoveClusterRole(kubeClient, clusterRole.Name)
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.It("propagate clusterRole and then update the cluster label", func() {
|
||||
// 1. wait for clusterRole present on member1 cluster
|
||||
framework.WaitClusterRolePresentOnClusterFitWith("member1", clusterRole.Name, func(clusterRole *rbacv1.ClusterRole) bool { return true })
|
||||
|
||||
// 2. update policy placement with clusterAffinities
|
||||
policy.Spec.Placement.ClusterAffinity = &policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member2"}}
|
||||
policy.Spec.Placement.ClusterAffinities = nil
|
||||
framework.UpdateClusterPropagationPolicyWithSpec(karmadaClient, policy.Name, policy.Spec)
|
||||
|
||||
// 3. wait for clusterRole present on member2 cluster
|
||||
framework.WaitClusterRolePresentOnClusterFitWith("member2", clusterRole.Name, func(clusterRole *rbacv1.ClusterRole) bool { return true })
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
framework.SerialWhen("[Failover] member cluster become unReachable", func() {
|
||||
var deployment *appsv1.Deployment
|
||||
var policy *policyv1alpha1.PropagationPolicy
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
deployment = testhelper.NewDeployment(testNamespace, deploymentNamePrefix+rand.String(RandomStrLength))
|
||||
|
||||
policy = testhelper.NewPropagationPolicy(deployment.Namespace, deployment.Name, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterTolerations: []corev1.Toleration{
|
||||
*helper.NewNotReadyToleration(2),
|
||||
*helper.NewUnreachableToleration(2),
|
||||
},
|
||||
ClusterAffinities: []policyv1alpha1.ClusterAffinityTerm{
|
||||
{
|
||||
AffinityName: "group1",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member1"}},
|
||||
},
|
||||
{
|
||||
AffinityName: "group2",
|
||||
ClusterAffinity: policyv1alpha1.ClusterAffinity{ClusterNames: []string{"member2"}},
|
||||
}}})
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreatePropagationPolicy(karmadaClient, policy)
|
||||
framework.CreateDeployment(kubeClient, deployment)
|
||||
ginkgo.DeferCleanup(func() {
|
||||
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
|
||||
framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name)
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.It("deployment failover testing", func() {
|
||||
// 1. set cluster member1 condition status to false
|
||||
ginkgo.By("set cluster member1 condition status to false", func() {
|
||||
err := disableCluster(controlPlaneClient, "member1")
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
|
||||
framework.WaitClusterFitWith(controlPlaneClient, "member1", func(cluster *clusterv1alpha1.Cluster) bool {
|
||||
return helper.TaintExists(cluster.Spec.Taints, controllercluster.NotReadyTaintTemplate)
|
||||
})
|
||||
})
|
||||
|
||||
// 2. wait for deployment present on member2 cluster
|
||||
framework.WaitDeploymentPresentOnClusterFitWith("member2", deployment.Namespace, deployment.Name, func(deployment *appsv1.Deployment) bool { return true })
|
||||
|
||||
// 3. recover not ready cluster
|
||||
ginkgo.By("recover not ready cluster", func() {
|
||||
originalAPIEndpoint := getClusterAPIEndpoint("member1")
|
||||
err := recoverCluster(controlPlaneClient, "member1", originalAPIEndpoint)
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
|
||||
err = wait.PollImmediate(pollInterval, pollTimeout, func() (done bool, err error) {
|
||||
currentCluster, err := util.GetCluster(controlPlaneClient, "member1")
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
if !helper.TaintExists(currentCluster.Spec.Taints, controllercluster.NotReadyTaintTemplate) {
|
||||
fmt.Printf("cluster %s recovered\n", "member1")
|
||||
return true, nil
|
||||
}
|
||||
return false, nil
|
||||
})
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
})
|
|
@ -41,6 +41,18 @@ func PatchClusterPropagationPolicy(client karmada.Interface, name string, patch
|
|||
})
|
||||
}
|
||||
|
||||
// UpdateClusterPropagationPolicyWithSpec update PropagationSpec with karmada client.
|
||||
func UpdateClusterPropagationPolicyWithSpec(client karmada.Interface, name string, policySpec policyv1alpha1.PropagationSpec) {
|
||||
ginkgo.By(fmt.Sprintf("Updating ClusterPropagationPolicy(%s) spec", name), func() {
|
||||
newPolicy, err := client.PolicyV1alpha1().ClusterPropagationPolicies().Get(context.TODO(), name, metav1.GetOptions{})
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
|
||||
newPolicy.Spec = policySpec
|
||||
_, err = client.PolicyV1alpha1().ClusterPropagationPolicies().Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
})
|
||||
}
|
||||
|
||||
// UpdateClusterPropagationPolicy update ClusterPropagationPolicy resourceSelectors with karmada client.
|
||||
func UpdateClusterPropagationPolicy(client karmada.Interface, name string, resourceSelectors []policyv1alpha1.ResourceSelector) {
|
||||
ginkgo.By(fmt.Sprintf("Updating ClusterPropagationPolicy(%s)", name), func() {
|
||||
|
|
|
@ -41,14 +41,14 @@ func PatchPropagationPolicy(client karmada.Interface, namespace, name string, pa
|
|||
})
|
||||
}
|
||||
|
||||
// UpdatePropagationPolicy update PropagationPolicy resourceSelectors with karmada client.
|
||||
func UpdatePropagationPolicy(client karmada.Interface, namespace, name string, resourceSelectors []policyv1alpha1.ResourceSelector) {
|
||||
ginkgo.By(fmt.Sprintf("Updating PropagationPolicy(%s/%s)", namespace, name), func() {
|
||||
// UpdatePropagationPolicyWithSpec update PropagationSpec with karmada client.
|
||||
func UpdatePropagationPolicyWithSpec(client karmada.Interface, namespace, name string, policySpec policyv1alpha1.PropagationSpec) {
|
||||
ginkgo.By(fmt.Sprintf("Updating PropagationPolicy(%s/%s) spec", namespace, name), func() {
|
||||
newPolicy, err := client.PolicyV1alpha1().PropagationPolicies(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
|
||||
newPolicy.Spec.ResourceSelectors = resourceSelectors
|
||||
_, err = client.PolicyV1alpha1().PropagationPolicies(namespace).Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
|
||||
newPolicy.Spec = policySpec
|
||||
_, err = client.PolicyV1alpha1().PropagationPolicies(newPolicy.Namespace).Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
})
|
||||
}
|
||||
|
|
|
@ -895,7 +895,7 @@ var _ = ginkgo.Describe("[AdvancedPropagation] propagation testing", func() {
|
|||
})
|
||||
|
||||
ginkgo.It("add resourceSelectors item", func() {
|
||||
framework.UpdatePropagationPolicy(karmadaClient, policy.Namespace, policy.Name, []policyv1alpha1.ResourceSelector{
|
||||
policy.Spec.ResourceSelectors = []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment01.APIVersion,
|
||||
Kind: deployment01.Kind,
|
||||
|
@ -906,20 +906,24 @@ var _ = ginkgo.Describe("[AdvancedPropagation] propagation testing", func() {
|
|||
Kind: deployment02.Kind,
|
||||
Name: deployment02.Name,
|
||||
},
|
||||
})
|
||||
}
|
||||
framework.UpdatePropagationPolicyWithSpec(karmadaClient, policy.Namespace, policy.Name, policy.Spec)
|
||||
|
||||
framework.WaitDeploymentPresentOnClusterFitWith(targetMember, deployment02.Namespace, deployment02.Name,
|
||||
func(deployment *appsv1.Deployment) bool { return true })
|
||||
})
|
||||
|
||||
ginkgo.It("update resourceSelectors item", func() {
|
||||
framework.UpdatePropagationPolicy(karmadaClient, policy.Namespace, policy.Name, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment02.APIVersion,
|
||||
Kind: deployment02.Kind,
|
||||
Name: deployment02.Name,
|
||||
policySpec := policyv1alpha1.PropagationSpec{
|
||||
ResourceSelectors: []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment02.APIVersion,
|
||||
Kind: deployment02.Kind,
|
||||
Name: deployment02.Name,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
framework.UpdatePropagationPolicyWithSpec(karmadaClient, policy.Namespace, policy.Name, policySpec)
|
||||
|
||||
framework.WaitDeploymentPresentOnClusterFitWith(targetMember, deployment02.Namespace, deployment02.Name,
|
||||
func(deployment *appsv1.Deployment) bool { return true })
|
||||
|
|
Loading…
Reference in New Issue