Skip to content

Commit

Permalink
fix iplb*http_farm|tcp_farm probe without match issue
Browse files Browse the repository at this point in the history
  • Loading branch information
yann degat committed Dec 3, 2020
1 parent bceed58 commit 75e32d6
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 6 deletions.
6 changes: 4 additions & 2 deletions ovh/resource_ovh_iploadbalancing_http_farm.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,10 @@ func resourceIpLoadbalancingHttpFarm() *schema.Resource {
},
},
"negate": {
Type: schema.TypeBool,
Optional: true,
Type: schema.TypeBool,
Default: false,
RequiredWith: []string{"probe.0.match"},
Optional: true,
},
"pattern": {
Type: schema.TypeString,
Expand Down
37 changes: 37 additions & 0 deletions ovh/resource_ovh_iploadbalancing_http_farm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const (
data "ovh_iploadbalancing" "iplb" {
service_name = "%s"
}
resource "ovh_iploadbalancing_http_farm" "testfarm" {
service_name = data.ovh_iploadbalancing.iplb.id
display_name = "%s"
Expand All @@ -28,6 +29,25 @@ resource "ovh_iploadbalancing_http_farm" "testfarm" {
type = "oco"
}
}
`
testAccIpLoadbalancingHttpFarmProbeMatchConfig = `
data "ovh_iploadbalancing" "iplb" {
service_name = "%s"
}
resource "ovh_iploadbalancing_http_farm" "testfarm" {
service_name = data.ovh_iploadbalancing.iplb.id
display_name = "%s"
port = "%d"
zone = "%s"
balance = "roundrobin"
probe {
interval = 30
type = "oco"
match = "default"
}
}
`
)

Expand Down Expand Up @@ -106,6 +126,13 @@ func TestAccIpLoadbalancingHttpFarmBasicCreate(t *testing.T) {
12346,
"all",
)
config3 := fmt.Sprintf(
testAccIpLoadbalancingHttpFarmProbeMatchConfig,
os.Getenv("OVH_IPLB_SERVICE_TEST"),
displayName2,
12346,
"all",
)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheckIpLoadbalancing(t) },
Expand All @@ -129,6 +156,16 @@ func TestAccIpLoadbalancingHttpFarmBasicCreate(t *testing.T) {
resource.TestCheckResourceAttr("ovh_iploadbalancing_http_farm.testfarm", "probe.0.interval", "30"),
),
},
{
Config: config3,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("ovh_iploadbalancing_http_farm.testfarm", "display_name", displayName2),
resource.TestCheckResourceAttr("ovh_iploadbalancing_http_farm.testfarm", "zone", "all"),
resource.TestCheckResourceAttr("ovh_iploadbalancing_http_farm.testfarm", "port", "12346"),
resource.TestCheckResourceAttr("ovh_iploadbalancing_http_farm.testfarm", "probe.0.interval", "30"),
resource.TestCheckResourceAttr("ovh_iploadbalancing_http_farm.testfarm", "probe.0.match", "default"),
),
},
},
})
}
9 changes: 5 additions & 4 deletions ovh/resource_ovh_iploadbalancing_tcp_farm.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func resourceIpLoadbalancingTcpFarm() *schema.Resource {
"match": {
Type: schema.TypeString,
Optional: true,
Default: "default",
Computed: true,
ValidateFunc: func(v interface{}, k string) (ws []string, errors []error) {
err := helpers.ValidateStringEnum(v.(string), []string{"contains", "default", "internal", "matches", "status"})
if err != nil {
Expand All @@ -104,9 +104,10 @@ func resourceIpLoadbalancingTcpFarm() *schema.Resource {
},
},
"negate": {
Type: schema.TypeBool,
Optional: true,
Default: false,
Type: schema.TypeBool,
Default: false,
RequiredWith: []string{"probe.0.match"},
Optional: true,
},
"pattern": {
Type: schema.TypeString,
Expand Down
39 changes: 39 additions & 0 deletions ovh/resource_ovh_iploadbalancing_tcp_farm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,39 @@ const (
data "ovh_iploadbalancing" "iplb" {
service_name = "%s"
}
resource "ovh_iploadbalancing_tcp_farm" "testfarm" {
service_name = data.ovh_iploadbalancing.iplb.id
display_name = "%s"
port = "%d"
zone = "%s"
balance = "roundrobin"
probe {
interval = 30
type = "oco"
}
}
`

testAccIpLoadbalancingTcpFarmProbeMatchConfig = `
data "ovh_iploadbalancing" "iplb" {
service_name = "%s"
}
resource "ovh_iploadbalancing_tcp_farm" "testfarm" {
service_name = data.ovh_iploadbalancing.iplb.id
display_name = "%s"
port = "%d"
zone = "%s"
balance = "roundrobin"
probe {
interval = 30
type = "oco"
match = "default"
}
}
`
)

Expand Down Expand Up @@ -106,6 +128,13 @@ func TestAccIpLoadbalancingTcpFarmBasicCreate(t *testing.T) {
12346,
"all",
)
config3 := fmt.Sprintf(
testAccIpLoadbalancingTcpFarmProbeMatchConfig,
os.Getenv("OVH_IPLB_SERVICE_TEST"),
displayName2,
12346,
"all",
)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheckIpLoadbalancing(t) },
Expand All @@ -129,6 +158,16 @@ func TestAccIpLoadbalancingTcpFarmBasicCreate(t *testing.T) {
resource.TestCheckResourceAttr("ovh_iploadbalancing_tcp_farm.testfarm", "probe.0.interval", "30"),
),
},
{
Config: config3,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("ovh_iploadbalancing_tcp_farm.testfarm", "display_name", displayName2),
resource.TestCheckResourceAttr("ovh_iploadbalancing_tcp_farm.testfarm", "zone", "all"),
resource.TestCheckResourceAttr("ovh_iploadbalancing_tcp_farm.testfarm", "port", "12346"),
resource.TestCheckResourceAttr("ovh_iploadbalancing_tcp_farm.testfarm", "probe.0.interval", "30"),
resource.TestCheckResourceAttr("ovh_iploadbalancing_tcp_farm.testfarm", "probe.0.match", "default"),
),
},
},
})
}
6 changes: 6 additions & 0 deletions ovh/types_iploadbalancing.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,12 @@ func (opts *IpLoadbalancingFarmBackendProbe) FromResource(d *schema.ResourceData
opts.URL = helpers.GetNilStringPointerFromData(d, fmt.Sprintf("%s.url", parent))
opts.Method = helpers.GetNilStringPointerFromData(d, fmt.Sprintf("%s.method", parent))
opts.Type = helpers.GetNilStringPointerFromData(d, fmt.Sprintf("%s.type", parent))

// Error 400: "A probe can not negate without a match"
if opts.Match == nil {
opts.Negate = nil
}

return opts
}

Expand Down

0 comments on commit 75e32d6

Please sign in to comment.