func TestList(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleListSuccessfully(t) count := 0 err := tenantnetworks.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { count++ actual, err := tenantnetworks.ExtractNetworks(page) th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedNetworkSlice, actual) return true, nil }) th.AssertNoErr(t, err) th.CheckEquals(t, 1, count) }
// GetNetworkIDFromTenantNetworks will return the network UUID for a given // network name using the os-tenant-networks API extension. An error will be // returned if the network could not be retrieved. func GetNetworkIDFromTenantNetworks(t *testing.T, client *gophercloud.ServiceClient, networkName string) (string, error) { allPages, err := tenantnetworks.List(client).AllPages() if err != nil { return "", err } allTenantNetworks, err := tenantnetworks.ExtractNetworks(allPages) if err != nil { return "", err } for _, network := range allTenantNetworks { if network.Name == networkName { return network.ID, nil } } return "", fmt.Errorf("Failed to obtain network ID for network %s", networkName) }
func TestTenantNetworksList(t *testing.T) { client, err := clients.NewComputeV2Client() if err != nil { t.Fatalf("Unable to create a compute client: %v", err) } allPages, err := tenantnetworks.List(client).AllPages() if err != nil { t.Fatalf("Unable to list networks: %v", err) } allTenantNetworks, err := tenantnetworks.ExtractNetworks(allPages) if err != nil { t.Fatalf("Unable to list networks: %v", err) } for _, network := range allTenantNetworks { PrintTenantNetwork(t, &network) } }
func getInstanceNetworks(computeClient *gophercloud.ServiceClient, d *schema.ResourceData) ([]map[string]interface{}, error) { rawNetworks := d.Get("network").([]interface{}) newNetworks := make([]map[string]interface{}, 0, len(rawNetworks)) var tenantnet tenantnetworks.Network tenantNetworkExt := true for _, raw := range rawNetworks { // Not sure what causes this, but it is a possibility (see GH-2323). // Since we call this function to reconcile what we'll save in the // state anyways, we just ignore it. if raw == nil { continue } rawMap := raw.(map[string]interface{}) allPages, err := tenantnetworks.List(computeClient).AllPages() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { log.Printf("[DEBUG] os-tenant-networks disabled") tenantNetworkExt = false } log.Printf("[DEBUG] Err looks like: %+v", err) if errCode, ok := err.(gophercloud.ErrUnexpectedResponseCode); ok { if errCode.Actual == 403 { log.Printf("[DEBUG] os-tenant-networks disabled.") tenantNetworkExt = false } else { return nil, err } } } networkID := "" networkName := "" if tenantNetworkExt { networkList, err := tenantnetworks.ExtractNetworks(allPages) if err != nil { return nil, err } for _, network := range networkList { if network.Name == rawMap["name"] { tenantnet = network } if network.ID == rawMap["uuid"] { tenantnet = network } } networkID = tenantnet.ID networkName = tenantnet.Name } else { networkID = rawMap["uuid"].(string) networkName = rawMap["name"].(string) } newNetworks = append(newNetworks, map[string]interface{}{ "uuid": networkID, "name": networkName, "port": rawMap["port"].(string), "fixed_ip_v4": rawMap["fixed_ip_v4"].(string), "access_network": rawMap["access_network"].(bool), }) } log.Printf("[DEBUG] networks: %+v", newNetworks) return newNetworks, nil }