Skip to content

Latest commit

 

History

History
65 lines (40 loc) · 7.27 KB

File metadata and controls

65 lines (40 loc) · 7.27 KB

Changelog

v0.3.0

Added

  • openstatus_private_location (resource) plus the openstatus_private_location and openstatus_private_locations data sources. A private location is a self-hosted checker agent that runs the monitors you assign it. The agent token is generated by OpenStatus and exposed as a sensitive attribute — pass it to the agent to authenticate. Terraform owns monitor_ids and metadata, so removing either from your configuration clears it on the next apply rather than leaving the server's copy in place. Liveness (status, last_seen_at) is available on the data sources rather than the resource, so a checking-in agent doesn't make every terraform plan report out-of-band drift. The list data source does not expose tokens; the API omits them.
  • private_location_ids on openstatus_http_monitor, openstatus_tcp_monitor, openstatus_dns_monitor and both monitor data sources. Read-only; the association is managed from openstatus_private_location.monitor_ids.

Changed

  • The provider now talks to the OpenStatus API through the generated Connect SDK (buf.build/gen/go/openstatus/api) instead of hand-written request/response structs. The wire format is unchanged — still JSON over the same endpoints — but request and response shapes are now generated from the API's schema, so a field the provider cannot express is a compile error rather than a silent omission. If you are debugging traffic, nothing about the requests should look different.
  • API error messages in diagnostics are reworded. An error previously rendered as openstatus API error (not_found): resource not found now renders as not_found: resource not found. Error classification is unchanged.
  • Building the provider from source now requires Go 1.25.8 (was 1.22). This does not affect users installing released binaries from the registry.

Fixed

  • group_order set on a new openstatus_status_page_component is now actually applied. The API's create endpoints have no such field, so the value was being silently discarded while state kept the value from your configuration — meaning the diff never resurfaced and the component stayed unordered within its group. The provider now creates the component and then applies group_order through the update endpoint, which is the one that accepts it, within the same apply.

v0.2.3

Added

  • custom_theme on openstatus_status_page (resource and data source). Per-mode CSS variable overrides merged over theme, with light and dark maps keyed by variable name (e.g. "--primary" = "hsl(24 94% 50%)"). Variable names and values are validated at plan time against the same rules the API enforces, so invalid themes fail at terraform plan instead of mid-apply. Removing the block clears the theme on the next apply. Requires the custom-theme plan feature on the workspace.

v0.2.2

Fixed

  • openstatus_http_monitor apply no longer fails with "block count changed from 0 to 1" (#19). The OpenStatus API echoes a placeholder empty header (headers: [{}]) when no headers are configured; the provider now drops empty entries before writing state, restoring plan↔apply consistency. Real headers (any non-empty key or value) are unaffected, and drift detection still works when a header is added or removed out-of-band via the dashboard.
  • openstatus_notification ntfy block no longer fails with "Received null value, however the target type cannot handle null values" when server_url or token is omitted. Both are documented as Optional in the schema; the extract path was decoding them into plain string, which the framework rejects for null inputs. They now decode through types.String and are only sent to the API when non-empty.
  • openstatus_notification ntfy update no longer fails with "inconsistent values for sensitive attribute" on .ntfy[0].token. The OpenStatus API does not echo back ntfy.token in its response (security default for sensitive fields); the read-back mapper now preserves the planned/state token when the API omits it, so the post-apply state matches what Terraform planned. If the API ever does return a token, that value still takes priority.

v0.2.1

Changed

  • regions is now validated at plan time on openstatus_http_monitor, openstatus_tcp_monitor, and openstatus_dns_monitor. Configs that reference an unknown region (typo, copy-paste from another provider, a region the OpenStatus API doesn't yet expose) now fail at terraform plan instead of mid-apply. The accepted set is unchanged — see the resource docs for the full list. If you need a region that isn't listed, open an issue; the fix is a one-line addition to regionToAPI in the provider.
  • regions attribute now has a consistent description ("Regions to monitor from.") on the TCP and DNS monitor resources, matching the HTTP monitor and improving the generated docs.

Fixed

  • Generated provider docs are now deterministic for enum-shaped attributes (periodicity, regions, method, comparator fields). Previously the helper that derived the allowed-values list iterated a Go map directly, which produced nondeterministic ordering between regenerations.

v0.2.0

Breaking changes

  • openstatus_notification.name is now Required. Configs that previously omitted name already failed at apply time against the API (server enforces min_len=1); this change surfaces the failure at plan time.
  • Unknown access_type values returned by the API are no longer silently coerced to "public". A status page in an unrecognized state will surface a diagnostic warning and leave access_type empty until a recognized value is set. The new "ip" value is also valid for access_type.
  • description, body, timeout, and retry are now sent on every monitor update, including zero/empty values. The first apply after upgrade may clear a description that was set out-of-band (e.g., via the dashboard) but not declared in HCL. To avoid this, add description = "..." to HCL before upgrading.

Added

  • New ms_teams notification provider for Microsoft Teams webhooks.
  • Status page: new theme, default_locale, locales, allow_index, and allowed_ip_ranges attributes; theme is now writable (was read-only).
  • Status page: new access_type = "ip" mode (pairs with allowed_ip_ranges).
  • Monitors: new open_telemetry block on openstatus_http_monitor, openstatus_tcp_monitor, and openstatus_dns_monitor to configure OpenTelemetry exporters.
  • Client-side slug regex validation on openstatus_status_page.slug (matches the server's ^[a-z0-9]+(?:-[a-z0-9]+)*$).
  • Diagnostic warnings when the API returns unrecognized enum values (notification provider, Opsgenie region, status page theme/locale/access type) instead of silently corrupting state.

Fixed

  • openstatus_notification updates to monitor_ids are now applied. The provider now sends the API's update_monitor_ids flag and an explicit monitor_ids list (including empty [] to clear). Previously the field was silently ignored server-side.
  • Monitor timeout = 0 and retry = 0 are now honored. Previously omitempty collapsed explicit zeros into "not set" and the server applied its defaults (45000ms / 3 retries).