This repository contains the Polytomic Terraform provider. This provider may be used to manage on premises deployments.
provider "polytomic" {
deployment_url = "polytomic.acmeinc.com"
deployment_api_key = "secret-key"
}
resource "polytomic_organization" "acme" {
name = "Acme, Inc."
}
resource "polytomic_user" "acme_admin" {
organization = polytomic_organization.acme.id
email = "admin@acmeinc.com"
role = "admin"
}If you wish to work on the provider, you'll first need Go installed on your machine (see Requirements above).
To compile the provider, run go install. This will build the provider and put
the provider binary in the $GOPATH/bin directory.
To generate or update documentation, run go generate.
Connection resources and data sources are generated from Polytomic API schemas.
Running go generate will fetch the latest schemas from the API and regenerate
the connection code. The following environment variables control this behavior:
| Variable | Description |
|---|---|
POLYTOMIC_DEPLOYMENT_URL |
API base URL. Defaults to production if unset. |
POLYTOMIC_API_KEY |
API key for fetching connection schemas. If unset or invalid, cached schemas are used as a fallback. |
POLYTOMIC_USE_CACHE |
Set to any non-empty value to skip API calls entirely and generate from cached JSON schemas in provider/gen/connections/. |
To regenerate using only cached schemas (no network access required):
POLYTOMIC_USE_CACHE=1 go generateAcceptance tests are written to run against a real Polytomic deployment (often a local stack).
The GNUmakefile testacc target defaults POLYTOMIC_DEPLOYMENT_URL to https://app.polytomic-local.com:
make testaccYou can override the URL and pass through additional go test flags via TESTARGS:
POLYTOMIC_DEPLOYMENT_URL=https://app.polytomic-local.com \
make testacc TESTARGS='-run TestAccConnectionResource -count=1 -v'Environment variables required for acceptance tests:
POLYTOMIC_DEPLOYMENT_URL(e.g.https://app.polytomic-local.com)- One of:
POLYTOMIC_API_KEY(org-scoped)POLYTOMIC_DEPLOYMENT_KEY(deployment/partner scoped; tests will create an org and passorganization = ...)
PostgreSQL-backed acceptance tests (sync and bulk-sync suites) will
automatically start a Postgres container via
testcontainers when no credentials are
provided. Docker must be running. The container is reachable from Polytomic's
Docker network via host.docker.internal.
To use an existing Postgres instance instead, set these environment variables:
POLYTOMIC_TEST_PG_USERNAMEPOLYTOMIC_TEST_PG_PASSWORDPOLYTOMIC_TEST_PG_HOSToptional, defaults topostgresPOLYTOMIC_TEST_PG_DATABASEoptional, defaults topolytomicPOLYTOMIC_TEST_PG_PORToptional, defaults to5432
The required fixture schema and tables are created automatically in both cases.
If you prefer to run an individual package directly:
TF_ACC=1 \
POLYTOMIC_DEPLOYMENT_URL=https://app.polytomic-local.com \
go test ./provider/... -run TestAccGlobalErrorSubscribersResource -count=1 -vTo run a PostgreSQL-backed sync acceptance test locally:
TF_ACC=1 \
POLYTOMIC_DEPLOYMENT_URL=https://app.polytomic-local.com \
POLYTOMIC_API_KEY=... \
POLYTOMIC_TEST_PG_HOST=postgres \
POLYTOMIC_TEST_PG_DATABASE=polytomic \
POLYTOMIC_TEST_PG_USERNAME=... \
POLYTOMIC_TEST_PG_PASSWORD=... \
go test ./provider/... -run TestAccSyncResourceWithIdentity -count=1 -v- Clone the repository
- Enter the repository directory
- Build the provider using the Go
installcommand:
go installThis provider uses Go modules. Please see the Go documentation for the most up to date information about using Go modules.
To add a new dependency github.com/author/dependency to your Terraform provider:
go get github.com/author/dependency
go mod tidyThen commit the changes to go.mod and go.sum.
If you wish to test a pre-release version of the provider, you can use the a
.tfrc file to specify the location of your local provider binary. If you
installed the provider using go install, create a dev.tfrc file with the
following contents, substituting the correct home directory path.
provider_installation {
dev_overrides {
"polytomic/polytomic" = "/Users/username/go/bin"
}
# all the other providers, install them as usual
direct {}
}To instruct Terraform to use those settings, set the TF_CLI_CONFIG environment
variable.
$ TF_CLI_CONFIG_FILE=dev.tfrc terraform apply-
Update CHANGELOG.md with release details and date and commit.
-
Create an annotated version tag; a version tag consists of the letter
vfollowed byMAJOR.MINOR.PATCH. For example:git tag -a v0.2.0
-
Push the tag to Github.
git push origin v0.2.0
Github Actions are configured to build release tags and create a new release. Once the release has been created, the Terraform registry will pick it up within a few minutes.