Merge pull request #2448 from hashicorp/b-openstack-networks

providers/openstack: fix crash case if network is nil [GH-2323]
This commit is contained in:
Mitchell Hashimoto 2015-06-24 10:38:27 -07:00
commit 9fc78d4ea1
1 changed files with 11 additions and 6 deletions

View File

@ -764,13 +764,19 @@ func resourceInstanceSecGroupsV2(d *schema.ResourceData) []string {
func resourceInstanceNetworks(computeClient *gophercloud.ServiceClient, d *schema.ResourceData) ([]map[string]interface{}, error) { func resourceInstanceNetworks(computeClient *gophercloud.ServiceClient, d *schema.ResourceData) ([]map[string]interface{}, error) {
rawNetworks := d.Get("network").([]interface{}) rawNetworks := d.Get("network").([]interface{})
newNetworks := make([]map[string]interface{}, len(rawNetworks)) newNetworks := make([]map[string]interface{}, 0, len(rawNetworks))
var tenantnet tenantnetworks.Network var tenantnet tenantnetworks.Network
tenantNetworkExt := true tenantNetworkExt := true
for i, raw := range rawNetworks { for _, raw := range rawNetworks {
rawMap := raw.(map[string]interface{}) // 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() allPages, err := tenantnetworks.List(computeClient).AllPages()
if err != nil { if err != nil {
errCode, ok := err.(*gophercloud.UnexpectedResponseCodeError) errCode, ok := err.(*gophercloud.UnexpectedResponseCodeError)
@ -809,16 +815,15 @@ func resourceInstanceNetworks(computeClient *gophercloud.ServiceClient, d *schem
networkName = rawMap["name"].(string) networkName = rawMap["name"].(string)
} }
newNetworks[i] = map[string]interface{}{ newNetworks = append(newNetworks, map[string]interface{}{
"uuid": networkID, "uuid": networkID,
"name": networkName, "name": networkName,
"port": rawMap["port"].(string), "port": rawMap["port"].(string),
"fixed_ip_v4": rawMap["fixed_ip_v4"].(string), "fixed_ip_v4": rawMap["fixed_ip_v4"].(string),
} })
} }
log.Printf("[DEBUG] networks: %+v", newNetworks) log.Printf("[DEBUG] networks: %+v", newNetworks)
return newNetworks, nil return newNetworks, nil
} }