Add an adapter in a fork¶
Add an adapter the matrix lists as on request, or omits, as a new package that registers itself. Existing adapters do not change. Pick the concern and preset first (choosing a deployment).
1. Write the package¶
Create internal/port/<name> implementing the concern's port: port.State (optionally port.Index and port.Trigger), port.Secrets, port.Blob or port.Trigger. Copy the shape of internal/port/dynamodb or internal/port/s3blob.
2. Register it¶
Call port.Register from an init function with a Descriptor:
-
name, concern and a one-sentence summary;
-
Requires(AWS, Kubernetes, OpenBao) and the runtimes it works on, empty only for all; -
ProcessLocalif it keeps data in the process, andSecretStoreif it is a real secret store; -
a
Factoryfrom its settings.
Start refuses an adapter whose requirements the platform does not meet. Import the package from internal/store so the process links it.
3. Pass the conformance suite¶
Call porttest.Run (state), porttest.RunSecrets or your concern's suite from a conformance_test.go in the package.
4. Generate and check¶
just config-schemas # schemas/config and the chart's values.schema.json
just golden # chart goldens; review the diff
just adapters-doc # the matrix
just check
Add the schema entry before config-schemas. Add the chart's RBAC, egress and values before golden; settings reach the adapter through adapters.<concern>.settings. Delete the adapter's entry from port.Catalogue so it leaves the on-request list. Add a Pulumi resource in deploy/pulumi if it needs cloud infrastructure. Add a line under ## Unreleased in CHANGELOG.md.
Offer the adapter upstream as a PR to turn an on-request row into an implemented one.