You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Phase 2 and 3: true event-driven watch, a ScheduledMachine.spec.spotSchedule reference now actually drives the machine's active/inactive decision (pull-on-reconcile)
| `fivespot_spot_schedule_resolution_errors_total` | Counter | `namespace`, `kind`, `reason` | Unresolved resolutions by `reason` (`ProviderCRDNotInstalled`, `ProviderNotFound`, `StatusActiveMissing`, `ProviderNotReady`) — the hold-last-state signal to alert on |
82
+
| `fivespot_spot_schedule_transitions_total` | Counter | `namespace`, `kind` | Provider `active`⇄`inactive` transitions; a high rate is the flapping signal |
> **Status:** Phase 1 — the API types exist (`ScheduledMachine.spec.spotSchedule`
8
-
> on `v1beta1`, the `CapitalMarketsSchedule` reference provider CRD), but the
9
-
> controller-side **resolver and watch** land in later roadmap phases. The
10
-
> contract is **Accepted** in [ADR 0006](https://github.com/finos/5-spot). This
11
-
> page is the authoritative specification a provider author implements against.
7
+
> **Status:** Phase 3 — the controller resolves a `spec.spotSchedule` reference,
8
+
> folds the provider verdict into the machine's active/inactive decision
9
+
> (`status.spotSchedule`), **and now watches referenced providers event-driven**:
10
+
> a provider's `status.active` flip wakes the referencing machines at watch
11
+
> latency (a dynamic per-GVK `watcher` stream, not polling). The
12
+
> reference-provider **controller** that computes
13
+
> `CapitalMarketsSchedule.status.active` lands in Phase 5. The contract is
14
+
> **Accepted** in [ADR 0006](https://github.com/finos/5-spot). This page is the
15
+
> authoritative specification a provider author implements against.
12
16
13
17
A **spot-schedule provider** is any Kubernetes custom resource in the
14
18
`spotschedules.5spot.finos.org` API group that tells 5-Spot whether a
@@ -57,7 +61,7 @@ spec:
57
61
| `status` field | Required | Type | Meaning |
58
62
|---|:--:|---|---|
59
63
| `active` | **yes** | bool | **The decision.** `true` ⇒ the referencing machine should be up; `false` ⇒ it should be down. |
60
-
| `conditions[type=Ready]` | recommended | condition | Provider health. `Ready=False` (or absent) ⇒ 5-Spot treats the reference as **unresolved**, *not* inactive (see [Unresolved behavior](#unresolved-behavior)). |
64
+
| `conditions[type=Ready]` | recommended | condition | Provider health. A *present* `Ready` whose status is **not `True`** ⇒ 5-Spot treats the reference as **unresolved**, *not* inactive (see [Unresolved behavior](#unresolved-behavior)). An **absent** `Ready` ⇒ `status.active` is taken as authoritative (`Ready` is recommended, not required). |
61
65
| `observedGeneration` | recommended | int64 | The `metadata.generation` the status reflects; lets 5-Spot detect stale status. |
62
66
| `lastTransitionTime` | recommended | RFC 3339 string | When `active` last flipped; used for observability and flap detection. |
0 commit comments