'Removes (deallocates) and deletes the floating IP.
This api call was added to allow this to be done in one operation
if using neutron.'

def disassociate_and_release_floating_ip(self, context, instance, floating_ip):

    address = floating_ip['address']
    if floating_ip.get('fixed_ip_id'):
        try:
            self.disassociate_floating_ip(context, instance, address)
        except exception.FloatingIpNotAssociated:
            msg = ('Floating    IP    %s    has    already    been    disassociated,    perhaps    by    another    concurrent    action.' % address)
            LOG.debug(msg)
    return self.release_floating_ip(context, address)
