Skip to content

Commit c69ddac

Browse files
authored
Merge pull request #163 from Charliekenney23/feat/nodebal-proxy-protocol
add proxy_protocol support for NodeBalancerConfigs
2 parents 363119e + 693ef76 commit c69ddac

File tree

4 files changed

+77
-92
lines changed

4 files changed

+77
-92
lines changed

Makefile

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
-include .env
22
BIN_DIR := $(GOPATH)/bin
33

4+
INTEGRATION_DIR := ./test/integration
5+
FIXTURES_DIR := $(INTEGRATION_DIR)/fixtures
6+
47
GOLANGCILINT := golangci-lint
58
GOLANGCILINT_IMG := golangci/golangci-lint:v1.23-alpine
69
GOLANGCILINT_ARGS := run
@@ -43,15 +46,16 @@ refresh-fixtures: clean-fixtures fixtures
4346

4447
run_fixtures:
4548
@echo "* Running fixtures"
46-
@LINODE_FIXTURE_MODE="record" \
49+
cd $(INTEGRATION_DIR) && \
50+
LINODE_FIXTURE_MODE="record" \
4751
LINODE_TOKEN=$(LINODE_TOKEN) \
4852
LINODE_API_VERSION="v4beta" \
4953
GO111MODULE="on" \
50-
go test -timeout=60m -v ./test/integration $(ARGS)
54+
go test -timeout=60m -v $(ARGS)
5155

5256
sanitize:
5357
@echo "* Sanitizing fixtures"
54-
@for yaml in test/integration/fixtures/*yaml; do \
58+
@for yaml in $(FIXTURES_DIR)/*yaml; do \
5559
sed -E -i.bak \
5660
-e 's_stats/20[0-9]{2}/[1-9][0-2]?_stats/2018/1_g' \
5761
-e 's/20[0-9]{2}-[01][0-9]-[0-3][0-9]T[0-2][0-9]:[0-9]{2}:[0-9]{2}/2018-01-02T03:04:05/g' \
@@ -61,7 +65,7 @@ sanitize:
6165
-e 's/(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/1234::5678/g' \
6266
$$yaml; \
6367
done
64-
@find test/integration/fixtures -name *yaml.bak -exec rm {} \;
68+
@find $(FIXTURES_DIR) -name *yaml.bak -exec rm {} \;
6569

6670
fixtures: run_fixtures sanitize
6771

nodebalancer_configs.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ type NodeBalancerConfig struct {
1111
ID int `json:"id"`
1212
Port int `json:"port"`
1313
Protocol ConfigProtocol `json:"protocol"`
14+
ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol"`
1415
Algorithm ConfigAlgorithm `json:"algorithm"`
1516
Stickiness ConfigStickiness `json:"stickiness"`
1617
Check ConfigCheck `json:"check"`
@@ -70,6 +71,16 @@ const (
7071
ProtocolTCP ConfigProtocol = "tcp"
7172
)
7273

74+
// ConfigProxyProtocol constants start with ProxyProtocol and include Linode API NodeBalancer Config proxy protocol versions
75+
type ConfigProxyProtocol string
76+
77+
// ConfigProxyProtocol constatns reflect the proxy protocol version used by a NodeBalancer Config
78+
const (
79+
ProxyProtocolNone ConfigProxyProtocol = "none"
80+
ProxyProtocolV1 ConfigProxyProtocol = "v1"
81+
ProxyProtocolV2 ConfigProxyProtocol = "v2"
82+
)
83+
7384
// ConfigCipher constants start with Cipher and include Linode API NodeBalancer Config Cipher values
7485
type ConfigCipher string
7586

@@ -89,6 +100,7 @@ type NodeBalancerNodeStatus struct {
89100
type NodeBalancerConfigCreateOptions struct {
90101
Port int `json:"port"`
91102
Protocol ConfigProtocol `json:"protocol,omitempty"`
103+
ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol,omitempty"`
92104
Algorithm ConfigAlgorithm `json:"algorithm,omitempty"`
93105
Stickiness ConfigStickiness `json:"stickiness,omitempty"`
94106
Check ConfigCheck `json:"check,omitempty"`
@@ -108,6 +120,7 @@ type NodeBalancerConfigCreateOptions struct {
108120
type NodeBalancerConfigRebuildOptions struct {
109121
Port int `json:"port"`
110122
Protocol ConfigProtocol `json:"protocol,omitempty"`
123+
ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol,omitempty"`
111124
Algorithm ConfigAlgorithm `json:"algorithm,omitempty"`
112125
Stickiness ConfigStickiness `json:"stickiness,omitempty"`
113126
Check ConfigCheck `json:"check,omitempty"`
@@ -131,6 +144,7 @@ func (i NodeBalancerConfig) GetCreateOptions() NodeBalancerConfigCreateOptions {
131144
return NodeBalancerConfigCreateOptions{
132145
Port: i.Port,
133146
Protocol: i.Protocol,
147+
ProxyProtocol: i.ProxyProtocol,
134148
Algorithm: i.Algorithm,
135149
Stickiness: i.Stickiness,
136150
Check: i.Check,
@@ -151,6 +165,7 @@ func (i NodeBalancerConfig) GetUpdateOptions() NodeBalancerConfigUpdateOptions {
151165
return NodeBalancerConfigUpdateOptions{
152166
Port: i.Port,
153167
Protocol: i.Protocol,
168+
ProxyProtocol: i.ProxyProtocol,
154169
Algorithm: i.Algorithm,
155170
Stickiness: i.Stickiness,
156171
Check: i.Check,
@@ -171,6 +186,7 @@ func (i NodeBalancerConfig) GetRebuildOptions() NodeBalancerConfigRebuildOptions
171186
return NodeBalancerConfigRebuildOptions{
172187
Port: i.Port,
173188
Protocol: i.Protocol,
189+
ProxyProtocol: i.ProxyProtocol,
174190
Algorithm: i.Algorithm,
175191
Stickiness: i.Stickiness,
176192
Check: i.Check,

0 commit comments

Comments
 (0)