provider/aws: Add support for content_handling to (#11002)
aws_api_gateway_integration_response This continues the work carried out in #10696 ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSAPIGatewayIntegrationResponse_' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2017/01/03 14:18:46 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSAPIGatewayIntegrationResponse_ -timeout 120m === RUN TestAccAWSAPIGatewayIntegrationResponse_basic --- PASS: TestAccAWSAPIGatewayIntegrationResponse_basic (57.33s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws57.352s ```
This commit is contained in:
parent
e28bb354d5
commit
ba41375fd9
|
@ -17,7 +17,7 @@ func resourceAwsApiGatewayIntegration() *schema.Resource {
|
||||||
return &schema.Resource{
|
return &schema.Resource{
|
||||||
Create: resourceAwsApiGatewayIntegrationCreate,
|
Create: resourceAwsApiGatewayIntegrationCreate,
|
||||||
Read: resourceAwsApiGatewayIntegrationRead,
|
Read: resourceAwsApiGatewayIntegrationRead,
|
||||||
Update: resourceAwsApiGatewayIntegrationUpdate,
|
Update: resourceAwsApiGatewayIntegrationCreate,
|
||||||
Delete: resourceAwsApiGatewayIntegrationDelete,
|
Delete: resourceAwsApiGatewayIntegrationDelete,
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
|
@ -202,10 +202,6 @@ func resourceAwsApiGatewayIntegrationRead(d *schema.ResourceData, meta interface
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceAwsApiGatewayIntegrationUpdate(d *schema.ResourceData, meta interface{}) error {
|
|
||||||
return resourceAwsApiGatewayIntegrationCreate(d, meta)
|
|
||||||
}
|
|
||||||
|
|
||||||
func resourceAwsApiGatewayIntegrationDelete(d *schema.ResourceData, meta interface{}) error {
|
func resourceAwsApiGatewayIntegrationDelete(d *schema.ResourceData, meta interface{}) error {
|
||||||
conn := meta.(*AWSClient).apigateway
|
conn := meta.(*AWSClient).apigateway
|
||||||
log.Printf("[DEBUG] Deleting API Gateway Integration: %s", d.Id())
|
log.Printf("[DEBUG] Deleting API Gateway Integration: %s", d.Id())
|
||||||
|
|
|
@ -17,58 +17,64 @@ func resourceAwsApiGatewayIntegrationResponse() *schema.Resource {
|
||||||
return &schema.Resource{
|
return &schema.Resource{
|
||||||
Create: resourceAwsApiGatewayIntegrationResponseCreate,
|
Create: resourceAwsApiGatewayIntegrationResponseCreate,
|
||||||
Read: resourceAwsApiGatewayIntegrationResponseRead,
|
Read: resourceAwsApiGatewayIntegrationResponseRead,
|
||||||
Update: resourceAwsApiGatewayIntegrationResponseUpdate,
|
Update: resourceAwsApiGatewayIntegrationResponseCreate,
|
||||||
Delete: resourceAwsApiGatewayIntegrationResponseDelete,
|
Delete: resourceAwsApiGatewayIntegrationResponseDelete,
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"rest_api_id": &schema.Schema{
|
"rest_api_id": {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Required: true,
|
Required: true,
|
||||||
ForceNew: true,
|
ForceNew: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
"resource_id": &schema.Schema{
|
"resource_id": {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Required: true,
|
Required: true,
|
||||||
ForceNew: true,
|
ForceNew: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
"http_method": &schema.Schema{
|
"http_method": {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Required: true,
|
Required: true,
|
||||||
ForceNew: true,
|
ForceNew: true,
|
||||||
ValidateFunc: validateHTTPMethod,
|
ValidateFunc: validateHTTPMethod,
|
||||||
},
|
},
|
||||||
|
|
||||||
"status_code": &schema.Schema{
|
"status_code": {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Required: true,
|
Required: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
"selection_pattern": &schema.Schema{
|
"selection_pattern": {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
"response_templates": &schema.Schema{
|
"response_templates": {
|
||||||
Type: schema.TypeMap,
|
Type: schema.TypeMap,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
Elem: schema.TypeString,
|
Elem: schema.TypeString,
|
||||||
},
|
},
|
||||||
|
|
||||||
"response_parameters": &schema.Schema{
|
"response_parameters": {
|
||||||
Type: schema.TypeMap,
|
Type: schema.TypeMap,
|
||||||
Elem: schema.TypeString,
|
Elem: schema.TypeString,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
ConflictsWith: []string{"response_parameters_in_json"},
|
ConflictsWith: []string{"response_parameters_in_json"},
|
||||||
},
|
},
|
||||||
|
|
||||||
"response_parameters_in_json": &schema.Schema{
|
"response_parameters_in_json": {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
ConflictsWith: []string{"response_parameters"},
|
ConflictsWith: []string{"response_parameters"},
|
||||||
Deprecated: "Use field response_parameters instead",
|
Deprecated: "Use field response_parameters instead",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"content_handling": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
ValidateFunc: validateApiGatewayIntegrationContentHandling,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -92,6 +98,10 @@ func resourceAwsApiGatewayIntegrationResponseCreate(d *schema.ResourceData, meta
|
||||||
return fmt.Errorf("Error unmarshaling response_parameters_in_json: %s", err)
|
return fmt.Errorf("Error unmarshaling response_parameters_in_json: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var contentHandling *string
|
||||||
|
if val, ok := d.GetOk("content_handling"); ok {
|
||||||
|
contentHandling = aws.String(val.(string))
|
||||||
|
}
|
||||||
|
|
||||||
input := apigateway.PutIntegrationResponseInput{
|
input := apigateway.PutIntegrationResponseInput{
|
||||||
HttpMethod: aws.String(d.Get("http_method").(string)),
|
HttpMethod: aws.String(d.Get("http_method").(string)),
|
||||||
|
@ -100,10 +110,12 @@ func resourceAwsApiGatewayIntegrationResponseCreate(d *schema.ResourceData, meta
|
||||||
StatusCode: aws.String(d.Get("status_code").(string)),
|
StatusCode: aws.String(d.Get("status_code").(string)),
|
||||||
ResponseTemplates: aws.StringMap(templates),
|
ResponseTemplates: aws.StringMap(templates),
|
||||||
ResponseParameters: aws.StringMap(parameters),
|
ResponseParameters: aws.StringMap(parameters),
|
||||||
|
ContentHandling: contentHandling,
|
||||||
}
|
}
|
||||||
if v, ok := d.GetOk("selection_pattern"); ok {
|
if v, ok := d.GetOk("selection_pattern"); ok {
|
||||||
input.SelectionPattern = aws.String(v.(string))
|
input.SelectionPattern = aws.String(v.(string))
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := conn.PutIntegrationResponse(&input)
|
_, err := conn.PutIntegrationResponse(&input)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error creating API Gateway Integration Response: %s", err)
|
return fmt.Errorf("Error creating API Gateway Integration Response: %s", err)
|
||||||
|
@ -143,10 +155,6 @@ func resourceAwsApiGatewayIntegrationResponseRead(d *schema.ResourceData, meta i
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceAwsApiGatewayIntegrationResponseUpdate(d *schema.ResourceData, meta interface{}) error {
|
|
||||||
return resourceAwsApiGatewayIntegrationResponseCreate(d, meta)
|
|
||||||
}
|
|
||||||
|
|
||||||
func resourceAwsApiGatewayIntegrationResponseDelete(d *schema.ResourceData, meta interface{}) error {
|
func resourceAwsApiGatewayIntegrationResponseDelete(d *schema.ResourceData, meta interface{}) error {
|
||||||
conn := meta.(*AWSClient).apigateway
|
conn := meta.(*AWSClient).apigateway
|
||||||
log.Printf("[DEBUG] Deleting API Gateway Integration Response: %s", d.Id())
|
log.Printf("[DEBUG] Deleting API Gateway Integration Response: %s", d.Id())
|
||||||
|
|
|
@ -28,6 +28,8 @@ func TestAccAWSAPIGatewayIntegrationResponse_basic(t *testing.T) {
|
||||||
"aws_api_gateway_integration_response.test", "response_templates.application/json", ""),
|
"aws_api_gateway_integration_response.test", "response_templates.application/json", ""),
|
||||||
resource.TestCheckResourceAttr(
|
resource.TestCheckResourceAttr(
|
||||||
"aws_api_gateway_integration_response.test", "response_templates.application/xml", "#set($inputRoot = $input.path('$'))\n{ }"),
|
"aws_api_gateway_integration_response.test", "response_templates.application/xml", "#set($inputRoot = $input.path('$'))\n{ }"),
|
||||||
|
resource.TestCheckResourceAttr(
|
||||||
|
"aws_api_gateway_integration_response.test", "content_handling", ""),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -40,6 +42,8 @@ func TestAccAWSAPIGatewayIntegrationResponse_basic(t *testing.T) {
|
||||||
"aws_api_gateway_integration_response.test", "response_templates.application/json", "$input.path('$')"),
|
"aws_api_gateway_integration_response.test", "response_templates.application/json", "$input.path('$')"),
|
||||||
resource.TestCheckResourceAttr(
|
resource.TestCheckResourceAttr(
|
||||||
"aws_api_gateway_integration_response.test", "response_templates.application/xml", ""),
|
"aws_api_gateway_integration_response.test", "response_templates.application/xml", ""),
|
||||||
|
resource.TestCheckResourceAttr(
|
||||||
|
"aws_api_gateway_integration_response.test", "content_handling", "CONVERT_TO_BINARY"),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -282,5 +286,7 @@ resource "aws_api_gateway_integration_response" "test" {
|
||||||
"application/xml" = ""
|
"application/xml" = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
content_handling = "CONVERT_TO_BINARY"
|
||||||
|
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
|
@ -72,3 +72,4 @@ The following arguments are supported:
|
||||||
* `response_parameters` - (Optional) A map of response parameters that can be read from the backend response.
|
* `response_parameters` - (Optional) A map of response parameters that can be read from the backend response.
|
||||||
For example: `response_parameters = { "method.response.header.X-Some-Header" = "integration.response.header.X-Some-Other-Header" }`,
|
For example: `response_parameters = { "method.response.header.X-Some-Header" = "integration.response.header.X-Some-Other-Header" }`,
|
||||||
* `response_parameters_in_json` - **Deprecated**, use `response_parameters` instead.
|
* `response_parameters_in_json` - **Deprecated**, use `response_parameters` instead.
|
||||||
|
* `content_handling` - (Optional) Specifies how to handle request payload content type conversions. Supported values are `CONVERT_TO_BINARY` and `CONVERT_TO_TEXT`. If this property is not defined, the response payload will be passed through from the integration response to the method response without modification.
|
||||||
|
|
Loading…
Reference in New Issue