@@ -6,19 +6,26 @@ import (
6
6
7
7
// NodeBalancerConfig objects allow a NodeBalancer to accept traffic on a new port
8
8
type NodeBalancerConfig struct {
9
- ID int `json:"id"`
10
- Port int `json:"port"`
11
- Protocol ConfigProtocol `json:"protocol"`
12
- ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol"`
13
- Algorithm ConfigAlgorithm `json:"algorithm"`
14
- Stickiness ConfigStickiness `json:"stickiness"`
15
- Check ConfigCheck `json:"check"`
16
- CheckInterval int `json:"check_interval"`
17
- CheckAttempts int `json:"check_attempts"`
18
- CheckPath string `json:"check_path"`
19
- CheckBody string `json:"check_body"`
20
- CheckPassive bool `json:"check_passive"`
21
- CheckTimeout int `json:"check_timeout"`
9
+ ID int `json:"id"`
10
+ Port int `json:"port"`
11
+ Protocol ConfigProtocol `json:"protocol"`
12
+ ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol"`
13
+ Algorithm ConfigAlgorithm `json:"algorithm"`
14
+ Stickiness ConfigStickiness `json:"stickiness"`
15
+ Check ConfigCheck `json:"check"`
16
+ CheckInterval int `json:"check_interval"`
17
+ CheckAttempts int `json:"check_attempts"`
18
+ CheckPath string `json:"check_path"`
19
+ CheckBody string `json:"check_body"`
20
+ CheckPassive bool `json:"check_passive"`
21
+ CheckTimeout int `json:"check_timeout"`
22
+
23
+ // NOTE: UDPCheckPort may not currently be available to all users.
24
+ UDPCheckPort int `json:"udp_check_port"`
25
+
26
+ // NOTE: UDPSessionTimeout may not currently be available to all users.
27
+ UDPSessionTimeout int `json:"udp_session_timeout"`
28
+
22
29
CipherSuite ConfigCipher `json:"cipher_suite"`
23
30
NodeBalancerID int `json:"nodebalancer_id"`
24
31
SSLCommonName string `json:"ssl_commonname"`
@@ -36,6 +43,7 @@ const (
36
43
AlgorithmRoundRobin ConfigAlgorithm = "roundrobin"
37
44
AlgorithmLeastConn ConfigAlgorithm = "leastconn"
38
45
AlgorithmSource ConfigAlgorithm = "source"
46
+ AlgorithmRingHash ConfigAlgorithm = "ring_hash"
39
47
)
40
48
41
49
// ConfigStickiness constants start with Stickiness and include Linode API NodeBalancer Config Stickiness
@@ -44,8 +52,10 @@ type ConfigStickiness string
44
52
// ConfigStickiness constants reflect the node stickiness method for a NodeBalancer Config
45
53
const (
46
54
StickinessNone ConfigStickiness = "none"
55
+ StickinessSession ConfigStickiness = "session"
47
56
StickinessTable ConfigStickiness = "table"
48
57
StickinessHTTPCookie ConfigStickiness = "http_cookie"
58
+ StickinessSourceIP ConfigStickiness = "source_ip"
49
59
)
50
60
51
61
// ConfigCheck constants start with Check and include Linode API NodeBalancer Config Check methods
@@ -67,12 +77,13 @@ const (
67
77
ProtocolHTTP ConfigProtocol = "http"
68
78
ProtocolHTTPS ConfigProtocol = "https"
69
79
ProtocolTCP ConfigProtocol = "tcp"
80
+ ProtocolUDP ConfigProtocol = "udp"
70
81
)
71
82
72
83
// ConfigProxyProtocol constants start with ProxyProtocol and include Linode API NodeBalancer Config proxy protocol versions
73
84
type ConfigProxyProtocol string
74
85
75
- // ConfigProxyProtocol constatns reflect the proxy protocol version used by a NodeBalancer Config
86
+ // ConfigProxyProtocol constants reflect the proxy protocol version used by a NodeBalancer Config
76
87
const (
77
88
ProxyProtocolNone ConfigProxyProtocol = "none"
78
89
ProxyProtocolV1 ConfigProxyProtocol = "v1"
@@ -96,42 +107,50 @@ type NodeBalancerNodeStatus struct {
96
107
97
108
// NodeBalancerConfigCreateOptions are permitted by CreateNodeBalancerConfig
98
109
type NodeBalancerConfigCreateOptions struct {
99
- Port int `json:"port"`
100
- Protocol ConfigProtocol `json:"protocol,omitempty"`
101
- ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol,omitempty"`
102
- Algorithm ConfigAlgorithm `json:"algorithm,omitempty"`
103
- Stickiness ConfigStickiness `json:"stickiness,omitempty"`
104
- Check ConfigCheck `json:"check,omitempty"`
105
- CheckInterval int `json:"check_interval,omitempty"`
106
- CheckAttempts int `json:"check_attempts,omitempty"`
107
- CheckPath string `json:"check_path,omitempty"`
108
- CheckBody string `json:"check_body,omitempty"`
109
- CheckPassive * bool `json:"check_passive,omitempty"`
110
- CheckTimeout int `json:"check_timeout,omitempty"`
111
- CipherSuite ConfigCipher `json:"cipher_suite,omitempty"`
112
- SSLCert string `json:"ssl_cert,omitempty"`
113
- SSLKey string `json:"ssl_key,omitempty"`
114
- Nodes []NodeBalancerNodeCreateOptions `json:"nodes,omitempty"`
110
+ Port int `json:"port"`
111
+ Protocol ConfigProtocol `json:"protocol,omitempty"`
112
+ ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol,omitempty"`
113
+ Algorithm ConfigAlgorithm `json:"algorithm,omitempty"`
114
+ Stickiness ConfigStickiness `json:"stickiness,omitempty"`
115
+ Check ConfigCheck `json:"check,omitempty"`
116
+ CheckInterval int `json:"check_interval,omitempty"`
117
+ CheckAttempts int `json:"check_attempts,omitempty"`
118
+ CheckPath string `json:"check_path,omitempty"`
119
+ CheckBody string `json:"check_body,omitempty"`
120
+ CheckPassive * bool `json:"check_passive,omitempty"`
121
+ CheckTimeout int `json:"check_timeout,omitempty"`
122
+
123
+ // NOTE: UDPCheckPort may not currently be available to all users.
124
+ UDPCheckPort * int `json:"udp_check_port,omitempty"`
125
+
126
+ CipherSuite ConfigCipher `json:"cipher_suite,omitempty"`
127
+ SSLCert string `json:"ssl_cert,omitempty"`
128
+ SSLKey string `json:"ssl_key,omitempty"`
129
+ Nodes []NodeBalancerNodeCreateOptions `json:"nodes,omitempty"`
115
130
}
116
131
117
132
// NodeBalancerConfigRebuildOptions used by RebuildNodeBalancerConfig
118
133
type NodeBalancerConfigRebuildOptions struct {
119
- Port int `json:"port"`
120
- Protocol ConfigProtocol `json:"protocol,omitempty"`
121
- ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol,omitempty"`
122
- Algorithm ConfigAlgorithm `json:"algorithm,omitempty"`
123
- Stickiness ConfigStickiness `json:"stickiness,omitempty"`
124
- Check ConfigCheck `json:"check,omitempty"`
125
- CheckInterval int `json:"check_interval,omitempty"`
126
- CheckAttempts int `json:"check_attempts,omitempty"`
127
- CheckPath string `json:"check_path,omitempty"`
128
- CheckBody string `json:"check_body,omitempty"`
129
- CheckPassive * bool `json:"check_passive,omitempty"`
130
- CheckTimeout int `json:"check_timeout,omitempty"`
131
- CipherSuite ConfigCipher `json:"cipher_suite,omitempty"`
132
- SSLCert string `json:"ssl_cert,omitempty"`
133
- SSLKey string `json:"ssl_key,omitempty"`
134
- Nodes []NodeBalancerConfigRebuildNodeOptions `json:"nodes"`
134
+ Port int `json:"port"`
135
+ Protocol ConfigProtocol `json:"protocol,omitempty"`
136
+ ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol,omitempty"`
137
+ Algorithm ConfigAlgorithm `json:"algorithm,omitempty"`
138
+ Stickiness ConfigStickiness `json:"stickiness,omitempty"`
139
+ Check ConfigCheck `json:"check,omitempty"`
140
+ CheckInterval int `json:"check_interval,omitempty"`
141
+ CheckAttempts int `json:"check_attempts,omitempty"`
142
+ CheckPath string `json:"check_path,omitempty"`
143
+ CheckBody string `json:"check_body,omitempty"`
144
+ CheckPassive * bool `json:"check_passive,omitempty"`
145
+ CheckTimeout int `json:"check_timeout,omitempty"`
146
+
147
+ // NOTE: UDPCheckPort may not currently be available to all users.
148
+ UDPCheckPort * int `json:"udp_check_port,omitempty"`
149
+
150
+ CipherSuite ConfigCipher `json:"cipher_suite,omitempty"`
151
+ SSLCert string `json:"ssl_cert,omitempty"`
152
+ SSLKey string `json:"ssl_key,omitempty"`
153
+ Nodes []NodeBalancerConfigRebuildNodeOptions `json:"nodes"`
135
154
}
136
155
137
156
// NodeBalancerConfigRebuildNodeOptions represents a node defined when rebuilding a
@@ -147,6 +166,11 @@ type NodeBalancerConfigUpdateOptions NodeBalancerConfigCreateOptions
147
166
148
167
// GetCreateOptions converts a NodeBalancerConfig to NodeBalancerConfigCreateOptions for use in CreateNodeBalancerConfig
149
168
func (i NodeBalancerConfig ) GetCreateOptions () NodeBalancerConfigCreateOptions {
169
+ var udpCheckPort * int
170
+ if i .UDPCheckPort != 0 {
171
+ udpCheckPort = & i .UDPCheckPort
172
+ }
173
+
150
174
return NodeBalancerConfigCreateOptions {
151
175
Port : i .Port ,
152
176
Protocol : i .Protocol ,
@@ -160,6 +184,7 @@ func (i NodeBalancerConfig) GetCreateOptions() NodeBalancerConfigCreateOptions {
160
184
CheckPath : i .CheckPath ,
161
185
CheckBody : i .CheckBody ,
162
186
CheckPassive : copyBool (& i .CheckPassive ),
187
+ UDPCheckPort : udpCheckPort ,
163
188
CipherSuite : i .CipherSuite ,
164
189
SSLCert : i .SSLCert ,
165
190
SSLKey : i .SSLKey ,
@@ -168,6 +193,11 @@ func (i NodeBalancerConfig) GetCreateOptions() NodeBalancerConfigCreateOptions {
168
193
169
194
// GetUpdateOptions converts a NodeBalancerConfig to NodeBalancerConfigUpdateOptions for use in UpdateNodeBalancerConfig
170
195
func (i NodeBalancerConfig ) GetUpdateOptions () NodeBalancerConfigUpdateOptions {
196
+ var udpCheckPort * int
197
+ if i .UDPCheckPort != 0 {
198
+ udpCheckPort = & i .UDPCheckPort
199
+ }
200
+
171
201
return NodeBalancerConfigUpdateOptions {
172
202
Port : i .Port ,
173
203
Protocol : i .Protocol ,
@@ -181,6 +211,7 @@ func (i NodeBalancerConfig) GetUpdateOptions() NodeBalancerConfigUpdateOptions {
181
211
CheckBody : i .CheckBody ,
182
212
CheckPassive : copyBool (& i .CheckPassive ),
183
213
CheckTimeout : i .CheckTimeout ,
214
+ UDPCheckPort : udpCheckPort ,
184
215
CipherSuite : i .CipherSuite ,
185
216
SSLCert : i .SSLCert ,
186
217
SSLKey : i .SSLKey ,
@@ -189,6 +220,11 @@ func (i NodeBalancerConfig) GetUpdateOptions() NodeBalancerConfigUpdateOptions {
189
220
190
221
// GetRebuildOptions converts a NodeBalancerConfig to NodeBalancerConfigRebuildOptions for use in RebuildNodeBalancerConfig
191
222
func (i NodeBalancerConfig ) GetRebuildOptions () NodeBalancerConfigRebuildOptions {
223
+ var udpCheckPort * int
224
+ if i .UDPCheckPort != 0 {
225
+ udpCheckPort = & i .UDPCheckPort
226
+ }
227
+
192
228
return NodeBalancerConfigRebuildOptions {
193
229
Port : i .Port ,
194
230
Protocol : i .Protocol ,
@@ -202,6 +238,7 @@ func (i NodeBalancerConfig) GetRebuildOptions() NodeBalancerConfigRebuildOptions
202
238
CheckPath : i .CheckPath ,
203
239
CheckBody : i .CheckBody ,
204
240
CheckPassive : copyBool (& i .CheckPassive ),
241
+ UDPCheckPort : udpCheckPort ,
205
242
CipherSuite : i .CipherSuite ,
206
243
SSLCert : i .SSLCert ,
207
244
SSLKey : i .SSLKey ,
0 commit comments