mirror of
https://github.com/kubevela/kubevela.git
synced 2026-02-14 10:00:06 +00:00
Feat: Consolidate Health & Status and Pass Status Context Data (#6860)
Signed-off-by: Brian Kane <briankane1@gmail.com>
This commit is contained in:
@@ -506,13 +506,25 @@ var _ = Describe("Application Normal tests", func() {
|
||||
By("Checking the initial application status")
|
||||
Expect(app.Status.Services).ShouldNot(BeEmpty())
|
||||
Expect(app.Status.Services[0].Healthy).Should(BeFalse())
|
||||
Expect(app.Status.Services[0].Message).Should(BeEmpty())
|
||||
Expect(app.Status.Services[0].Message).Should(Equal(fmt.Sprintf("Unhealthy - 0 / %d replicas are ready", compReplicas)))
|
||||
Expect(app.Status.Services[0].Details["readyReplicas"]).Should(Equal("0"))
|
||||
Expect(app.Status.Services[0].Details["deploymentReady"]).Should(Equal("false"))
|
||||
|
||||
verifyWorkloadRunningExpected(ctx, namespaceName, compDef.Name, int32(compReplicas), compImage)
|
||||
verifyWorkloadRunningExpected(ctx, namespaceName, traitDef.Name, int32(traitReplicas), traitImage)
|
||||
|
||||
By("Triggering application reconciliation to ensure status is updated (to avoid flakiness)")
|
||||
Eventually(func() error {
|
||||
if err := k8sClient.Get(ctx, client.ObjectKey{Namespace: app.Namespace, Name: app.Name}, app); err != nil {
|
||||
return err
|
||||
}
|
||||
if app.Annotations == nil {
|
||||
app.Annotations = make(map[string]string)
|
||||
}
|
||||
app.Annotations["force.reconcile"] = fmt.Sprintf("%d", time.Now().Unix())
|
||||
return k8sClient.Update(ctx, app)
|
||||
}, 10*time.Second, 500*time.Millisecond).Should(Succeed())
|
||||
|
||||
By("Waiting for the app to turn healthy")
|
||||
Eventually(func() bool {
|
||||
err := k8sClient.Get(ctx, client.ObjectKey{
|
||||
@@ -530,13 +542,13 @@ var _ = Describe("Application Normal tests", func() {
|
||||
|
||||
By("Checking the component status matches expectations")
|
||||
Expect(app.Status.Services[0].Healthy).Should(BeTrue())
|
||||
Expect(app.Status.Services[0].Message).Should(Equal(fmt.Sprintf("%v / %v replicas are ready", compReplicas, compReplicas)))
|
||||
Expect(app.Status.Services[0].Message).Should(Equal(fmt.Sprintf("Healthy - %v / %v replicas are ready", compReplicas, compReplicas)))
|
||||
Expect(app.Status.Services[0].Details["readyReplicas"]).Should(Equal(fmt.Sprintf("%v", compReplicas)))
|
||||
Expect(app.Status.Services[0].Details["deploymentReady"]).Should(Equal("true"))
|
||||
|
||||
By("Checking the trait status matches expectations")
|
||||
Expect(app.Status.Services[0].Traits[0].Healthy).Should(BeTrue())
|
||||
Expect(app.Status.Services[0].Traits[0].Message).Should(Equal(fmt.Sprintf("%v / %v replicas are ready", traitReplicas, traitReplicas)))
|
||||
Expect(app.Status.Services[0].Traits[0].Message).Should(Equal(fmt.Sprintf("Healthy - %v / %v replicas are ready", traitReplicas, traitReplicas)))
|
||||
Expect(app.Status.Services[0].Traits[0].Details["allReplicasReady"]).Should(Equal("true"))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -40,13 +40,19 @@ spec:
|
||||
}
|
||||
}
|
||||
status:
|
||||
customStatus: |
|
||||
message: "\(context.output.status.readyReplicas) / \(context.output.status.replicas) replicas are ready"
|
||||
healthPolicy: |
|
||||
isHealth: context.output.status.replicas == context.output.status.readyReplicas
|
||||
details: |
|
||||
deploymentReady: *(context.output.status.replicas == context.output.status.readyReplicas) | false
|
||||
$expectedReplicas: context.output.spec.replicas
|
||||
readyReplicas: *context.output.status.readyReplicas | 0
|
||||
healthPolicy: |
|
||||
isHealth: context.status.details.readyReplicas == context.status.details.$expectedReplicas
|
||||
customStatus: |
|
||||
if context.status.healthy {
|
||||
message: "Healthy - \(context.status.details.readyReplicas) / \(context.status.details.$expectedReplicas) replicas are ready"
|
||||
}
|
||||
if !context.status.healthy {
|
||||
message: "Unhealthy - \(context.status.details.readyReplicas) / \(context.status.details.$expectedReplicas) replicas are ready"
|
||||
}
|
||||
workload:
|
||||
definition:
|
||||
apiVersion: apps/v1
|
||||
|
||||
@@ -45,10 +45,18 @@ spec:
|
||||
}
|
||||
}
|
||||
status:
|
||||
customStatus: |
|
||||
message: "\(context.outputs.deployment.status.readyReplicas) / \(context.outputs.deployment.status.replicas) replicas are ready"
|
||||
healthPolicy: |
|
||||
isHealth: context.outputs.deployment.status.replicas == context.outputs.deployment.status.readyReplicas
|
||||
details: |
|
||||
allReplicasReady: *(context.outputs.deployment.status.replicas == context.outputs.deployment.status.readyReplicas) | false
|
||||
deploymentReady: *(context.outputs.deployment.status.replicas == context.outputs.deployment.status.readyReplicas) | false
|
||||
$expectedReplicas: context.outputs.deployment.spec.replicas
|
||||
readyReplicas: *context.outputs.deployment.status.readyReplicas | 0
|
||||
allReplicasReady: readyReplicas == $expectedReplicas
|
||||
healthPolicy: |
|
||||
isHealth: context.status.details.readyReplicas == context.status.details.$expectedReplicas
|
||||
customStatus: |
|
||||
if context.status.healthy {
|
||||
message: "Healthy - \(context.status.details.readyReplicas) / \(context.status.details.$expectedReplicas) replicas are ready"
|
||||
}
|
||||
if !context.status.healthy {
|
||||
message: "Unhealthy - \(context.status.details.readyReplicas) / \(context.status.details.$expectedReplicas) replicas are ready"
|
||||
}
|
||||
workloadRefPath: ""
|
||||
Reference in New Issue
Block a user