def a_floatingip_to_server(self, server_id, security_group_id=None,
                            action='add', check_accessible=False):
     floatingip = create_floatingip_to_server(
         self.qsvc, server_id,
         security_group_id=security_group_id,
         action=action)
     if check_accessible:
         ip_addr = floatingip['floating_ip_address']
         is_reachable = utils.ipaddr_is_reachable(
             ip_addr, 30, 2)
     else:
         is_reachable = None
     return (floatingip, is_reachable)
def add_floatingip_to_server(cli_mgr, server_id,
                             public_id=None, security_group_id=None,
                             **kwargs):
    public_network_id = public_id or cli_mgr.qsvc('net-external-list')[0]
    action = kwargs.pop('action', 'add')
    check_interval = kwargs.pop('check_interval', None)
    duration = kwargs.pop('check_duration', 30)
    sleep_for = kwargs.pop('sleep_for', 1)
    show_progress = kwargs.pop('show_progress', True)
    floatingip = cli_mgr.qsvc('create-floatingip-for-server',
                              public_network_id['id'], server_id)
    if security_group_id:
        cli_mgr.qsvc('update-port-security-group', floatingip['port_id'],
                     security_group_id, action=action)
    if check_interval:
        server_public_ipaddr = floatingip['floating_ip_address']
        # pause for control-plane to propagate floating-ip to resources
        time.sleep(_g_float(check_interval))
        is_reachable = utils.ipaddr_is_reachable(
            server_public_ipaddr,
            duration, sleep_for, show_progress=show_progress)
    else:
        is_reachable = None
    return (floatingip, is_reachable)