Skip to content

Commit 9ecda25

Browse files
authored
Add ip_mode attribute to service status (#2784)
1 parent 1310817 commit 9ecda25

File tree

5 files changed

+57
-1
lines changed

5 files changed

+57
-1
lines changed

.changelog/2784.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
Add `ip_mode` attribute to service status
3+
```

docs/resources/service_v1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ Read-Only:
132132

133133
- `hostname` (String)
134134
- `ip` (String)
135-
135+
- `ip_mode` (String)
136136

137137

138138

kubernetes/resource_kubernetes_service_v1.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,10 @@ func resourceKubernetesServiceSchemaV1() map[string]*schema.Schema {
316316
Type: schema.TypeString,
317317
Computed: true,
318318
},
319+
"ip_mode": {
320+
Type: schema.TypeString,
321+
Computed: true,
322+
},
319323
"hostname": {
320324
Type: schema.TypeString,
321325
Computed: true,

kubernetes/resource_kubernetes_service_v1_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -843,6 +843,52 @@ func TestAccKubernetesServiceV1_ipFamilies(t *testing.T) {
843843
})
844844
}
845845

846+
func TestAccKubernetesServiceV1_loadBalancer_ipMode(t *testing.T) {
847+
var conf corev1.Service
848+
name := acctest.RandomWithPrefix("tf-acc-test")
849+
resourceName := "kubernetes_service_v1.test"
850+
851+
resource.ParallelTest(t, resource.TestCase{
852+
PreCheck: func() { testAccPreCheck(t); skipIfNoLoadBalancersAvailable(t) },
853+
IDRefreshIgnore: []string{"metadata.0.resource_version"},
854+
ProviderFactories: testAccProviderFactories,
855+
CheckDestroy: testAccCheckKubernetesServiceV1Destroy,
856+
Steps: []resource.TestStep{
857+
{
858+
Config: testAccKubernetesConfig_ignoreAnnotations() +
859+
testAccKubernetesServiceV1Config_loadBalancer_ipMode(name),
860+
Check: resource.ComposeAggregateTestCheckFunc(
861+
testAccCheckKubernetesServiceV1Exists(resourceName, &conf),
862+
resource.TestCheckResourceAttr(resourceName, "metadata.0.name", name),
863+
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
864+
resource.TestCheckResourceAttr(resourceName, "spec.0.type", "LoadBalancer"),
865+
resource.TestCheckResourceAttr(resourceName, "status.0.load_balancer.0.ingress.0.ip_mode", "VIP"),
866+
),
867+
},
868+
},
869+
})
870+
}
871+
872+
func testAccKubernetesServiceV1Config_loadBalancer_ipMode(name string) string {
873+
return fmt.Sprintf(`
874+
resource "kubernetes_service_v1" "test" {
875+
metadata {
876+
name = "%s"
877+
}
878+
spec {
879+
type = "LoadBalancer"
880+
selector = {
881+
app = "test-app"
882+
}
883+
port {
884+
port = 80
885+
target_port = 80
886+
}
887+
}
888+
}
889+
`, name)
890+
}
891+
846892
func testAccCheckServiceV1Ports(svc *corev1.Service, expected []corev1.ServicePort) resource.TestCheckFunc {
847893
return func(s *terraform.State) error {
848894
if len(expected) == 0 && len(svc.Spec.Ports) == 0 {

kubernetes/structure_service_spec.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ func flattenLoadBalancerStatus(in v1.LoadBalancerStatus) []interface{} {
128128
att := make(map[string]interface{})
129129

130130
att["ip"] = ingress.IP
131+
if ingress.IPMode != nil {
132+
att["ip_mode"] = string(*ingress.IPMode)
133+
}
131134
att["hostname"] = ingress.Hostname
132135

133136
out[i] = att

0 commit comments

Comments
 (0)