func waitForNetworkDelete(networkingClient *gophercloud.ServiceClient, networkId string) resource.StateRefreshFunc { return func() (interface{}, string, error) { log.Printf("[DEBUG] Attempting to delete OpenStack Network %s.\n", networkId) n, err := networks.Get(networkingClient, networkId).Extract() if err != nil { errCode, ok := err.(*gophercloud.UnexpectedResponseCodeError) if !ok { return n, "ACTIVE", err } if errCode.Actual == 404 { log.Printf("[DEBUG] Successfully deleted OpenStack Network %s", networkId) return n, "DELETED", nil } } err = networks.Delete(networkingClient, networkId).ExtractErr() if err != nil { errCode, ok := err.(*gophercloud.UnexpectedResponseCodeError) if !ok { return n, "ACTIVE", err } if errCode.Actual == 404 { log.Printf("[DEBUG] Successfully deleted OpenStack Network %s", networkId) return n, "DELETED", nil } } log.Printf("[DEBUG] OpenStack Network %s still active.\n", networkId) return n, "ACTIVE", nil } }
func (mapper *NeutronMapper) retrieveAttributes(mac string) Attributes { logging.GetLogger().Debug("Retrieving attributes from Neutron for Mac: %s", mac) attrs := Attributes{} port, err := mapper.retrievePort(mac) if err != nil { return attrs } attrs.TenantID = port.TenantID result := networks.Get(mapper.client, port.NetworkID) network, err := provider.ExtractGet(result) if err != nil { return attrs } if err != nil { return attrs } segID, err := strconv.Atoi(network.SegmentationID) if err == nil { attrs.VNI = uint64(segID) } return attrs }
func testAccCheckNetworkingV2NetworkExists(t *testing.T, n string, network *networks.Network) 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("(testAccCheckNetworkingV2NetworkExists) Error creating OpenStack networking client: %s", err) } found, err := networks.Get(networkingClient, rs.Primary.ID).Extract() if err != nil { return err } if found.ID != rs.Primary.ID { return fmt.Errorf("Network not found") } *network = *found return nil } }
func TestGet(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() th.Mux.HandleFunc("/networks/d32019d3-bc6e-4319-9c1d-6722fc136a22", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusOK) fmt.Fprintf(w, ` { "network": { "admin_state_up": true, "id": "8d05a1b1-297a-46ca-8974-17debf51ca3c", "name": "ext_net", "router:external": true, "shared": false, "status": "ACTIVE", "subnets": [ "2f1fb918-9b0e-4bf9-9a50-6cebbb4db2c5" ], "tenant_id": "5eb8995cf717462c9df8d1edfa498010" } } `) }) res := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") n, err := ExtractGet(res) th.AssertNoErr(t, err) th.AssertEquals(t, true, n.External) }
func TestNetworkCRUDOperations(t *testing.T) { Setup(t) defer Teardown() // Create a network n, err := networks.Create(Client, networks.CreateOpts{Name: "sample_network", AdminStateUp: networks.Up}).Extract() th.AssertNoErr(t, err) defer networks.Delete(Client, n.ID) th.AssertEquals(t, n.Name, "sample_network") th.AssertEquals(t, n.AdminStateUp, true) networkID := n.ID // List networks pager := networks.List(Client, networks.ListOpts{Limit: 2}) err = pager.EachPage(func(page pagination.Page) (bool, error) { t.Logf("--- Page ---") networkList, err := networks.ExtractNetworks(page) th.AssertNoErr(t, err) for _, n := range networkList { t.Logf("Network: ID [%s] Name [%s] Status [%s] Is shared? [%s]", n.ID, n.Name, n.Status, strconv.FormatBool(n.Shared)) } return true, nil }) th.CheckNoErr(t, err) // Get a network if networkID == "" { t.Fatalf("In order to retrieve a network, the NetworkID must be set") } n, err = networks.Get(Client, networkID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "ACTIVE") th.AssertDeepEquals(t, n.Subnets, []string{}) th.AssertEquals(t, n.Name, "sample_network") th.AssertEquals(t, n.AdminStateUp, true) th.AssertEquals(t, n.Shared, false) th.AssertEquals(t, n.ID, networkID) // Update network n, err = networks.Update(Client, networkID, networks.UpdateOpts{Name: "new_network_name"}).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "new_network_name") // Delete network res := networks.Delete(Client, networkID) th.AssertNoErr(t, res.Err) }
func waitForNetworkActive(networkingClient *gophercloud.ServiceClient, networkId string) resource.StateRefreshFunc { return func() (interface{}, string, error) { n, err := networks.Get(networkingClient, networkId).Extract() if err != nil { return nil, "", err } log.Printf("[DEBUG] OpenStack Neutron Network: %+v", n) if n.Status == "DOWN" || n.Status == "ACTIVE" { return n, "ACTIVE", nil } return n, n.Status, nil } }
func (mapper *NeutronMapper) retrieveAttributes(mac string) (*Attributes, error) { logging.GetLogger().Debugf("Retrieving attributes from Neutron for MAC: %s", mac) port, err := mapper.retrievePort(mac) if err != nil { return nil, err } result := networks.Get(mapper.client, port.NetworkID) network, err := provider.ExtractGet(result) if err != nil { return nil, err } return &Attributes{TenantID: port.TenantID, VNI: network.SegmentationID}, nil }
func testAccCheckNetworkingV2NetworkDestroy(s *terraform.State) error { config := testAccProvider.Meta().(*Config) networkingClient, err := config.networkingV2Client(OS_REGION_NAME) if err != nil { return fmt.Errorf("(testAccCheckNetworkingV2NetworkDestroy) Error creating OpenStack networking client: %s", err) } for _, rs := range s.RootModule().Resources { if rs.Type != "openstack_networking_network_v2" { continue } _, err := networks.Get(networkingClient, rs.Primary.ID).Extract() if err == nil { return fmt.Errorf("Network still exists") } } return nil }
func resourceNetworkingNetworkV2Read(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config) networkingClient, err := config.networkingV2Client(d.Get("region").(string)) if err != nil { return fmt.Errorf("Error creating OpenStack networking client: %s", err) } n, err := networks.Get(networkingClient, d.Id()).Extract() if err != nil { return CheckDeleted(d, err, "network") } log.Printf("[DEBUG] Retreived Network %s: %+v", d.Id(), n) d.Set("name", n.Name) d.Set("admin_state_up", strconv.FormatBool(n.AdminStateUp)) d.Set("shared", strconv.FormatBool(n.Shared)) d.Set("tenant_id", n.TenantID) return nil }
func (mapper *NeutronMapper) retrieveAttributes(metadata graph.Metadata) (*Attributes, error) { port, err := mapper.retrievePort(metadata) if err != nil { return nil, err } result := networks.Get(mapper.client, port.NetworkID) network, err := provider.ExtractGet(result) if err != nil { return nil, err } a := &Attributes{ NetworkID: port.NetworkID, NetworkName: network.Name, TenantID: port.TenantID, VNI: network.SegmentationID, } return a, nil }
func TestGet(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() th.Mux.HandleFunc("/v2.0/networks/d32019d3-bc6e-4319-9c1d-6722fc136a22", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "GET") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusOK) fmt.Fprintf(w, ` { "network": { "status": "ACTIVE", "subnets": [ "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" ], "name": "private-network", "provider:physical_network": null, "admin_state_up": true, "tenant_id": "4fd44f30292945e481c7b8a0c8908869", "provider:network_type": "local", "shared": true, "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", "provider:segmentation_id": null } } `) }) res := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") n, err := ExtractGet(res) th.AssertNoErr(t, err) th.AssertEquals(t, "", n.PhysicalNetwork) th.AssertEquals(t, "local", n.NetworkType) th.AssertEquals(t, "", n.SegmentationID) }
// Get retrieves a specific network based on its unique ID. func Get(c *gophercloud.ServiceClient, networkID string) os.GetResult { return os.Get(c, networkID) }