From 3def84d2867f9e6d0d7eed65bee3df359731eebb Mon Sep 17 00:00:00 2001 From: Anders Bruun Olsen Date: Thu, 3 Aug 2017 14:53:42 +0200 Subject: [PATCH 1/2] Make google_container_node_pool resources importable. --- google/import_container_node_pool_test.go | 32 +++++++++++++++++++++++ google/resource_container_node_pool.go | 18 +++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 google/import_container_node_pool_test.go diff --git a/google/import_container_node_pool_test.go b/google/import_container_node_pool_test.go new file mode 100644 index 00000000000..d580d97a386 --- /dev/null +++ b/google/import_container_node_pool_test.go @@ -0,0 +1,32 @@ +package google + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform/helper/acctest" + "github.com/hashicorp/terraform/helper/resource" +) + +func TestAccGoogleContainerNodePool_import(t *testing.T) { + resourceName := "google_container_node_pool.np" + cluster := fmt.Sprintf("tf-nodepool-test-%s", acctest.RandString(10)) + np := fmt.Sprintf("tf-nodepool-test-%s", acctest.RandString(10)) + conf := testAccContainerNodePool_basic(cluster, np) + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckContainerNodePoolDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: conf, + }, + + resource.TestStep{ + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} diff --git a/google/resource_container_node_pool.go b/google/resource_container_node_pool.go index 7fd301612f2..1ad9f2c722c 100644 --- a/google/resource_container_node_pool.go +++ b/google/resource_container_node_pool.go @@ -3,6 +3,7 @@ package google import ( "fmt" "log" + "strings" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/helper/schema" @@ -18,6 +19,10 @@ func resourceContainerNodePool() *schema.Resource { Delete: resourceContainerNodePoolDelete, Exists: resourceContainerNodePoolExists, + Importer: &schema.ResourceImporter{ + State: resourceContainerNodePoolStateImporter, + }, + Schema: map[string]*schema.Schema{ "project": &schema.Schema{ Type: schema.TypeString, @@ -360,3 +365,16 @@ func resourceContainerNodePoolExists(d *schema.ResourceData, meta interface{}) ( } return true, nil } + +func resourceContainerNodePoolStateImporter(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) { + parts := strings.Split(d.Id(), "/") + if len(parts) != 3 { + return nil, fmt.Errorf("Invalid container cluster specifier. Expecting {zone}/{cluster}/{name}") + } + + d.Set("zone", parts[0]) + d.Set("cluster", parts[1]) + d.Set("name", parts[2]) + + return []*schema.ResourceData{d}, nil +} From fa58deeb83331e1727f8309b813d58c7c9c97c6d Mon Sep 17 00:00:00 2001 From: Anders Bruun Olsen Date: Sat, 5 Aug 2017 18:44:33 +0200 Subject: [PATCH 2/2] Add website documentation for importing google_container_node_pool. --- website/docs/r/container_node_pool.html.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/website/docs/r/container_node_pool.html.markdown b/website/docs/r/container_node_pool.html.markdown index 4476013ca19..631b99d6f22 100644 --- a/website/docs/r/container_node_pool.html.markdown +++ b/website/docs/r/container_node_pool.html.markdown @@ -111,3 +111,11 @@ The `autoscaling` block supports: <= `maxNodeCount`. * `maxNodeCount` - (Required) Maximum number of nodes in the NodePool. Must be >= minNodeCount. + +## Import + +Node pools can be imported using the `zone`, `cluster` and `name`, e.g. + +``` +$ terraform import google_container_node_pool.mainpool us-east1-a/my-cluster/main-pool +``` \ No newline at end of file