Skip to content

Commit 90a669d

Browse files
authored
Restructure service and ingress to match K8s API (#1071)
1 parent 89a7d9d commit 90a669d

7 files changed

+115
-35
lines changed

kubernetes/data_source_kubernetes_ingress.go

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package kubernetes
22

33
import (
44
"context"
5+
56
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
67
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
78
networking "k8s.io/api/networking/v1beta1"
@@ -91,18 +92,34 @@ func dataSourceKubernetesIngress() *schema.Resource {
9192
},
9293
},
9394
},
94-
"load_balancer_ingress": {
95+
"status": {
9596
Type: schema.TypeList,
9697
Computed: true,
9798
Elem: &schema.Resource{
9899
Schema: map[string]*schema.Schema{
99-
"ip": {
100-
Type: schema.TypeString,
101-
Computed: true,
102-
},
103-
"hostname": {
104-
Type: schema.TypeString,
100+
"load_balancer": {
101+
Type: schema.TypeList,
105102
Computed: true,
103+
Elem: &schema.Resource{
104+
Schema: map[string]*schema.Schema{
105+
"ingress": {
106+
Type: schema.TypeList,
107+
Computed: true,
108+
Elem: &schema.Resource{
109+
Schema: map[string]*schema.Schema{
110+
"ip": {
111+
Type: schema.TypeString,
112+
Computed: true,
113+
},
114+
"hostname": {
115+
Type: schema.TypeString,
116+
Computed: true,
117+
},
118+
},
119+
},
120+
},
121+
},
122+
},
106123
},
107124
},
108125
},

kubernetes/data_source_kubernetes_service.go

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package kubernetes
22

33
import (
44
"context"
5+
56
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
67
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
78
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -119,18 +120,34 @@ func dataSourceKubernetesService() *schema.Resource {
119120
},
120121
},
121122
},
122-
"load_balancer_ingress": {
123+
"status": {
123124
Type: schema.TypeList,
124125
Computed: true,
125126
Elem: &schema.Resource{
126127
Schema: map[string]*schema.Schema{
127-
"ip": {
128-
Type: schema.TypeString,
129-
Computed: true,
130-
},
131-
"hostname": {
132-
Type: schema.TypeString,
128+
"load_balancer": {
129+
Type: schema.TypeList,
133130
Computed: true,
131+
Elem: &schema.Resource{
132+
Schema: map[string]*schema.Schema{
133+
"ingress": {
134+
Type: schema.TypeList,
135+
Computed: true,
136+
Elem: &schema.Resource{
137+
Schema: map[string]*schema.Schema{
138+
"ip": {
139+
Type: schema.TypeString,
140+
Computed: true,
141+
},
142+
"hostname": {
143+
Type: schema.TypeString,
144+
Computed: true,
145+
},
146+
},
147+
},
148+
},
149+
},
150+
},
134151
},
135152
},
136153
},

kubernetes/resource_kubernetes_ingress.go

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,34 @@ func resourceKubernetesIngress() *schema.Resource {
105105
},
106106
},
107107
},
108-
"load_balancer_ingress": {
108+
"status": {
109109
Type: schema.TypeList,
110110
Computed: true,
111111
Elem: &schema.Resource{
112112
Schema: map[string]*schema.Schema{
113-
"ip": {
114-
Type: schema.TypeString,
115-
Computed: true,
116-
},
117-
"hostname": {
118-
Type: schema.TypeString,
113+
"load_balancer": {
114+
Type: schema.TypeList,
119115
Computed: true,
116+
Elem: &schema.Resource{
117+
Schema: map[string]*schema.Schema{
118+
"ingress": {
119+
Type: schema.TypeList,
120+
Computed: true,
121+
Elem: &schema.Resource{
122+
Schema: map[string]*schema.Schema{
123+
"ip": {
124+
Type: schema.TypeString,
125+
Computed: true,
126+
},
127+
"hostname": {
128+
Type: schema.TypeString,
129+
Computed: true,
130+
},
131+
},
132+
},
133+
},
134+
},
135+
},
120136
},
121137
},
122138
},
@@ -220,7 +236,11 @@ func resourceKubernetesIngressRead(ctx context.Context, d *schema.ResourceData,
220236
return diag.FromErr(err)
221237
}
222238

223-
err = d.Set("load_balancer_ingress", flattenLoadBalancerIngress(ing.Status.LoadBalancer.Ingress))
239+
err = d.Set("status", []interface{}{
240+
map[string][]interface{}{
241+
"load_balancer": flattenLoadBalancerStatus(ing.Status.LoadBalancer),
242+
},
243+
})
224244
if err != nil {
225245
return diag.FromErr(err)
226246
}

kubernetes/resource_kubernetes_ingress_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ func TestAccKubernetesIngress_WaitForLoadBalancerGoogleCloud(t *testing.T) {
164164
Config: testAccKubernetesIngressConfig_waitForLoadBalancer(name),
165165
Check: resource.ComposeAggregateTestCheckFunc(
166166
testAccCheckKubernetesIngressExists("kubernetes_ingress.test", &conf),
167-
resource.TestCheckResourceAttrSet("kubernetes_ingress.test", "load_balancer_ingress.0.ip"),
167+
resource.TestCheckResourceAttrSet("kubernetes_ingress.test", "status.0.load_balancer.0.ingress.0.ip"),
168168
),
169169
},
170170
},

kubernetes/resource_kubernetes_service.go

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,18 +170,34 @@ func resourceKubernetesService() *schema.Resource {
170170
Default: true,
171171
Description: "Terraform will wait for the load balancer to have at least 1 endpoint before considering the resource created.",
172172
},
173-
"load_balancer_ingress": {
173+
"status": {
174174
Type: schema.TypeList,
175175
Computed: true,
176176
Elem: &schema.Resource{
177177
Schema: map[string]*schema.Schema{
178-
"ip": {
179-
Type: schema.TypeString,
180-
Computed: true,
181-
},
182-
"hostname": {
183-
Type: schema.TypeString,
178+
"load_balancer": {
179+
Type: schema.TypeList,
184180
Computed: true,
181+
Elem: &schema.Resource{
182+
Schema: map[string]*schema.Schema{
183+
"ingress": {
184+
Type: schema.TypeList,
185+
Computed: true,
186+
Elem: &schema.Resource{
187+
Schema: map[string]*schema.Schema{
188+
"ip": {
189+
Type: schema.TypeString,
190+
Computed: true,
191+
},
192+
"hostname": {
193+
Type: schema.TypeString,
194+
Computed: true,
195+
},
196+
},
197+
},
198+
},
199+
},
200+
},
185201
},
186202
},
187203
},
@@ -271,7 +287,11 @@ func resourceKubernetesServiceRead(ctx context.Context, d *schema.ResourceData,
271287
return diag.FromErr(err)
272288
}
273289

274-
err = d.Set("load_balancer_ingress", flattenLoadBalancerIngress(svc.Status.LoadBalancer.Ingress))
290+
d.Set("status", []interface{}{
291+
map[string][]interface{}{
292+
"load_balancer": flattenLoadBalancerStatus(svc.Status.LoadBalancer),
293+
},
294+
})
275295
if err != nil {
276296
return diag.FromErr(err)
277297
}

kubernetes/resource_kubernetes_service_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ func TestAccKubernetesService_loadBalancer(t *testing.T) {
156156
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.selector.%", "1"),
157157
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.selector.App", "MyApp"),
158158
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.type", "LoadBalancer"),
159+
resource.TestCheckResourceAttrSet("kubernetes_service.test", "status.0.load_balancer.0.ingress.0.ip"),
159160
testAccCheckServicePorts(&conf, []api.ServicePort{
160161
{
161162
Port: int32(8888),

kubernetes/structure_service_spec.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,22 @@ func flattenServiceSpec(in v1.ServiceSpec) []interface{} {
6565
return []interface{}{att}
6666
}
6767

68-
func flattenLoadBalancerIngress(in []v1.LoadBalancerIngress) []interface{} {
69-
out := make([]interface{}, len(in), len(in))
70-
for i, ingress := range in {
68+
func flattenLoadBalancerStatus(in v1.LoadBalancerStatus) []interface{} {
69+
out := make([]interface{}, len(in.Ingress), len(in.Ingress))
70+
for i, ingress := range in.Ingress {
7171
att := make(map[string]interface{})
7272

7373
att["ip"] = ingress.IP
7474
att["hostname"] = ingress.Hostname
7575

7676
out[i] = att
7777
}
78-
return out
78+
79+
return []interface{}{
80+
map[string][]interface{}{
81+
"ingress": out,
82+
},
83+
}
7984
}
8085

8186
// Expanders

0 commit comments

Comments
 (0)