def handle(self, request, data):
        try:
            fip = api.tenant_floating_ip_get(request, data['floating_ip_id'])
            api.server_remove_floating_ip(request, fip.instance_id, fip.id)

            LOG.info('Disassociating Floating IP "%s"'
                      % data['floating_ip_id'])

            messages.info(request, 'Successfully disassociated Floating IP: %s'
                                    % data['floating_ip_id'])
        except novaclient_exceptions.ClientException, e:
            LOG.error("ClientException in FloatingIpAssociate", exc_info=True)
            messages.error(request, 'Error disassociating Floating IP: %s'
                                     % e.message)
def associate(request, tenant_id, ip_id):
    instancelist = [(server.id, 'id: %s, name: %s' %
            (server.id, server.name))
            for server in api.server_list(request)]

    form, handled = FloatingIpAssociate().maybe_handle(request, initial={
                'floating_ip_id': ip_id,
                'floating_ip': api.tenant_floating_ip_get(request, ip_id).ip,
                'instances': instancelist})
    if handled:
        return handled

    return shortcuts.render_to_response(topbar + '/floating_ip_associate.html', {
        'associate_form': form,
    }, context_instance=template.RequestContext(request))