Merge pull request #1126 from jameszhangyukun/e2e-overriderules
Add a e2e test for OverrideRules of OverridePolicy
This commit is contained in:
commit
5f23b655ed
|
@ -292,3 +292,305 @@ var _ = ginkgo.Describe("OverridePolicy with nil resourceSelectors", func() {
|
|||
|
||||
})
|
||||
})
|
||||
|
||||
var _ = ginkgo.Describe("[OverrideRules] apply overriders testing", func() {
|
||||
ginkgo.Context("Deployment override all images in container list", func() {
|
||||
deploymentNamespace := testNamespace
|
||||
deploymentName := deploymentNamePrefix + rand.String(RandomStrLength)
|
||||
propagationPolicyNamespace := testNamespace
|
||||
propagationPolicyName := deploymentName
|
||||
overridePolicyNamespace := testNamespace
|
||||
overridePolicyName := deploymentName
|
||||
|
||||
deployment := helper.NewDeployment(deploymentNamespace, deploymentName)
|
||||
propagationPolicy := helper.NewPropagationPolicy(propagationPolicyNamespace, propagationPolicyName, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinity: &policyv1alpha1.ClusterAffinity{
|
||||
ClusterNames: framework.ClusterNames(),
|
||||
},
|
||||
})
|
||||
overridePolicy := helper.NewOverridePolicyByOverrideRules(overridePolicyNamespace, overridePolicyName, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, []policyv1alpha1.RuleWithCluster{
|
||||
{
|
||||
TargetCluster: &policyv1alpha1.ClusterAffinity{
|
||||
ClusterNames: framework.ClusterNames(),
|
||||
},
|
||||
Overriders: policyv1alpha1.Overriders{
|
||||
ImageOverrider: []policyv1alpha1.ImageOverrider{
|
||||
{
|
||||
Component: "Registry",
|
||||
Operator: "replace",
|
||||
Value: "fictional.registry.us",
|
||||
},
|
||||
{
|
||||
Component: "Repository",
|
||||
Operator: "replace",
|
||||
Value: "busybox",
|
||||
},
|
||||
{
|
||||
Component: "Tag",
|
||||
Operator: "replace",
|
||||
Value: "1.0",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreatePropagationPolicy(karmadaClient, propagationPolicy)
|
||||
framework.CreateOverridePolicy(karmadaClient, overridePolicy)
|
||||
})
|
||||
|
||||
ginkgo.AfterEach(func() {
|
||||
framework.RemovePropagationPolicy(karmadaClient, propagationPolicy.Namespace, propagationPolicy.Name)
|
||||
framework.RemoveOverridePolicy(karmadaClient, overridePolicy.Namespace, overridePolicy.Name)
|
||||
})
|
||||
|
||||
ginkgo.It("deployment imageOverride testing", func() {
|
||||
framework.CreateDeployment(kubeClient, deployment)
|
||||
|
||||
klog.Infof("check if deployment present on member clusters have correct image value")
|
||||
framework.WaitDeploymentPresentOnClustersFitWith(framework.ClusterNames(), deployment.Namespace, deployment.Name,
|
||||
func(deployment *appsv1.Deployment) bool {
|
||||
for _, container := range deployment.Spec.Template.Spec.Containers {
|
||||
if container.Image != "fictional.registry.us/busybox:1.0" {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
ginkgo.Context("Pod override all images in container list", func() {
|
||||
podNamespace := testNamespace
|
||||
podName := podNamePrefix + rand.String(RandomStrLength)
|
||||
propagationPolicyNamespace := testNamespace
|
||||
propagationPolicyName := podName
|
||||
overridePolicyNamespace := testNamespace
|
||||
overridePolicyName := podName
|
||||
|
||||
pod := helper.NewPod(podNamespace, podName)
|
||||
propagationPolicy := helper.NewPropagationPolicy(propagationPolicyNamespace, propagationPolicyName, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: pod.APIVersion,
|
||||
Kind: pod.Kind,
|
||||
Name: pod.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinity: &policyv1alpha1.ClusterAffinity{
|
||||
ClusterNames: framework.ClusterNames(),
|
||||
},
|
||||
})
|
||||
overridePolicy := helper.NewOverridePolicyByOverrideRules(overridePolicyNamespace, overridePolicyName, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: pod.APIVersion,
|
||||
Kind: pod.Kind,
|
||||
Name: pod.Name,
|
||||
},
|
||||
}, []policyv1alpha1.RuleWithCluster{
|
||||
{
|
||||
TargetCluster: &policyv1alpha1.ClusterAffinity{
|
||||
ClusterNames: framework.ClusterNames(),
|
||||
},
|
||||
Overriders: policyv1alpha1.Overriders{
|
||||
ImageOverrider: []policyv1alpha1.ImageOverrider{
|
||||
{
|
||||
Component: "Registry",
|
||||
Operator: "replace",
|
||||
Value: "fictional.registry.us",
|
||||
},
|
||||
{
|
||||
Component: "Repository",
|
||||
Operator: "replace",
|
||||
Value: "busybox",
|
||||
},
|
||||
{
|
||||
Component: "Tag",
|
||||
Operator: "replace",
|
||||
Value: "1.0",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreatePropagationPolicy(karmadaClient, propagationPolicy)
|
||||
framework.CreateOverridePolicy(karmadaClient, overridePolicy)
|
||||
})
|
||||
|
||||
ginkgo.AfterEach(func() {
|
||||
framework.RemovePropagationPolicy(karmadaClient, propagationPolicy.Namespace, propagationPolicy.Name)
|
||||
framework.RemoveOverridePolicy(karmadaClient, overridePolicy.Namespace, overridePolicy.Name)
|
||||
})
|
||||
|
||||
ginkgo.It("pod imageOverride testing", func() {
|
||||
framework.CreatePod(kubeClient, pod)
|
||||
|
||||
klog.Infof("check if pod present on member clusters have correct image value")
|
||||
framework.WaitPodPresentOnClustersFitWith(framework.ClusterNames(), pod.Namespace, pod.Name, func(pod *corev1.Pod) bool {
|
||||
for _, container := range pod.Spec.Containers {
|
||||
if container.Image != "fictional.registry.us/busybox:1.0" {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
framework.RemovePod(kubeClient, pod.Namespace, pod.Name)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
ginkgo.Context("Deployment override specific images in container list", func() {
|
||||
deploymentNamespace := testNamespace
|
||||
deploymentName := deploymentNamePrefix + rand.String(RandomStrLength)
|
||||
propagationPolicyNamespace := testNamespace
|
||||
propagationPolicyName := deploymentName
|
||||
overridePolicyNamespace := testNamespace
|
||||
overridePolicyName := deploymentName
|
||||
|
||||
deployment := helper.NewDeployment(deploymentNamespace, deploymentName)
|
||||
propagationPolicy := helper.NewPropagationPolicy(propagationPolicyNamespace, propagationPolicyName, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinity: &policyv1alpha1.ClusterAffinity{
|
||||
ClusterNames: framework.ClusterNames(),
|
||||
},
|
||||
})
|
||||
overridePolicy := helper.NewOverridePolicyByOverrideRules(overridePolicyNamespace, overridePolicyName, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, []policyv1alpha1.RuleWithCluster{
|
||||
{
|
||||
TargetCluster: &policyv1alpha1.ClusterAffinity{
|
||||
ClusterNames: framework.ClusterNames(),
|
||||
},
|
||||
Overriders: policyv1alpha1.Overriders{
|
||||
ImageOverrider: []policyv1alpha1.ImageOverrider{
|
||||
{
|
||||
Predicate: &policyv1alpha1.ImagePredicate{
|
||||
Path: "/spec/template/spec/containers/0/image",
|
||||
},
|
||||
Component: "Registry",
|
||||
Operator: "replace",
|
||||
Value: "fictional.registry.us",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreatePropagationPolicy(karmadaClient, propagationPolicy)
|
||||
framework.CreateOverridePolicy(karmadaClient, overridePolicy)
|
||||
})
|
||||
|
||||
ginkgo.AfterEach(func() {
|
||||
framework.RemovePropagationPolicy(karmadaClient, propagationPolicy.Namespace, propagationPolicy.Name)
|
||||
framework.RemoveOverridePolicy(karmadaClient, overridePolicy.Namespace, overridePolicy.Name)
|
||||
})
|
||||
|
||||
ginkgo.It("deployment imageOverride testing", func() {
|
||||
framework.CreateDeployment(kubeClient, deployment)
|
||||
|
||||
klog.Infof("check if deployment present on member clusters have correct image value")
|
||||
framework.WaitDeploymentPresentOnClustersFitWith(framework.ClusterNames(), deployment.Namespace, deployment.Name,
|
||||
func(deployment *appsv1.Deployment) bool {
|
||||
return deployment.Spec.Template.Spec.Containers[0].Image == "fictional.registry.us/nginx:1.19.0"
|
||||
})
|
||||
|
||||
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
|
||||
})
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
var _ = ginkgo.Describe("OverrideRules with nil resourceSelectors", func() {
|
||||
ginkgo.Context("Deployment override testing", func() {
|
||||
deploymentNamespace := testNamespace
|
||||
deploymentName := deploymentNamePrefix + rand.String(RandomStrLength)
|
||||
propagationPolicyNamespace := testNamespace
|
||||
propagationPolicyName := deploymentName
|
||||
overridePolicyNamespace := testNamespace
|
||||
overridePolicyName := deploymentName
|
||||
|
||||
deployment := helper.NewDeployment(deploymentNamespace, deploymentName)
|
||||
propagationPolicy := helper.NewPropagationPolicy(propagationPolicyNamespace, propagationPolicyName, []policyv1alpha1.ResourceSelector{
|
||||
{
|
||||
APIVersion: deployment.APIVersion,
|
||||
Kind: deployment.Kind,
|
||||
Name: deployment.Name,
|
||||
},
|
||||
}, policyv1alpha1.Placement{
|
||||
ClusterAffinity: &policyv1alpha1.ClusterAffinity{
|
||||
ClusterNames: framework.ClusterNames(),
|
||||
},
|
||||
})
|
||||
|
||||
overridePolicy := helper.NewOverridePolicyByOverrideRules(overridePolicyNamespace, overridePolicyName, nil, []policyv1alpha1.RuleWithCluster{
|
||||
{
|
||||
TargetCluster: &policyv1alpha1.ClusterAffinity{
|
||||
ClusterNames: framework.ClusterNames(),
|
||||
},
|
||||
Overriders: policyv1alpha1.Overriders{
|
||||
ImageOverrider: []policyv1alpha1.ImageOverrider{
|
||||
{
|
||||
Predicate: &policyv1alpha1.ImagePredicate{
|
||||
Path: "/spec/template/spec/containers/0/image",
|
||||
},
|
||||
Component: "Registry",
|
||||
Operator: "replace",
|
||||
Value: "fictional.registry.us",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
framework.CreatePropagationPolicy(karmadaClient, propagationPolicy)
|
||||
framework.CreateOverridePolicy(karmadaClient, overridePolicy)
|
||||
})
|
||||
|
||||
ginkgo.AfterEach(func() {
|
||||
framework.RemovePropagationPolicy(karmadaClient, propagationPolicy.Namespace, propagationPolicy.Name)
|
||||
framework.RemoveOverridePolicy(karmadaClient, overridePolicy.Namespace, overridePolicy.Name)
|
||||
})
|
||||
|
||||
ginkgo.It("deployment imageOverride testing", func() {
|
||||
framework.CreateDeployment(kubeClient, deployment)
|
||||
|
||||
klog.Infof("check if deployment present on member clusters have correct image value")
|
||||
framework.WaitDeploymentPresentOnClustersFitWith(framework.ClusterNames(), deployment.Namespace, deployment.Name,
|
||||
func(deployment *appsv1.Deployment) bool {
|
||||
return deployment.Spec.Template.Spec.Containers[0].Image == "fictional.registry.us/nginx:1.19.0"
|
||||
})
|
||||
|
||||
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
|
||||
})
|
||||
|
||||
})
|
||||
})
|
||||
|
|
|
@ -47,3 +47,17 @@ func NewOverridePolicy(namespace, policyName string, rsSelectors []policyv1alpha
|
|||
},
|
||||
}
|
||||
}
|
||||
|
||||
// NewOverridePolicyByOverrideRules will build a OverridePolicy object by OverrideRules
|
||||
func NewOverridePolicyByOverrideRules(namespace, policyName string, rsSelectors []policyv1alpha1.ResourceSelector, overrideRules []policyv1alpha1.RuleWithCluster) *policyv1alpha1.OverridePolicy {
|
||||
return &policyv1alpha1.OverridePolicy{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Namespace: namespace,
|
||||
Name: policyName,
|
||||
},
|
||||
Spec: policyv1alpha1.OverrideSpec{
|
||||
ResourceSelectors: rsSelectors,
|
||||
OverrideRules: overrideRules,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue