From 4f6255b5165a47f60d8daba6f64afee845248f9d Mon Sep 17 00:00:00 2001 From: Andreas Grub Date: Mon, 26 Oct 2026 09:05:56 +0100 Subject: [PATCH] feat(client): read healthStatus and action from the building block status Co-Authored-By: Claude Opus 5.5 --- client/building_block_v2.go | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/client/building_block_v2.go b/client/building_block_v2.go index d8803dfe..ae493fee 100644 --- a/client/building_block_v2.go +++ b/client/building_block_v2.go @@ -38,6 +38,32 @@ var ( BuildingBlockStatusAborted = BuildingBlockStatuses.Entry("ABORTED") ) +type BuildingBlockHealthStatus string + +var ( + BuildingBlockHealthStatuses = enum.Enum[BuildingBlockHealthStatus]{} + BuildingBlockHealthStatusNone = BuildingBlockHealthStatuses.Entry("NONE") + BuildingBlockHealthStatusSucceeded = BuildingBlockHealthStatuses.Entry("SUCCEEDED") + BuildingBlockHealthStatusFailed = BuildingBlockHealthStatuses.Entry("FAILED") + BuildingBlockHealthStatusDeleted = BuildingBlockHealthStatuses.Entry("DELETED") +) + +type BuildingBlockAction string + +var ( + BuildingBlockActions = enum.Enum[BuildingBlockAction]{} + BuildingBlockActionProvideInput = BuildingBlockActions.Entry("PROVIDE_INPUT") + BuildingBlockActionWaitingForDependency = BuildingBlockActions.Entry("WAITING_FOR_DEPENDENCY") + BuildingBlockActionApproveRun = BuildingBlockActions.Entry("APPROVE_RUN") + BuildingBlockActionReviewDrift = BuildingBlockActions.Entry("REVIEW_DRIFT") + BuildingBlockActionPending = BuildingBlockActions.Entry("PENDING") + BuildingBlockActionInProgress = BuildingBlockActions.Entry("IN_PROGRESS") + BuildingBlockActionUpgradeAvailable = BuildingBlockActions.Entry("UPGRADE_AVAILABLE") + BuildingBlockActionReviewErrors = BuildingBlockActions.Entry("REVIEW_ERRORS") + BuildingBlockActionReviewAbortedRun = BuildingBlockActions.Entry("REVIEW_ABORTED_RUN") + BuildingBlockActionNoAction = BuildingBlockActions.Entry("NO_ACTION") +) + type MeshBuildingBlockV2 struct { Metadata MeshBuildingBlockV2Metadata `json:"metadata" tfsdk:"metadata"` Spec MeshBuildingBlockV2Spec `json:"spec" tfsdk:"spec"` @@ -238,10 +264,12 @@ type MeshBuildingBlockV2Lifecycle struct { } type MeshBuildingBlockV2Status struct { - Status enum.Entry[BuildingBlockStatus] `json:"status" tfsdk:"status"` - Outputs map[string]MeshBuildingBlockOutput `json:"outputs" tfsdk:"outputs"` - ForcePurge bool `json:"forcePurge" tfsdk:"force_purge"` - Lifecycle MeshBuildingBlockV2Lifecycle `json:"lifecycle" tfsdk:"-"` + Status enum.Entry[BuildingBlockStatus] `json:"status" tfsdk:"status"` + HealthStatus enum.Entry[BuildingBlockHealthStatus] `json:"healthStatus" tfsdk:"health_status"` + Action enum.Entry[BuildingBlockAction] `json:"action" tfsdk:"action"` + Outputs map[string]MeshBuildingBlockOutput `json:"outputs" tfsdk:"outputs"` + ForcePurge bool `json:"forcePurge" tfsdk:"force_purge"` + Lifecycle MeshBuildingBlockV2Lifecycle `json:"lifecycle" tfsdk:"-"` // LatestRunUuid tracks the latest *modifying* (apply/destroy) run and excludes dry runs. It is nil // only when no such run exists: run_transparency gates reading the run and its system messages, not // this identifier (MeshBuildingBlockV2RepresentationModelAssembler.resolveLatestRunUuid).