Skip to content

Commit

Permalink
Add support for GLB active-passive failover config (#1155)
Browse files Browse the repository at this point in the history
* Vendor godo v1.115.0

* Support GLB failover config

* Cleanup comment

---------

Co-authored-by: danaelhe <42972711+danaelhe@users.noreply.github.com>
  • Loading branch information
asaha2 and danaelhe committed May 9, 2024
1 parent 8ea164e commit bde207b
Show file tree
Hide file tree
Showing 13 changed files with 191 additions and 26 deletions.
13 changes: 13 additions & 0 deletions digitalocean/loadbalancer/datasource_loadbalancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,19 @@ func DataSourceDigitalOceanLoadbalancer() *schema.Resource {
Computed: true,
Description: "target port rules",
},
"region_priorities": {
Type: schema.TypeMap,
Computed: true,
Description: "region priority map",
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
"failover_threshold": {
Type: schema.TypeInt,
Computed: true,
Description: "fail-over threshold",
},
"cdn": {
Type: schema.TypeList,
Computed: true,
Expand Down
11 changes: 11 additions & 0 deletions digitalocean/loadbalancer/datasource_loadbalancer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -650,6 +650,12 @@ data "digitalocean_loadbalancer" "foobar" {
"data.digitalocean_loadbalancer.foobar", "glb_settings.0.target_port", "80"),
resource.TestCheckResourceAttr(
"data.digitalocean_loadbalancer.foobar", "glb_settings.0.cdn.0.is_enabled", "true"),
resource.TestCheckResourceAttr(
"data.digitalocean_loadbalancer.foobar", "glb_settings.0.region_priorities.%", "2"),
resource.TestCheckResourceAttr(
"data.digitalocean_loadbalancer.foobar", "glb_settings.0.region_priorities.nyc1", "1"),
resource.TestCheckResourceAttr(
"data.digitalocean_loadbalancer.foobar", "glb_settings.0.region_priorities.nyc2", "2"),
resource.TestCheckResourceAttr(
"data.digitalocean_loadbalancer.foobar", "domains.#", "2"),
resource.TestCheckResourceAttr(
Expand Down Expand Up @@ -798,6 +804,11 @@ resource "digitalocean_loadbalancer" "lorem" {
cdn {
is_enabled = true
}
region_priorities = {
nyc1 = 1
nyc2 = 2
}
failover_threshold = 10
}
domains {
Expand Down
19 changes: 19 additions & 0 deletions digitalocean/loadbalancer/loadbalancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,16 @@ func expandGLBSettings(config []interface{}) *godo.GLBSettings {
}
}

if v, ok := glbConfig["region_priorities"]; ok {
for region, priority := range v.(map[string]interface{}) {
if glbSettings.RegionPriorities == nil {
glbSettings.RegionPriorities = make(map[string]uint32)
}
glbSettings.RegionPriorities[region] = uint32(priority.(int))
}
glbSettings.FailoverThreshold = uint32(glbConfig["failover_threshold"].(int))
}

return glbSettings
}

Expand Down Expand Up @@ -351,6 +361,15 @@ func flattenGLBSettings(settings *godo.GLBSettings) []map[string]interface{} {
}
}

if len(settings.RegionPriorities) > 0 {
pMap := make(map[string]interface{})
for region, priority := range settings.RegionPriorities {
pMap[region] = priority
}
r["region_priorities"] = pMap
r["failover_threshold"] = (*settings).FailoverThreshold
}

result = append(result, r)
}

Expand Down
14 changes: 14 additions & 0 deletions digitalocean/loadbalancer/resource_loadbalancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,20 @@ func resourceDigitalOceanLoadBalancerV0() *schema.Resource {
ValidateFunc: validation.IntInSlice([]int{80, 443}),
Description: "target port rules",
},
"region_priorities": {
Type: schema.TypeMap,
Optional: true,
Description: "region priority map",
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
"failover_threshold": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: validation.IntBetween(1, 99),
Description: "fail-over threshold",
},
"cdn": {
Type: schema.TypeList,
Optional: true,
Expand Down
11 changes: 11 additions & 0 deletions digitalocean/loadbalancer/resource_loadbalancer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -882,6 +882,12 @@ func TestAccDigitalOceanGlobalLoadbalancer(t *testing.T) {
"digitalocean_loadbalancer.lorem", "glb_settings.0.target_port", "80"),
resource.TestCheckResourceAttr(
"digitalocean_loadbalancer.lorem", "glb_settings.0.cdn.0.is_enabled", "false"),
resource.TestCheckResourceAttr(
"data.digitalocean_loadbalancer.foobar", "glb_settings.0.region_priorities.%", "2"),
resource.TestCheckResourceAttr(
"data.digitalocean_loadbalancer.foobar", "glb_settings.0.region_priorities.nyc1", "1"),
resource.TestCheckResourceAttr(
"data.digitalocean_loadbalancer.foobar", "glb_settings.0.region_priorities.nyc2", "2"),
resource.TestCheckResourceAttr(
"digitalocean_loadbalancer.lorem", "domains.#", "2"),
resource.TestCheckResourceAttr(
Expand Down Expand Up @@ -1435,6 +1441,11 @@ resource "digitalocean_loadbalancer" "lorem" {
cdn {
is_enabled = false
}
region_priorities = {
nyc1 = 1
nyc2 = 2
}
failover_threshold = 10
}
domains {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ module github.com/digitalocean/terraform-provider-digitalocean

require (
github.com/aws/aws-sdk-go v1.42.18
github.com/digitalocean/godo v1.113.0
github.com/digitalocean/godo v1.115.0
github.com/hashicorp/awspolicyequivalence v1.5.0
github.com/hashicorp/go-uuid v1.0.3
github.com/hashicorp/go-version v1.6.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/digitalocean/godo v1.113.0 h1:CLtCxlP4wDAjKIQ+Hshht/UNbgAp8/J/XBH1ZtDCF9Y=
github.com/digitalocean/godo v1.113.0/go.mod h1:Z2mTP848Vi3IXXl5YbPekUgr4j4tOePomA+OE1Ag98w=
github.com/digitalocean/godo v1.115.0 h1:Xv0gwN0t7ldD61QKeYeHHwCEKfTXzAOmnUDgGAzoZw4=
github.com/digitalocean/godo v1.115.0/go.mod h1:Vk0vpCot2HOAJwc5WE8wljZGtJ3ZtWIc8MQ8rF38sdo=
github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=
github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
Expand Down
10 changes: 10 additions & 0 deletions vendor/github.com/digitalocean/godo/CHANGELOG.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

63 changes: 44 additions & 19 deletions vendor/github.com/digitalocean/godo/apps.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

56 changes: 56 additions & 0 deletions vendor/github.com/digitalocean/godo/apps_accessors.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/digitalocean/godo/godo.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 8 additions & 2 deletions vendor/github.com/digitalocean/godo/load_balancers.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit bde207b

Please sign in to comment.