support multiple placementdecisions

Signed-off-by: Yang Le <yangle@redhat.com>
This commit is contained in:
Yang Le
2021-06-07 18:15:52 +08:00
parent 598002e18f
commit 577ee83394
3 changed files with 289 additions and 29 deletions

View File

@@ -19,8 +19,9 @@ import (
)
const (
clusterSetLabel = "cluster.open-cluster-management.io/clusterset"
placementLabel = "cluster.open-cluster-management.io/placement"
clusterSetLabel = "cluster.open-cluster-management.io/clusterset"
placementLabel = "cluster.open-cluster-management.io/placement"
maxNumOfClusterDecisions = 100
)
var _ = ginkgo.Describe("Placement", func() {
@@ -98,6 +99,10 @@ var _ = ginkgo.Describe("Placement", func() {
assertNumberOfDecisions := func(placementName string, desiredNOD int) {
ginkgo.By("Check the number of decisions in placementdecisions")
desiredNOPD := desiredNOD / maxNumOfClusterDecisions
if desiredNOD%maxNumOfClusterDecisions != 0 {
desiredNOPD++
}
gomega.Eventually(func() bool {
pdl, err := clusterClient.ClusterV1alpha1().PlacementDecisions(namespace).List(context.Background(), metav1.ListOptions{
LabelSelector: placementLabel + "=" + placementName,
@@ -105,7 +110,7 @@ var _ = ginkgo.Describe("Placement", func() {
if err != nil {
return false
}
if len(pdl.Items) == 0 {
if len(pdl.Items) != desiredNOPD {
return false
}
actualNOD := 0
@@ -341,6 +346,16 @@ var _ = ginkgo.Describe("Placement", func() {
assertNumberOfDecisions(placementName, nod)
assertPlacementStatus(placementName, nod, false)
})
ginkgo.It("Should create multiple placementdecisions once scheduled", func() {
assertBindingClusterSet(clusterSet1Name)
assertCreatingClusters(clusterSet1Name, 101)
assertCreatingPlacement(placementName, nil, 101)
nod := 101
assertNumberOfDecisions(placementName, nod)
assertPlacementStatus(placementName, nod, true)
})
})
})