Files
opentf/builtin/providers/openstack/resource_openstack_lb_member_v2_test.go
Joe Topjian f563b24002 provider/openstack: lbaas v2 updates
This commit cleans up the acceptance test formatting for the lbaas v2
resources. It also modifies the devstack script to enable the lbaas
v2 service for testing. Finally, this commit increases the timeout
for load balancer creation since it takes some time to do within
devstack.
2016-06-11 04:20:44 +00:00

172 lines
4.7 KiB
Go

package openstack
import (
"fmt"
"log"
"testing"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
"github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools"
)
func TestAccLBV2Member_basic(t *testing.T) {
var member pools.Member
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckLBV2MemberDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: TestAccLBV2MemberConfig_basic,
Check: resource.ComposeTestCheckFunc(
testAccCheckLBV2MemberExists(t, "openstack_lb_member_v2.member_1", &member),
),
},
resource.TestStep{
Config: TestAccLBV2MemberConfig_update,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("openstack_lb_member_v2.member_1", "weight", "10"),
),
},
},
})
}
func testAccCheckLBV2MemberDestroy(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
networkingClient, err := config.networkingV2Client(OS_REGION_NAME)
if err != nil {
return fmt.Errorf("(testAccCheckLBV2MemberDestroy) Error creating OpenStack networking client: %s", err)
}
for _, rs := range s.RootModule().Resources {
log.Printf("[FINDME] rs TYPE is: %T", rs)
if rs.Type != "openstack_lb_member_v2" {
continue
}
log.Printf("[FINDME] rs.Primary.Attributes: %#v", rs.Primary.Attributes)
_, err := pools.GetAssociateMember(networkingClient, rs.Primary.Attributes["pool_id"], rs.Primary.ID).ExtractMember()
if err == nil {
return fmt.Errorf("Member still exists: %s", rs.Primary.ID)
}
}
return nil
}
func testAccCheckLBV2MemberExists(t *testing.T, n string, member *pools.Member) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
if !ok {
return fmt.Errorf("Not found: %s", n)
}
if rs.Primary.ID == "" {
return fmt.Errorf("No ID is set")
}
config := testAccProvider.Meta().(*Config)
networkingClient, err := config.networkingV2Client(OS_REGION_NAME)
if err != nil {
return fmt.Errorf("(testAccCheckLBV2MemberExists) Error creating OpenStack networking client: %s", err)
}
found, err := pools.GetAssociateMember(networkingClient, rs.Primary.Attributes["pool_id"], rs.Primary.ID).ExtractMember()
if err != nil {
return err
}
if found.ID != rs.Primary.ID {
return fmt.Errorf("Member not found")
}
*member = *found
return nil
}
}
var TestAccLBV2MemberConfig_basic = fmt.Sprintf(`
resource "openstack_networking_network_v2" "network_1" {
name = "tf_test_network"
admin_state_up = "true"
}
resource "openstack_networking_subnet_v2" "subnet_1" {
network_id = "${openstack_networking_network_v2.network_1.id}"
cidr = "192.168.199.0/24"
ip_version = 4
name = "tf_test_subnet"
}
resource "openstack_lb_loadbalancer_v2" "loadbalancer_1" {
vip_subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
name = "tf_test_loadbalancer_v2"
}
resource "openstack_lb_listener_v2" "listener_1" {
protocol = "HTTP"
protocol_port = 8080
loadbalancer_id = "${openstack_lb_loadbalancer_v2.loadbalancer_1.id}"
name = "tf_test_listener"
}
resource "openstack_lb_pool_v2" "pool_1" {
protocol = "HTTP"
lb_method = "ROUND_ROBIN"
listener_id = "${openstack_lb_listener_v2.listener_1.id}"
name = "tf_test_pool"
}
resource "openstack_lb_member_v2" "member_1" {
address = "192.168.199.10"
pool_id = "${openstack_lb_pool_v2.pool_1.id}"
protocol_port = 8080
subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
}`)
var TestAccLBV2MemberConfig_update = fmt.Sprintf(`
resource "openstack_networking_network_v2" "network_1" {
name = "tf_test_network"
admin_state_up = "true"
}
resource "openstack_networking_subnet_v2" "subnet_1" {
network_id = "${openstack_networking_network_v2.network_1.id}"
cidr = "192.168.199.0/24"
ip_version = 4
name = "tf_test_subnet"
}
resource "openstack_lb_loadbalancer_v2" "loadbalancer_1" {
vip_subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
name = "tf_test_loadbalancer_v2"
}
resource "openstack_lb_listener_v2" "listener_1" {
protocol = "HTTP"
protocol_port = 8080
loadbalancer_id = "${openstack_lb_loadbalancer_v2.loadbalancer_1.id}"
name = "tf_test_listener"
}
resource "openstack_lb_pool_v2" "pool_1" {
protocol = "HTTP"
lb_method = "ROUND_ROBIN"
listener_id = "${openstack_lb_listener_v2.listener_1.id}"
name = "tf_test_pool"
}
resource "openstack_lb_member_v2" "member_1" {
address = "192.168.199.10"
pool_id = "${openstack_lb_pool_v2.pool_1.id}"
protocol_port = 8080
subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
weight = 10
admin_state_up = "true"
}`)