Skip to content

Commit

Permalink
ibu cnf: add 'rollback after a failed upgrade' test
Browse files Browse the repository at this point in the history
  • Loading branch information
mpmaruthu committed Jun 6, 2024
1 parent 7a0a7b3 commit 6f1076a
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ const (
LabelPrepAbortFlow = "ibu-prep-abort"
// LabelUpgradeAbortFlow represents upgrade-abort label that can be used for test cases selection.
LabelUpgradeAbortFlow = "ibu-upgrade-abort"
// LabelRollbackFlow represents rollback label that can be used for test cases selection.
LabelRollbackFlow = "ibu-rollback"

// IbuCguNamespace is the namespace where IBU CGUs created on target hub.
IbuCguNamespace = "default"
Expand All @@ -35,4 +37,9 @@ const (

// IbuPolicyNamespace is the namespace where IBU policies created on target hub.
IbuPolicyNamespace = "ztp-group"

// RollbackCguName is the name of rollback cgu.
RollbackCguName = "cgu-ibu-rollback"
// RollbackPolicyName is the name of managed policy for ibu rollback stage validation.
RollbackPolicyName = "group-ibu-rollback-stage-policy"
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
package upgrade_test

import (
"time"

"k8s.io/utils/ptr"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/openshift-kni/eco-goinfra/pkg/cgu"
"github.com/openshift-kni/eco-goinfra/pkg/ocm"
"github.com/openshift-kni/eco-goinfra/pkg/reportxml"
"github.com/openshift-kni/eco-gotests/tests/lca/imagebasedupgrade/cnf/internal/cnfclusterinfo"
"github.com/openshift-kni/eco-gotests/tests/lca/imagebasedupgrade/cnf/internal/cnfhelper"
"github.com/openshift-kni/eco-gotests/tests/lca/imagebasedupgrade/cnf/internal/cnfinittools"
"github.com/openshift-kni/eco-gotests/tests/lca/imagebasedupgrade/cnf/upgrade-talm/internal/tsparams"

policiesv1 "open-cluster-management.io/governance-policy-propagator/api/v1"
)

var _ = Describe(
"Validating rollback stage after a failed upgrade",
Label(tsparams.LabelRollbackFlow), func() {

BeforeEach(func() {
By("Fetching target sno cluster name", func() {
err := cnfclusterinfo.PreUpgradeClusterInfo.SaveClusterInfo()
Expect(err).ToNot(HaveOccurred(), "Failed to extract target sno cluster name")

tsparams.TargetSnoClusterName = cnfclusterinfo.PreUpgradeClusterInfo.Name
})
})

AfterEach(func() {
// Deleting CGUs created for validating the test case.
By("Deleting pre-prep cgu created on target hub cluster", func() {
err := cnfhelper.DeleteIbuTestCguOnTargetHub(cnfinittools.TargetHubAPIClient, tsparams.PrePrepCguName,
tsparams.IbuCguNamespace)
Expect(err).ToNot(HaveOccurred(), "Failed to delete pre-prep cgu on target hub cluster")
})

By("Deleting prep cgu created on target hub cluster", func() {
err := cnfhelper.DeleteIbuTestCguOnTargetHub(cnfinittools.TargetHubAPIClient, tsparams.PrepCguName,
tsparams.IbuCguNamespace)
Expect(err).ToNot(HaveOccurred(), "Failed to delete prep cgu on target hub cluster")
})

By("Deleting upgrade cgu created on target hub cluster", func() {
err := cnfhelper.DeleteIbuTestCguOnTargetHub(cnfinittools.TargetHubAPIClient, tsparams.UpgradeCguName,
tsparams.IbuCguNamespace)
Expect(err).ToNot(HaveOccurred(), "Failed to delete upgrade cgu on target hub cluster")
})

By("Deleting rollback cgu created on target hub cluster", func() {
err := cnfhelper.DeleteIbuTestCguOnTargetHub(cnfinittools.TargetHubAPIClient, tsparams.RollbackCguName,
tsparams.IbuCguNamespace)
Expect(err).ToNot(HaveOccurred(), "Failed to delete rollback cgu on target hub cluster")
})
})

It("Rollback after failed upgrade", reportxml.ID("69054"), func() {
By("Creating, enabling ibu pre-prep CGU and waiting for CGU status to report completed", func() {
prePrepCguBuilder := cgu.NewCguBuilder(cnfinittools.TargetHubAPIClient,
tsparams.PrePrepCguName, tsparams.IbuCguNamespace, 1).
WithCluster(tsparams.TargetSnoClusterName).
WithManagedPolicy(tsparams.PrePrepPolicyName).
WithCanary(tsparams.TargetSnoClusterName)
prePrepCguBuilder.Definition.Spec.Enable = ptr.To(true)

prePrepCguBuilder, err := prePrepCguBuilder.Create()
Expect(err).ToNot(HaveOccurred(), "Failed to create pre-prep CGU.")

_, err = prePrepCguBuilder.WaitUntilComplete(10 * time.Minute)
Expect(err).ToNot(HaveOccurred(), "Pre-prep CGU did not complete in time.")
})

By("Creating, enabling ibu prep CGU and waiting for CGU status to report completed", func() {
prepCguBuilder := cgu.NewCguBuilder(cnfinittools.TargetHubAPIClient,
tsparams.PrepCguName, tsparams.IbuCguNamespace, 1).
WithCluster(tsparams.TargetSnoClusterName).
WithManagedPolicy(tsparams.PrepPolicyName).
WithCanary(tsparams.TargetSnoClusterName)
prepCguBuilder.Definition.Spec.Enable = ptr.To(true)

prepCguBuilder, err := prepCguBuilder.Create()
Expect(err).ToNot(HaveOccurred(), "Failed to create prep CGU.")

_, err = prepCguBuilder.WaitUntilComplete(25 * time.Minute)
Expect(err).ToNot(HaveOccurred(), "Prep CGU did not complete in time.")
})

By("Creating, and enabling ibu upgrade CGU", func() {
upgradeCguBuilder := cgu.NewCguBuilder(cnfinittools.TargetHubAPIClient,
tsparams.UpgradeCguName, tsparams.IbuCguNamespace, 1).
WithCluster(tsparams.TargetSnoClusterName).
WithManagedPolicy(tsparams.UpgradePolicyName).
WithCanary(tsparams.TargetSnoClusterName)
upgradeCguBuilder.Definition.Spec.Enable = ptr.To(true)

_, err := upgradeCguBuilder.Create()
Expect(err).ToNot(HaveOccurred(), "Failed to create upgrade CGU.")
})

By("Performing rollback after a failed upgrade", func() {
upgradeStagePolicyStatusCheck, err := ocm.PullPolicy(cnfinittools.TargetHubAPIClient,
tsparams.UpgradePolicyName,
tsparams.IbuPolicyNamespace)
Expect(err).ToNot(HaveOccurred(), "Failed to pull upgrade stage policy")

err = upgradeStagePolicyStatusCheck.WaitUntilComplianceState(policiesv1.Compliant, 40*time.Minute)
Expect(err).To(HaveOccurred(), "Upgrade-stage-policy failed to report Compliant")

By("Creating, enabling rollback CGU and waiting for CGU status to report completed", func() {
rollbackCguBuilder := cgu.NewCguBuilder(cnfinittools.TargetHubAPIClient,
tsparams.RollbackCguName, tsparams.IbuCguNamespace, 1).
WithCluster(tsparams.TargetSnoClusterName).
WithManagedPolicy(tsparams.RollbackPolicyName).
WithCanary(tsparams.TargetSnoClusterName)
rollbackCguBuilder.Definition.Spec.Enable = ptr.To(true)

rollbackCguBuilder, err = rollbackCguBuilder.Create()
Expect(err).ToNot(HaveOccurred(), "Failed to create rollback CGU.")

_, err = rollbackCguBuilder.WaitUntilComplete(40 * time.Minute)
Expect(err).ToNot(HaveOccurred(), "Rollback CGU did not complete in time.")
})
})
})
})

0 comments on commit 6f1076a

Please sign in to comment.