Skip to content

Commit 75bf0ed

Browse files
author
Brad Sickles
committed
Added basic acceptance test.
1 parent 03731d9 commit 75bf0ed

File tree

2 files changed

+134
-65
lines changed

2 files changed

+134
-65
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,65 @@
1-
package aws
2-
3-
import (
4-
"fmt"
5-
"github.com/aws/aws-sdk-go/service/ec2"
6-
"github.com/hashicorp/terraform/helper/schema"
7-
)
8-
9-
func resourceAwsVpcPeeringConnectionAccept() *schema.Resource {
10-
return &schema.Resource{
11-
Create: resourceAwsVPCPeeringAcceptCreate,
12-
Read: resourceAwsVPCPeeringAcceptRead,
13-
Update: resourceAwsVPCPeeringAcceptUpdate,
14-
Delete: resourceAwsVPCPeeringAcceptDelete,
15-
16-
Schema: map[string]*schema.Schema{
17-
"peering_connection_id": &schema.Schema{
18-
Type: schema.TypeString,
19-
Required: true,
20-
ForceNew: true,
21-
},
22-
},
23-
}
24-
}
25-
26-
func resourceAwsVPCPeeringAcceptCreate(d *schema.ResourceData, meta interface{}) error {
27-
return resourceAwsVPCPeeringAcceptUpdate(d, meta)
28-
}
29-
30-
func resourceAwsVPCPeeringAcceptRead(d *schema.ResourceData, meta interface{}) error {
31-
conn := meta.(*AWSClient).ec2conn
32-
_, state, err := resourceAwsVPCPeeringConnectionStateRefreshFunc(conn, d.Id())()
33-
if err != nil {
34-
return err
35-
}
36-
d.Set("state", state)
37-
d.SetId(d.Get("peering_connection_id"))
38-
return nil
39-
}
40-
41-
func resourceAwsVPCPeeringAcceptUpdate(d *schema.ResourceData, meta interface{}) error {
42-
conn := meta.(*AWSClient).ec2conn
43-
44-
if cur, ok := d.Get("state").(string); ok && cur == ec2.VpcPeeringConnectionStateReasonCodeActive {
45-
// already accepted
46-
return nil
47-
}
48-
49-
state, err := resourceVPCPeeringConnectionAccept(conn, d.Id())
50-
if err != nil {
51-
return err
52-
}
53-
d.Set("state", state)
54-
55-
// TODO: should we poll until this resolves? VpcPeeringConnectionStateReasonCodePendingAcceptance
56-
57-
if state != ec2.VpcPeeringConnectionStateReasonCodeActive {
58-
return fmt.Errorf("Error accepting connection, state: %s", state)
59-
}
60-
return nil
61-
}
62-
63-
func resourceAwsVPCPeeringAcceptDelete(d *schema.ResourceData, meta interface{}) error {
64-
return nil
65-
}
1+
package aws
2+
3+
import (
4+
"fmt"
5+
"github.com/aws/aws-sdk-go/service/ec2"
6+
"github.com/hashicorp/terraform/helper/schema"
7+
)
8+
9+
func resourceAwsVpcPeeringConnectionAccept() *schema.Resource {
10+
return &schema.Resource{
11+
Create: resourceAwsVPCPeeringAcceptCreate,
12+
Read: resourceAwsVPCPeeringAcceptRead,
13+
Update: resourceAwsVPCPeeringAcceptUpdate,
14+
Delete: resourceAwsVPCPeeringAcceptDelete,
15+
16+
Schema: map[string]*schema.Schema{
17+
"peering_connection_id": &schema.Schema{
18+
Type: schema.TypeString,
19+
Required: true,
20+
ForceNew: true,
21+
},
22+
},
23+
}
24+
}
25+
26+
func resourceAwsVPCPeeringAcceptCreate(d *schema.ResourceData, meta interface{}) error {
27+
return resourceAwsVPCPeeringAcceptUpdate(d, meta)
28+
}
29+
30+
func resourceAwsVPCPeeringAcceptRead(d *schema.ResourceData, meta interface{}) error {
31+
conn := meta.(*AWSClient).ec2conn
32+
_, state, err := resourceAwsVPCPeeringConnectionStateRefreshFunc(conn, d.Id())()
33+
if err != nil {
34+
return err
35+
}
36+
d.Set("state", state)
37+
d.SetId(d.Get("peering_connection_id").(string))
38+
return nil
39+
}
40+
41+
func resourceAwsVPCPeeringAcceptUpdate(d *schema.ResourceData, meta interface{}) error {
42+
conn := meta.(*AWSClient).ec2conn
43+
44+
if cur, ok := d.Get("state").(string); ok && cur == ec2.VpcPeeringConnectionStateReasonCodeActive {
45+
// already accepted
46+
return nil
47+
}
48+
49+
state, err := resourceVPCPeeringConnectionAccept(conn, d.Id())
50+
if err != nil {
51+
return err
52+
}
53+
d.Set("state", state)
54+
55+
// TODO: should we poll until this resolves? VpcPeeringConnectionStateReasonCodePendingAcceptance
56+
57+
if state != ec2.VpcPeeringConnectionStateReasonCodeActive {
58+
return fmt.Errorf("Error accepting connection, state: %s", state)
59+
}
60+
return nil
61+
}
62+
63+
func resourceAwsVPCPeeringAcceptDelete(d *schema.ResourceData, meta interface{}) error {
64+
return nil
65+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package aws
2+
3+
import (
4+
"fmt"
5+
"github.com/aws/aws-sdk-go/service/ec2"
6+
"github.com/hashicorp/terraform/helper/resource"
7+
"github.com/hashicorp/terraform/terraform"
8+
"os"
9+
"testing"
10+
)
11+
12+
func TestAccAWSVPCPeeringConnectionAccept_basic(t *testing.T) {
13+
var connection ec2.VpcPeeringConnection
14+
15+
resource.Test(t, resource.TestCase{
16+
PreCheck: func() {
17+
testAccPreCheck(t)
18+
if os.Getenv("AWS_ACCOUNT_ID") == "" {
19+
t.Fatal("AWS_ACCOUNT_ID must be set")
20+
}
21+
},
22+
23+
IDRefreshName: "aws_vpc_peering_connection.foo",
24+
IDRefreshIgnore: []string{"auto_accept"},
25+
26+
Providers: testAccProviders,
27+
Steps: []resource.TestStep{
28+
resource.TestStep{
29+
Config: testAccVpcPeeringAcceptConfig,
30+
Check: resource.ComposeTestCheckFunc(
31+
testAccCheckAWSVpcPeeringConnectionExists("aws_vpc_peering_connection.foo", &connection),
32+
testAccCheckAWSVpcPeeringConnectionAccepted(&connection),
33+
),
34+
},
35+
},
36+
})
37+
}
38+
39+
func testAccCheckAWSVpcPeeringConnectionAccepted(conn *ec2.VpcPeeringConnection) resource.TestCheckFunc {
40+
return func(s *terraform.State) error {
41+
if conn.Status == nil {
42+
return fmt.Errorf("No vpc peering connection status")
43+
}
44+
if conn.Status.Code != ec2.VpcPeeringConnectionStateReasonCodeActive {
45+
return fmt.Errorf("Vpc peering connection not accepted: %s", conn.Status.Code)
46+
}
47+
return nil
48+
}
49+
}
50+
51+
const testAccVpcPeeringAcceptConfig = `
52+
resource "aws_vpc" "foo" {
53+
cidr_block = "10.0.0.0/16"
54+
}
55+
56+
resource "aws_vpc" "bar" {
57+
cidr_block = "10.1.0.0/16"
58+
}
59+
60+
resource "aws_vpc_peering_connection" "foo" {
61+
vpc_id = "${aws_vpc.foo.id}"
62+
peer_vpc_id = "${aws_vpc.bar.id}"
63+
auto_accept = false
64+
}
65+
66+
resource "aws_vpc_peering_connection_accept" "foo" {
67+
peering_connection_id = "${aws_vpc_peering_connection.foo.id}"
68+
}
69+
`

0 commit comments

Comments
 (0)