github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/builtin/providers/openstack/resource_openstack_networking_router_interface_v2_test.go (about)

     1  package openstack
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/terraform/helper/resource"
     8  	"github.com/hashicorp/terraform/terraform"
     9  
    10  	"github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/routers"
    11  	"github.com/rackspace/gophercloud/openstack/networking/v2/networks"
    12  	"github.com/rackspace/gophercloud/openstack/networking/v2/ports"
    13  	"github.com/rackspace/gophercloud/openstack/networking/v2/subnets"
    14  )
    15  
    16  func TestAccNetworkingV2RouterInterface_basic_subnet(t *testing.T) {
    17  	var network networks.Network
    18  	var router routers.Router
    19  	var subnet subnets.Subnet
    20  
    21  	resource.Test(t, resource.TestCase{
    22  		PreCheck:     func() { testAccPreCheck(t) },
    23  		Providers:    testAccProviders,
    24  		CheckDestroy: testAccCheckNetworkingV2RouterInterfaceDestroy,
    25  		Steps: []resource.TestStep{
    26  			resource.TestStep{
    27  				Config: testAccNetworkingV2RouterInterface_basic_subnet,
    28  				Check: resource.ComposeTestCheckFunc(
    29  					testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.network_1", &network),
    30  					testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.subnet_1", &subnet),
    31  					testAccCheckNetworkingV2RouterExists(t, "openstack_networking_router_v2.router_1", &router),
    32  					testAccCheckNetworkingV2RouterInterfaceExists(t, "openstack_networking_router_interface_v2.int_1"),
    33  				),
    34  			},
    35  		},
    36  	})
    37  }
    38  
    39  func TestAccNetworkingV2RouterInterface_basic_port(t *testing.T) {
    40  	var network networks.Network
    41  	var port ports.Port
    42  	var router routers.Router
    43  	var subnet subnets.Subnet
    44  
    45  	resource.Test(t, resource.TestCase{
    46  		PreCheck:     func() { testAccPreCheck(t) },
    47  		Providers:    testAccProviders,
    48  		CheckDestroy: testAccCheckNetworkingV2RouterInterfaceDestroy,
    49  		Steps: []resource.TestStep{
    50  			resource.TestStep{
    51  				Config: testAccNetworkingV2RouterInterface_basic_port,
    52  				Check: resource.ComposeTestCheckFunc(
    53  					testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.network_1", &network),
    54  					testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.subnet_1", &subnet),
    55  					testAccCheckNetworkingV2RouterExists(t, "openstack_networking_router_v2.router_1", &router),
    56  					testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.port_1", &port),
    57  					testAccCheckNetworkingV2RouterInterfaceExists(t, "openstack_networking_router_interface_v2.int_1"),
    58  				),
    59  			},
    60  		},
    61  	})
    62  }
    63  
    64  func testAccCheckNetworkingV2RouterInterfaceDestroy(s *terraform.State) error {
    65  	config := testAccProvider.Meta().(*Config)
    66  	networkingClient, err := config.networkingV2Client(OS_REGION_NAME)
    67  	if err != nil {
    68  		return fmt.Errorf("(testAccCheckNetworkingV2RouterInterfaceDestroy) Error creating OpenStack networking client: %s", err)
    69  	}
    70  
    71  	for _, rs := range s.RootModule().Resources {
    72  		if rs.Type != "openstack_networking_router_interface_v2" {
    73  			continue
    74  		}
    75  
    76  		_, err := ports.Get(networkingClient, rs.Primary.ID).Extract()
    77  		if err == nil {
    78  			return fmt.Errorf("Router interface still exists")
    79  		}
    80  	}
    81  
    82  	return nil
    83  }
    84  
    85  func testAccCheckNetworkingV2RouterInterfaceExists(t *testing.T, n string) resource.TestCheckFunc {
    86  	return func(s *terraform.State) error {
    87  		rs, ok := s.RootModule().Resources[n]
    88  		if !ok {
    89  			return fmt.Errorf("Not found: %s", n)
    90  		}
    91  
    92  		if rs.Primary.ID == "" {
    93  			return fmt.Errorf("No ID is set")
    94  		}
    95  
    96  		config := testAccProvider.Meta().(*Config)
    97  		networkingClient, err := config.networkingV2Client(OS_REGION_NAME)
    98  		if err != nil {
    99  			return fmt.Errorf("(testAccCheckNetworkingV2RouterInterfaceExists) Error creating OpenStack networking client: %s", err)
   100  		}
   101  
   102  		found, err := ports.Get(networkingClient, rs.Primary.ID).Extract()
   103  		if err != nil {
   104  			return err
   105  		}
   106  
   107  		if found.ID != rs.Primary.ID {
   108  			return fmt.Errorf("Router interface not found")
   109  		}
   110  
   111  		return nil
   112  	}
   113  }
   114  
   115  var testAccNetworkingV2RouterInterface_basic_subnet = fmt.Sprintf(`
   116  	resource "openstack_networking_router_v2" "router_1" {
   117  		name = "router_1"
   118  		admin_state_up = "true"
   119  	}
   120  
   121  	resource "openstack_networking_router_interface_v2" "int_1" {
   122  			subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
   123  			router_id = "${openstack_networking_router_v2.router_1.id}"
   124  	}
   125  
   126  	resource "openstack_networking_network_v2" "network_1" {
   127  			name = "network_1"
   128  			admin_state_up = "true"
   129  	}
   130  
   131  	resource "openstack_networking_subnet_v2" "subnet_1" {
   132  			network_id = "${openstack_networking_network_v2.network_1.id}"
   133  			cidr = "192.168.199.0/24"
   134  			ip_version = 4
   135  	}`)
   136  
   137  var testAccNetworkingV2RouterInterface_basic_port = fmt.Sprintf(`
   138  	resource "openstack_networking_router_v2" "router_1" {
   139  		name = "router_1"
   140  		admin_state_up = "true"
   141  	}
   142  
   143  	resource "openstack_networking_router_interface_v2" "int_1" {
   144  			router_id = "${openstack_networking_router_v2.router_1.id}"
   145  			port_id = "${openstack_networking_port_v2.port_1.id}"
   146  	}
   147  
   148  	resource "openstack_networking_network_v2" "network_1" {
   149  			name = "network_1"
   150  			admin_state_up = "true"
   151  	}
   152  
   153  	resource "openstack_networking_subnet_v2" "subnet_1" {
   154  			network_id = "${openstack_networking_network_v2.network_1.id}"
   155  			cidr = "192.168.199.0/24"
   156  			ip_version = 4
   157  	}
   158  
   159  	resource "openstack_networking_port_v2" "port_1" {
   160  		name = "port_1"
   161  		network_id = "${openstack_networking_network_v2.network_1.id}"
   162  		admin_state_up = "true"
   163  		fixed_ip {
   164  			subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
   165  			ip_address = "192.168.199.1"
   166  		}
   167  	}`)