Skip to content

Commit fa1ae66

Browse files
Adding ip_mode field, and acceptance test
1 parent 27608ca commit fa1ae66

File tree

3 files changed

+70
-1
lines changed

3 files changed

+70
-1
lines changed

kubernetes/resource_kubernetes_service_v1.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ func resourceKubernetesServiceSchemaV1() map[string]*schema.Schema {
316316
Type: schema.TypeString,
317317
Computed: true,
318318
},
319-
"ipMode": {
319+
"ip_mode": {
320320
Type: schema.TypeString,
321321
Computed: true,
322322
},

kubernetes/resource_kubernetes_service_v1_test.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,49 @@ func TestAccKubernetesServiceV1_loadBalancer_healthcheck(t *testing.T) {
337337
})
338338
}
339339

340+
func TestAccKubernetesServiceV1_loadBalancer_ipMode(t *testing.T) {
341+
var conf corev1.Service
342+
name := acctest.RandomWithPrefix("tf-acc-test")
343+
resourceName := "kubernetes_service_v1.test"
344+
345+
resource.ParallelTest(t, resource.TestCase{
346+
PreCheck: func() { testAccPreCheck(t); skipIfNoLoadBalancersAvailable(t) },
347+
IDRefreshIgnore: []string{"metadata.0.resource_version"},
348+
ProviderFactories: testAccProviderFactories,
349+
CheckDestroy: testAccCheckKubernetesServiceV1Destroy,
350+
Steps: []resource.TestStep{
351+
{
352+
Config: testAccKubernetesConfig_ignoreAnnotations() +
353+
testAccKubernetesServiceV1Config_loadBalancer_ipMode(name, "VIP"),
354+
Check: resource.ComposeAggregateTestCheckFunc(
355+
testAccCheckKubernetesServiceV1Exists(resourceName, &conf),
356+
resource.TestCheckResourceAttr(resourceName, "metadata.0.name", name),
357+
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
358+
resource.TestCheckResourceAttr(resourceName, "spec.0.type", "LoadBalancer"),
359+
resource.TestCheckResourceAttr(resourceName, "status.0.load_balancer.0.ingress.0.ip_mode", "VIP"),
360+
),
361+
},
362+
{
363+
ResourceName: resourceName,
364+
ImportState: true,
365+
ImportStateVerify: true,
366+
ImportStateVerifyIgnore: []string{"metadata.0.resource_version", "wait_for_load_balancer"},
367+
},
368+
{
369+
Config: testAccKubernetesConfig_ignoreAnnotations() +
370+
testAccKubernetesServiceV1Config_loadBalancer_ipMode(name, "Proxy"),
371+
Check: resource.ComposeAggregateTestCheckFunc(
372+
testAccCheckKubernetesServiceV1Exists(resourceName, &conf),
373+
resource.TestCheckResourceAttr(resourceName, "metadata.0.name", name),
374+
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
375+
resource.TestCheckResourceAttr(resourceName, "spec.0.type", "LoadBalancer"),
376+
resource.TestCheckResourceAttr(resourceName, "status.0.load_balancer.0.ingress.0.ip_mode", "Proxy"),
377+
),
378+
},
379+
},
380+
})
381+
}
382+
340383
func TestAccKubernetesServiceV1_headless(t *testing.T) {
341384
var conf corev1.Service
342385
name := acctest.RandomWithPrefix("tf-acc-test")
@@ -1104,7 +1147,32 @@ func testAccKubernetesServiceV1Config_loadBalancer_annotations_aws_modified(name
11041147
}
11051148
`, name)
11061149
}
1150+
func testAccKubernetesServiceV1Config_loadBalancer_ipMode(name, ipMode string) string {
1151+
return fmt.Sprintf(`
1152+
resource "kubernetes_service_v1" "test" {
1153+
metadata {
1154+
name = "%s"
1155+
}
11071156
1157+
spec {
1158+
type = "LoadBalancer"
1159+
port {
1160+
port = 80
1161+
target_port = 8080
1162+
}
1163+
}
1164+
1165+
status {
1166+
load_balancer {
1167+
ingress {
1168+
ip = "192.168.1.100"
1169+
ip_mode = "%s"
1170+
}
1171+
}
1172+
}
1173+
}
1174+
`, name, ipMode)
1175+
}
11081176
func testAccKubernetesServiceV1Config_headless(name string) string {
11091177
return fmt.Sprintf(`resource "kubernetes_service_v1" "test" {
11101178
metadata {

kubernetes/structure_service_spec.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ func flattenLoadBalancerStatus(in v1.LoadBalancerStatus) []interface{} {
129129

130130
att["ip"] = ingress.IP
131131
att["hostname"] = ingress.Hostname
132+
att["ip_mode"] = ingress.IPMode
132133

133134
out[i] = att
134135
}

0 commit comments

Comments
 (0)