github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/google/resource_container_node_pool_test.go (about)

     1  package google
     2  
     3  import (
     4  	"fmt"
     5  	"strconv"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/terraform/helper/acctest"
     9  	"github.com/hashicorp/terraform/helper/resource"
    10  	"github.com/hashicorp/terraform/terraform"
    11  )
    12  
    13  func TestAccContainerNodePool_basic(t *testing.T) {
    14  	resource.Test(t, resource.TestCase{
    15  		PreCheck:     func() { testAccPreCheck(t) },
    16  		Providers:    testAccProviders,
    17  		CheckDestroy: testAccCheckContainerNodePoolDestroy,
    18  		Steps: []resource.TestStep{
    19  			resource.TestStep{
    20  				Config: testAccContainerNodePool_basic,
    21  				Check: resource.ComposeTestCheckFunc(
    22  					testAccCheckContainerNodePoolMatches("google_container_node_pool.np"),
    23  				),
    24  			},
    25  		},
    26  	})
    27  }
    28  
    29  func testAccCheckContainerNodePoolDestroy(s *terraform.State) error {
    30  	config := testAccProvider.Meta().(*Config)
    31  
    32  	for _, rs := range s.RootModule().Resources {
    33  		if rs.Type != "google_container_node_pool" {
    34  			continue
    35  		}
    36  
    37  		attributes := rs.Primary.Attributes
    38  		_, err := config.clientContainer.Projects.Zones.Clusters.NodePools.Get(
    39  			config.Project, attributes["zone"], attributes["cluster"], attributes["name"]).Do()
    40  		if err == nil {
    41  			return fmt.Errorf("NodePool still exists")
    42  		}
    43  	}
    44  
    45  	return nil
    46  }
    47  
    48  func testAccCheckContainerNodePoolMatches(n string) resource.TestCheckFunc {
    49  	return func(s *terraform.State) error {
    50  		config := testAccProvider.Meta().(*Config)
    51  
    52  		rs, ok := s.RootModule().Resources[n]
    53  		if !ok {
    54  			return fmt.Errorf("Not found: %s", n)
    55  		}
    56  
    57  		if rs.Primary.ID == "" {
    58  			return fmt.Errorf("No ID is set")
    59  		}
    60  
    61  		attributes := rs.Primary.Attributes
    62  		found, err := config.clientContainer.Projects.Zones.Clusters.NodePools.Get(
    63  			config.Project, attributes["zone"], attributes["cluster"], attributes["name"]).Do()
    64  		if err != nil {
    65  			return err
    66  		}
    67  
    68  		if found.Name != attributes["name"] {
    69  			return fmt.Errorf("NodePool not found")
    70  		}
    71  
    72  		inc, err := strconv.Atoi(attributes["initial_node_count"])
    73  		if err != nil {
    74  			return err
    75  		}
    76  		if found.InitialNodeCount != int64(inc) {
    77  			return fmt.Errorf("Mismatched initialNodeCount. TF State: %s. GCP State: %d",
    78  				attributes["initial_node_count"], found.InitialNodeCount)
    79  		}
    80  		return nil
    81  	}
    82  }
    83  
    84  var testAccContainerNodePool_basic = fmt.Sprintf(`
    85  resource "google_container_cluster" "cluster" {
    86  	name = "tf-cluster-nodepool-test-%s"
    87  	zone = "us-central1-a"
    88  	initial_node_count = 3
    89  
    90  	master_auth {
    91  		username = "mr.yoda"
    92  		password = "adoy.rm"
    93  	}
    94  }
    95  
    96  resource "google_container_node_pool" "np" {
    97  	name = "tf-nodepool-test-%s"
    98  	zone = "us-central1-a"
    99  	cluster = "${google_container_cluster.cluster.name}"
   100  	initial_node_count = 2
   101  }`, acctest.RandString(10), acctest.RandString(10))