Documentation
¶
Overview ¶
Package drivers contains ResourceDriver implementations for each DigitalOcean resource type.
Index ¶
- type AppPlatformClient
- type AppPlatformDriver
- func (d *AppPlatformDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *AppPlatformDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *AppPlatformDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *AppPlatformDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *AppPlatformDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *AppPlatformDriver) Scale(ctx context.Context, ref interfaces.ResourceRef, replicas int) (*interfaces.ResourceOutput, error)
- func (d *AppPlatformDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type CertificateClient
- type CertificateDriver
- func (d *CertificateDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *CertificateDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *CertificateDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *CertificateDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *CertificateDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *CertificateDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *CertificateDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type DNSDriver
- func (d *DNSDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *DNSDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *DNSDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *DNSDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *DNSDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *DNSDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *DNSDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type DatabaseClient
- type DatabaseDriver
- func (d *DatabaseDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *DatabaseDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *DatabaseDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *DatabaseDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *DatabaseDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *DatabaseDriver) Scale(ctx context.Context, ref interfaces.ResourceRef, replicas int) (*interfaces.ResourceOutput, error)
- func (d *DatabaseDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type DomainsClient
- type DropletDriver
- func (d *DropletDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *DropletDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *DropletDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *DropletDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *DropletDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *DropletDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *DropletDriver) Update(_ context.Context, _ interfaces.ResourceRef, _ interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type DropletsClient
- type FirewallClient
- type FirewallDriver
- func (d *FirewallDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *FirewallDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *FirewallDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *FirewallDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *FirewallDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *FirewallDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *FirewallDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type KubernetesClient
- type KubernetesDriver
- func (d *KubernetesDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *KubernetesDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *KubernetesDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *KubernetesDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *KubernetesDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *KubernetesDriver) Scale(ctx context.Context, ref interfaces.ResourceRef, replicas int) (*interfaces.ResourceOutput, error)
- func (d *KubernetesDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type LoadBalancerClient
- type LoadBalancerDriver
- func (d *LoadBalancerDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *LoadBalancerDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *LoadBalancerDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *LoadBalancerDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *LoadBalancerDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *LoadBalancerDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *LoadBalancerDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type RegistryClient
- type RegistryDriver
- func (d *RegistryDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *RegistryDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *RegistryDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *RegistryDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *RegistryDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *RegistryDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *RegistryDriver) Update(ctx context.Context, _ interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type SpacesBucket
- type SpacesBucketClient
- type SpacesDriver
- func (d *SpacesDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *SpacesDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *SpacesDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *SpacesDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *SpacesDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *SpacesDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *SpacesDriver) Update(_ context.Context, _ interfaces.ResourceRef, _ interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type VPCClient
- type VPCDriver
- func (d *VPCDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *VPCDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
- func (d *VPCDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *VPCDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *VPCDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *VPCDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *VPCDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *AppPlatformDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*AppPlatformDriver) Delete ¶
func (d *AppPlatformDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*AppPlatformDriver) Diff ¶
func (d *AppPlatformDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*AppPlatformDriver) HealthCheck ¶
func (d *AppPlatformDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*AppPlatformDriver) Read ¶
func (d *AppPlatformDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*AppPlatformDriver) Scale ¶
func (d *AppPlatformDriver) Scale(ctx context.Context, ref interfaces.ResourceRef, replicas int) (*interfaces.ResourceOutput, error)
func (*AppPlatformDriver) Update ¶
func (d *AppPlatformDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *CertificateDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*CertificateDriver) Delete ¶
func (d *CertificateDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*CertificateDriver) Diff ¶
func (d *CertificateDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*CertificateDriver) HealthCheck ¶
func (d *CertificateDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*CertificateDriver) Read ¶
func (d *CertificateDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*CertificateDriver) Scale ¶
func (d *CertificateDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*CertificateDriver) Update ¶
func (d *CertificateDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 ¶
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 ¶
func (d *DNSDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *DNSDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*DNSDriver) HealthCheck ¶
func (d *DNSDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*DNSDriver) Read ¶
func (d *DNSDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*DNSDriver) Scale ¶
func (d *DNSDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*DNSDriver) Update ¶
func (d *DNSDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *DatabaseDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*DatabaseDriver) Delete ¶
func (d *DatabaseDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*DatabaseDriver) Diff ¶
func (d *DatabaseDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*DatabaseDriver) HealthCheck ¶
func (d *DatabaseDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*DatabaseDriver) Read ¶
func (d *DatabaseDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*DatabaseDriver) Scale ¶
func (d *DatabaseDriver) Scale(ctx context.Context, ref interfaces.ResourceRef, replicas int) (*interfaces.ResourceOutput, error)
func (*DatabaseDriver) Update ¶
func (d *DatabaseDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *DropletDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*DropletDriver) Delete ¶
func (d *DropletDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*DropletDriver) Diff ¶
func (d *DropletDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*DropletDriver) HealthCheck ¶
func (d *DropletDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*DropletDriver) Read ¶
func (d *DropletDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*DropletDriver) Scale ¶
func (d *DropletDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*DropletDriver) Update ¶
func (d *DropletDriver) Update(_ context.Context, _ interfaces.ResourceRef, _ interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *FirewallDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*FirewallDriver) Delete ¶
func (d *FirewallDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*FirewallDriver) Diff ¶
func (d *FirewallDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*FirewallDriver) HealthCheck ¶
func (d *FirewallDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*FirewallDriver) Read ¶
func (d *FirewallDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*FirewallDriver) Scale ¶
func (d *FirewallDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*FirewallDriver) Update ¶
func (d *FirewallDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *KubernetesDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*KubernetesDriver) Delete ¶
func (d *KubernetesDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*KubernetesDriver) Diff ¶
func (d *KubernetesDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*KubernetesDriver) HealthCheck ¶
func (d *KubernetesDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*KubernetesDriver) Read ¶
func (d *KubernetesDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*KubernetesDriver) Scale ¶
func (d *KubernetesDriver) Scale(ctx context.Context, ref interfaces.ResourceRef, replicas int) (*interfaces.ResourceOutput, error)
func (*KubernetesDriver) Update ¶
func (d *KubernetesDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *LoadBalancerDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*LoadBalancerDriver) Delete ¶
func (d *LoadBalancerDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*LoadBalancerDriver) Diff ¶
func (d *LoadBalancerDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*LoadBalancerDriver) HealthCheck ¶
func (d *LoadBalancerDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*LoadBalancerDriver) Read ¶
func (d *LoadBalancerDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*LoadBalancerDriver) Scale ¶
func (d *LoadBalancerDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*LoadBalancerDriver) Update ¶
func (d *LoadBalancerDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 (d *RegistryDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*RegistryDriver) Delete ¶
func (d *RegistryDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*RegistryDriver) Diff ¶
func (d *RegistryDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*RegistryDriver) HealthCheck ¶
func (d *RegistryDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*RegistryDriver) Read ¶
func (d *RegistryDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*RegistryDriver) Scale ¶
func (d *RegistryDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*RegistryDriver) Update ¶
func (d *RegistryDriver) Update(ctx context.Context, _ interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
type SpacesBucket ¶
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 (d *SpacesDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*SpacesDriver) Delete ¶
func (d *SpacesDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*SpacesDriver) Diff ¶
func (d *SpacesDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*SpacesDriver) HealthCheck ¶
func (d *SpacesDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*SpacesDriver) Read ¶
func (d *SpacesDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*SpacesDriver) Scale ¶
func (d *SpacesDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*SpacesDriver) Update ¶
func (d *SpacesDriver) Update(_ context.Context, _ interfaces.ResourceRef, _ interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
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 ¶
NewVPCDriver creates a VPCDriver backed by a real godo client.
func NewVPCDriverWithClient ¶
NewVPCDriverWithClient creates a driver with an injected client (for tests).
func (*VPCDriver) Create ¶
func (d *VPCDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
func (*VPCDriver) Delete ¶
func (d *VPCDriver) Delete(ctx context.Context, ref interfaces.ResourceRef) error
func (*VPCDriver) Diff ¶
func (d *VPCDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*VPCDriver) HealthCheck ¶
func (d *VPCDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*VPCDriver) Read ¶
func (d *VPCDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*VPCDriver) Scale ¶
func (d *VPCDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*VPCDriver) Update ¶
func (d *VPCDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)