Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
resource/aws_batch_job_definition: Properly set container_properties …
…and name into Terraform state and fix basic test (#11488) * tests/resource/aws_batch_job_definition: Fix TestAccAWSBatchJobDefinition_basic ContainerProperties comparison to match updated API response Previously: ``` --- FAIL: TestAccAWSBatchJobDefinition_basic (5.36s) testing.go:640: Step 0 error: Check failed: Check 2/2 error: Bad Job Definition Container Properties expected: { Command: ["ls","-la"], Environment: [{ Name: "VARNAME", Value: "VARVAL" }], Image: "busybox", Memory: 512, MountPoints: [{ ContainerPath: "/tmp", ReadOnly: false, SourceVolume: "tmp" }], Ulimits: [{ HardLimit: 1024, Name: "nofile", SoftLimit: 1024 }], Vcpus: 1, Volumes: [{ Host: { SourcePath: "/tmp" }, Name: "tmp" }] } got: { Command: ["ls","-la"], Environment: [{ Name: "VARNAME", Value: "VARVAL" }], Image: "busybox", Memory: 512, MountPoints: [{ ContainerPath: "/tmp", ReadOnly: false, SourceVolume: "tmp" }], ResourceRequirements: [], Ulimits: [{ HardLimit: 1024, Name: "nofile", SoftLimit: 1024 }], Vcpus: 1, Volumes: [{ Host: { SourcePath: "/tmp" }, Name: "tmp" }] } ``` Output from acceptance testing: ``` --- PASS: TestAccAWSBatchJobDefinition_basic (15.23s) --- PASS: TestAccAWSBatchJobDefinition_updateForcesNewResource (26.75s) ``` * resource/aws_batch_job_definition: Properly set container_properties into Terraform state and perform drift detection Reference: #9954 Reference: #11038 Previously, we were silently ignoring the `d.Set()` error for the `container_properties` attribute. This error can be seen with adding error checking on the call or with `tfproviderlint -R004`: ``` /Users/bflad/src/github.com/terraform-providers/terraform-provider-aws/aws/resource_aws_batch_job_definition.go:146:32: R004: ResourceData.Set() incompatible value type: *github.com/aws/aws-sdk-go/service/batch.ContainerProperties ``` Here we introduce the conversion the Batch `ContainerProperties` object into a JSON string, similar to the handling of ECS `ContainerDefinitions`. With the new attribute properly setting into the Terraform state, existing tests were failing with differences now being discovered: ``` --- FAIL: TestAccAWSBatchJobDefinition_basic (12.38s) testing.go:640: Step 0 error: After applying this step, the plan was not empty: DIFF: DESTROY/CREATE: aws_batch_job_definition.test ... omitted for clarity ... container_properties: "{\"command\":[\"ls\",\"-la\"],\"environment\":[{\"name\":\"VARNAME\",\"value\":\"VARVAL\"}],\"image\":\"busybox\",\"memory\":512,\"mountPoints\":[{\"containerPath\":\"/tmp\",\"readOnly\":false,\"sourceVolume\":\"tmp\"}],\"resourceRequirements\":[],\"ulimits\":[{\"hardLimit\":1024,\"name\":\"nofile\",\"softLimit\":1024}],\"vcpus\":1,\"volumes\":[{\"host\":{\"sourcePath\":\"/tmp\"},\"name\":\"tmp\"}]}" => "{\"command\":[\"ls\",\"-la\"],\"environment\":[{\"name\":\"VARNAME\",\"value\":\"VARVAL\"}],\"image\":\"busybox\",\"memory\":512,\"mountPoints\":[{\"containerPath\":\"/tmp\",\"readOnly\":false,\"sourceVolume\":\"tmp\"}],\"ulimits\":[{\"hardLimit\":1024,\"name\":\"nofile\",\"softLimit\":1024}],\"vcpus\":1,\"volumes\":[{\"host\":{\"sourcePath\":\"/tmp\"},\"name\":\"tmp\"}]}" (forces new resource) ... omitted for clarity ... ``` Similar to some fields in ECS `ContainerDefinitions`, the API will inject an empty JSON array at least in the `RequiredResources` field. Instead of burdening operators with exactly matching the canonical API JSON, we insert difference suppression for this case. We also suppress reordered `Environment` objects (by `Name`; similar to ECS), since it is likely feature request as well. Output from acceptance testing: ``` --- PASS: TestAccAWSBatchJobDefinition_basic (14.45s) --- PASS: TestAccAWSBatchJobDefinition_updateForcesNewResource (24.61s) ``` * resource/aws_batch_job_definition: Properly read name into Terraform state Reference: #11407 (review) To prevent future issues with resource import, when implemented. Output from acceptance testing: ``` --- PASS: TestAccAWSBatchJobDefinition_basic (14.00s) --- PASS: TestAccAWSBatchJobDefinition_updateForcesNewResource (27.64s) ```
- Loading branch information