Skip to content

polytomic/terraform-provider-polytomic

Repository files navigation

Polytomic Terraform Provider

This repository contains the Polytomic Terraform provider. This provider may be used to manage on premises deployments.

Example Organization configuration with users

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"
}

Terraform Importer

See Polytomic Importer

Development

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.

Code Generation

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 generate

Acceptance Tests

Acceptance 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 testacc

You 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 pass organization = ...)

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_USERNAME
  • POLYTOMIC_TEST_PG_PASSWORD
  • POLYTOMIC_TEST_PG_HOST optional, defaults to postgres
  • POLYTOMIC_TEST_PG_DATABASE optional, defaults to polytomic
  • POLYTOMIC_TEST_PG_PORT optional, defaults to 5432

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 -v

To 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

Requirements

Building The Provider

  1. Clone the repository
  2. Enter the repository directory
  3. Build the provider using the Go install command:
go install

Adding Dependencies

This 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 tidy

Then commit the changes to go.mod and go.sum.

Testing a pre-release version

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

Releasing

  1. Update CHANGELOG.md with release details and date and commit.

  2. Create an annotated version tag; a version tag consists of the letter v followed by MAJOR.MINOR.PATCH. For example:

    git tag -a v0.2.0
  3. 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.

About

Terraform provider for on premises Polytomic deploys.

Resources

License

Stars

Watchers

Forks

Contributors

Languages