ISSUE-5702: 2nd attempt to impl the target_id be optional

This commit is contained in:
Andy Chan 2016-03-23 10:42:53 -07:00
parent 0eee165a2b
commit 76adbefb95
2 changed files with 16 additions and 13 deletions

View File

@ -31,7 +31,9 @@ func resourceAwsCloudWatchEventTarget() *schema.Resource {
"target_id": &schema.Schema{ "target_id": &schema.Schema{
Type: schema.TypeString, Type: schema.TypeString,
Optional: true, Optional: true,
Computed: true,
ForceNew: true, ForceNew: true,
ValidateFunc: validateCloudWatchEventTargetId,
}, },
"arn": &schema.Schema{ "arn": &schema.Schema{
@ -61,7 +63,15 @@ func resourceAwsCloudWatchEventTargetCreate(d *schema.ResourceData, meta interfa
rule := d.Get("rule").(string) rule := d.Get("rule").(string)
input, targetId := buildPutTargetInputStruct(d) var targetId string
if v, ok := d.GetOk("target_id"); ok {
targetId = v.(string)
} else {
targetId = resource.UniqueId()
d.Set("target_id", targetId)
}
input := buildPutTargetInputStruct(d)
log.Printf("[DEBUG] Creating CloudWatch Event Target: %s", input) log.Printf("[DEBUG] Creating CloudWatch Event Target: %s", input)
out, err := conn.PutTargets(input) out, err := conn.PutTargets(input)
if err != nil { if err != nil {
@ -144,7 +154,7 @@ func findEventTargetById(id, rule string, nextToken *string, conn *events.CloudW
func resourceAwsCloudWatchEventTargetUpdate(d *schema.ResourceData, meta interface{}) error { func resourceAwsCloudWatchEventTargetUpdate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).cloudwatcheventsconn conn := meta.(*AWSClient).cloudwatcheventsconn
input, _ := buildPutTargetInputStruct(d) input := buildPutTargetInputStruct(d)
log.Printf("[DEBUG] Updating CloudWatch Event Target: %s", input) log.Printf("[DEBUG] Updating CloudWatch Event Target: %s", input)
_, err := conn.PutTargets(input) _, err := conn.PutTargets(input)
if err != nil { if err != nil {
@ -173,17 +183,10 @@ func resourceAwsCloudWatchEventTargetDelete(d *schema.ResourceData, meta interfa
return nil return nil
} }
func buildPutTargetInputStruct(d *schema.ResourceData) (*events.PutTargetsInput, string) { func buildPutTargetInputStruct(d *schema.ResourceData) *events.PutTargetsInput {
var targetId string
if v, ok := d.GetOk("target_id"); ok {
targetId = v.(string)
} else {
targetId = resource.UniqueId()
}
e := &events.Target{ e := &events.Target{
Arn: aws.String(d.Get("arn").(string)), Arn: aws.String(d.Get("arn").(string)),
Id: aws.String(targetId), Id: aws.String(d.Get("target_id").(string)),
} }
if v, ok := d.GetOk("input"); ok { if v, ok := d.GetOk("input"); ok {
@ -198,5 +201,5 @@ func buildPutTargetInputStruct(d *schema.ResourceData) (*events.PutTargetsInput,
Targets: []*events.Target{e}, Targets: []*events.Target{e},
} }
return &input, targetId return &input
} }

View File

@ -50,7 +50,7 @@ resource "aws_kinesis_stream" "test_stream" {
The following arguments are supported: The following arguments are supported:
* `rule` - (Required) The name of the rule you want to add targets to. * `rule` - (Required) The name of the rule you want to add targets to.
* `target_id` - (Optional) The unique target assignment ID. If missing, will generate an unique id. * `target_id` - (Optional) The unique target assignment ID. If missing, will generate a random, unique id.
* `arn` - (Required) The Amazon Resource Name (ARN) associated of the target. * `arn` - (Required) The Amazon Resource Name (ARN) associated of the target.
* `input` - (Optional) Valid JSON text passed to the target. * `input` - (Optional) Valid JSON text passed to the target.
* `input_path` - (Optional) The value of the [JSONPath](http://goessner.net/articles/JsonPath/) * `input_path` - (Optional) The value of the [JSONPath](http://goessner.net/articles/JsonPath/)