load_balancer.go raw

   1  package network
   2  
   3  import (
   4  	"net"
   5  
   6  	"github.com/liquidweb/liquidweb-go/types"
   7  )
   8  
   9  // LoadBalancerNodeParams is the resource representing a load balancer node.
  10  type LoadBalancerNodeParams struct {
  11  	Domain string `json:"domain,omitempty"`
  12  	IP     net.IP `json:"ip,omitempty"`
  13  	UniqID string `json:"uniq_id,omitempty"`
  14  }
  15  
  16  // LoadBalancerNode is the resource representing a load balancer node.
  17  type LoadBalancerNode struct {
  18  	Domain string `json:"domain,omitempty"`
  19  	IP     net.IP `json:"ip,omitempty"`
  20  	UniqID string `json:"uniq_id,omitempty"`
  21  }
  22  
  23  // LoadBalancerServiceParams is the set of parameters used when adding services to a load balancer.
  24  type LoadBalancerServiceParams struct {
  25  	UniqID   string `json:"uniq_id,omitempty"`
  26  	SrcPort  int    `json:"src_port,omitempty"`
  27  	DestPort int    `json:"dest_port,omitempty"`
  28  }
  29  
  30  // LoadBalancerService is the resource representing a load balancer service.
  31  type LoadBalancerService struct {
  32  	UniqID   string        `json:"uniq_id,omitempty"`
  33  	SrcPort  types.FlexInt `json:"src_port,omitempty"`
  34  	DestPort types.FlexInt `json:"dest_port,omitempty"`
  35  	Protocol string        `json:"protocol,omitempty"`
  36  }
  37  
  38  // LoadBalancerParams is the set of parameters used when creating or updating a load balancer.
  39  type LoadBalancerParams struct {
  40  	UniqID             string                      `json:"uniq_id,omitempty"`
  41  	Name               string                      `json:"name,omitempty"`
  42  	Nodes              []string                    `json:"nodes,omitempty"`
  43  	Region             int                         `json:"region,omitempty"`
  44  	Services           []LoadBalancerServiceParams `json:"services,omitempty"`
  45  	SessionPersistence bool                        `json:"session_persistence,omitempty"`
  46  	SSLCert            string                      `json:"ssl_cert,omitempty"`
  47  	SSLIncludes        bool                        `json:"ssl_includes,omitempty"`
  48  	SSLInt             string                      `json:"ssl_int,omitempty"`
  49  	SSLKey             string                      `json:"ssl_key,omitempty"`
  50  	SSLTermination     bool                        `json:"ssl_termination,omitempty"`
  51  	Strategy           string                      `json:"strategy,omitempty"`
  52  }
  53  
  54  // LoadBalancer is the resource representing a load balancer.
  55  type LoadBalancer struct {
  56  	Name               string                 `json:"name,omitempty"`
  57  	Nodes              []LoadBalancerNode     `json:"nodes,omitempty"`
  58  	RegionID           types.FlexInt          `json:"region_id,omitempty"`
  59  	Services           []LoadBalancerService  `json:"services,omitempty"`
  60  	SessionPersistence types.NumericalBoolean `json:"session_persistence,omitempty"`
  61  	SSLIncludes        types.NumericalBoolean `json:"ssl_includes,omitempty"`
  62  	SSLTermination     types.NumericalBoolean `json:"ssl_termination,omitempty"`
  63  	Strategy           string                 `json:"ip,omitempty"`
  64  	UniqID             string                 `json:"uniq_id,omitempty"`
  65  	VIP                types.IPAddr           `json:"vip,omitempty"`
  66  }
  67  
  68  // LoadBalancerDeletion represents the API result when deleting a load balancer.
  69  type LoadBalancerDeletion struct {
  70  	Destroyed string `json:"destroyed"`
  71  }
  72