Skip to content

Commit

Permalink
Merge pull request #69 from terraform-providers/b-svc-optional-target…
Browse files Browse the repository at this point in the history
…-port

r/service: Make spec.port.target_port optional
  • Loading branch information
radeksimko committed Oct 3, 2017
2 parents 1817fc7 + 059d501 commit 49a1b59
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 1 deletion.
3 changes: 2 additions & 1 deletion kubernetes/resource_kubernetes_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ func resourceKubernetesService() *schema.Resource {
"target_port": {
Type: schema.TypeInt,
Description: "Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. This field is ignored for services with `cluster_ip = \"None\"`. More info: http://kubernetes.io/docs/user-guide/services#defining-a-service",
Required: true,
Optional: true,
Computed: true,
},
},
},
Expand Down
77 changes: 77 additions & 0 deletions kubernetes/resource_kubernetes_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,59 @@ func TestAccKubernetesService_nodePort(t *testing.T) {
})
}

func TestAccKubernetesService_noTargetPort(t *testing.T) {
var conf api.Service
name := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t); skipIfNoLoadBalancersAvailable(t) },
IDRefreshName: "kubernetes_service.test",
Providers: testAccProviders,
CheckDestroy: testAccCheckKubernetesServiceDestroy,
Steps: []resource.TestStep{
{
Config: testAccKubernetesServiceConfig_noTargetPort(name),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckKubernetesServiceExists("kubernetes_service.test", &conf),
resource.TestCheckResourceAttr("kubernetes_service.test", "metadata.0.name", name),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.#", "1"),
resource.TestCheckResourceAttrSet("kubernetes_service.test", "spec.0.cluster_ip"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.external_ips.#", "0"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.#", "2"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.0.name", "http"),
resource.TestCheckResourceAttrSet("kubernetes_service.test", "spec.0.port.0.node_port"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.0.port", "80"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.0.protocol", "TCP"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.0.target_port", "80"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.1.name", "https"),
resource.TestCheckResourceAttrSet("kubernetes_service.test", "spec.0.port.1.node_port"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.1.port", "443"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.1.protocol", "TCP"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.1.target_port", "443"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.selector.%", "1"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.selector.App", "MyOtherApp"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.session_affinity", "None"),
resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.type", "LoadBalancer"),
testAccCheckServicePorts(&conf, []api.ServicePort{
{
Name: "http",
Port: int32(80),
Protocol: api.ProtocolTCP,
TargetPort: intstr.FromInt(80),
},
{
Name: "https",
Port: int32(443),
Protocol: api.ProtocolTCP,
TargetPort: intstr.FromInt(443),
},
}),
),
},
},
})
}

func TestAccKubernetesService_externalName(t *testing.T) {
var conf api.Service
name := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
Expand Down Expand Up @@ -520,6 +573,30 @@ resource "kubernetes_service" "test" {
}`, name, name)
}

func testAccKubernetesServiceConfig_noTargetPort(name string) string {
return fmt.Sprintf(`
resource "kubernetes_service" "test" {
metadata {
name = "%s"
}
spec {
selector {
App = "MyOtherApp"
}
port {
name = "http"
port = 80
}
port {
name = "https"
port = 443
}
type = "LoadBalancer"
}
}
`, name)
}

func testAccKubernetesServiceConfig_externalName(name string) string {
return fmt.Sprintf(`
resource "kubernetes_service" "test" {
Expand Down

0 comments on commit 49a1b59

Please sign in to comment.