Merge pull request #6579 from Fodoj/reassociate-fip-on-update

provider/openstack: Reassociate FIP on network changes
This commit is contained in:
Joe Topjian 2016-05-14 21:55:16 -05:00
commit f69d95d01f
1 changed files with 4 additions and 1 deletions

View File

@ -678,12 +678,14 @@ func resourceComputeInstanceV2Update(d *schema.ResourceData, meta interface{}) e
} }
// Only changes to the floating IP are supported // Only changes to the floating IP are supported
if oldFIP != "" && newFIP != "" && oldFIP != newFIP { if oldFIP != "" && oldFIP != newFIP {
log.Printf("[DEBUG] Attempting to disassociate %s from %s", oldFIP, d.Id()) log.Printf("[DEBUG] Attempting to disassociate %s from %s", oldFIP, d.Id())
if err := disassociateFloatingIPFromInstance(computeClient, oldFIP, d.Id(), oldFixedIP); err != nil { if err := disassociateFloatingIPFromInstance(computeClient, oldFIP, d.Id(), oldFixedIP); err != nil {
return fmt.Errorf("Error disassociating Floating IP during update: %s", err) return fmt.Errorf("Error disassociating Floating IP during update: %s", err)
} }
}
if newFIP != "" && oldFIP != newFIP {
log.Printf("[DEBUG] Attempting to associate %s to %s", newFIP, d.Id()) log.Printf("[DEBUG] Attempting to associate %s to %s", newFIP, d.Id())
if err := associateFloatingIPToInstance(computeClient, newFIP, d.Id(), newFixedIP); err != nil { if err := associateFloatingIPToInstance(computeClient, newFIP, d.Id(), newFixedIP); err != nil {
return fmt.Errorf("Error associating Floating IP during update: %s", err) return fmt.Errorf("Error associating Floating IP during update: %s", err)
@ -856,6 +858,7 @@ func resourceInstanceSecGroupsV2(d *schema.ResourceData) []string {
// and aggregates it all together. // and aggregates it all together.
func getInstanceNetworksAndAddresses(computeClient *gophercloud.ServiceClient, d *schema.ResourceData) ([]map[string]interface{}, error) { func getInstanceNetworksAndAddresses(computeClient *gophercloud.ServiceClient, d *schema.ResourceData) ([]map[string]interface{}, error) {
server, err := servers.Get(computeClient, d.Id()).Extract() server, err := servers.Get(computeClient, d.Id()).Extract()
if err != nil { if err != nil {
return nil, CheckDeleted(d, err, "server") return nil, CheckDeleted(d, err, "server")
} }