loadbalancer

package
v1.14.0 Latest Latest
Warning

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

Go to latest
Published: Oct 19, 2022 License: MIT Imports: 3 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

Functions

This section is empty.

Types

type ACL

type ACL struct {
	ID            int            `json:"id"`
	Name          string         `json:"name"`
	ListenerID    int            `json:"listener_id"`
	TargetGroupID int            `json:"target_group_id"`
	Conditions    []ACLCondition `json:"conditions"`
	Actions       []ACLAction    `json:"actions"`
}

ACL represents an ACL

type ACLAction

type ACLAction struct {
	Name      string                 `json:"name"`
	Arguments map[string]ACLArgument `json:"arguments"`
}

ACLAction represents an ACL action

type ACLArgument

type ACLArgument struct {
	Name  string      `json:"name"`
	Value interface{} `json:"value"`
}

ACLArgument represents an ACL condition/action argument

type ACLCondition

type ACLCondition struct {
	Name      string                 `json:"name"`
	Inverted  bool                   `json:"inverted"`
	Arguments map[string]ACLArgument `json:"arguments"`
}

ACLCondition represents an ACL condition

type ACLNotFoundError

type ACLNotFoundError struct {
	ID int
}

ACLNotFoundError indicates a certificate was not found

func (*ACLNotFoundError) Error

func (e *ACLNotFoundError) Error() string

type ACLTemplateAction

type ACLTemplateAction struct {
	Name         string                `json:"name"`
	FriendlyName string                `json:"friendly_name"`
	Description  string                `json:"description"`
	Arguments    []ACLTemplateArgument `json:"arguments"`
}

type ACLTemplateArgument added in v1.9.0

type ACLTemplateArgument struct {
	Name        string      `json:"name"`
	Description string      `json:"description"`
	Example     interface{} `json:"example"`
	Values      []string    `json:"values"`
}

type ACLTemplateCondition

type ACLTemplateCondition struct {
	Name         string                `json:"name"`
	FriendlyName string                `json:"friendly_name"`
	Description  string                `json:"description"`
	Arguments    []ACLTemplateArgument `json:"arguments"`
}

type ACLTemplates

type ACLTemplates struct {
	Conditions []ACLTemplateCondition `json:"conditions"`
	Actions    []ACLTemplateAction    `json:"actions"`
}

ACLTemplates represents a collection of ACL condition/action templates

type AccessIP

type AccessIP struct {
	ID        int                  `json:"id"`
	IP        connection.IPAddress `json:"ip"`
	CreatedAt connection.DateTime  `json:"created_at"`
	UpdatedAt connection.DateTime  `json:"updated_at"`
}

AccessIP represents an access IP

type AccessIPNotFoundError

type AccessIPNotFoundError struct {
	ID int
}

AccessIPNotFoundError indicates an access IP was not found

func (*AccessIPNotFoundError) Error

func (e *AccessIPNotFoundError) Error() string

type Bind

type Bind struct {
	ID         int                 `json:"id"`
	ListenerID int                 `json:"listener_id"`
	VIPID      int                 `json:"vip_id"`
	Port       int                 `json:"port"`
	CreatedAt  connection.DateTime `json:"created_at"`
	UpdatedAt  connection.DateTime `json:"updated_at"`
}

Bind represents a bind

type BindNotFoundError

type BindNotFoundError struct {
	ID int
}

BindNotFoundError indicates a bind was not found

func (*BindNotFoundError) Error

func (e *BindNotFoundError) Error() string

type Certificate

type Certificate struct {
	ID         int                 `json:"id"`
	ListenerID int                 `json:"listener_id"`
	Name       string              `json:"name"`
	ExpiresAt  connection.DateTime `json:"expires_at"`
	CreatedAt  connection.DateTime `json:"created_at"`
	UpdatedAt  connection.DateTime `json:"updated_at"`
}

Certificate represents a certificate

type CertificateNotFoundError

type CertificateNotFoundError struct {
	ID int
}

CertificateNotFoundError indicates a certificate was not found

func (*CertificateNotFoundError) Error

func (e *CertificateNotFoundError) Error() string

type Cluster

type Cluster struct {
	ID         int                 `json:"id"`
	Name       string              `json:"name"`
	Deployed   bool                `json:"deployed"`
	DeployedAt connection.DateTime `json:"deployed_at"`
	CreatedAt  connection.DateTime `json:"created_at"`
	UpdatedAt  connection.DateTime `json:"updated_at"`
}

Cluster represents a cluster

type ClusterNotFoundError

type ClusterNotFoundError struct {
	ID int
}

ClusterNotFoundError indicates a cluster was not found

func (*ClusterNotFoundError) Error

func (e *ClusterNotFoundError) Error() string

type CreateACLRequest

type CreateACLRequest struct {
	Name          string         `json:"name"`
	Priority      int            `json:"priority,omitempty"`
	ListenerID    int            `json:"listener_id,omitempty"`
	TargetGroupID int            `json:"target_group_id,omitempty"`
	Conditions    []ACLCondition `json:"conditions,omitempty"`
	Actions       []ACLAction    `json:"actions"`
}

CreateACLRequest represents a request to create a ACL

type CreateAccessIPRequest

type CreateAccessIPRequest struct {
	IP connection.IPAddress `json:"ip"`
}

CreateAccessIPRequest represents a request to create an access IP

type CreateBindRequest

type CreateBindRequest struct {
	VIPID int `json:"vip_id"`
	Port  int `json:"port"`
}

CreateBindRequest represents a request to create a bind

type CreateCertificateRequest

type CreateCertificateRequest struct {
	Name        string `json:"name"`
	Key         string `json:"key"`
	Certificate string `json:"certificate"`
	CABundle    string `json:"ca_bundle"`
}

CreateCertificateRequest represents a request to create a certificate

type CreateListenerRequest

type CreateListenerRequest struct {
	Name                 string                `json:"name"`
	ClusterID            int                   `json:"cluster_id"`
	HSTSEnabled          bool                  `json:"hsts_enabled"`
	Mode                 Mode                  `json:"mode"`
	HSTSMaxAge           int                   `json:"hsts_maxage"`
	Close                bool                  `json:"close"`
	RedirectHTTPS        bool                  `json:"redirect_https"`
	DefaultTargetGroupID int                   `json:"default_target_group_id"`
	AccessIsAllowList    bool                  `json:"access_is_allow_list"`
	AllowTLSV1           bool                  `json:"allow_tlsv1"`
	AllowTLSV11          bool                  `json:"allow_tlsv11"`
	DisableTLSV12        bool                  `json:"disable_tlsv12"`
	DisableHTTP2         bool                  `json:"disable_http2"`
	HTTP2Only            bool                  `json:"http2_only"`
	CustomCiphers        string                `json:"custom_ciphers"`
	CustomOptions        string                `json:"custom_options,omitempty"`
	GeoIP                *ListenerGeoIPRequest `json:"geoip,omitempty"`
	TimeoutsClient       int                   `json:"timeouts_client,omitempty"`
}

CreateListenerRequest represents a request to create a listener

type CreateTargetGroupRequest

type CreateTargetGroupRequest struct {
	ClusterID                int                      `json:"cluster_id"`
	Name                     string                   `json:"name"`
	Balance                  TargetGroupBalance       `json:"balance"`
	Mode                     Mode                     `json:"mode"`
	Close                    bool                     `json:"close"`
	Sticky                   bool                     `json:"sticky"`
	CookieOpts               string                   `json:"cookie_opts,omitempty"`
	Source                   string                   `json:"source,omitempty"`
	TimeoutsConnect          int                      `json:"timeouts_connect,omitempty"`
	TimeoutsServer           int                      `json:"timeouts_server,omitempty"`
	TimeoutsHTTPRequest      int                      `json:"timeouts_http_request,omitempty"`
	TimeoutsCheck            int                      `json:"timeouts_check,omitempty"`
	TimeoutsTunnel           int                      `json:"timeouts_tunnel,omitempty"`
	CustomOptions            string                   `json:"custom_options,omitempty"`
	MonitorURL               string                   `json:"monitor_url,omitempty"`
	MonitorMethod            TargetGroupMonitorMethod `json:"monitor_method,omitempty"`
	MonitorHost              string                   `json:"monitor_host,omitempty"`
	MonitorHTTPVersion       string                   `json:"monitor_http_version,omitempty"`
	MonitorExpect            string                   `json:"monitor_expect,omitempty"`
	MonitorExpectString      string                   `json:"monitor_expect_string,omitempty"`
	MonitorExpectStringRegex bool                     `json:"monitor_expect_string_regex"`
	MonitorTCPMonitoring     bool                     `json:"monitor_tcp_monitoring"`
	CheckPort                int                      `json:"check_port,omitempty"`
	SendProxy                bool                     `json:"send_proxy"`
	SendProxyV2              bool                     `json:"send_proxy_v2"`
	SSL                      bool                     `json:"ssl"`
	SSLVerify                bool                     `json:"ssl_verify"`
	SNI                      bool                     `json:"sni"`
}

CreateTargetGroupRequest represents a request to create a target group

type CreateTargetRequest

type CreateTargetRequest struct {
	Name               string               `json:"name,omitempty"`
	IP                 connection.IPAddress `json:"ip"`
	Port               int                  `json:"port,omitempty"`
	Weight             int                  `json:"weight,omitempty"`
	Backup             bool                 `json:"backup"`
	CheckInterval      int                  `json:"check_interval,omitempty"`
	CheckSSL           bool                 `json:"check_ssl"`
	CheckRise          int                  `json:"check_rise,omitempty"`
	CheckFall          int                  `json:"check_fall,omitempty"`
	DisableHTTP2       bool                 `json:"disable_http2"`
	HTTP2Only          bool                 `json:"http2_only"`
	Active             bool                 `json:"active"`
	SessionCookieValue string               `json:"session_cookie_value,omitempty"`
}

CreateTargetRequest represents a request to create a target

type CreateVIPRequest

type CreateVIPRequest struct {
	ClusterID int    `json:"cluster_id"`
	Type      string `json:"type"`
	CIDR      string `json:"cidr"`
}

CreateVIPRequest represents a request to create a target group

type Deployment added in v1.12.0

type Deployment struct {
	ID              int                 `json:"id"`
	ClusterID       int                 `json:"cluster_id"`
	Successful      bool                `json:"successful"`
	RequestedByType string              `json:"requested_by_type"`
	RequestedByID   string              `json:"requested_by_id"`
	PSSID           int                 `json:"pss_id"`
	CreatedAt       connection.DateTime `json:"created_at"`
	UpdatedAt       connection.DateTime `json:"updated_at"`
}

Deployment represents a load balancer deployment

type DeploymentNotFoundError added in v1.12.0

type DeploymentNotFoundError struct {
	ID int
}

DeploymentNotFoundError indicates a deployment was not found

func (*DeploymentNotFoundError) Error added in v1.12.0

func (e *DeploymentNotFoundError) Error() string

type Listener

type Listener struct {
	ID                   int                 `json:"id"`
	Name                 string              `json:"name"`
	ClusterID            int                 `json:"cluster_id"`
	HSTSEnabled          bool                `json:"hsts_enabled"`
	Mode                 Mode                `json:"mode"`
	HSTSMaxAge           int                 `json:"hsts_maxage"`
	Close                bool                `json:"close"`
	RedirectHTTPS        bool                `json:"redirect_https"`
	DefaultTargetGroupID int                 `json:"default_target_group_id"`
	AccessIsAllowList    bool                `json:"access_is_allow_list"`
	AllowTLSV1           bool                `json:"allow_tlsv1"`
	AllowTLSV11          bool                `json:"allow_tlsv11"`
	DisableTLSV12        bool                `json:"disable_tlsv12"`
	DisableHTTP2         bool                `json:"disable_http2"`
	HTTP2Only            bool                `json:"http2_only"`
	CustomCiphers        string              `json:"custom_ciphers"`
	CustomOptions        string              `json:"custom_options"`
	TimeoutsClient       int                 `json:"timeouts_client"`
	GeoIP                *ListenerGeoIP      `json:"geoip"`
	CreatedAt            connection.DateTime `json:"created_at"`
	UpdatedAt            connection.DateTime `json:"updated_at"`
}

Listener represents a listener / frontend

type ListenerGeoIP added in v1.12.0

type ListenerGeoIP struct {
	Restriction   ListenerGeoIPRestriction `json:"restriction"`
	Continents    []string                 `json:"continents"`
	Countries     []string                 `json:"countries"`
	EuropeanUnion bool                     `json:"european_union"`
}

type ListenerGeoIPRequest added in v1.13.0

type ListenerGeoIPRequest struct {
	Restriction   ListenerGeoIPRestriction `json:"restriction,omitempty"`
	Continents    []string                 `json:"continents,omitempty"`
	Countries     []string                 `json:"countries,omitempty"`
	EuropeanUnion *bool                    `json:"european_union,omitempty"`
}

type ListenerGeoIPRestriction added in v1.12.0

type ListenerGeoIPRestriction string
const (
	ListenerGeoIPRestrictionAllow ListenerGeoIPRestriction = "allow"
	ListenerGeoIPRestrictionDeny  ListenerGeoIPRestriction = "deny"
)

func ParseListenerGeoIPRestriction added in v1.12.0

func ParseListenerGeoIPRestriction(s string) (ListenerGeoIPRestriction, error)

ParseListenerGeoIPRestriction attempts to parse a ListenerGeoIPRestriction from string

func (ListenerGeoIPRestriction) String added in v1.12.0

func (s ListenerGeoIPRestriction) String() string

type ListenerNotFoundError

type ListenerNotFoundError struct {
	ID int
}

ListenerNotFoundError indicates a listener was not found

func (*ListenerNotFoundError) Error

func (e *ListenerNotFoundError) Error() string

type LoadBalancerService

type LoadBalancerService interface {
	// Cluster
	GetClusters(parameters connection.APIRequestParameters) ([]Cluster, error)
	GetClustersPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Cluster], error)
	GetCluster(clusterID int) (Cluster, error)
	PatchCluster(clusterID int, req PatchClusterRequest) error
	DeployCluster(clusterID int) error
	ValidateCluster(clusterID int) error

	// Deployment
	GetDeployments(parameters connection.APIRequestParameters) ([]Deployment, error)
	GetDeploymentsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Deployment], error)
	GetDeployment(deploymentID int) (Deployment, error)

	// Cluster ACL Templates
	GetClusterACLTemplates(clusterID int) (ACLTemplates, error)

	// Target Group
	GetTargetGroups(parameters connection.APIRequestParameters) ([]TargetGroup, error)
	GetTargetGroupsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[TargetGroup], error)
	GetTargetGroup(groupID int) (TargetGroup, error)
	CreateTargetGroup(req CreateTargetGroupRequest) (int, error)
	PatchTargetGroup(groupID int, req PatchTargetGroupRequest) error
	DeleteTargetGroup(groupID int) error

	// Target Group ACL
	GetTargetGroupACLs(targetGroupID int, parameters connection.APIRequestParameters) ([]ACL, error)
	GetTargetGroupACLsPaginated(targetGroupID int, parameters connection.APIRequestParameters) (*connection.Paginated[ACL], error)

	// Target Group Target
	GetTargetGroupTargets(groupID int, parameters connection.APIRequestParameters) ([]Target, error)
	GetTargetGroupTargetsPaginated(groupID int, parameters connection.APIRequestParameters) (*connection.Paginated[Target], error)
	GetTargetGroupTarget(groupID int, targetID int) (Target, error)
	CreateTargetGroupTarget(groupID int, req CreateTargetRequest) (int, error)
	PatchTargetGroupTarget(groupID int, targetID int, req PatchTargetRequest) error
	DeleteTargetGroupTarget(groupID int, targetID int) error

	// VIP
	GetVIPs(parameters connection.APIRequestParameters) ([]VIP, error)
	GetVIPsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[VIP], error)
	GetVIP(vipID int) (VIP, error)

	// Listener
	GetListeners(parameters connection.APIRequestParameters) ([]Listener, error)
	GetListenersPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Listener], error)
	GetListener(listenerID int) (Listener, error)
	CreateListener(req CreateListenerRequest) (int, error)
	PatchListener(listenerID int, req PatchListenerRequest) error
	DisableListenerGeoIP(listenerID int) error
	DeleteListener(listenerID int) error

	// Listener ACL
	GetListenerACLs(listenerID int, parameters connection.APIRequestParameters) ([]ACL, error)
	GetListenerACLsPaginated(listenerID int, parameters connection.APIRequestParameters) (*connection.Paginated[ACL], error)

	// Listener Access IP
	GetListenerAccessIPs(listenerID int, parameters connection.APIRequestParameters) ([]AccessIP, error)
	GetListenerAccessIPsPaginated(listenerID int, parameters connection.APIRequestParameters) (*connection.Paginated[AccessIP], error)
	CreateListenerAccessIP(listenerID int, req CreateAccessIPRequest) (int, error)

	// Listener Bind
	GetListenerBinds(listenerID int, parameters connection.APIRequestParameters) ([]Bind, error)
	GetListenerBindsPaginated(listenerID int, parameters connection.APIRequestParameters) (*connection.Paginated[Bind], error)
	GetListenerBind(listenerID int, bindID int) (Bind, error)
	CreateListenerBind(listenerID int, req CreateBindRequest) (int, error)
	PatchListenerBind(listenerID int, bindID int, req PatchBindRequest) error
	DeleteListenerBind(listenerID int, bindID int) error

	// Access IP
	GetAccessIP(accessIP int) (AccessIP, error)
	PatchAccessIP(accessIP int, req PatchAccessIPRequest) error
	DeleteAccessIP(accessIP int) error

	// Certificate
	GetCertificates(parameters connection.APIRequestParameters) ([]Certificate, error)
	GetCertificatesPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Certificate], error)

	// Listener Certificate
	GetListenerCertificates(listenerID int, parameters connection.APIRequestParameters) ([]Certificate, error)
	GetListenerCertificatesPaginated(listenerID int, parameters connection.APIRequestParameters) (*connection.Paginated[Certificate], error)
	GetListenerCertificate(listenerID int, certificateID int) (Certificate, error)
	CreateListenerCertificate(listenerID int, req CreateCertificateRequest) (int, error)
	PatchListenerCertificate(listenerID int, certificateID int, req PatchCertificateRequest) error
	DeleteListenerCertificate(listenerID int, certificateID int) error

	// Bind
	GetBinds(parameters connection.APIRequestParameters) ([]Bind, error)
	GetBindsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Bind], error)

	// ACL
	GetACLs(parameters connection.APIRequestParameters) ([]ACL, error)
	GetACLsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[ACL], error)
	GetACL(aclID int) (ACL, error)
	CreateACL(req CreateACLRequest) (int, error)
	PatchACL(aclID int, req PatchACLRequest) error
	DeleteACL(aclID int) error
}

LoadBalancerService is an interface for managing the LoadBalancer service

type Mode

type Mode string
const (
	ModeHTTP Mode = "http"
	ModeTCP  Mode = "tcp"
)

func ParseMode

func ParseMode(s string) (Mode, error)

ParseMode attempts to parse a Mode from string

func (Mode) String

func (s Mode) String() string

type PatchACLRequest

type PatchACLRequest struct {
	Name       string         `json:"name,omitempty"`
	Priority   int            `json:"priority,omitempty"`
	Conditions []ACLCondition `json:"conditions,omitempty"`
	Actions    []ACLAction    `json:"actions,omitempty"`
}

PatchListenerACLRequest represents a request to patch a ACL

type PatchAccessIPRequest

type PatchAccessIPRequest struct {
	IP connection.IPAddress `json:"ip,omitempty"`
}

PatchAccessIPRequest represents a request to patch an access IP

type PatchBindRequest

type PatchBindRequest struct {
	VIPID int `json:"vip_id,omitempty"`
	Port  int `json:"port,omitempty"`
}

PatchBindRequest represents a request to patch a bind

type PatchCertificateRequest

type PatchCertificateRequest struct {
	Name        string `json:"name,omitempty"`
	Key         string `json:"key,omitempty"`
	Certificate string `json:"certificate,omitempty"`
	CABundle    string `json:"ca_bundle,omitempty"`
}

PatchListenerCertificateRequest represents a request to patch a certificate

type PatchClusterRequest

type PatchClusterRequest struct {
	Name string `json:"name,omitempty"`
}

PatchClusterRequest represents a request to patch a cluster

type PatchListenerRequest

type PatchListenerRequest struct {
	Name                 string                `json:"name,omitempty"`
	HSTSEnabled          *bool                 `json:"hsts_enabled,omitempty"`
	Mode                 Mode                  `json:"mode,omitempty"`
	HSTSMaxAge           int                   `json:"hsts_maxage,omitempty"`
	Close                *bool                 `json:"close,omitempty"`
	RedirectHTTPS        *bool                 `json:"redirect_https,omitempty"`
	DefaultTargetGroupID int                   `json:"default_target_group_id,omitempty"`
	AccessIsAllowList    *bool                 `json:"access_is_allow_list,omitempty"`
	AllowTLSV1           *bool                 `json:"allow_tlsv1,omitempty"`
	AllowTLSV11          *bool                 `json:"allow_tlsv11,omitempty"`
	DisableTLSV12        *bool                 `json:"disable_tlsv12,omitempty"`
	DisableHTTP2         *bool                 `json:"disable_http2,omitempty"`
	HTTP2Only            *bool                 `json:"http2_only,omitempty"`
	CustomCiphers        string                `json:"custom_ciphers,omitempty"`
	CustomOptions        string                `json:"custom_options,omitempty"`
	GeoIP                *ListenerGeoIPRequest `json:"geoip,omitempty"`
	TimeoutsClient       int                   `json:"timeouts_client,omitempty"`
}

PatchListenerRequest represents a request to patch a listener

type PatchTargetGroupRequest

type PatchTargetGroupRequest struct {
	Name                     string                   `json:"name,omitempty"`
	Balance                  TargetGroupBalance       `json:"balance,omitempty"`
	Mode                     Mode                     `json:"mode,omitempty"`
	Close                    *bool                    `json:"close,omitempty"`
	Sticky                   *bool                    `json:"sticky,omitempty"`
	CookieOpts               string                   `json:"cookie_opts,omitempty"`
	Source                   string                   `json:"source,omitempty"`
	TimeoutsConnect          int                      `json:"timeouts_connect,omitempty"`
	TimeoutsServer           int                      `json:"timeouts_server,omitempty"`
	TimeoutsHTTPRequest      int                      `json:"timeouts_http_request,omitempty"`
	TimeoutsCheck            int                      `json:"timeouts_check,omitempty"`
	TimeoutsTunnel           int                      `json:"timeouts_tunnel,omitempty"`
	CustomOptions            string                   `json:"custom_options,omitempty"`
	MonitorURL               string                   `json:"monitor_url,omitempty"`
	MonitorMethod            TargetGroupMonitorMethod `json:"monitor_method,omitempty"`
	MonitorHost              string                   `json:"monitor_host,omitempty"`
	MonitorHTTPVersion       string                   `json:"monitor_http_version,omitempty"`
	MonitorExpect            string                   `json:"monitor_expect,omitempty"`
	MonitorExpectString      string                   `json:"monitor_expect_string,omitempty"`
	MonitorExpectStringRegex *bool                    `json:"monitor_expect_string_regex,omitempty"`
	MonitorTCPMonitoring     *bool                    `json:"monitor_tcp_monitoring,omitempty"`
	CheckPort                int                      `json:"check_port,omitempty"`
	SendProxy                *bool                    `json:"send_proxy,omitempty"`
	SendProxyV2              *bool                    `json:"send_proxy_v2,omitempty"`
	SSL                      *bool                    `json:"ssl,omitempty"`
	SSLVerify                *bool                    `json:"ssl_verify,omitempty"`
	SNI                      *bool                    `json:"sni,omitempty"`
}

PatchTargetGroupRequest represents a request to patch a target group

type PatchTargetRequest

type PatchTargetRequest struct {
	Name               string               `json:"name,omitempty"`
	IP                 connection.IPAddress `json:"ip,omitempty"`
	Port               int                  `json:"port,omitempty"`
	Weight             int                  `json:"weight,omitempty"`
	Backup             *bool                `json:"backup,omitempty"`
	CheckInterval      int                  `json:"check_interval,omitempty"`
	CheckSSL           *bool                `json:"check_ssl,omitempty"`
	CheckRise          int                  `json:"check_rise,omitempty"`
	CheckFall          int                  `json:"check_fall,omitempty"`
	DisableHTTP2       *bool                `json:"disable_http2,omitempty"`
	HTTP2Only          *bool                `json:"http2_only,omitempty"`
	Active             *bool                `json:"active,omitempty"`
	SessionCookieValue string               `json:"session_cookie_value,omitempty"`
}

PatchTargetRequest represents a request to patch a target

type PatchVIPRequest

type PatchVIPRequest struct {
	Type string `json:"type,omitempty"`
	CIDR string `json:"cidr,omitempty"`
}

PatchVIPRequest represents a request to patch a target group

type Service

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

Service implements LoadBalancerService for managing LoadBalancer certificates via the UKFast API

func NewService

func NewService(connection connection.Connection) *Service

NewService returns a new instance of LoadBalancerService

func (*Service) CreateACL

func (s *Service) CreateACL(req CreateACLRequest) (int, error)

CreateACL creates an ACL

func (*Service) CreateListener

func (s *Service) CreateListener(req CreateListenerRequest) (int, error)

CreateListener creates a listener

func (*Service) CreateListenerAccessIP

func (s *Service) CreateListenerAccessIP(listenerID int, req CreateAccessIPRequest) (int, error)

CreateListenerAccessIP creates an access IP

func (*Service) CreateListenerBind

func (s *Service) CreateListenerBind(listenerID int, req CreateBindRequest) (int, error)

CreateListenerBind creates an bind

func (*Service) CreateListenerCertificate

func (s *Service) CreateListenerCertificate(listenerID int, req CreateCertificateRequest) (int, error)

CreateListenerCertificate creates an certificate

func (*Service) CreateTargetGroup

func (s *Service) CreateTargetGroup(req CreateTargetGroupRequest) (int, error)

PatchTargetGroup patches a target group

func (*Service) CreateTargetGroupTarget

func (s *Service) CreateTargetGroupTarget(groupID int, req CreateTargetRequest) (int, error)

CreateTargetGroupTarget creates a target

func (*Service) DeleteACL

func (s *Service) DeleteACL(aclID int) error

DeleteACL deletes an ACL

func (*Service) DeleteAccessIP

func (s *Service) DeleteAccessIP(accessID int) error

DeleteAccessIP deletes an access IP

func (*Service) DeleteListener

func (s *Service) DeleteListener(listenerID int) error

DeleteListener deletes a listener

func (*Service) DeleteListenerBind

func (s *Service) DeleteListenerBind(listenerID int, bindID int) error

DeleteListenerBind deletes a bind

func (*Service) DeleteListenerCertificate

func (s *Service) DeleteListenerCertificate(listenerID int, certificateID int) error

DeleteListenerCertificate deletes a certificate

func (*Service) DeleteTargetGroup

func (s *Service) DeleteTargetGroup(groupID int) error

PatchTargetGroup patches a target group

func (*Service) DeleteTargetGroupTarget

func (s *Service) DeleteTargetGroupTarget(groupID int, targetID int) error

DeleteTargetGroupTarget deletes a target

func (*Service) DeployCluster

func (s *Service) DeployCluster(clusterID int) error

DeployCluster deploys a Cluster

func (*Service) DisableListenerGeoIP added in v1.13.0

func (s *Service) DisableListenerGeoIP(listenerID int) error

PatchListener patches a listener

func (*Service) GetACL

func (s *Service) GetACL(aclID int) (ACL, error)

GetACL retrieves a single ACL by id

func (*Service) GetACLs

func (s *Service) GetACLs(parameters connection.APIRequestParameters) ([]ACL, error)

GetACLs retrieves a list of ACLs Currently, a target_group_id or listener_id filter must be provided for this to return data

func (*Service) GetACLsPaginated

func (s *Service) GetACLsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[ACL], error)

GetACLsPaginated retrieves a paginated list of ACLs Currently, a target_group_id or listener_id filter must be provided for this to return data

func (*Service) GetAccessIP

func (s *Service) GetAccessIP(accessID int) (AccessIP, error)

GetAccessIP retrieves a single access IP by id

func (*Service) GetBinds

func (s *Service) GetBinds(parameters connection.APIRequestParameters) ([]Bind, error)

GetBinds retrieves a list of binds

func (*Service) GetBindsPaginated

func (s *Service) GetBindsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Bind], error)

GetBindsPaginated retrieves a paginated list of binds

func (*Service) GetCertificates added in v1.11.0

func (s *Service) GetCertificates(parameters connection.APIRequestParameters) ([]Certificate, error)

GetCertificates retrieves a list of certificates

func (*Service) GetCertificatesPaginated added in v1.11.0

func (s *Service) GetCertificatesPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Certificate], error)

GetCertificatesPaginated retrieves a paginated list of certificates

func (*Service) GetCluster

func (s *Service) GetCluster(clusterID int) (Cluster, error)

GetCluster retrieves a single cluster by id

func (*Service) GetClusterACLTemplates

func (s *Service) GetClusterACLTemplates(clusterID int) (ACLTemplates, error)

GetCluster retrieves a single cluster by id

func (*Service) GetClusters

func (s *Service) GetClusters(parameters connection.APIRequestParameters) ([]Cluster, error)

GetClusters retrieves a list of clusters

func (*Service) GetClustersPaginated

func (s *Service) GetClustersPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Cluster], error)

GetClustersPaginated retrieves a paginated list of clusters

func (*Service) GetDeployment added in v1.12.0

func (s *Service) GetDeployment(deploymentID int) (Deployment, error)

GetDeployment retrieves a single deployment by id

func (*Service) GetDeployments added in v1.12.0

func (s *Service) GetDeployments(parameters connection.APIRequestParameters) ([]Deployment, error)

GetDeployments retrieves a list of deployments

func (*Service) GetDeploymentsPaginated added in v1.12.0

func (s *Service) GetDeploymentsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Deployment], error)

GetDeploymentsPaginated retrieves a paginated list of deployments

func (*Service) GetListener

func (s *Service) GetListener(listenerID int) (Listener, error)

GetListener retrieves a single listener by id

func (*Service) GetListenerACLs

func (s *Service) GetListenerACLs(listenerID int, parameters connection.APIRequestParameters) ([]ACL, error)

GetListenerACLs retrieves a list of ACLs

func (*Service) GetListenerACLsPaginated

func (s *Service) GetListenerACLsPaginated(listenerID int, parameters connection.APIRequestParameters) (*connection.Paginated[ACL], error)

GetListenerACLsPaginated retrieves a paginated list of ACLs

func (*Service) GetListenerAccessIP

func (s *Service) GetListenerAccessIP(listenerID int, accessID int) (AccessIP, error)

GetListenerAccessIP retrieves a single access IP by id

func (*Service) GetListenerAccessIPs

func (s *Service) GetListenerAccessIPs(listenerID int, parameters connection.APIRequestParameters) ([]AccessIP, error)

GetListenerAccessIPs retrieves a list of access IPs

func (*Service) GetListenerAccessIPsPaginated

func (s *Service) GetListenerAccessIPsPaginated(listenerID int, parameters connection.APIRequestParameters) (*connection.Paginated[AccessIP], error)

GetListenerAccessIPsPaginated retrieves a paginated list of access IPs

func (*Service) GetListenerBind

func (s *Service) GetListenerBind(listenerID int, bindID int) (Bind, error)

GetListenerBind retrieves a single bind by id

func (*Service) GetListenerBinds

func (s *Service) GetListenerBinds(listenerID int, parameters connection.APIRequestParameters) ([]Bind, error)

GetListenerBinds retrieves a list of binds

func (*Service) GetListenerBindsPaginated

func (s *Service) GetListenerBindsPaginated(listenerID int, parameters connection.APIRequestParameters) (*connection.Paginated[Bind], error)

GetListenerBindsPaginated retrieves a paginated list of binds

func (*Service) GetListenerCertificate

func (s *Service) GetListenerCertificate(listenerID int, certificateID int) (Certificate, error)

GetListenerCertificate retrieves a single certificate by id

func (*Service) GetListenerCertificates

func (s *Service) GetListenerCertificates(listenerID int, parameters connection.APIRequestParameters) ([]Certificate, error)

GetListenerCertificates retrieves a list of certificates

func (*Service) GetListenerCertificatesPaginated

func (s *Service) GetListenerCertificatesPaginated(listenerID int, parameters connection.APIRequestParameters) (*connection.Paginated[Certificate], error)

GetListenerCertificatesPaginated retrieves a paginated list of certificates

func (*Service) GetListeners

func (s *Service) GetListeners(parameters connection.APIRequestParameters) ([]Listener, error)

GetListeners retrieves a list of listeners

func (*Service) GetListenersPaginated

func (s *Service) GetListenersPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[Listener], error)

GetListenersPaginated retrieves a paginated list of listeners

func (*Service) GetTargetGroup

func (s *Service) GetTargetGroup(groupID int) (TargetGroup, error)

GetTargetGroup retrieves a single target group by id

func (*Service) GetTargetGroupACLs

func (s *Service) GetTargetGroupACLs(targetGroupID int, parameters connection.APIRequestParameters) ([]ACL, error)

GetTargetGroupACLs retrieves a list of ACLs

func (*Service) GetTargetGroupACLsPaginated

func (s *Service) GetTargetGroupACLsPaginated(targetGroupID int, parameters connection.APIRequestParameters) (*connection.Paginated[ACL], error)

GetTargetGroupACLsPaginated retrieves a paginated list of ACLs

func (*Service) GetTargetGroupTarget

func (s *Service) GetTargetGroupTarget(groupID int, targetID int) (Target, error)

GetTargetGroupTarget retrieves a single target by id

func (*Service) GetTargetGroupTargets

func (s *Service) GetTargetGroupTargets(groupID int, parameters connection.APIRequestParameters) ([]Target, error)

GetTargetGroupTargets retrieves a list of targets

func (*Service) GetTargetGroupTargetsPaginated

func (s *Service) GetTargetGroupTargetsPaginated(groupID int, parameters connection.APIRequestParameters) (*connection.Paginated[Target], error)

GetTargetGroupTargetsPaginated retrieves a paginated list of targets

func (*Service) GetTargetGroups

func (s *Service) GetTargetGroups(parameters connection.APIRequestParameters) ([]TargetGroup, error)

GetTargetGroups retrieves a list of target groups

func (*Service) GetTargetGroupsPaginated

func (s *Service) GetTargetGroupsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[TargetGroup], error)

GetTargetGroupsPaginated retrieves a paginated list of target groups

func (*Service) GetVIP

func (s *Service) GetVIP(vipID int) (VIP, error)

GetVIP retrieves a single VIP by id

func (*Service) GetVIPs

func (s *Service) GetVIPs(parameters connection.APIRequestParameters) ([]VIP, error)

GetVIPs retrieves a list of VIPs

func (*Service) GetVIPsPaginated

func (s *Service) GetVIPsPaginated(parameters connection.APIRequestParameters) (*connection.Paginated[VIP], error)

GetVIPsPaginated retrieves a paginated list of VIPs

func (*Service) PatchACL

func (s *Service) PatchACL(aclID int, req PatchACLRequest) error

PatchACL patches an ACL

func (*Service) PatchAccessIP

func (s *Service) PatchAccessIP(accessID int, req PatchAccessIPRequest) error

PatchAccessIP patches an access IP

func (*Service) PatchCluster

func (s *Service) PatchCluster(clusterID int, req PatchClusterRequest) error

PatchCluster patches a Cluster

func (*Service) PatchListener

func (s *Service) PatchListener(listenerID int, req PatchListenerRequest) error

PatchListener patches a listener

func (*Service) PatchListenerBind

func (s *Service) PatchListenerBind(listenerID int, bindID int, req PatchBindRequest) error

PatchListenerBind patches an bind

func (*Service) PatchListenerCertificate

func (s *Service) PatchListenerCertificate(listenerID int, certificateID int, req PatchCertificateRequest) error

PatchListenerCertificate patches an certificate

func (*Service) PatchTargetGroup

func (s *Service) PatchTargetGroup(groupID int, req PatchTargetGroupRequest) error

PatchTargetGroup patches a target group

func (*Service) PatchTargetGroupTarget

func (s *Service) PatchTargetGroupTarget(groupID int, targetID int, req PatchTargetRequest) error

PatchTargetGroupTarget patches a target

func (*Service) ValidateCluster

func (s *Service) ValidateCluster(clusterID int) error

ValidateCluster validates a cluster

type Target

type Target struct {
	ID                 int                  `json:"id"`
	TargetGroupID      int                  `json:"target_group_id"`
	Name               string               `json:"name"`
	IP                 connection.IPAddress `json:"ip"`
	Port               int                  `json:"port"`
	Weight             int                  `json:"weight"`
	Backup             bool                 `json:"backup"`
	CheckInterval      int                  `json:"check_interval"`
	CheckSSL           bool                 `json:"check_ssl"`
	CheckRise          int                  `json:"check_rise"`
	CheckFall          int                  `json:"check_fall"`
	DisableHTTP2       bool                 `json:"disable_http2"`
	HTTP2Only          bool                 `json:"http2_only"`
	Active             bool                 `json:"active"`
	SessionCookieValue string               `json:"session_cookie_value"`
	CreatedAt          connection.DateTime  `json:"created_at"`
	UpdatedAt          connection.DateTime  `json:"updated_at"`
}

Target represents a target

type TargetGroup

type TargetGroup struct {
	ID                       int                      `json:"id"`
	ClusterID                int                      `json:"cluster_id"`
	Name                     string                   `json:"name"`
	Balance                  TargetGroupBalance       `json:"balance"`
	Mode                     Mode                     `json:"mode"`
	Close                    bool                     `json:"close"`
	Sticky                   bool                     `json:"sticky"`
	CookieOpts               string                   `json:"cookie_opts"`
	Source                   string                   `json:"source"`
	TimeoutsConnect          int                      `json:"timeouts_connect"`
	TimeoutsServer           int                      `json:"timeouts_server"`
	TimeoutsHTTPRequest      int                      `json:"timeouts_http_request"`
	TimeoutsCheck            int                      `json:"timeouts_check"`
	TimeoutsTunnel           int                      `json:"timeouts_tunnel"`
	CustomOptions            string                   `json:"custom_options"`
	MonitorURL               string                   `json:"monitor_url"`
	MonitorMethod            TargetGroupMonitorMethod `json:"monitor_method"`
	MonitorHost              string                   `json:"monitor_host"`
	MonitorHTTPVersion       string                   `json:"monitor_http_version"`
	MonitorExpect            string                   `json:"monitor_expect"`
	MonitorExpectString      string                   `json:"monitor_expect_string"`
	MonitorExpectStringRegex bool                     `json:"monitor_expect_string_regex"`
	MonitorTCPMonitoring     bool                     `json:"monitor_tcp_monitoring"`
	CheckPort                int                      `json:"check_port"`
	SendProxy                bool                     `json:"send_proxy"`
	SendProxyV2              bool                     `json:"send_proxy_v2"`
	SSL                      bool                     `json:"ssl"`
	SSLVerify                bool                     `json:"ssl_verify"`
	SNI                      bool                     `json:"sni"`
	CreatedAt                connection.DateTime      `json:"created_at"`
	UpdatedAt                connection.DateTime      `json:"updated_at"`
}

TargetGroup represents a target group

type TargetGroupBalance

type TargetGroupBalance string
const (
	TargetGroupBalanceRoundRobin TargetGroupBalance = "roundrobin"
	TargetGroupBalanceStaticRR   TargetGroupBalance = "static-rr"
	TargetGroupBalanceLeastConn  TargetGroupBalance = "leastconn"
	TargetGroupBalanceFirst      TargetGroupBalance = "first"
	TargetGroupBalanceRDPCookie  TargetGroupBalance = "rdp-cookie"
	TargetGroupBalanceURI        TargetGroupBalance = "uri"
	TargetGroupBalanceHDR        TargetGroupBalance = "hdr"
	TargetGroupBalanceURLParam   TargetGroupBalance = "url_param"
	TargetGroupBalanceSource     TargetGroupBalance = "source"
)

func ParseTargetGroupBalance

func ParseTargetGroupBalance(s string) (TargetGroupBalance, error)

ParseTargetGroupBalance attempts to parse a TargetGroupBalance from string

func (TargetGroupBalance) String

func (s TargetGroupBalance) String() string

type TargetGroupMonitorMethod

type TargetGroupMonitorMethod string
const (
	TargetGroupMonitorMethodGET     TargetGroupMonitorMethod = "GET"
	TargetGroupMonitorMethodHEAD    TargetGroupMonitorMethod = "HEAD"
	TargetGroupMonitorMethodOPTIONS TargetGroupMonitorMethod = "OPTIONS"
)

func ParseTargetGroupMonitorMethod

func ParseTargetGroupMonitorMethod(s string) (TargetGroupMonitorMethod, error)

ParseTargetGroupMonitorMethod attempts to parse a TargetGroupMonitorMethod from string

func (TargetGroupMonitorMethod) String

func (s TargetGroupMonitorMethod) String() string

type TargetGroupNotFoundError

type TargetGroupNotFoundError struct {
	ID int
}

TargetGroupNotFoundError indicates a target group was not found

func (*TargetGroupNotFoundError) Error

func (e *TargetGroupNotFoundError) Error() string

type TargetNotFoundError

type TargetNotFoundError struct {
	ID int
}

TargetNotFoundError indicates a target was not found

func (*TargetNotFoundError) Error

func (e *TargetNotFoundError) Error() string

type VIP

type VIP struct {
	ID           int                 `json:"id"`
	ClusterID    int                 `json:"cluster_id"`
	InternalCIDR string              `json:"internal_cidr"`
	ExternalCIDR string              `json:"external_cidr"`
	MACAddress   string              `json:"mac_address"`
	CreatedAt    connection.DateTime `json:"created_at"`
	UpdatedAt    connection.DateTime `json:"updated_at"`
}

VIP represents a target virtual IP address

type VIPNotFoundError

type VIPNotFoundError struct {
	ID int
}

VIPNotFoundError indicates a VIP was not found

func (*VIPNotFoundError) Error

func (e *VIPNotFoundError) Error() string

Jump to

Keyboard shortcuts

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