github.com/gabrielperezs/terraform@v0.7.0-rc2.0.20160715084931-f7da2612946f/builtin/providers/openstack/resource_openstack_networking_port_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/networks"
    11  	"github.com/rackspace/gophercloud/openstack/networking/v2/ports"
    12  	"github.com/rackspace/gophercloud/openstack/networking/v2/subnets"
    13  )
    14  
    15  func TestAccNetworkingV2Port_basic(t *testing.T) {
    16  	var network networks.Network
    17  	var port ports.Port
    18  	var subnet subnets.Subnet
    19  
    20  	resource.Test(t, resource.TestCase{
    21  		PreCheck:     func() { testAccPreCheck(t) },
    22  		Providers:    testAccProviders,
    23  		CheckDestroy: testAccCheckNetworkingV2PortDestroy,
    24  		Steps: []resource.TestStep{
    25  			resource.TestStep{
    26  				Config: testAccNetworkingV2Port_basic,
    27  				Check: resource.ComposeTestCheckFunc(
    28  					testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.foo", &subnet),
    29  					testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.foo", &network),
    30  					testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.foo", &port),
    31  				),
    32  			},
    33  		},
    34  	})
    35  }
    36  
    37  func TestAccNetworkingV2Port_noip(t *testing.T) {
    38  	var network networks.Network
    39  	var port ports.Port
    40  	var subnet subnets.Subnet
    41  
    42  	resource.Test(t, resource.TestCase{
    43  		PreCheck:     func() { testAccPreCheck(t) },
    44  		Providers:    testAccProviders,
    45  		CheckDestroy: testAccCheckNetworkingV2PortDestroy,
    46  		Steps: []resource.TestStep{
    47  			resource.TestStep{
    48  				Config: testAccNetworkingV2Port_noip,
    49  				Check: resource.ComposeTestCheckFunc(
    50  					testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.foo", &subnet),
    51  					testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.foo", &network),
    52  					testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.foo", &port),
    53  				),
    54  			},
    55  		},
    56  	})
    57  }
    58  
    59  func testAccCheckNetworkingV2PortDestroy(s *terraform.State) error {
    60  	config := testAccProvider.Meta().(*Config)
    61  	networkingClient, err := config.networkingV2Client(OS_REGION_NAME)
    62  	if err != nil {
    63  		return fmt.Errorf("(testAccCheckNetworkingV2PortDestroy) Error creating OpenStack networking client: %s", err)
    64  	}
    65  
    66  	for _, rs := range s.RootModule().Resources {
    67  		if rs.Type != "openstack_networking_port_v2" {
    68  			continue
    69  		}
    70  
    71  		_, err := ports.Get(networkingClient, rs.Primary.ID).Extract()
    72  		if err == nil {
    73  			return fmt.Errorf("Port still exists")
    74  		}
    75  	}
    76  
    77  	return nil
    78  }
    79  
    80  func testAccCheckNetworkingV2PortExists(t *testing.T, n string, port *ports.Port) resource.TestCheckFunc {
    81  	return func(s *terraform.State) error {
    82  		rs, ok := s.RootModule().Resources[n]
    83  		if !ok {
    84  			return fmt.Errorf("Not found: %s", n)
    85  		}
    86  
    87  		if rs.Primary.ID == "" {
    88  			return fmt.Errorf("No ID is set")
    89  		}
    90  
    91  		config := testAccProvider.Meta().(*Config)
    92  		networkingClient, err := config.networkingV2Client(OS_REGION_NAME)
    93  		if err != nil {
    94  			return fmt.Errorf("(testAccCheckNetworkingV2PortExists) Error creating OpenStack networking client: %s", err)
    95  		}
    96  
    97  		found, err := ports.Get(networkingClient, rs.Primary.ID).Extract()
    98  		if err != nil {
    99  			return err
   100  		}
   101  
   102  		if found.ID != rs.Primary.ID {
   103  			return fmt.Errorf("Port not found")
   104  		}
   105  
   106  		*port = *found
   107  
   108  		return nil
   109  	}
   110  }
   111  
   112  var testAccNetworkingV2Port_basic = fmt.Sprintf(`
   113  		resource "openstack_networking_network_v2" "foo" {
   114  			name = "network_1"
   115  			admin_state_up = "true"
   116  		}
   117  
   118  		resource "openstack_networking_subnet_v2" "foo" {
   119  			name = "subnet_1"
   120  			network_id = "${openstack_networking_network_v2.foo.id}"
   121  			cidr = "192.168.199.0/24"
   122  			ip_version = 4
   123  		}
   124  
   125  		resource "openstack_networking_port_v2" "foo" {
   126  			name = "port_1"
   127  			network_id = "${openstack_networking_network_v2.foo.id}"
   128  			admin_state_up = "true"
   129  			fixed_ip {
   130  				subnet_id =  "${openstack_networking_subnet_v2.foo.id}"
   131  				ip_address = "192.168.199.23"
   132  			}
   133  		}`)
   134  
   135  var testAccNetworkingV2Port_noip = fmt.Sprintf(`
   136  		resource "openstack_networking_network_v2" "foo" {
   137  			name = "network_1"
   138  			admin_state_up = "true"
   139  		}
   140  		resource "openstack_networking_subnet_v2" "foo" {
   141  			name = "subnet_1"
   142  			network_id = "${openstack_networking_network_v2.foo.id}"
   143  			cidr = "192.168.199.0/24"
   144  			ip_version = 4
   145  		}
   146  		resource "openstack_networking_port_v2" "foo" {
   147  			name = "port_1"
   148  			network_id = "${openstack_networking_network_v2.foo.id}"
   149  			admin_state_up = "true"
   150  			fixed_ip {
   151  				subnet_id =  "${openstack_networking_subnet_v2.foo.id}"
   152  			}
   153  		}`)