Skip to content

Commit

Permalink
Merge pull request #155 from appilon/98-container-env-force-new
Browse files Browse the repository at this point in the history
r/kubernetes_pod: env var value change forces new pod
  • Loading branch information
appilon authored Apr 17, 2018
2 parents df32c9c + e5b8364 commit 2d09dbf
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 1 deletion.
75 changes: 74 additions & 1 deletion kubernetes/resource_kubernetes_pod_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func TestAccKubernetesPod_basic(t *testing.T) {
})
}

func TestAccKubernetesPod_updateForceNew(t *testing.T) {
func TestAccKubernetesPod_updateArgsForceNew(t *testing.T) {
var conf api.Pod

podName := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
Expand Down Expand Up @@ -109,6 +109,58 @@ func TestAccKubernetesPod_updateForceNew(t *testing.T) {
})
}

func TestAccKubernetesPod_updateEnvForceNew(t *testing.T) {
var conf api.Pod

podName := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))

imageName := "hashicorp/http-echo:latest"
envBefore := "bar"
envAfter := "baz"

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckKubernetesPodDestroy,
Steps: []resource.TestStep{
{
Config: testAccKubernetesPodConfigEnvUpdate(podName, imageName, envBefore),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckKubernetesPodExists("kubernetes_pod.test", &conf),
resource.TestCheckResourceAttr("kubernetes_pod.test", "metadata.0.annotations.%", "0"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "metadata.0.name", podName),
resource.TestCheckResourceAttrSet("kubernetes_pod.test", "metadata.0.generation"),
resource.TestCheckResourceAttrSet("kubernetes_pod.test", "metadata.0.resource_version"),
resource.TestCheckResourceAttrSet("kubernetes_pod.test", "metadata.0.self_link"),
resource.TestCheckResourceAttrSet("kubernetes_pod.test", "metadata.0.uid"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.image", imageName),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.env.#", "1"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.env.0.name", "foo"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.env.0.value", "bar"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.name", "containername"),
),
},
{
Config: testAccKubernetesPodConfigEnvUpdate(podName, imageName, envAfter),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckKubernetesPodExists("kubernetes_pod.test", &conf),
resource.TestCheckResourceAttr("kubernetes_pod.test", "metadata.0.annotations.%", "0"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "metadata.0.name", podName),
resource.TestCheckResourceAttrSet("kubernetes_pod.test", "metadata.0.generation"),
resource.TestCheckResourceAttrSet("kubernetes_pod.test", "metadata.0.resource_version"),
resource.TestCheckResourceAttrSet("kubernetes_pod.test", "metadata.0.self_link"),
resource.TestCheckResourceAttrSet("kubernetes_pod.test", "metadata.0.uid"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.image", imageName),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.env.#", "1"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.env.0.name", "foo"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.env.0.value", "baz"),
resource.TestCheckResourceAttr("kubernetes_pod.test", "spec.0.container.0.name", "containername"),
),
},
},
})
}

func TestAccKubernetesPod_importBasic(t *testing.T) {
resourceName := "kubernetes_pod.test"
podName := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
Expand Down Expand Up @@ -1029,3 +1081,24 @@ resource "kubernetes_pod" "test" {
}
`, podName, imageName, args)
}

func testAccKubernetesPodConfigEnvUpdate(podName, imageName, val string) string {
return fmt.Sprintf(`
resource "kubernetes_pod" "test" {
metadata {
name = "%s"
}
spec {
container {
image = "%s"
name = "containername"
env {
name = "foo"
value = "%s"
}
}
}
}
`, podName, imageName, val)
}
1 change: 1 addition & 0 deletions kubernetes/schema_container.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ func containerFields(isUpdatable bool) map[string]*schema.Schema {
},
"value": {
Type: schema.TypeString,
ForceNew: true,
Optional: true,
Description: `Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".`,
},
Expand Down

0 comments on commit 2d09dbf

Please sign in to comment.