Skip to content

Commit db6fe42

Browse files
Merge pull request #3063 from yuwang-RH/fix1029
OCM-19917 | ci: Use 'rosa list upgrade' to find the y-stream upgrading version for e2e test
2 parents a9319e6 + 5f21d22 commit db6fe42

File tree

2 files changed

+52
-60
lines changed

2 files changed

+52
-60
lines changed

tests/e2e/test_rosacli_upgrade.go

Lines changed: 29 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -312,24 +312,22 @@ var _ = Describe("Cluster Upgrade testing",
312312
}
313313

314314
By("Check the cluster upgrade version to decide if skip this case")
315-
jsonData, err := clusterService.GetJSONClusterDescription(clusterID)
316-
Expect(err).To(BeNil())
317-
clusterVersion := jsonData.DigString("version", "raw_id")
318315

319-
clusterVersionList, err := versionService.ListAndReflectVersions(profile.ChannelGroup, false)
316+
output, err := upgradeService.ListUpgrades("-c", clusterID)
320317
Expect(err).To(BeNil())
321-
upgradingVersion, _, err := clusterVersionList.FindUpperYStreamVersion(
322-
profile.ChannelGroup, clusterVersion,
323-
)
318+
upgradeVersionList, err := upgradeService.ReflectUpgradeVersionList(output)
324319
Expect(err).To(BeNil())
320+
Expect(len(upgradeVersionList.UpgradeVersions)).To(BeNumerically(">", 0), "Expected at least one upgrade version to be available")
321+
upgradingVersion := upgradeVersionList.UpgradeVersions[0].Version
322+
325323
if upgradingVersion == "" {
326324
Skip("Skip this case as the cluster is being upgraded.")
327325
}
328326

329327
By("Upgrade cluster")
330328
scheduledDate := time.Now().Format("2006-01-02")
331329
scheduledTime := time.Now().Add(200 * time.Minute).UTC().Format("15:04")
332-
output, err := upgradeService.Upgrade(
330+
output, err = upgradeService.Upgrade(
333331
"-c", clusterID,
334332
"--version", upgradingVersion,
335333
"--schedule-date", scheduledDate,
@@ -342,24 +340,19 @@ var _ = Describe("Cluster Upgrade testing",
342340
By("Check upgrade state")
343341
err = upgradeService.WaitForUpgradeToState(clusterID, constants.Scheduled, 4)
344342
Expect(err).To(BeNil())
345-
err = upgradeService.WaitForUpgradeToState(clusterID, constants.Started, 70)
346-
Expect(err).To(BeNil())
347343
})
348344

349345
It("to upgrade shared VPC cluster across Y stream - [id:67168]", labels.High, labels.Runtime.Upgrade, func() {
350346
By("Check the cluster version and whether it is a shared VPC cluster to decide if skip this case")
351347
if profile.Version == constants.YStreamPreviousVersion && profile.ClusterConfig.SharedVPC {
352348
By("Check the cluster upgrade version to decide if skip this case")
353-
jsonData, err := clusterService.GetJSONClusterDescription(clusterID)
349+
output, err := upgradeService.ListUpgrades("-c", clusterID)
354350
Expect(err).To(BeNil())
355-
clusterVersion := jsonData.DigString("version", "raw_id")
356-
357-
clusterVersionList, err := versionService.ListAndReflectVersions(profile.ChannelGroup, false)
358-
Expect(err).To(BeNil())
359-
upgradingVersion, _, err := clusterVersionList.FindUpperYStreamVersion(
360-
profile.ChannelGroup, clusterVersion,
361-
)
351+
upgradeVersionList, err := upgradeService.ReflectUpgradeVersionList(output)
362352
Expect(err).To(BeNil())
353+
Expect(len(upgradeVersionList.UpgradeVersions)).To(BeNumerically(">", 0), "Expected at least one upgrade version to be available")
354+
upgradingVersion := upgradeVersionList.UpgradeVersions[0].Version
355+
363356
if upgradingVersion == "" {
364357
Skip("Skip this case as no available upgrade version.")
365358
}
@@ -368,7 +361,7 @@ var _ = Describe("Cluster Upgrade testing",
368361
scheduledDate := time.Now().Format("2006-01-02")
369362
scheduledTime := time.Now().Add(10 * time.Minute).UTC().Format("15:04")
370363

371-
output, err := upgradeService.Upgrade(
364+
output, err = upgradeService.Upgrade(
372365
"-c", clusterID,
373366
"--version", upgradingVersion,
374367
"--schedule-date", scheduledDate,
@@ -408,6 +401,7 @@ var _ = Describe("Cluster Upgrade testing",
408401

409402
clusterVersionList, err := versionService.ListAndReflectVersions(profile.ChannelGroup, false)
410403
Expect(err).To(BeNil())
404+
411405
if profile.ClusterConfig.HCP {
412406
By("Find HCP cluster upgrade version")
413407
hcpUpgradingVersion, _, err := clusterVersionList.FindUpperYStreamVersion(
@@ -434,6 +428,7 @@ var _ = Describe("Cluster Upgrade testing",
434428
classicUpgradingVersion, classicUpgradingMajorVersion, err := clusterVersionList.FindUpperYStreamVersion(
435429
profile.ChannelGroup, clusterVersion)
436430
Expect(err).To(BeNil())
431+
437432
if classicUpgradingVersion == "" || classicUpgradingMajorVersion == "" {
438433
Skip("Skip this case as no version available for upgrade")
439434
}
@@ -600,6 +595,8 @@ var _ = Describe("Cluster Upgrade testing",
600595
Expect(err).To(BeNil())
601596

602597
By("Check account role version")
598+
clusterVersionList, err := versionService.ListAndReflectVersions(profile.ChannelGroup, false)
599+
Expect(err).To(BeNil())
603600
expectedPolicyVersion, err := clusterVersionList.FindDefaultUpdatedPolicyVersion()
604601
Expect(err).To(BeNil())
605602
for _, accArn := range accRoles {
@@ -643,9 +640,7 @@ var _ = Describe("Describe/List rosa upgrade",
643640
defer GinkgoRecover()
644641
var (
645642
rosaClient *rosacli.Client
646-
clusterService rosacli.ClusterService
647643
upgradeService rosacli.UpgradeService
648-
versionService rosacli.VersionService
649644
clusterID string
650645
clusterConfig *config.ClusterConfig
651646
err error
@@ -658,9 +653,7 @@ var _ = Describe("Describe/List rosa upgrade",
658653

659654
By("Init the client")
660655
rosaClient = rosacli.NewClient()
661-
clusterService = rosaClient.Cluster
662656
upgradeService = rosaClient.Upgrade
663-
versionService = rosaClient.Version
664657

665658
By("Load the profile")
666659
clusterConfig, err = config.ParseClusterProfile()
@@ -704,20 +697,13 @@ var _ = Describe("Describe/List rosa upgrade",
704697
scheduledDate := time.Now().Format("2006-01-02")
705698
scheduledTime := time.Now().Add(20 * time.Minute).UTC().Format("15:04")
706699

707-
jsonData, err := clusterService.GetJSONClusterDescription(clusterID)
708-
Expect(err).To(BeNil())
709-
clusterVersion := jsonData.DigString("version", "raw_id")
710-
711700
By("Find upper Y stream version")
712-
clusterVersionList, err := versionService.ListAndReflectVersions(
713-
clusterConfig.Version.ChannelGroup, false,
714-
)
701+
output, err := upgradeService.ListUpgrades("-c", clusterID)
715702
Expect(err).To(BeNil())
716-
upgradingVersion, _, err := clusterVersionList.FindUpperYStreamVersion(
717-
clusterConfig.Version.ChannelGroup, clusterVersion,
718-
)
703+
upgradeVersionList, err := upgradeService.ReflectUpgradeVersionList(output)
719704
Expect(err).To(BeNil())
720-
Expect(upgradingVersion).NotTo(BeEmpty())
705+
Expect(len(upgradeVersionList.UpgradeVersions)).To(BeNumerically(">", 0), "Expected at least one upgrade version to be available")
706+
upgradingVersion := upgradeVersionList.UpgradeVersions[0].Version
721707

722708
By("Upgrade cluster")
723709
if clusterConfig.Sts {
@@ -772,23 +758,16 @@ var _ = Describe("Describe/List rosa upgrade",
772758
"testing")
773759
}
774760

775-
jsonData, err := clusterService.GetJSONClusterDescription(clusterID)
776-
Expect(err).To(BeNil())
777-
clusterVersion := jsonData.DigString("version", "raw_id")
778-
779761
By("Find upper Y stream version")
780-
clusterVersionList, err := versionService.ListAndReflectVersions(
781-
clusterConfig.Version.ChannelGroup, false,
782-
)
762+
output, err := upgradeService.ListUpgrades("-c", clusterID)
783763
Expect(err).To(BeNil())
784-
upgradingVersion, _, err := clusterVersionList.FindUpperYStreamVersion(
785-
clusterConfig.Version.ChannelGroup, clusterVersion,
786-
)
764+
upgradeVersionList, err := upgradeService.ReflectUpgradeVersionList(output)
787765
Expect(err).To(BeNil())
788-
Expect(upgradingVersion).NotTo(BeEmpty())
766+
Expect(len(upgradeVersionList.UpgradeVersions)).To(BeNumerically(">", 0), "Expected at least one upgrade version to be available")
767+
upgradingVersion := upgradeVersionList.UpgradeVersions[0].Version
789768

790769
By("Check the help message of 'rosa describe upgrade -h'")
791-
output, err := upgradeService.ListUpgrades("-c", clusterID, "-h")
770+
output, err = upgradeService.ListUpgrades("-c", clusterID, "-h")
792771
Expect(err).To(BeNil())
793772
Expect(output.String()).To(ContainSubstring("rosa list upgrades [flags]"))
794773
Expect(output.String()).To(ContainSubstring("-c, --cluster"))
@@ -1127,9 +1106,7 @@ var _ = Describe("Create cluster upgrade policy validation", labels.Feature.Clus
11271106
var (
11281107
clusterID string
11291108
rosaClient *rosacli.Client
1130-
clusterService rosacli.ClusterService
11311109
upgradeService rosacli.UpgradeService
1132-
versionService rosacli.VersionService
11331110
profile *handler.Profile
11341111
)
11351112

@@ -1140,9 +1117,7 @@ var _ = Describe("Create cluster upgrade policy validation", labels.Feature.Clus
11401117

11411118
By("Init the client")
11421119
rosaClient = rosacli.NewClient()
1143-
clusterService = rosaClient.Cluster
11441120
upgradeService = rosaClient.Upgrade
1145-
versionService = rosaClient.Version
11461121

11471122
By("Load the profile")
11481123
profile = handler.LoadProfileYamlFileByENV()
@@ -1170,18 +1145,13 @@ var _ = Describe("Create cluster upgrade policy validation", labels.Feature.Clus
11701145
scheduledDate := time.Now().Format("2006-01-02")
11711146
scheduledTime := time.Now().Add(50 * time.Minute).UTC().Format("15:04")
11721147

1173-
jsonData, err := clusterService.GetJSONClusterDescription(clusterID)
1174-
Expect(err).To(BeNil())
1175-
clusterVersion := jsonData.DigString("version", "raw_id")
1176-
11771148
By("Find upper Y stream version")
1178-
clusterVersionList, err := versionService.ListAndReflectVersions(profile.ChannelGroup, false)
1149+
output, err := upgradeService.ListUpgrades("-c", clusterID)
11791150
Expect(err).To(BeNil())
1180-
upgradingVersion, _, err := clusterVersionList.FindUpperYStreamVersion(
1181-
profile.ChannelGroup, clusterVersion,
1182-
)
1151+
upgradeVersionList, err := upgradeService.ReflectUpgradeVersionList(output)
11831152
Expect(err).To(BeNil())
1184-
Expect(upgradingVersion).NotTo(BeEmpty())
1153+
Expect(len(upgradeVersionList.UpgradeVersions)).To(BeNumerically(">", 0), "Expected at least one upgrade version to be available")
1154+
upgradingVersion := upgradeVersionList.UpgradeVersions[0].Version
11851155

11861156
if profile.ClusterConfig.STS {
11871157
By("Upgrade cluster with invalid version")
@@ -1342,6 +1312,5 @@ var _ = Describe("Create cluster upgrade policy validation", labels.Feature.Clus
13421312
Expect(err).NotTo(HaveOccurred())
13431313
Expect(output.String()).To(MatchRegexp("There is already a (pending|scheduled) upgrade"))
13441314
}
1345-
13461315
})
13471316
})

tests/utils/exec/rosacli/upgrade_service.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type UpgradeService interface {
1414
ResourcesCleaner
1515

1616
ListUpgrades(flags ...string) (bytes.Buffer, error)
17+
ReflectUpgradeVersionList(result bytes.Buffer) (upgradeVersionList UpgradeVersionList, err error)
1718
DescribeUpgrade(clusterID string, flags ...string) (bytes.Buffer, error)
1819
DescribeUpgradeAndReflect(clusterID string) (*UpgradeDescription, error)
1920
DeleteUpgrade(flags ...string) (bytes.Buffer, error)
@@ -47,13 +48,35 @@ type UpgradeDescription struct {
4748
EnableMinorVersionUpgrades string `yaml:"Enable minor version upgrades,omitempty"`
4849
}
4950

51+
// Struct of `rosa list upgrade`
52+
type UpgradeVersion struct {
53+
Version string `json:"VERSION,omitempty"`
54+
Notes string `json:"NOTES,omitempty"`
55+
}
56+
type UpgradeVersionList struct {
57+
UpgradeVersions []UpgradeVersion `json:"UpgradeVersions,omitempty"`
58+
}
59+
5060
func (u *upgradeService) ListUpgrades(flags ...string) (bytes.Buffer, error) {
5161
describe := u.client.Runner.
5262
Cmd("list", "upgrade").
5363
CmdFlags(flags...)
5464
return describe.Run()
5565
}
5666

67+
func (u *upgradeService) ReflectUpgradeVersionList(result bytes.Buffer) (upgradeVersionList UpgradeVersionList, err error) {
68+
upgradeVersionList = UpgradeVersionList{}
69+
theMap := u.client.Parser.TableData.Input(result).Parse().Output()
70+
for _, upgradeVersionItem := range theMap {
71+
upgradeVersion := &UpgradeVersion{}
72+
err = MapStructure(upgradeVersionItem, upgradeVersion)
73+
if err != nil {
74+
return
75+
}
76+
upgradeVersionList.UpgradeVersions = append(upgradeVersionList.UpgradeVersions, *upgradeVersion)
77+
}
78+
return upgradeVersionList, err
79+
}
5780
func (u *upgradeService) DescribeUpgrade(clusterID string, flags ...string) (bytes.Buffer, error) {
5881
combflags := append([]string{"-c", clusterID}, flags...)
5982
describe := u.client.Runner.

0 commit comments

Comments
 (0)