Skip to content

Commit b795a45

Browse files
ewbankkitdanawillow
authored andcommitted
Import google_compute_shared_vpc_host_project/google_compute_shared_vpc_service_project resources (#1004)
* Import google_compute_shared_vpc_host_project/google_compute_shared_vpc_service_project resources. * Incorporate testing of resource import into main acceptance tests.
1 parent d527a66 commit b795a45

5 files changed

+50
-4
lines changed

google/resource_compute_shared_vpc_host_project.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ func resourceComputeSharedVpcHostProject() *schema.Resource {
1212
Create: resourceComputeSharedVpcHostProjectCreate,
1313
Read: resourceComputeSharedVpcHostProjectRead,
1414
Delete: resourceComputeSharedVpcHostProjectDelete,
15+
Importer: &schema.ResourceImporter{
16+
State: schema.ImportStatePassthrough,
17+
},
1518

1619
Schema: map[string]*schema.Schema{
1720
"project": &schema.Schema{
@@ -46,7 +49,7 @@ func resourceComputeSharedVpcHostProjectCreate(d *schema.ResourceData, meta inte
4649
func resourceComputeSharedVpcHostProjectRead(d *schema.ResourceData, meta interface{}) error {
4750
config := meta.(*Config)
4851

49-
hostProject := d.Get("project").(string)
52+
hostProject := d.Id()
5053

5154
project, err := config.clientCompute.Projects.Get(hostProject).Do()
5255
if err != nil {
@@ -58,6 +61,8 @@ func resourceComputeSharedVpcHostProjectRead(d *schema.ResourceData, meta interf
5861
d.SetId("")
5962
}
6063

64+
d.Set("project", hostProject)
65+
6166
return nil
6267
}
6368

google/resource_compute_shared_vpc_service_project.go

+15-3
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,24 @@ package google
22

33
import (
44
"fmt"
5+
"strings"
56

67
"google.golang.org/api/compute/v1"
78

9+
"log"
10+
811
"github.com/hashicorp/terraform/helper/schema"
912
"google.golang.org/api/googleapi"
10-
"log"
1113
)
1214

1315
func resourceComputeSharedVpcServiceProject() *schema.Resource {
1416
return &schema.Resource{
1517
Create: resourceComputeSharedVpcServiceProjectCreate,
1618
Read: resourceComputeSharedVpcServiceProjectRead,
1719
Delete: resourceComputeSharedVpcServiceProjectDelete,
20+
Importer: &schema.ResourceImporter{
21+
State: schema.ImportStatePassthrough,
22+
},
1823

1924
Schema: map[string]*schema.Schema{
2025
"host_project": &schema.Schema{
@@ -59,8 +64,12 @@ func resourceComputeSharedVpcServiceProjectCreate(d *schema.ResourceData, meta i
5964
func resourceComputeSharedVpcServiceProjectRead(d *schema.ResourceData, meta interface{}) error {
6065
config := meta.(*Config)
6166

62-
hostProject := d.Get("host_project").(string)
63-
serviceProject := d.Get("service_project").(string)
67+
split := strings.Split(d.Id(), "/")
68+
if len(split) != 2 {
69+
return fmt.Errorf("Error parsing resource ID %s", d.Id())
70+
}
71+
hostProject := split[0]
72+
serviceProject := split[1]
6473

6574
associatedHostProject, err := config.clientCompute.Projects.GetXpnHost(serviceProject).Do()
6675
if err != nil {
@@ -76,6 +85,9 @@ func resourceComputeSharedVpcServiceProjectRead(d *schema.ResourceData, meta int
7685
return nil
7786
}
7887

88+
d.Set("host_project", hostProject)
89+
d.Set("service_project", serviceProject)
90+
7991
return nil
8092
}
8193

google/resource_compute_shared_vpc_test.go

+14
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ func TestAccComputeSharedVpc_basic(t *testing.T) {
1616
hostProject := "xpn-host-" + acctest.RandString(10)
1717
serviceProject := "xpn-service-" + acctest.RandString(10)
1818

19+
hostProjectResourceName := "google_compute_shared_vpc_host_project.host"
20+
serviceProjectResourceName := "google_compute_shared_vpc_service_project.service"
21+
1922
resource.Test(t, resource.TestCase{
2023
PreCheck: func() { testAccPreCheck(t) },
2124
Providers: testAccProviders,
@@ -27,6 +30,17 @@ func TestAccComputeSharedVpc_basic(t *testing.T) {
2730
testAccCheckComputeSharedVpcServiceProject(hostProject, serviceProject, true),
2831
),
2932
},
33+
// Test import.
34+
resource.TestStep{
35+
ResourceName: hostProjectResourceName,
36+
ImportState: true,
37+
ImportStateVerify: true,
38+
},
39+
resource.TestStep{
40+
ResourceName: serviceProjectResourceName,
41+
ImportState: true,
42+
ImportStateVerify: true,
43+
},
3044
// Use a separate TestStep rather than a CheckDestroy because we need the project to still exist.
3145
resource.TestStep{
3246
Config: testAccComputeSharedVpc_disabled(hostProject, serviceProject, org, billingId),

website/docs/r/compute_shared_vpc_host_project.html.markdown

+7
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,10 @@ The following arguments are expected:
4242

4343
* `project` - (Required) The ID of the project that will serve as a Shared VPC host project
4444

45+
## Import
46+
47+
Google Compute Engine Shared VPC host project feature can be imported using the `project`, e.g.
48+
49+
```
50+
$ terraform import google_compute_shared_vpc_host_project.host host-project-id
51+
```

website/docs/r/compute_shared_vpc_service_project.html.markdown

+8
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,11 @@ The following arguments are expected:
3636
* `host_project` - (Required) The ID of a host project to associate.
3737

3838
* `service_project` - (Required) The ID of the project that will serve as a Shared VPC service project.
39+
40+
## Import
41+
42+
Google Compute Engine Shared VPC service project feature can be imported using the `host_project` and `service_project`, e.g.
43+
44+
```
45+
$ terraform import google_compute_shared_vpc_service_project.service1 host-project-id/service-project-id-1
46+
```

0 commit comments

Comments
 (0)