Skip to content

Commit

Permalink
Add 'mesh_owner' and 'resource_owner' attributes in support of cross-…
Browse files Browse the repository at this point in the history
…account mesh sharing.

Acceptance test output:

$ make testacc TEST=./aws TESTARGS='-run=TestAccAWSAppmesh'
==> Checking that code complies with gofmt requirements...
GO111MODULE=off TF_ACC=1 go test ./aws -v -count 1 -parallel 20 -run=TestAccAWSAppmesh -timeout 120m
=== RUN   TestAccAWSAppmesh
=== RUN   TestAccAWSAppmesh/Mesh
=== RUN   TestAccAWSAppmesh/Mesh/basic
=== RUN   TestAccAWSAppmesh/Mesh/egressFilter
=== RUN   TestAccAWSAppmesh/Route
=== RUN   TestAccAWSAppmesh/Route/httpRoute
=== RUN   TestAccAWSAppmesh/Route/tcpRoute
=== RUN   TestAccAWSAppmesh/VirtualNode
=== RUN   TestAccAWSAppmesh/VirtualNode/basic
=== RUN   TestAccAWSAppmesh/VirtualNode/cloudMapServiceDiscovery
=== RUN   TestAccAWSAppmesh/VirtualNode/listenerHealthChecks
=== RUN   TestAccAWSAppmesh/VirtualNode/logging
=== RUN   TestAccAWSAppmesh/VirtualRouter
=== RUN   TestAccAWSAppmesh/VirtualRouter/basic
=== RUN   TestAccAWSAppmesh/VirtualService
=== RUN   TestAccAWSAppmesh/VirtualService/virtualNode
=== RUN   TestAccAWSAppmesh/VirtualService/virtualRouter
--- PASS: TestAccAWSAppmesh (505.56s)
    --- PASS: TestAccAWSAppmesh/Mesh (69.94s)
        --- PASS: TestAccAWSAppmesh/Mesh/basic (23.51s)
        --- PASS: TestAccAWSAppmesh/Mesh/egressFilter (46.43s)
    --- PASS: TestAccAWSAppmesh/Route (88.69s)
        --- PASS: TestAccAWSAppmesh/Route/httpRoute (43.76s)
        --- PASS: TestAccAWSAppmesh/Route/tcpRoute (44.93s)
    --- PASS: TestAccAWSAppmesh/VirtualNode (221.53s)
        --- PASS: TestAccAWSAppmesh/VirtualNode/basic (25.11s)
        --- PASS: TestAccAWSAppmesh/VirtualNode/cloudMapServiceDiscovery (114.29s)
        --- PASS: TestAccAWSAppmesh/VirtualNode/listenerHealthChecks (41.37s)
        --- PASS: TestAccAWSAppmesh/VirtualNode/logging (40.76s)
    --- PASS: TestAccAWSAppmesh/VirtualRouter (41.17s)
        --- PASS: TestAccAWSAppmesh/VirtualRouter/basic (41.17s)
    --- PASS: TestAccAWSAppmesh/VirtualService (84.22s)
        --- PASS: TestAccAWSAppmesh/VirtualService/virtualNode (43.32s)
        --- PASS: TestAccAWSAppmesh/VirtualService/virtualRouter (40.90s)
PASS
ok  	github.com/terraform-providers/terraform-provider-aws/aws	505.641s
  • Loading branch information
ewbankkit committed Feb 29, 2020
1 parent e9b339d commit 0dfbf3b
Show file tree
Hide file tree
Showing 12 changed files with 147 additions and 8 deletions.
28 changes: 26 additions & 2 deletions aws/resource_aws_appmesh_route.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ func resourceAwsAppmeshRoute() *schema.Resource {
ValidateFunc: validation.StringLenBetween(1, 255),
},

"mesh_owner": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
ValidateFunc: validateAwsAccountId,
},

"virtual_router_name": {
Type: schema.TypeString,
Required: true,
Expand Down Expand Up @@ -340,6 +348,11 @@ func resourceAwsAppmeshRoute() *schema.Resource {
Computed: true,
},

"resource_owner": {
Type: schema.TypeString,
Computed: true,
},

// "tags": tagsSchema(),
},
}
Expand Down Expand Up @@ -574,6 +587,9 @@ func resourceAwsAppmeshRouteCreate(d *schema.ResourceData, meta interface{}) err
Spec: expandAppmeshRouteSpec(d.Get("spec").([]interface{})),
// Tags: keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().AppmeshTags(),
}
if v, ok := d.GetOk("mesh_owner"); ok {
req.MeshOwner = aws.String(v.(string))
}

log.Printf("[DEBUG] Creating App Mesh route: %#v", req)
resp, err := conn.CreateRoute(req)
Expand All @@ -589,11 +605,16 @@ func resourceAwsAppmeshRouteCreate(d *schema.ResourceData, meta interface{}) err
func resourceAwsAppmeshRouteRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).appmeshconn

resp, err := conn.DescribeRoute(&appmesh.DescribeRouteInput{
req := &appmesh.DescribeRouteInput{
MeshName: aws.String(d.Get("mesh_name").(string)),
RouteName: aws.String(d.Get("name").(string)),
VirtualRouterName: aws.String(d.Get("virtual_router_name").(string)),
})
}
if v, ok := d.GetOk("mesh_owner"); ok {
req.MeshOwner = aws.String(v.(string))
}

resp, err := conn.DescribeRoute(req)
if isAWSErr(err, appmesh.ErrCodeNotFoundException, "") {
log.Printf("[WARN] App Mesh route (%s) not found, removing from state", d.Id())
d.SetId("")
Expand All @@ -611,10 +632,12 @@ func resourceAwsAppmeshRouteRead(d *schema.ResourceData, meta interface{}) error
arn := aws.StringValue(resp.Route.Metadata.Arn)
d.Set("name", resp.Route.RouteName)
d.Set("mesh_name", resp.Route.MeshName)
d.Set("mesh_owner", resp.Route.Metadata.MeshOwner)
d.Set("virtual_router_name", resp.Route.VirtualRouterName)
d.Set("arn", arn)
d.Set("created_date", resp.Route.Metadata.CreatedAt.Format(time.RFC3339))
d.Set("last_updated_date", resp.Route.Metadata.LastUpdatedAt.Format(time.RFC3339))
d.Set("resource_owner", resp.Route.Metadata.ResourceOwner)
err = d.Set("spec", flattenAppmeshRouteSpec(resp.Route.Spec))
if err != nil {
return fmt.Errorf("error setting spec: %s", err)
Expand All @@ -640,6 +663,7 @@ func resourceAwsAppmeshRouteUpdate(d *schema.ResourceData, meta interface{}) err
_, v := d.GetChange("spec")
req := &appmesh.UpdateRouteInput{
MeshName: aws.String(d.Get("mesh_name").(string)),
MeshOwner: aws.String(d.Get("mesh_owner").(string)),
RouteName: aws.String(d.Get("name").(string)),
VirtualRouterName: aws.String(d.Get("virtual_router_name").(string)),
Spec: expandAppmeshRouteSpec(v.([]interface{})),
Expand Down
8 changes: 8 additions & 0 deletions aws/resource_aws_appmesh_route_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,7 @@ func testAccAwsAppmeshRoute_httpRoute(t *testing.T) {
testAccCheckAppmeshRouteExists(resourceName, &r),
resource.TestCheckResourceAttr(resourceName, "name", rName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"),
Expand All @@ -356,6 +357,7 @@ func testAccAwsAppmeshRoute_httpRoute(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "tags.%", "0"),
resource.TestCheckResourceAttrSet(resourceName, "created_date"),
resource.TestCheckResourceAttrSet(resourceName, "last_updated_date"),
testAccCheckResourceAttrAccountID(resourceName, "resource_owner"),
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "appmesh-preview", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)),
),
},
Expand All @@ -365,6 +367,7 @@ func testAccAwsAppmeshRoute_httpRoute(t *testing.T) {
testAccCheckAppmeshRouteExists(resourceName, &r),
resource.TestCheckResourceAttr(resourceName, "name", rName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"),
Expand All @@ -383,6 +386,7 @@ func testAccAwsAppmeshRoute_httpRoute(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "tags.%", "0"),
resource.TestCheckResourceAttrSet(resourceName, "created_date"),
resource.TestCheckResourceAttrSet(resourceName, "last_updated_date"),
testAccCheckResourceAttrAccountID(resourceName, "resource_owner"),
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "appmesh-preview", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)),
),
},
Expand Down Expand Up @@ -416,6 +420,7 @@ func testAccAwsAppmeshRoute_tcpRoute(t *testing.T) {
testAccCheckAppmeshRouteExists(resourceName, &r),
resource.TestCheckResourceAttr(resourceName, "name", rName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"),
Expand All @@ -428,6 +433,7 @@ func testAccAwsAppmeshRoute_tcpRoute(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "tags.%", "0"),
resource.TestCheckResourceAttrSet(resourceName, "created_date"),
resource.TestCheckResourceAttrSet(resourceName, "last_updated_date"),
testAccCheckResourceAttrAccountID(resourceName, "resource_owner"),
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "appmesh-preview", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)),
),
},
Expand All @@ -437,6 +443,7 @@ func testAccAwsAppmeshRoute_tcpRoute(t *testing.T) {
testAccCheckAppmeshRouteExists(resourceName, &r),
resource.TestCheckResourceAttr(resourceName, "name", rName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"),
Expand All @@ -449,6 +456,7 @@ func testAccAwsAppmeshRoute_tcpRoute(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "tags.%", "0"),
resource.TestCheckResourceAttrSet(resourceName, "created_date"),
resource.TestCheckResourceAttrSet(resourceName, "last_updated_date"),
testAccCheckResourceAttrAccountID(resourceName, "resource_owner"),
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "appmesh-preview", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)),
),
},
Expand Down
28 changes: 26 additions & 2 deletions aws/resource_aws_appmesh_virtual_node.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ func resourceAwsAppmeshVirtualNode() *schema.Resource {
ValidateFunc: validation.StringLenBetween(1, 255),
},

"mesh_owner": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
ValidateFunc: validateAwsAccountId,
},

"spec": {
Type: schema.TypeList,
Required: true,
Expand Down Expand Up @@ -293,6 +301,11 @@ func resourceAwsAppmeshVirtualNode() *schema.Resource {
Computed: true,
},

"resource_owner": {
Type: schema.TypeString,
Computed: true,
},

// "tags": tagsSchema(),
},
}
Expand All @@ -307,6 +320,9 @@ func resourceAwsAppmeshVirtualNodeCreate(d *schema.ResourceData, meta interface{
Spec: expandAppmeshVirtualNodeSpec(d.Get("spec").([]interface{})),
// Tags: keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().AppmeshTags(),
}
if v, ok := d.GetOk("mesh_owner"); ok {
req.MeshOwner = aws.String(v.(string))
}

log.Printf("[DEBUG] Creating App Mesh virtual node: %#v", req)
resp, err := conn.CreateVirtualNode(req)
Expand All @@ -322,10 +338,15 @@ func resourceAwsAppmeshVirtualNodeCreate(d *schema.ResourceData, meta interface{
func resourceAwsAppmeshVirtualNodeRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).appmeshconn

resp, err := conn.DescribeVirtualNode(&appmesh.DescribeVirtualNodeInput{
req := &appmesh.DescribeVirtualNodeInput{
MeshName: aws.String(d.Get("mesh_name").(string)),
VirtualNodeName: aws.String(d.Get("name").(string)),
})
}
if v, ok := d.GetOk("mesh_owner"); ok {
req.MeshOwner = aws.String(v.(string))
}

resp, err := conn.DescribeVirtualNode(req)
if isAWSErr(err, appmesh.ErrCodeNotFoundException, "") {
log.Printf("[WARN] App Mesh virtual node (%s) not found, removing from state", d.Id())
d.SetId("")
Expand All @@ -343,9 +364,11 @@ func resourceAwsAppmeshVirtualNodeRead(d *schema.ResourceData, meta interface{})
arn := aws.StringValue(resp.VirtualNode.Metadata.Arn)
d.Set("name", resp.VirtualNode.VirtualNodeName)
d.Set("mesh_name", resp.VirtualNode.MeshName)
d.Set("mesh_owner", resp.VirtualNode.Metadata.MeshOwner)
d.Set("arn", arn)
d.Set("created_date", resp.VirtualNode.Metadata.CreatedAt.Format(time.RFC3339))
d.Set("last_updated_date", resp.VirtualNode.Metadata.LastUpdatedAt.Format(time.RFC3339))
d.Set("resource_owner", resp.VirtualNode.Metadata.ResourceOwner)
err = d.Set("spec", flattenAppmeshVirtualNodeSpec(resp.VirtualNode.Spec))
if err != nil {
return fmt.Errorf("error setting spec: %s", err)
Expand All @@ -371,6 +394,7 @@ func resourceAwsAppmeshVirtualNodeUpdate(d *schema.ResourceData, meta interface{
_, v := d.GetChange("spec")
req := &appmesh.UpdateVirtualNodeInput{
MeshName: aws.String(d.Get("mesh_name").(string)),
MeshOwner: aws.String(d.Get("mesh_owner").(string)),
VirtualNodeName: aws.String(d.Get("name").(string)),
Spec: expandAppmeshVirtualNodeSpec(v.([]interface{})),
}
Expand Down
10 changes: 10 additions & 0 deletions aws/resource_aws_appmesh_virtual_node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,15 @@ func testAccAwsAppmeshVirtualNode_basic(t *testing.T) {
testAccCheckAppmeshVirtualNodeExists(resourceName, &vn),
resource.TestCheckResourceAttr(resourceName, "name", vnName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "0"),
resource.TestCheckResourceAttr(resourceName, "spec.0.listener.#", "0"),
resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"),
resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.#", "0"),
resource.TestCheckResourceAttrSet(resourceName, "created_date"),
resource.TestCheckResourceAttrSet(resourceName, "last_updated_date"),
testAccCheckResourceAttrAccountID(resourceName, "resource_owner"),
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "appmesh-preview", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)),
),
},
Expand Down Expand Up @@ -135,6 +137,7 @@ func testAccAwsAppmeshVirtualNode_cloudMapServiceDiscovery(t *testing.T) {
testAccCheckAppmeshVirtualNodeExists(resourceName, &vn),
resource.TestCheckResourceAttr(resourceName, "name", vnName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.aws_cloud_map.#", "1"),
Expand All @@ -150,6 +153,7 @@ func testAccAwsAppmeshVirtualNode_cloudMapServiceDiscovery(t *testing.T) {
testAccCheckAppmeshVirtualNodeExists(resourceName, &vn),
resource.TestCheckResourceAttr(resourceName, "name", vnName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.aws_cloud_map.#", "1"),
Expand Down Expand Up @@ -186,6 +190,7 @@ func testAccAwsAppmeshVirtualNode_listenerHealthChecks(t *testing.T) {
testAccCheckAppmeshVirtualNodeExists(resourceName, &vn),
resource.TestCheckResourceAttr(resourceName, "name", vnName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.backend.2622272660.virtual_service.#", "1"),
Expand All @@ -208,6 +213,7 @@ func testAccAwsAppmeshVirtualNode_listenerHealthChecks(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"),
resource.TestCheckResourceAttrSet(resourceName, "created_date"),
resource.TestCheckResourceAttrSet(resourceName, "last_updated_date"),
testAccCheckResourceAttrAccountID(resourceName, "resource_owner"),
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "appmesh-preview", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)),
),
},
Expand All @@ -217,6 +223,7 @@ func testAccAwsAppmeshVirtualNode_listenerHealthChecks(t *testing.T) {
testAccCheckAppmeshVirtualNodeExists(resourceName, &vn),
resource.TestCheckResourceAttr(resourceName, "name", vnName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "2"),
resource.TestCheckResourceAttr(resourceName, "spec.0.backend.2576932631.virtual_service.#", "1"),
Expand All @@ -240,6 +247,7 @@ func testAccAwsAppmeshVirtualNode_listenerHealthChecks(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb1.simpleapp.local"),
resource.TestCheckResourceAttrSet(resourceName, "created_date"),
resource.TestCheckResourceAttrSet(resourceName, "last_updated_date"),
testAccCheckResourceAttrAccountID(resourceName, "resource_owner"),
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "appmesh-preview", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)),
),
},
Expand Down Expand Up @@ -270,6 +278,7 @@ func testAccAwsAppmeshVirtualNode_logging(t *testing.T) {
testAccCheckAppmeshVirtualNodeExists(resourceName, &vn),
resource.TestCheckResourceAttr(resourceName, "name", vnName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.#", "1"),
Expand All @@ -283,6 +292,7 @@ func testAccAwsAppmeshVirtualNode_logging(t *testing.T) {
testAccCheckAppmeshVirtualNodeExists(resourceName, &vn),
resource.TestCheckResourceAttr(resourceName, "name", vnName),
resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName),
testAccCheckResourceAttrAccountID(resourceName, "mesh_owner"),
resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.#", "1"),
resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.0.file.#", "1"),
Expand Down
28 changes: 26 additions & 2 deletions aws/resource_aws_appmesh_virtual_router.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ func resourceAwsAppmeshVirtualRouter() *schema.Resource {
ValidateFunc: validation.StringLenBetween(1, 255),
},

"mesh_owner": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
ValidateFunc: validateAwsAccountId,
},

"spec": {
Type: schema.TypeList,
Required: true,
Expand Down Expand Up @@ -112,6 +120,11 @@ func resourceAwsAppmeshVirtualRouter() *schema.Resource {
Computed: true,
},

"resource_owner": {
Type: schema.TypeString,
Computed: true,
},

// "tags": tagsSchema(),
},
}
Expand All @@ -126,6 +139,9 @@ func resourceAwsAppmeshVirtualRouterCreate(d *schema.ResourceData, meta interfac
Spec: expandAppmeshVirtualRouterSpec(d.Get("spec").([]interface{})),
// Tags: keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().AppmeshTags(),
}
if v, ok := d.GetOk("mesh_owner"); ok {
req.MeshOwner = aws.String(v.(string))
}

log.Printf("[DEBUG] Creating App Mesh virtual router: %#v", req)
resp, err := conn.CreateVirtualRouter(req)
Expand All @@ -141,10 +157,15 @@ func resourceAwsAppmeshVirtualRouterCreate(d *schema.ResourceData, meta interfac
func resourceAwsAppmeshVirtualRouterRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).appmeshconn

resp, err := conn.DescribeVirtualRouter(&appmesh.DescribeVirtualRouterInput{
req := &appmesh.DescribeVirtualRouterInput{
MeshName: aws.String(d.Get("mesh_name").(string)),
VirtualRouterName: aws.String(d.Get("name").(string)),
})
}
if v, ok := d.GetOk("mesh_owner"); ok {
req.MeshOwner = aws.String(v.(string))
}

resp, err := conn.DescribeVirtualRouter(req)
if isAWSErr(err, appmesh.ErrCodeNotFoundException, "") {
log.Printf("[WARN] App Mesh virtual router (%s) not found, removing from state", d.Id())
d.SetId("")
Expand All @@ -162,9 +183,11 @@ func resourceAwsAppmeshVirtualRouterRead(d *schema.ResourceData, meta interface{
arn := aws.StringValue(resp.VirtualRouter.Metadata.Arn)
d.Set("name", resp.VirtualRouter.VirtualRouterName)
d.Set("mesh_name", resp.VirtualRouter.MeshName)
d.Set("mesh_owner", resp.VirtualRouter.Metadata.MeshOwner)
d.Set("arn", arn)
d.Set("created_date", resp.VirtualRouter.Metadata.CreatedAt.Format(time.RFC3339))
d.Set("last_updated_date", resp.VirtualRouter.Metadata.LastUpdatedAt.Format(time.RFC3339))
d.Set("resource_owner", resp.VirtualRouter.Metadata.ResourceOwner)
err = d.Set("spec", flattenAppmeshVirtualRouterSpec(resp.VirtualRouter.Spec))
if err != nil {
return fmt.Errorf("error setting spec: %s", err)
Expand All @@ -190,6 +213,7 @@ func resourceAwsAppmeshVirtualRouterUpdate(d *schema.ResourceData, meta interfac
_, v := d.GetChange("spec")
req := &appmesh.UpdateVirtualRouterInput{
MeshName: aws.String(d.Get("mesh_name").(string)),
MeshOwner: aws.String(d.Get("mesh_owner").(string)),
VirtualRouterName: aws.String(d.Get("name").(string)),
Spec: expandAppmeshVirtualRouterSpec(v.([]interface{})),
}
Expand Down
Loading

0 comments on commit 0dfbf3b

Please sign in to comment.