drivers

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package drivers contains ResourceDriver implementations for each DigitalOcean resource type.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AppPlatformClient

type AppPlatformClient interface {
	Create(ctx context.Context, req *godo.AppCreateRequest) (*godo.App, *godo.Response, error)
	Get(ctx context.Context, appID string) (*godo.App, *godo.Response, error)
	Update(ctx context.Context, appID string, req *godo.AppUpdateRequest) (*godo.App, *godo.Response, error)
	Delete(ctx context.Context, appID string) (*godo.Response, error)
}

AppPlatformClient is the godo App interface used by AppPlatformDriver (for mocking).

type AppPlatformDriver

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

AppPlatformDriver manages DigitalOcean App Platform (infra.container_service).

func NewAppPlatformDriver

func NewAppPlatformDriver(c *godo.Client, region string) *AppPlatformDriver

NewAppPlatformDriver creates an AppPlatformDriver backed by a real godo client.

func NewAppPlatformDriverWithClient

func NewAppPlatformDriverWithClient(c AppPlatformClient, region string) *AppPlatformDriver

NewAppPlatformDriverWithClient creates a driver with an injected client (for tests).

func (*AppPlatformDriver) Create

func (*AppPlatformDriver) Delete

func (*AppPlatformDriver) Diff

func (*AppPlatformDriver) HealthCheck

func (*AppPlatformDriver) Read

func (*AppPlatformDriver) Scale

func (*AppPlatformDriver) Update

type CertificateClient

type CertificateClient interface {
	Create(ctx context.Context, req *godo.CertificateRequest) (*godo.Certificate, *godo.Response, error)
	Get(ctx context.Context, certID string) (*godo.Certificate, *godo.Response, error)
	Delete(ctx context.Context, certID string) (*godo.Response, error)
	List(ctx context.Context, opts *godo.ListOptions) ([]godo.Certificate, *godo.Response, error)
}

CertificateClient is the godo Certificates interface (for mocking).

type CertificateDriver

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

CertificateDriver manages DigitalOcean SSL/TLS certificates (infra.certificate).

func NewCertificateDriver

func NewCertificateDriver(c *godo.Client) *CertificateDriver

NewCertificateDriver creates a CertificateDriver backed by a real godo client.

func NewCertificateDriverWithClient

func NewCertificateDriverWithClient(c CertificateClient) *CertificateDriver

NewCertificateDriverWithClient creates a driver with an injected client (for tests).

func (*CertificateDriver) Create

func (*CertificateDriver) Delete

func (*CertificateDriver) Diff

func (*CertificateDriver) HealthCheck

func (*CertificateDriver) Read

func (*CertificateDriver) Scale

func (*CertificateDriver) Update

type DNSDriver

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

DNSDriver manages DigitalOcean Domains and DNS records (infra.dns). Idempotent: creates domain if missing, creates or updates records.

func NewDNSDriver

func NewDNSDriver(c *godo.Client) *DNSDriver

NewDNSDriver creates a DNSDriver backed by a real godo client.

func NewDNSDriverWithClient

func NewDNSDriverWithClient(c DomainsClient) *DNSDriver

NewDNSDriverWithClient creates a driver with an injected client (for tests).

func (*DNSDriver) Create

Create creates a domain and any declared DNS records idempotently. Config keys:

domain   string            — the zone name (e.g. "example.com")
records  []map[string]any  — each: {type, name, data, ttl}

func (*DNSDriver) Delete

func (d *DNSDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error

func (*DNSDriver) Diff

func (*DNSDriver) HealthCheck

func (*DNSDriver) Read

func (*DNSDriver) Scale

type DatabaseClient

type DatabaseClient interface {
	Create(ctx context.Context, req *godo.DatabaseCreateRequest) (*godo.Database, *godo.Response, error)
	Get(ctx context.Context, databaseID string) (*godo.Database, *godo.Response, error)
	Resize(ctx context.Context, databaseID string, req *godo.DatabaseResizeRequest) (*godo.Response, error)
	Delete(ctx context.Context, databaseID string) (*godo.Response, error)
}

DatabaseClient is the godo Databases interface (for mocking).

type DatabaseDriver

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

DatabaseDriver manages DigitalOcean Managed Databases (infra.database). Supports pg, mysql, redis, mongodb, kafka.

func NewDatabaseDriver

func NewDatabaseDriver(c *godo.Client, region string) *DatabaseDriver

NewDatabaseDriver creates a DatabaseDriver backed by a real godo client.

func NewDatabaseDriverWithClient

func NewDatabaseDriverWithClient(c DatabaseClient, region string) *DatabaseDriver

NewDatabaseDriverWithClient creates a driver with an injected client (for tests).

func (*DatabaseDriver) Create

func (*DatabaseDriver) Delete

func (*DatabaseDriver) Diff

func (*DatabaseDriver) HealthCheck

func (*DatabaseDriver) Read

func (*DatabaseDriver) Scale

func (*DatabaseDriver) Update

type DomainsClient

type DomainsClient interface {
	Create(ctx context.Context, req *godo.DomainCreateRequest) (*godo.Domain, *godo.Response, error)
	Get(ctx context.Context, name string) (*godo.Domain, *godo.Response, error)
	Delete(ctx context.Context, name string) (*godo.Response, error)
	CreateRecord(ctx context.Context, domain string, req *godo.DomainRecordEditRequest) (*godo.DomainRecord, *godo.Response, error)
	EditRecord(ctx context.Context, domain string, id int, req *godo.DomainRecordEditRequest) (*godo.DomainRecord, *godo.Response, error)
	DeleteRecord(ctx context.Context, domain string, id int) (*godo.Response, error)
	Records(ctx context.Context, domain string, opts *godo.ListOptions) ([]godo.DomainRecord, *godo.Response, error)
}

DomainsClient is the godo Domains interface (for mocking).

type DropletDriver

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

DropletDriver manages DigitalOcean Droplets (infra.droplet).

func NewDropletDriver

func NewDropletDriver(c *godo.Client, region string) *DropletDriver

NewDropletDriver creates a DropletDriver backed by a real godo client.

func NewDropletDriverWithClient

func NewDropletDriverWithClient(c DropletsClient, region string) *DropletDriver

NewDropletDriverWithClient creates a driver with an injected client (for tests).

func (*DropletDriver) Create

func (*DropletDriver) Delete

func (*DropletDriver) Diff

func (*DropletDriver) HealthCheck

func (*DropletDriver) Read

func (*DropletDriver) Scale

type DropletsClient

type DropletsClient interface {
	Create(ctx context.Context, req *godo.DropletCreateRequest) (*godo.Droplet, *godo.Response, error)
	Get(ctx context.Context, dropletID int) (*godo.Droplet, *godo.Response, error)
	Delete(ctx context.Context, dropletID int) (*godo.Response, error)
}

DropletsClient is the godo Droplets interface (for mocking).

type FirewallClient

type FirewallClient interface {
	Create(ctx context.Context, req *godo.FirewallRequest) (*godo.Firewall, *godo.Response, error)
	Get(ctx context.Context, fwID string) (*godo.Firewall, *godo.Response, error)
	Update(ctx context.Context, fwID string, req *godo.FirewallRequest) (*godo.Firewall, *godo.Response, error)
	Delete(ctx context.Context, fwID string) (*godo.Response, error)
}

FirewallClient is the godo Firewalls interface (for mocking).

type FirewallDriver

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

FirewallDriver manages DigitalOcean Firewalls (infra.firewall).

func NewFirewallDriver

func NewFirewallDriver(c *godo.Client) *FirewallDriver

NewFirewallDriver creates a FirewallDriver backed by a real godo client.

func NewFirewallDriverWithClient

func NewFirewallDriverWithClient(c FirewallClient) *FirewallDriver

NewFirewallDriverWithClient creates a driver with an injected client (for tests).

func (*FirewallDriver) Create

func (*FirewallDriver) Delete

func (*FirewallDriver) Diff

func (*FirewallDriver) HealthCheck

func (*FirewallDriver) Read

func (*FirewallDriver) Scale

func (*FirewallDriver) Update

type KubernetesClient

type KubernetesClient interface {
	Create(ctx context.Context, req *godo.KubernetesClusterCreateRequest) (*godo.KubernetesCluster, *godo.Response, error)
	Get(ctx context.Context, clusterID string) (*godo.KubernetesCluster, *godo.Response, error)
	Update(ctx context.Context, clusterID string, req *godo.KubernetesClusterUpdateRequest) (*godo.KubernetesCluster, *godo.Response, error)
	Delete(ctx context.Context, clusterID string) (*godo.Response, error)
}

KubernetesClient is the godo Kubernetes interface (for mocking).

type KubernetesDriver

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

KubernetesDriver manages DigitalOcean Kubernetes Service (DOKS) clusters (infra.k8s_cluster).

func NewKubernetesDriver

func NewKubernetesDriver(c *godo.Client, region string) *KubernetesDriver

NewKubernetesDriver creates a KubernetesDriver backed by a real godo client.

func NewKubernetesDriverWithClient

func NewKubernetesDriverWithClient(c KubernetesClient, region string) *KubernetesDriver

NewKubernetesDriverWithClient creates a driver with an injected client (for tests).

func (*KubernetesDriver) Create

func (*KubernetesDriver) Delete

func (*KubernetesDriver) Diff

func (*KubernetesDriver) HealthCheck

func (*KubernetesDriver) Read

func (*KubernetesDriver) Scale

func (*KubernetesDriver) Update

type LoadBalancerClient

type LoadBalancerClient interface {
	Create(ctx context.Context, req *godo.LoadBalancerRequest) (*godo.LoadBalancer, *godo.Response, error)
	Get(ctx context.Context, lbID string) (*godo.LoadBalancer, *godo.Response, error)
	Update(ctx context.Context, lbID string, req *godo.LoadBalancerRequest) (*godo.LoadBalancer, *godo.Response, error)
	Delete(ctx context.Context, lbID string) (*godo.Response, error)
}

LoadBalancerClient is the godo LoadBalancers interface (for mocking).

type LoadBalancerDriver

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

LoadBalancerDriver manages DigitalOcean Load Balancers (infra.load_balancer).

func NewLoadBalancerDriver

func NewLoadBalancerDriver(c *godo.Client, region string) *LoadBalancerDriver

NewLoadBalancerDriver creates a LoadBalancerDriver backed by a real godo client.

func NewLoadBalancerDriverWithClient

func NewLoadBalancerDriverWithClient(c LoadBalancerClient, region string) *LoadBalancerDriver

NewLoadBalancerDriverWithClient creates a driver with an injected client (for tests).

func (*LoadBalancerDriver) Create

func (*LoadBalancerDriver) Delete

func (*LoadBalancerDriver) Diff

func (*LoadBalancerDriver) HealthCheck

func (*LoadBalancerDriver) Read

func (*LoadBalancerDriver) Scale

func (*LoadBalancerDriver) Update

type RegistryClient

type RegistryClient interface {
	Create(ctx context.Context, req *godo.RegistryCreateRequest) (*godo.Registry, *godo.Response, error)
	Get(ctx context.Context) (*godo.Registry, *godo.Response, error)
	Delete(ctx context.Context) (*godo.Response, error)
}

RegistryClient is the godo Registry interface (for mocking).

type RegistryDriver

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

RegistryDriver manages the DigitalOcean Container Registry (infra.registry). Note: DOCR supports one registry per account; Create is idempotent.

func NewRegistryDriver

func NewRegistryDriver(c *godo.Client) *RegistryDriver

NewRegistryDriver creates a RegistryDriver backed by a real godo client.

func NewRegistryDriverWithClient

func NewRegistryDriverWithClient(c RegistryClient) *RegistryDriver

NewRegistryDriverWithClient creates a driver with an injected client (for tests).

func (*RegistryDriver) Create

func (*RegistryDriver) Delete

func (*RegistryDriver) Diff

func (*RegistryDriver) HealthCheck

func (*RegistryDriver) Read

func (*RegistryDriver) Scale

type SpacesBucket

type SpacesBucket struct {
	Name      string
	Region    string
	CreatedAt time.Time
}

SpacesBucket is a minimal representation of a DigitalOcean Spaces bucket.

type SpacesBucketClient

type SpacesBucketClient interface {
	CreateBucket(ctx context.Context, name, region string) (*SpacesBucket, error)
	GetBucket(ctx context.Context, name, region string) (*SpacesBucket, error)
	DeleteBucket(ctx context.Context, name, region string) error
}

SpacesBucketClient is the interface for Spaces bucket management (injectable for mocking). DigitalOcean Spaces uses an S3-compatible API; this interface abstracts those calls.

type SpacesDriver

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

SpacesDriver manages DigitalOcean Spaces object storage buckets (infra.storage).

func NewSpacesDriver

func NewSpacesDriver(_ *godo.Client, region string) *SpacesDriver

NewSpacesDriver creates a SpacesDriver. Since godo does not provide Spaces bucket management (it uses the S3-compatible API), this driver requires a SpacesBucketClient. For production use, wrap an S3-compatible client; for tests, inject a mock.

func NewSpacesDriverWithClient

func NewSpacesDriverWithClient(c SpacesBucketClient, region string) *SpacesDriver

NewSpacesDriverWithClient creates a driver with an injected client (for tests).

func (*SpacesDriver) Create

func (*SpacesDriver) Delete

func (*SpacesDriver) Diff

func (*SpacesDriver) HealthCheck

func (*SpacesDriver) Read

func (*SpacesDriver) Scale

type VPCClient

type VPCClient interface {
	Create(ctx context.Context, req *godo.VPCCreateRequest) (*godo.VPC, *godo.Response, error)
	Get(ctx context.Context, vpcID string) (*godo.VPC, *godo.Response, error)
	Update(ctx context.Context, vpcID string, req *godo.VPCUpdateRequest) (*godo.VPC, *godo.Response, error)
	Delete(ctx context.Context, vpcID string) (*godo.Response, error)
}

VPCClient is the godo VPCs interface (for mocking).

type VPCDriver

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

VPCDriver manages DigitalOcean VPCs (infra.vpc).

func NewVPCDriver

func NewVPCDriver(c *godo.Client, region string) *VPCDriver

NewVPCDriver creates a VPCDriver backed by a real godo client.

func NewVPCDriverWithClient

func NewVPCDriverWithClient(c VPCClient, region string) *VPCDriver

NewVPCDriverWithClient creates a driver with an injected client (for tests).

func (*VPCDriver) Create

func (*VPCDriver) Delete

func (d *VPCDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error

func (*VPCDriver) Diff

func (*VPCDriver) HealthCheck

func (*VPCDriver) Read

func (*VPCDriver) Scale

Jump to

Keyboard shortcuts

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