Skip to content

Commit 686b1ed

Browse files
Merge pull request #99 from rh-amarin/HYPERFLEET-1064
HYPERFLEET-1064 - feat: e2e test to use LastKnownReconciled
2 parents 7efc760 + 0b12f46 commit 686b1ed

10 files changed

Lines changed: 24 additions & 23 deletions

File tree

e2e/adapter/adapter_failover.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ var _ = ginkgo.Describe("[Suite: adapter-failures][negative] Adapter framework c
122122
"initial cluster conditions should have Reconciled=False")
123123

124124
hasAvailableFalse := h.HasResourceCondition(cluster.Status.Conditions,
125-
client.ConditionTypeAvailable, openapi.ResourceConditionStatusFalse)
125+
client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusFalse)
126126
g.Expect(hasAvailableFalse).To(BeTrue(),
127-
"initial cluster conditions should have Available=False")
127+
"initial cluster conditions should have LastKnownReconciled=False")
128128
}, h.Cfg.Timeouts.Adapter.Processing, h.Cfg.Polling.Interval).Should(Succeed())
129129

130130
ginkgo.By("Verify adapter execution detects failure and reports error")

e2e/cluster/adapter_failure.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ var _ = ginkgo.Describe("[Suite: cluster][negative] Cluster Can Reflect Adapter
169169
"cluster Reconciled condition should remain False")
170170

171171
g.Expect(h.HasResourceCondition(cl.Status.Conditions,
172-
client.ConditionTypeAvailable, openapi.ResourceConditionStatusFalse)).To(BeTrue(),
173-
"cluster Available condition should remain False")
172+
client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusFalse)).To(BeTrue(),
173+
"cluster LastKnownReconciled condition should remain False")
174174
}, h.Cfg.Polling.Interval*3, h.Cfg.Polling.Interval).Should(Succeed())
175175

176176
ginkgo.GinkgoWriter.Printf("Verified cluster top-level status: Reconciled=False, Available=False (reflecting adapter failure)\n")

e2e/cluster/concurrent_creation.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ var _ = ginkgo.Describe("[Suite: cluster][concurrent] System can process concurr
9494
Expect(err).NotTo(HaveOccurred(), "failed to get cluster %d (%s)", i, clusterID)
9595

9696
hasAvailable := h.HasResourceCondition(cluster.Status.Conditions,
97-
client.ConditionTypeAvailable, openapi.ResourceConditionStatusTrue)
97+
client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusTrue)
9898
Expect(hasAvailable).To(BeTrue(),
99-
"cluster %d (%s) should have Available=True", i, clusterID)
99+
"cluster %d (%s) should have LastKnownReconciled=True", i, clusterID)
100100

101101
ginkgo.GinkgoWriter.Printf("Cluster %d (%s) reached Reconciled=True, Available=True\n", i, clusterID)
102102
}

e2e/cluster/crash_recovery.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ func verifyClusterReconciled(ctx context.Context, h *helper.Helper, clusterID st
246246
"cluster Reconciled condition should transition to True")
247247

248248
g.Expect(h.HasResourceCondition(cl.Status.Conditions,
249-
client.ConditionTypeAvailable, openapi.ResourceConditionStatusTrue)).To(BeTrue(),
250-
"cluster Available condition should transition to True")
249+
client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusTrue)).To(BeTrue(),
250+
"cluster LastKnownReconciled condition should transition to True")
251251
}, h.Cfg.Timeouts.Cluster.Reconciled, h.Cfg.Polling.Interval).Should(Succeed())
252252
}

e2e/cluster/creation.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,12 @@ var _ = ginkgo.Describe("[Suite: cluster][baseline] Cluster Resource Type Lifecy
123123
Expect(hasReconciled).To(BeTrue(), "cluster should have Reconciled=True condition")
124124

125125
hasAvailable := h.HasResourceCondition(finalCluster.Status.Conditions,
126-
client.ConditionTypeAvailable, openapi.ResourceConditionStatusTrue)
127-
Expect(hasAvailable).To(BeTrue(), "cluster should have Available=True condition")
126+
client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusTrue)
127+
Expect(hasAvailable).To(BeTrue(), "cluster should have LastKnownReconciled=True condition")
128128

129-
// Validate observedGeneration for Reconciled and Available conditions
129+
// Validate observedGeneration for Reconciled and LastKnownReconciled conditions
130130
for _, condition := range finalCluster.Status.Conditions {
131-
if condition.Type == client.ConditionTypeReconciled || condition.Type == client.ConditionTypeAvailable {
131+
if condition.Type == client.ConditionTypeReconciled || condition.Type == client.ConditionTypeLastKnownReconciled {
132132
Expect(condition.ObservedGeneration).To(Equal(int32(1)),
133133
"cluster condition %s should have observed_generation=1 for new creation request", condition.Type)
134134
}

e2e/cluster/update_edge_cases.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ var _ = ginkgo.Describe("[Suite: cluster][update] Labels-Only PATCH",
129129
Eventually(h.PollClusterAdapterStatuses(ctx, clusterID), h.Cfg.Timeouts.Adapter.Processing, h.Cfg.Polling.Interval).
130130
Should(helper.HaveAllAdaptersAtGeneration(h.Cfg.Adapters.Cluster, int32(2)))
131131

132-
ginkgo.By("verifying cluster reaches Reconciled=True and Available=True")
132+
ginkgo.By("verifying cluster reaches Reconciled=True and LastKnownReconciled=True")
133133
Eventually(h.PollCluster(ctx, clusterID), h.Cfg.Timeouts.Cluster.Reconciled, h.Cfg.Polling.Interval).
134134
Should(helper.HaveResourceCondition(client.ConditionTypeReconciled, openapi.ResourceConditionStatusTrue))
135135
Eventually(h.PollCluster(ctx, clusterID), h.Cfg.Timeouts.Cluster.Reconciled, h.Cfg.Polling.Interval).
136-
Should(helper.HaveResourceCondition(client.ConditionTypeAvailable, openapi.ResourceConditionStatusTrue))
136+
Should(helper.HaveResourceCondition(client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusTrue))
137137

138138
finalCluster, err := h.Client.GetCluster(ctx, clusterID)
139139
Expect(err).NotTo(HaveOccurred())

e2e/nodepool/concurrent_creation.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ var _ = ginkgo.Describe("[Suite: nodepool][concurrent] Multiple nodepools can co
112112
Expect(err).NotTo(HaveOccurred(), "failed to get nodepool %d (%s)", i, npID)
113113

114114
hasAvailable := h.HasResourceCondition(np.Status.Conditions,
115-
client.ConditionTypeAvailable, openapi.ResourceConditionStatusTrue)
115+
client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusTrue)
116116
Expect(hasAvailable).To(BeTrue(),
117-
"nodepool %d (%s) should have Available=True", i, npID)
117+
"nodepool %d (%s) should have LastKnownReconciled=True", i, npID)
118118

119119
ginkgo.GinkgoWriter.Printf("Nodepool %d (%s) reached Reconciled=True, Available=True\n", i, npID)
120120
}

e2e/nodepool/creation.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,12 @@ var _ = ginkgo.Describe("[Suite: nodepool][baseline] NodePool Resource Type Life
131131
Expect(hasReconciled).To(BeTrue(), "nodepool should have Reconciled=True condition")
132132

133133
hasAvailable := h.HasResourceCondition(finalNodePool.Status.Conditions,
134-
client.ConditionTypeAvailable, openapi.ResourceConditionStatusTrue)
135-
Expect(hasAvailable).To(BeTrue(), "nodepool should have Available=True condition")
134+
client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusTrue)
135+
Expect(hasAvailable).To(BeTrue(), "nodepool should have LastKnownReconciled=True condition")
136136

137-
// Validate observedGeneration for Reconciled and Available conditions
137+
// Validate observedGeneration for Reconciled and LastKnownReconciled conditions
138138
for _, condition := range finalNodePool.Status.Conditions {
139-
if condition.Type == client.ConditionTypeReconciled || condition.Type == client.ConditionTypeAvailable {
139+
if condition.Type == client.ConditionTypeReconciled || condition.Type == client.ConditionTypeLastKnownReconciled {
140140
Expect(condition.ObservedGeneration).To(Equal(int32(1)),
141141
"nodepool condition %s should have observed_generation=1 for new creation request", condition.Type)
142142
}

e2e/nodepool/update_edge_cases.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,11 @@ var _ = ginkgo.Describe("[Suite: nodepool][update] Labels-Only PATCH",
6868
Eventually(h.PollNodePoolAdapterStatuses(ctx, clusterID, nodepoolID), h.Cfg.Timeouts.Adapter.Processing, h.Cfg.Polling.Interval).
6969
Should(helper.HaveAllAdaptersAtGeneration(h.Cfg.Adapters.NodePool, int32(2)))
7070

71-
ginkgo.By("verifying nodepool reaches Reconciled=True and Available=True")
71+
ginkgo.By("verifying nodepool reaches Reconciled=True and LastKnownReconciled=True")
7272
Eventually(h.PollNodePool(ctx, clusterID, nodepoolID), h.Cfg.Timeouts.NodePool.Reconciled, h.Cfg.Polling.Interval).
7373
Should(helper.HaveResourceCondition(client.ConditionTypeReconciled, openapi.ResourceConditionStatusTrue))
7474
Eventually(h.PollNodePool(ctx, clusterID, nodepoolID), h.Cfg.Timeouts.NodePool.Reconciled, h.Cfg.Polling.Interval).
75-
Should(helper.HaveResourceCondition(client.ConditionTypeAvailable, openapi.ResourceConditionStatusTrue))
75+
Should(helper.HaveResourceCondition(client.ConditionTypeLastKnownReconciled, openapi.ResourceConditionStatusTrue))
7676

7777
finalNP, err := h.Client.GetNodePool(ctx, clusterID, nodepoolID)
7878
Expect(err).NotTo(HaveOccurred())

pkg/client/constants.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ const (
1818

1919
// Condition types used by cluster-level resources (clusters, nodepools)
2020
const (
21-
ConditionTypeReconciled = "Reconciled" // Resource is reconciled
21+
ConditionTypeReconciled = "Reconciled" // Resource is reconciled
22+
ConditionTypeLastKnownReconciled = "LastKnownReconciled" // API-computed aggregated condition (renamed from Available)
2223
)

0 commit comments

Comments
 (0)