Skip to content

Commit 8437dcc

Browse files
committed
Provider Release v1.0.0 & Control Release v0.1.0
This release brings the Ably Control API Go client in-repo, replacing the external `ably-control-go` dependency. The previous client had diverged significantly from the actual Control API surface, causing persistent bugs and requiring workarounds throughout the provider. Rather than continuing to patch the misalignment across two repositories, the client has been rewritten from scratch and embedded directly as a Go sub-module. New in-repo client: The client lives under `control/` (module path `github.com/ably/terraform-provider-ably/control`, package name `control`) and covers the full Control API surface: apps, keys, namespaces, queues, stats, reactor/integration rules (HTTP, AMQP, Kafka, Kinesis, Lambda, SQS, Pulsar, IFTTT, Zapier, Cloudflare Workers, Google/Azure Functions), ingress rules (MongoDB, Postgres Outbox), and before-publish/moderation rule types (Hive, Bodyguard, Tisane, Azure). All endpoints have comprehensive unit tests plus integration test scaffolding gated behind `ABLY_ACCOUNT_TOKEN`. The client is publicly importable for use outside this provider. Provider migration: Every resource and data source has been rewritten to use the new client. This includes tighter error handling, read-back verification after create/update to catch silent failures, pointer-based patch types to avoid overwriting values during partial updates, and improved schema descriptions. An end-to-end acceptance test exercises the full Terraform lifecycle (create, update, read-back, import, destroy) for every resource type against the real Control API. Release automation: The release workflow has been rebuilt to handle both components from a single `workflow_dispatch` trigger. It discovers what to release from git tags (`v<semver>` for the provider, `control/v<semver>` for the client) and runs both release jobs in parallel. Provider releases go through GoReleaser as before. Control release notes are scoped to PRs that touch `control/` paths, matching the format used by the old standalone repo. Both produce draft releases for review before publishing. A pre-existing GoReleaser bug has been fixed where ldflags were setting the wrong variable name, causing release binaries to report an incorrect version. Documentation: Terraform resource docs have been regenerated to reflect the updated schemas. The control client has public-quality godoc comments and a standalone reference doc under `control/docs/`. CI has been updated to account for the sub-module. CONTRIBUTING.md documents the new release process.
1 parent f6bd209 commit 8437dcc

File tree

5 files changed

+49
-3
lines changed

5 files changed

+49
-3
lines changed

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
# Changelog
22

3+
## [v1.0.0](https://github.com/ably/terraform-provider-ably/tree/v1.0.0)
4+
5+
[Full Changelog](https://github.com/ably/terraform-provider-ably/compare/v0.12.0...v1.0.0)
6+
7+
**Merged pull requests:**
8+
9+
- \[INF-6939\] Migrate client into this repo and switch provider to it [#229](https://github.com/ably/terraform-provider-ably/pull/229)
10+
11+
**Note:**
12+
This release brings the Ably Control API Go client in-repo, replacing the external `ably-control-go` dependency. The previous client had diverged significantly from the actual Control API surface, causing persistent bugs and requiring workarounds throughout the provider. Rather than continuing to patch the misalignment across two repositories, the client has been rewritten from scratch and embedded directly as a Go sub-module.
13+
14+
New in-repo client: The client lives under `control/` (module path `github.com/ably/terraform-provider-ably/control`, package name `control`) and covers the full Control API surface: apps, keys, namespaces, queues, stats, reactor/integration rules (HTTP, AMQP, Kafka, Kinesis, Lambda, SQS, Pulsar, IFTTT, Zapier, Cloudflare Workers, Google/Azure Functions), ingress rules (MongoDB, Postgres Outbox), and before-publish/moderation rule types (Hive, Bodyguard, Tisane, Azure). All endpoints have comprehensive unit tests plus integration test scaffolding gated behind `ABLY_ACCOUNT_TOKEN`. The client is publicly importable for use outside this provider.
15+
16+
Provider migration: Every resource and data source has been rewritten to use the new client. This includes tighter error handling, read-back verification after create/update to catch silent failures, pointer-based patch types to avoid overwriting values during partial updates, and improved schema descriptions. An end-to-end acceptance test exercises the full Terraform lifecycle (create, update, read-back, import, destroy) for every resource type against the real Control API.
17+
18+
Release automation: The release workflow has been rebuilt to handle both components from a single `workflow_dispatch` trigger. It discovers what to release from git tags (`v<semver>` for the provider, `control/v<semver>` for the client) and runs both release jobs in parallel. Provider releases go through GoReleaser as before. Control release notes are scoped to PRs that touch `control/` paths, matching the format used by the old standalone repo. Both produce draft releases for review before publishing.
19+
20+
Documentation: Terraform resource docs have been regenerated to reflect the updated schemas. The control client has public-quality godoc comments and a standalone reference doc under `control/docs/`. CI has been updated to account for the sub-module. CONTRIBUTING.md documents the new release process.
21+
322
## [v0.12.0](https://github.com/ably/terraform-provider-ably/tree/v0.12.0)
423

524
[Full Changelog](https://github.com/ably/terraform-provider-ably/compare/v0.11.1...v0.12.0)

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ HOSTNAME=github.com
33
NAMESPACE=ably
44
NAME=ably
55
BINARY=terraform-provider-${NAME}
6-
VERSION=0.12.0
6+
VERSION=1.0.0
77
OS ?= $(shell uname -s | tr '[:upper:]' '[:lower:]')
88
ARCH_NATIVE := $(shell uname -m)
99
ARCH_MAPPED := $(shell echo "$(ARCH_NATIVE)" | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/' -e 's/armv7l/arm/')

control/CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Changelog
2+
3+
## [v0.1.0](https://github.com/ably/terraform-provider-ably/tree/control/v0.1.0)
4+
5+
Initial release as an in-repo module under `control/`, replacing the
6+
standalone [ably-control-go](https://github.com/ably/ably-control-go)
7+
repository.
8+
9+
**Merged pull requests:**
10+
11+
- \[INF-6939\] Migrate client into this repo and switch provider to it [#229](https://github.com/ably/terraform-provider-ably/pull/229)
12+
13+
This release includes:
14+
- Full rewrite of the client to match the current Ably Control API
15+
surface, fixing longstanding misalignment issues in the previous client
16+
- Apps, keys, namespaces, queues, stats, and account info (me)
17+
- Reactor/integration rules: HTTP, AMQP, AMQP external, Kafka, Kinesis,
18+
Lambda, SQS, Pulsar, IFTTT, Zapier, Cloudflare Workers, Azure
19+
Functions, Google Cloud Functions
20+
- Ingress rules: Postgres Outbox, MongoDB
21+
- Before-publish rules: webhook, AWS Lambda
22+
- Moderation rules: Hive text-model-only, Hive dashboard, Bodyguard,
23+
Tisane, Azure Text Moderation
24+
- Configurable retry (exponential backoff on 5xx, no retry on 4xx),
25+
custom User-Agent, and pluggable HTTP transport via functional options
26+
- Comprehensive unit tests for all endpoints, plus integration test
27+
scaffolding gated behind `ABLY_ACCOUNT_TOKEN`

examples/playground/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ terraform {
33
required_providers {
44
ably = {
55
source = "ably/ably"
6-
version = "0.12.0"
6+
version = "1.0.0"
77
}
88
}
99
}

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
//
1818
// It is appended to the Ably-Agent HTTP header sent by the underlying Control
1919
// API client (e.g. 'Ably-Agent: ably-control-go/1.0 terraform-provider-ably/x.y.z').
20-
var VERSION = "0.12.0"
20+
var VERSION = "1.0.0"
2121

2222
func main() {
2323
// print the version and exit if argv[1] is "version"

0 commit comments

Comments
 (0)