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 }`)