Documentation
¶
Index ¶
- type Client
- func (c *Client) AddNetworkCloudSubnet(ctx context.Context, networkID int64, zone string) error
- func (c *Client) AttachServerToLoadBalancer(ctx context.Context, loadBalancerID int64, serverID int64) error
- func (c *Client) AttachServerToNetwork(ctx context.Context, serverID int64, networkID int64) error
- func (c *Client) AttachVolume(ctx context.Context, volumeID int64, serverID int64) error
- func (c *Client) ChangeServerType(ctx context.Context, id int64, serverTypeName string, upgradeDisk bool) error
- func (c *Client) CreateLoadBalancer(ctx context.Context, opts LoadBalancerCreateOpts) (*LoadBalancerInfo, error)
- func (c *Client) CreateNetwork(ctx context.Context, opts NetworkCreateOpts) (*NetworkInfo, error)
- func (c *Client) CreateServer(ctx context.Context, opts ServerCreateOpts) (*ServerInfo, error)
- func (c *Client) CreateVolume(ctx context.Context, opts VolumeCreateOpts) (*VolumeInfo, error)
- func (c *Client) DeleteLoadBalancer(ctx context.Context, id int64) error
- func (c *Client) DeleteNetwork(ctx context.Context, id int64) error
- func (c *Client) DeleteServer(ctx context.Context, id int64) error
- func (c *Client) DeleteVolume(ctx context.Context, id int64) error
- func (c *Client) DetachServerFromLoadBalancer(ctx context.Context, loadBalancerID int64, serverID int64) error
- func (c *Client) DetachServerFromNetwork(ctx context.Context, serverID int64, networkID int64) error
- func (c *Client) DetachVolume(ctx context.Context, volumeID int64) error
- func (c *Client) GetLoadBalancer(ctx context.Context, id int64) (*LoadBalancerInfo, error)
- func (c *Client) GetLoadBalancerByName(ctx context.Context, name string) (*LoadBalancerInfo, error)
- func (c *Client) GetNetwork(ctx context.Context, id int64) (*NetworkInfo, error)
- func (c *Client) GetNetworkByName(ctx context.Context, name string) (*NetworkInfo, error)
- func (c *Client) GetServer(ctx context.Context, id int64) (*ServerInfo, error)
- func (c *Client) GetServerByName(ctx context.Context, name string) (*ServerInfo, error)
- func (c *Client) GetVolume(ctx context.Context, id int64) (*VolumeInfo, error)
- func (c *Client) GetVolumeByName(ctx context.Context, name string) (*VolumeInfo, error)
- func (c *Client) PowerOffServer(ctx context.Context, id int64) error
- func (c *Client) PowerOnServer(ctx context.Context, id int64) error
- type FakeClient
- func (f *FakeClient) AddNetworkCloudSubnet(ctx context.Context, networkID int64, zone string) error
- func (f *FakeClient) AttachServerToLoadBalancer(ctx context.Context, loadBalancerID int64, serverID int64) error
- func (f *FakeClient) AttachServerToNetwork(ctx context.Context, serverID int64, networkID int64) error
- func (f *FakeClient) AttachVolume(ctx context.Context, volumeID int64, serverID int64) error
- func (f *FakeClient) ChangeServerType(ctx context.Context, id int64, serverType string, upgradeDisk bool) error
- func (f *FakeClient) CreateLoadBalancer(ctx context.Context, opts LoadBalancerCreateOpts) (*LoadBalancerInfo, error)
- func (f *FakeClient) CreateNetwork(ctx context.Context, opts NetworkCreateOpts) (*NetworkInfo, error)
- func (f *FakeClient) CreateServer(ctx context.Context, opts ServerCreateOpts) (*ServerInfo, error)
- func (f *FakeClient) CreateVolume(ctx context.Context, opts VolumeCreateOpts) (*VolumeInfo, error)
- func (f *FakeClient) DeleteLoadBalancer(ctx context.Context, id int64) error
- func (f *FakeClient) DeleteNetwork(ctx context.Context, id int64) error
- func (f *FakeClient) DeleteServer(ctx context.Context, id int64) error
- func (f *FakeClient) DeleteVolume(ctx context.Context, id int64) error
- func (f *FakeClient) DetachServerFromLoadBalancer(ctx context.Context, loadBalancerID int64, serverID int64) error
- func (f *FakeClient) DetachServerFromNetwork(ctx context.Context, serverID int64, networkID int64) error
- func (f *FakeClient) DetachVolume(ctx context.Context, volumeID int64) error
- func (f *FakeClient) GetLoadBalancer(ctx context.Context, id int64) (*LoadBalancerInfo, error)
- func (f *FakeClient) GetLoadBalancerByName(ctx context.Context, name string) (*LoadBalancerInfo, error)
- func (f *FakeClient) GetNetwork(ctx context.Context, id int64) (*NetworkInfo, error)
- func (f *FakeClient) GetNetworkByName(ctx context.Context, name string) (*NetworkInfo, error)
- func (f *FakeClient) GetServer(ctx context.Context, id int64) (*ServerInfo, error)
- func (f *FakeClient) GetServerByName(ctx context.Context, name string) (*ServerInfo, error)
- func (f *FakeClient) GetVolume(ctx context.Context, id int64) (*VolumeInfo, error)
- func (f *FakeClient) GetVolumeByName(ctx context.Context, name string) (*VolumeInfo, error)
- func (f *FakeClient) Len() int
- func (f *FakeClient) LenLoadBalancers() int
- func (f *FakeClient) LenVolumes() int
- func (f *FakeClient) PowerOffServer(ctx context.Context, id int64) error
- func (f *FakeClient) PowerOnServer(ctx context.Context, id int64) error
- func (f *FakeClient) Reset()
- type Interface
- type LoadBalancerCreateOpts
- type LoadBalancerInfo
- type NetworkCreateOpts
- type NetworkInfo
- type ServerCreateOpts
- type ServerInfo
- type VolumeCreateOpts
- type VolumeInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps the Hetzner Cloud API client with idempotent helpers. It implements Interface.
func NewClient ¶
NewClient creates a new Hetzner Cloud API client authenticated with the given token.
func (*Client) AddNetworkCloudSubnet ¶ added in v0.5.0
AddNetworkCloudSubnet adds a Cloud subnet in the given Hetzner network zone.
func (*Client) AttachServerToLoadBalancer ¶
func (c *Client) AttachServerToLoadBalancer(ctx context.Context, loadBalancerID int64, serverID int64) error
AttachServerToLoadBalancer attaches an existing server target to a load balancer.
func (*Client) AttachServerToNetwork ¶ added in v0.5.0
AttachServerToNetwork attaches an existing server to an existing private network.
func (*Client) AttachVolume ¶
AttachVolume attaches an existing volume to a server.
func (*Client) ChangeServerType ¶ added in v0.4.0
func (c *Client) ChangeServerType(ctx context.Context, id int64, serverTypeName string, upgradeDisk bool) error
ChangeServerType changes a server's type. The server must be off. Idempotent if already the requested type.
func (*Client) CreateLoadBalancer ¶
func (c *Client) CreateLoadBalancer(ctx context.Context, opts LoadBalancerCreateOpts) (*LoadBalancerInfo, error)
CreateLoadBalancer provisions a new Hetzner Cloud load balancer.
func (*Client) CreateNetwork ¶ added in v0.5.0
func (c *Client) CreateNetwork(ctx context.Context, opts NetworkCreateOpts) (*NetworkInfo, error)
CreateNetwork creates a private network with the given IPv4 CIDR.
func (*Client) CreateServer ¶
func (c *Client) CreateServer(ctx context.Context, opts ServerCreateOpts) (*ServerInfo, error)
CreateServer provisions a new Hetzner Cloud server.
func (*Client) CreateVolume ¶
func (c *Client) CreateVolume(ctx context.Context, opts VolumeCreateOpts) (*VolumeInfo, error)
CreateVolume provisions a new Hetzner Cloud volume.
func (*Client) DeleteLoadBalancer ¶
DeleteLoadBalancer destroys a Hetzner Cloud load balancer by ID.
func (*Client) DeleteNetwork ¶ added in v0.5.0
DeleteNetwork deletes a private network by ID.
func (*Client) DeleteServer ¶
DeleteServer destroys a Hetzner Cloud server by ID. Idempotent — returns nil if the server does not exist.
func (*Client) DeleteVolume ¶
DeleteVolume destroys a Hetzner Cloud volume by ID.
func (*Client) DetachServerFromLoadBalancer ¶
func (c *Client) DetachServerFromLoadBalancer(ctx context.Context, loadBalancerID int64, serverID int64) error
DetachServerFromLoadBalancer detaches a server target from a load balancer.
func (*Client) DetachServerFromNetwork ¶ added in v0.5.0
func (c *Client) DetachServerFromNetwork(ctx context.Context, serverID int64, networkID int64) error
DetachServerFromNetwork detaches a server from a private network.
func (*Client) DetachVolume ¶
DetachVolume detaches an existing volume from any server.
func (*Client) GetLoadBalancer ¶
GetLoadBalancer fetches a load balancer by its Hetzner Cloud ID.
func (*Client) GetLoadBalancerByName ¶
GetLoadBalancerByName fetches a load balancer by its name.
func (*Client) GetNetwork ¶ added in v0.5.0
GetNetwork fetches a private network by Hetzner ID.
func (*Client) GetNetworkByName ¶ added in v0.5.0
GetNetworkByName fetches a private network by name.
func (*Client) GetServer ¶
GetServer fetches a server by its Hetzner Cloud ID. Returns nil, nil if the server does not exist.
func (*Client) GetServerByName ¶
GetServerByName fetches a server by its name. Returns nil, nil if the server does not exist.
func (*Client) GetVolumeByName ¶
GetVolumeByName fetches a volume by its name.
func (*Client) PowerOffServer ¶ added in v0.4.0
PowerOffServer requests a graceful power-off for the server. Idempotent if already off.
type FakeClient ¶
type FakeClient struct {
// CreateErr, if non-nil, is returned by every CreateServer call.
CreateErr error
// GetErr, if non-nil, is returned by every GetServer call.
GetErr error
// DeleteErr, if non-nil, is returned by every DeleteServer call.
DeleteErr error
// contains filtered or unexported fields
}
FakeClient is an in-memory implementation of Interface for use in tests. All operations are goroutine-safe and stored in a simple map keyed by server ID.
func NewFakeClient ¶
func NewFakeClient() *FakeClient
NewFakeClient returns an empty FakeClient ready for use in tests.
func (*FakeClient) AddNetworkCloudSubnet ¶ added in v0.5.0
func (*FakeClient) AttachServerToLoadBalancer ¶
func (*FakeClient) AttachServerToNetwork ¶ added in v0.5.0
func (*FakeClient) AttachVolume ¶
func (*FakeClient) ChangeServerType ¶ added in v0.4.0
func (f *FakeClient) ChangeServerType(ctx context.Context, id int64, serverType string, upgradeDisk bool) error
ChangeServerType updates the stored type when the fake server is off.
func (*FakeClient) CreateLoadBalancer ¶
func (f *FakeClient) CreateLoadBalancer(ctx context.Context, opts LoadBalancerCreateOpts) (*LoadBalancerInfo, error)
func (*FakeClient) CreateNetwork ¶ added in v0.5.0
func (f *FakeClient) CreateNetwork(ctx context.Context, opts NetworkCreateOpts) (*NetworkInfo, error)
func (*FakeClient) CreateServer ¶
func (f *FakeClient) CreateServer(ctx context.Context, opts ServerCreateOpts) (*ServerInfo, error)
func (*FakeClient) CreateVolume ¶
func (f *FakeClient) CreateVolume(ctx context.Context, opts VolumeCreateOpts) (*VolumeInfo, error)
func (*FakeClient) DeleteLoadBalancer ¶
func (f *FakeClient) DeleteLoadBalancer(ctx context.Context, id int64) error
func (*FakeClient) DeleteNetwork ¶ added in v0.5.0
func (f *FakeClient) DeleteNetwork(ctx context.Context, id int64) error
func (*FakeClient) DeleteServer ¶
func (f *FakeClient) DeleteServer(ctx context.Context, id int64) error
func (*FakeClient) DeleteVolume ¶
func (f *FakeClient) DeleteVolume(ctx context.Context, id int64) error
func (*FakeClient) DetachServerFromLoadBalancer ¶
func (*FakeClient) DetachServerFromNetwork ¶ added in v0.5.0
func (*FakeClient) DetachVolume ¶
func (f *FakeClient) DetachVolume(ctx context.Context, volumeID int64) error
func (*FakeClient) GetLoadBalancer ¶
func (f *FakeClient) GetLoadBalancer(ctx context.Context, id int64) (*LoadBalancerInfo, error)
func (*FakeClient) GetLoadBalancerByName ¶
func (f *FakeClient) GetLoadBalancerByName(ctx context.Context, name string) (*LoadBalancerInfo, error)
func (*FakeClient) GetNetwork ¶ added in v0.5.0
func (f *FakeClient) GetNetwork(ctx context.Context, id int64) (*NetworkInfo, error)
func (*FakeClient) GetNetworkByName ¶ added in v0.5.0
func (f *FakeClient) GetNetworkByName(ctx context.Context, name string) (*NetworkInfo, error)
func (*FakeClient) GetServer ¶
func (f *FakeClient) GetServer(ctx context.Context, id int64) (*ServerInfo, error)
func (*FakeClient) GetServerByName ¶
func (f *FakeClient) GetServerByName(ctx context.Context, name string) (*ServerInfo, error)
func (*FakeClient) GetVolume ¶
func (f *FakeClient) GetVolume(ctx context.Context, id int64) (*VolumeInfo, error)
func (*FakeClient) GetVolumeByName ¶
func (f *FakeClient) GetVolumeByName(ctx context.Context, name string) (*VolumeInfo, error)
func (*FakeClient) Len ¶
func (f *FakeClient) Len() int
Len returns the number of servers currently tracked by the fake.
func (*FakeClient) LenLoadBalancers ¶
func (f *FakeClient) LenLoadBalancers() int
LenLoadBalancers returns the number of load balancers currently tracked by the fake.
func (*FakeClient) LenVolumes ¶
func (f *FakeClient) LenVolumes() int
LenVolumes returns the number of volumes currently tracked by the fake.
func (*FakeClient) PowerOffServer ¶ added in v0.4.0
func (f *FakeClient) PowerOffServer(ctx context.Context, id int64) error
PowerOffServer simulates an immediate transition to off.
func (*FakeClient) PowerOnServer ¶ added in v0.4.0
func (f *FakeClient) PowerOnServer(ctx context.Context, id int64) error
PowerOnServer simulates an immediate transition to running.
func (*FakeClient) Reset ¶ added in v0.4.0
func (f *FakeClient) Reset()
Reset clears all stored resources and injected errors. Use between Ginkgo specs when sharing one FakeClient.
type Interface ¶
type Interface interface {
GetServer(ctx context.Context, id int64) (*ServerInfo, error)
GetServerByName(ctx context.Context, name string) (*ServerInfo, error)
CreateServer(ctx context.Context, opts ServerCreateOpts) (*ServerInfo, error)
DeleteServer(ctx context.Context, id int64) error
PowerOffServer(ctx context.Context, id int64) error
PowerOnServer(ctx context.Context, id int64) error
ChangeServerType(ctx context.Context, id int64, serverType string, upgradeDisk bool) error
AttachServerToNetwork(ctx context.Context, serverID int64, networkID int64) error
DetachServerFromNetwork(ctx context.Context, serverID int64, networkID int64) error
GetVolume(ctx context.Context, id int64) (*VolumeInfo, error)
GetVolumeByName(ctx context.Context, name string) (*VolumeInfo, error)
CreateVolume(ctx context.Context, opts VolumeCreateOpts) (*VolumeInfo, error)
DeleteVolume(ctx context.Context, id int64) error
AttachVolume(ctx context.Context, volumeID int64, serverID int64) error
DetachVolume(ctx context.Context, volumeID int64) error
GetLoadBalancer(ctx context.Context, id int64) (*LoadBalancerInfo, error)
GetLoadBalancerByName(ctx context.Context, name string) (*LoadBalancerInfo, error)
CreateLoadBalancer(ctx context.Context, opts LoadBalancerCreateOpts) (*LoadBalancerInfo, error)
DeleteLoadBalancer(ctx context.Context, id int64) error
AttachServerToLoadBalancer(ctx context.Context, loadBalancerID int64, serverID int64) error
DetachServerFromLoadBalancer(ctx context.Context, loadBalancerID int64, serverID int64) error
GetNetwork(ctx context.Context, id int64) (*NetworkInfo, error)
GetNetworkByName(ctx context.Context, name string) (*NetworkInfo, error)
CreateNetwork(ctx context.Context, opts NetworkCreateOpts) (*NetworkInfo, error)
DeleteNetwork(ctx context.Context, id int64) error
AddNetworkCloudSubnet(ctx context.Context, networkID int64, zone string) error
}
Interface defines the Hetzner Cloud operations required by the controller. Using an interface here allows the controller to be tested with a fake client without making real API calls.
type LoadBalancerCreateOpts ¶
type LoadBalancerCreateOpts struct {
Name string
LoadBalancerType string
Location string
NetworkZone string
Algorithm string
Labels map[string]string
}
LoadBalancerCreateOpts holds the parameters for creating a Hetzner Cloud load balancer.
type LoadBalancerInfo ¶
type LoadBalancerInfo struct {
ID int64
Name string
PublicIPv4 string
PublicIPv6 string
Targets []int64
}
LoadBalancerInfo is a minimal, SDK-agnostic view of a Hetzner Cloud load balancer.
type NetworkCreateOpts ¶ added in v0.5.0
type NetworkCreateOpts struct {
Name string
IPRange string
NetworkZones []string
Labels map[string]string
ExposeRoutesToVSwitch bool
}
NetworkCreateOpts holds parameters for creating a private network.
type NetworkInfo ¶ added in v0.5.0
type NetworkInfo struct {
ID int64
Name string
IPRange string
SubnetZones []string
Labels map[string]string
ExposeRoutes bool
}
NetworkInfo is a minimal view of a Hetzner Cloud private network.
type ServerCreateOpts ¶
type ServerCreateOpts struct {
Name string
ServerType string
Image string
Location string
Labels map[string]string
SSHKeys []string
UserData string
}
ServerCreateOpts holds the parameters for creating a Hetzner Cloud server.
type ServerInfo ¶
type ServerInfo struct {
ID int64
Name string
ServerType string
State string
PublicIPv4 string
PublicIPv6 string
NetworkIDs []int64
}
ServerInfo is a minimal, SDK-agnostic view of a Hetzner Cloud server. The controller uses this type so it doesn't import the hcloud-go SDK directly.
type VolumeCreateOpts ¶
type VolumeCreateOpts struct {
Name string
Size int
ServerID int64 // optional, if > 0 the volume is attached to this server during creation
Location string // required if ServerID is 0
Format string // optional filesystem format
Automount bool // if true, Hetzner attempts to mount it automatically
Labels map[string]string
}
VolumeCreateOpts holds the parameters for creating a Hetzner Cloud volume.