github mattrobinsonsre/terrapod v0.22.1

4 hours ago

Patch release of Terrapod — three bug fixes since v0.22.0.

Bug Fixes

  • Cloud-block tofu init / terraform init now succeeds against Terrapod workspaces. OpenTofu and Terraform's cloud backend reads workspace.tag-names to decide whether the workspace already carries the cloud-block-declared tags. Terrapod was returning only labels (a Terrapod-specific attribute) and not tag-names, so the CLI always saw an empty set, fired the legacy AddTags write, hit a 404, and bailed out with Error updating workspace ... resource not found. Now exposes tag-names rendered from labels in both bare-key and key=value form, plus accept-and-ignore no-op endpoints for POST/DELETE /workspaces/{id}/relationships/tags. Labels remain operator-controlled — clients can't mutate them. (#271)

  • Run state-transition path no longer depends on the listener SSE round-trip for the happy path. The runner's POST /plan-result and new POST /apply-result endpoints now drive the planning → planned and applying → applied transitions directly via a shared idempotent helper. The reconciler's listener-driven Job-status flow stays as a fallback for cases where the runner can't post (OOM, SIGKILL before the entrypoint runs, network partition). Plus listener SSE recovery improvements: a 30s read watchdog wraps every aiter_lines call so silent stream stalls are detected and reconnected, a 10-minute mandatory periodic reconnect prevents stale Redis pubsub subscriptions from surviving indefinitely, and every dispatched SSE event is now logged at INFO so listener consumption is visible in operator dashboards. Fixes the production failure mode where a Job completed cleanly but the run sat in planning for an hour until the stale-check timeout. (#273)

  • Drift detection on non-VCS workspaces now picks the configuration version that produced the current state, not the latest uploaded. The previous logic could plan against a CV that had never been applied, surfacing diffs between two configs rather than actual infrastructure drift. Joins on the runs table to find the CV referenced by the most recent successful apply; returns no-op if the workspace has never been applied. (#274)

Status

Beta — patch only, no API or schema changes. Drop-in replacement for v0.22.0.

Full Changelog: v0.22.0...v0.22.1

Don't miss a new terrapod release

NewReleases is sending notifications on new releases.