diff --git a/aws/dx_vif.go b/aws/dx_vif.go index 0898583598cf..92ee5358cc73 100644 --- a/aws/dx_vif.go +++ b/aws/dx_vif.go @@ -10,68 +10,8 @@ import ( "github.com/aws/aws-sdk-go/service/directconnect" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/helper/schema" - "github.com/hashicorp/terraform/helper/validation" ) -// Schemas common to all (public/private, hosted or not) virtual interfaces. -var dxVirtualInterfaceSchemaWithTags = mergeSchemas( - dxVirtualInterfaceSchema, - map[string]*schema.Schema{ - "tags": tagsSchema(), - }, -) -var dxVirtualInterfaceSchema = map[string]*schema.Schema{ - "arn": { - Type: schema.TypeString, - Computed: true, - }, - "connection_id": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - }, - "name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - }, - "vlan": { - Type: schema.TypeInt, - Required: true, - ForceNew: true, - ValidateFunc: validation.IntBetween(1, 4094), - }, - "bgp_asn": { - Type: schema.TypeInt, - Required: true, - ForceNew: true, - }, - "bgp_auth_key": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - }, - "address_family": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: validation.StringInSlice([]string{directconnect.AddressFamilyIpv4, directconnect.AddressFamilyIpv6}, false), - }, - "customer_address": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - }, - "amazon_address": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - }, -} - func dxVirtualInterfaceRead(id string, conn *directconnect.DirectConnect) (*directconnect.VirtualInterface, error) { resp, state, err := dxVirtualInterfaceStateRefresh(conn, id)() if err != nil { diff --git a/aws/resource_aws_dx_public_virtual_interface.go b/aws/resource_aws_dx_public_virtual_interface.go index d23a2a92978a..88cfd30a5c1c 100644 --- a/aws/resource_aws_dx_public_virtual_interface.go +++ b/aws/resource_aws_dx_public_virtual_interface.go @@ -8,6 +8,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/directconnect" "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform/helper/validation" ) func resourceAwsDxPublicVirtualInterface() *schema.Resource { @@ -21,18 +22,65 @@ func resourceAwsDxPublicVirtualInterface() *schema.Resource { }, CustomizeDiff: resourceAwsDxPublicVirtualInterfaceCustomizeDiff, - Schema: mergeSchemas( - dxVirtualInterfaceSchemaWithTags, - map[string]*schema.Schema{ - "route_filter_prefixes": &schema.Schema{ - Type: schema.TypeSet, - Required: true, - ForceNew: true, - Elem: &schema.Schema{Type: schema.TypeString}, - MinItems: 1, - }, + Schema: map[string]*schema.Schema{ + "arn": { + Type: schema.TypeString, + Computed: true, }, - ), + "connection_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + "name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + "vlan": { + Type: schema.TypeInt, + Required: true, + ForceNew: true, + ValidateFunc: validation.IntBetween(1, 4094), + }, + "bgp_asn": { + Type: schema.TypeInt, + Required: true, + ForceNew: true, + }, + "bgp_auth_key": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, + "address_family": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validation.StringInSlice([]string{directconnect.AddressFamilyIpv4, directconnect.AddressFamilyIpv6}, false), + }, + "customer_address": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, + "amazon_address": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, + "route_filter_prefixes": &schema.Schema{ + Type: schema.TypeSet, + Required: true, + ForceNew: true, + Elem: &schema.Schema{Type: schema.TypeString}, + MinItems: 1, + }, + "tags": tagsSchema(), + }, Timeouts: &schema.ResourceTimeout{ Create: schema.DefaultTimeout(10 * time.Minute), diff --git a/aws/utils.go b/aws/utils.go index 6a120cccff8c..21c3aab7ef3d 100644 --- a/aws/utils.go +++ b/aws/utils.go @@ -7,7 +7,6 @@ import ( "regexp" "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/helper/schema" ) // Base64Encode encodes data if the input isn't already encoded using base64.StdEncoding.EncodeToString. @@ -48,15 +47,3 @@ func isResourceNotFoundError(err error) bool { _, ok := err.(*resource.NotFoundError) return ok } - -func mergeSchemas(schemas ...map[string]*schema.Schema) map[string]*schema.Schema { - merged := make(map[string]*schema.Schema) - - for _, schema := range schemas { - for k, v := range schema { - merged[k] = v - } - } - - return merged -} diff --git a/aws/utils_test.go b/aws/utils_test.go index a5854e7ef4b0..785ad141ed33 100644 --- a/aws/utils_test.go +++ b/aws/utils_test.go @@ -2,8 +2,6 @@ package aws import ( "testing" - - "github.com/hashicorp/terraform/helper/schema" ) var base64encodingTests = []struct { @@ -74,29 +72,3 @@ func TestJsonBytesEqualWhitespaceAndNoWhitespace(t *testing.T) { t.Errorf("Expected jsonBytesEqual to return false for %s == %s", noWhitespaceDiff, whitespaceDiff) } } - -func TestMergeSchemas(t *testing.T) { - s1 := map[string]*schema.Schema{ - "aaa": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - }, - "zzz": { - Type: schema.TypeInt, - Optional: true, - Default: 42, - }, - } - s2 := map[string]*schema.Schema{ - "xxx": { - Type: schema.TypeFloat, - Computed: true, - }, - } - - s3 := mergeSchemas(s1, s2) - if len(s3) != 3 { - t.Errorf("Expected merge schema to be of size 3, got %d", len(s3)) - } -}