github.com/gabrielperezs/terraform@v0.7.0-rc2.0.20160715084931-f7da2612946f/builtin/providers/openstack/resource_openstack_lb_monitor_v2_test.go (about)

     1  package openstack
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  	"github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors"
    11  )
    12  
    13  func TestAccLBV2Monitor_basic(t *testing.T) {
    14  	var monitor monitors.Monitor
    15  
    16  	resource.Test(t, resource.TestCase{
    17  		PreCheck:     func() { testAccPreCheck(t) },
    18  		Providers:    testAccProviders,
    19  		CheckDestroy: testAccCheckLBV2MonitorDestroy,
    20  		Steps: []resource.TestStep{
    21  			resource.TestStep{
    22  				Config: TestAccLBV2MonitorConfig_basic,
    23  				Check: resource.ComposeTestCheckFunc(
    24  					testAccCheckLBV2MonitorExists(t, "openstack_lb_monitor_v2.monitor_1", &monitor),
    25  				),
    26  			},
    27  			resource.TestStep{
    28  				Config: TestAccLBV2MonitorConfig_update,
    29  				Check: resource.ComposeTestCheckFunc(
    30  					resource.TestCheckResourceAttr("openstack_lb_monitor_v2.monitor_1", "name", "tf_test_monitor_updated"),
    31  					resource.TestCheckResourceAttr("openstack_lb_monitor_v2.monitor_1", "delay", "30"),
    32  					resource.TestCheckResourceAttr("openstack_lb_monitor_v2.monitor_1", "timeout", "15"),
    33  				),
    34  			},
    35  		},
    36  	})
    37  }
    38  
    39  func testAccCheckLBV2MonitorDestroy(s *terraform.State) error {
    40  	config := testAccProvider.Meta().(*Config)
    41  	networkingClient, err := config.networkingV2Client(OS_REGION_NAME)
    42  	if err != nil {
    43  		return fmt.Errorf("(testAccCheckLBV2MonitorDestroy) Error creating OpenStack networking client: %s", err)
    44  	}
    45  
    46  	for _, rs := range s.RootModule().Resources {
    47  		log.Printf("[FINDME] rs TYPE is: %T", rs)
    48  
    49  		if rs.Type != "openstack_lb_monitor_v2" {
    50  			continue
    51  		}
    52  
    53  		log.Printf("[FINDME] rs.Primary.Attributes:  %#v", rs.Primary.Attributes)
    54  		_, err := monitors.Get(networkingClient, rs.Primary.ID).Extract()
    55  		if err == nil {
    56  			return fmt.Errorf("Monitor still exists: %s", rs.Primary.ID)
    57  		}
    58  	}
    59  
    60  	return nil
    61  }
    62  
    63  func testAccCheckLBV2MonitorExists(t *testing.T, n string, monitor *monitors.Monitor) resource.TestCheckFunc {
    64  	return func(s *terraform.State) error {
    65  		rs, ok := s.RootModule().Resources[n]
    66  		if !ok {
    67  			return fmt.Errorf("Not found: %s", n)
    68  		}
    69  
    70  		if rs.Primary.ID == "" {
    71  			return fmt.Errorf("No ID is set")
    72  		}
    73  
    74  		config := testAccProvider.Meta().(*Config)
    75  		networkingClient, err := config.networkingV2Client(OS_REGION_NAME)
    76  		if err != nil {
    77  			return fmt.Errorf("(testAccCheckLBV2MonitorExists) Error creating OpenStack networking client: %s", err)
    78  		}
    79  
    80  		found, err := monitors.Get(networkingClient, rs.Primary.ID).Extract()
    81  		if err != nil {
    82  			return err
    83  		}
    84  
    85  		if found.ID != rs.Primary.ID {
    86  			return fmt.Errorf("Monitor not found")
    87  		}
    88  
    89  		*monitor = *found
    90  
    91  		return nil
    92  	}
    93  }
    94  
    95  var TestAccLBV2MonitorConfig_basic = fmt.Sprintf(`
    96  	resource "openstack_networking_network_v2" "network_1" {
    97  		name = "tf_test_network"
    98  		admin_state_up = "true"
    99  	}
   100  
   101  	resource "openstack_networking_subnet_v2" "subnet_1" {
   102  		network_id = "${openstack_networking_network_v2.network_1.id}"
   103  		cidr = "192.168.199.0/24"
   104  		ip_version = 4
   105  		name = "tf_test_subnet"
   106  	}
   107  
   108  	resource "openstack_lb_loadbalancer_v2" "loadbalancer_1" {
   109  		vip_subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
   110  		name = "tf_test_loadbalancer_v2"
   111  	}
   112  
   113  	resource "openstack_lb_listener_v2" "listener_1" {
   114  		protocol = "HTTP"
   115  		protocol_port = 8080
   116  		loadbalancer_id = "${openstack_lb_loadbalancer_v2.loadbalancer_1.id}"
   117  		name = "tf_test_listener"
   118  	}
   119  
   120  	resource "openstack_lb_pool_v2" "pool_1" {
   121  		protocol = "HTTP"
   122  		lb_method = "ROUND_ROBIN"
   123  		listener_id = "${openstack_lb_listener_v2.listener_1.id}"
   124  		name = "tf_test_pool"
   125  	}
   126  
   127  	resource "openstack_lb_monitor_v2" "monitor_1" {
   128  		pool_id = "${openstack_lb_pool_v2.pool_1.id}"
   129  		type = "PING"
   130  		delay = 20
   131  		timeout = 10
   132  		max_retries = 5
   133  		name = "tf_test_monitor"
   134  	}`)
   135  
   136  var TestAccLBV2MonitorConfig_update = fmt.Sprintf(`
   137  	resource "openstack_networking_network_v2" "network_1" {
   138  		name = "tf_test_network"
   139  		admin_state_up = "true"
   140  	}
   141  
   142  	resource "openstack_networking_subnet_v2" "subnet_1" {
   143  		network_id = "${openstack_networking_network_v2.network_1.id}"
   144  		cidr = "192.168.199.0/24"
   145  		ip_version = 4
   146  		name = "tf_test_subnet"
   147  	}
   148  
   149  	resource "openstack_lb_loadbalancer_v2" "loadbalancer_1" {
   150  		vip_subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
   151  		name = "tf_test_loadbalancer_v2"
   152  	}
   153  
   154  	resource "openstack_lb_listener_v2" "listener_1" {
   155  		protocol = "HTTP"
   156  		protocol_port = 8080
   157  		loadbalancer_id = "${openstack_lb_loadbalancer_v2.loadbalancer_1.id}"
   158  		name = "tf_test_listener"
   159  	}
   160  
   161  	resource "openstack_lb_pool_v2" "pool_1" {
   162  		protocol = "HTTP"
   163  		lb_method = "ROUND_ROBIN"
   164  		listener_id = "${openstack_lb_listener_v2.listener_1.id}"
   165  		name = "tf_test_pool"
   166  	}
   167  
   168  	resource "openstack_lb_monitor_v2" "monitor_1" {
   169  		pool_id = "${openstack_lb_pool_v2.pool_1.id}"
   170  		type = "PING"
   171  		delay = 30
   172  		timeout = 15
   173  		max_retries = 10
   174  		name = "tf_test_monitor_updated"
   175  		admin_state_up = "true"
   176  	}`)