pgsprovider

package
v0.3.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

pkg/provider/postgres/provider.go

PostgreSQL provider for Orkestra.

Handles the "postgres" block in Katalog declarations. Uses pgx/v5 — the standard PostgreSQL driver for Go.

Supported resource kinds:

database   — PostgreSQL database (create, drop)
role       — Database role/user (create, update password and privileges, drop)
extension  — PostgreSQL extension (CREATE EXTENSION IF NOT EXISTS, drop)

Installation:

go get github.com/jackc/pgx/v5

Registration:

p, err := pgsprovider.NewFromAuth(ctx, auth)
registry.Register(p)

Auth keys (providers[].auth block):

host     — server hostname or IP (default: localhost)
port     — server port (default: 5432)
user     — superuser name (must be able to CREATE DATABASE/ROLE)
password — superuser password (or set PGPASSWORD env var)
sslmode  — disable | require | verify-ca | verify-full (default: require)

Katalog:

providers:
  - name: postgres
    required: true
    auth:
      host: "$PG_HOST"
      user: "$PG_USER"
      password: "$PG_PASSWORD"

operatorBox:
  providers:
    postgres:
      - database:
          name: "{{ .metadata.name }}"
          owner: "{{ .spec.dbUser }}"

      - role:
          name: "{{ .spec.dbUser }}"
          password: "{{ .spec.dbPassword }}"
          privileges: "LOGIN NOSUPERUSER"
          credentials:
            secretName: "{{ .metadata.name }}-pg-creds"   # PG_PASSWORD key

      - extension:
          name: pgcrypto
          database: "{{ .metadata.name }}"

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Provider

type Provider struct {
	// contains filtered or unexported fields
}

Provider implements orktypes.Provider for the "postgres" block.

func New

func New(dsn string) *Provider

New creates a PostgreSQL provider from a DSN string. DSN format: "postgres://user:password@host:port/postgres?sslmode=require"

func NewFromAuth

func NewFromAuth(_ context.Context, auth map[string]string) (*Provider, error)

NewFromAuth creates a PostgreSQL provider from a Katalog auth map. Keys: host, port, user, password, sslmode.

func (*Provider) Delete

func (p *Provider) Delete(ctx context.Context, req orktypes.DeleteRequest) error

func (*Provider) Name

func (p *Provider) Name() string

func (*Provider) Reconcile

func (p *Provider) Reconcile(ctx context.Context, req orktypes.ReconcileRequest) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL