The Mezmo Terraform Provider allows organizations to manage Pipelines (sources, processors and destinations) programmatically via Terraform.
You can download this repo to create your own local provider or you can use the Hashicorp registry.
Building the provider will build the provider binary in the project root. It's not very useful in most cases, so see the instructions in Running the Provider Locally.
go build ./...
To build and install the provider locally, run go install .
. This will build the provider and put the provider
binary in the $GOPATH/bin
directory. You will reference this location in the next step.
If you want to use the local provider, you need to reference it by placing a file in your $HOME
directory called .terraformrc
.
This setting tells terraform to override the remote registry where the provider is usually downloaded from in favor of a local directory.
The value of this setting should be your $GOPATH
, which is where the installed binary gets placed.
This value is usually $HOME/go/bin
.
provider_installation {
dev_overrides {
"registry.terraform.io/mezmo/mezmo" = "/Users/<YOUR USERNAME>/go/bin"
}
}
Then, you can plan
or apply
a terraform files. This example assumes that there are .tf
files in my-terraform-test
ready to be used.
cd my-terraform-test
terraform init
terraform plan
terraform apply
When schemas are changed (descriptions, types) during development, the documentation for the components must be re-generated.
To do this, run go generate
to make sure all changes are documented.
To run the full test suite, which will start Docker containers for the required services, run:
make test
Docker containers for the required services can be started, then tests can run
individually against them. The services will run in the foreground, which will display
their logs. Wait for pipeline-service
to be up and running, indicated when the log
shows the loaded API routes. In a separate window, run:
make start
Each test command will be preceeded by loading the proper environment variables. Depending on the noted shell, that is done by:
shell|bash> env $(cat env/local.env) #...rest of command
fish> env (cat env/local.env) #...rest of command
Optional environment variables can be provided on the test command line to display
additional debugging information when writing tests. Note that fmt.Println
does not
work when running the provider directly, so these variables have no effect then. See
Trace Logging During Execution for logging while using the provider.
DEBUG_ATTRIBUTES=1
- Displays the loaded state attributes when using theStateHasExpectedValues
assertion
When running the provider directly or through integration tests, the APIs and their results can be printed to the screen.
For this, set TF_LOG_PROVIDER_MEZMO=TRACE
, but be aware that it could print sensitive information.
This should only be used when debugging provider execution locally (including integration tests)!
-run
accepts a regex for the test name, and the path- The path given shoulid match where the test file resides
TF_LOG_PROVIDER_MEZMO=TRACE
can be provided to see all api requests/responses/errors
Run all tests
make local-test
Run a singular test
npm run local -- _TF_LOG_PROVIDER_MEZMO=TRACE go test -v -run 'TestAccAbsenceAlert_success' ./internal/provider/models/alerts/test
Run a group of tests
npm run local -- test -v -run 'TestAccChangeAlert.*_errors' ./internal/provider/models/alerts/test