def test_lbaas_l7switching(cmgr, lb_name, image_name=None, platform='os',
                           **kwargs):
    lb_name = lb_name or 'cmgr-lb2-http'
    build_cfg = dict(groupid=1, group_num_sever=2, num_servers=4)
    build_cfg.update(**kwargs)
    if platform == 'nsx':
        image_name = image_name or u'cirros-0.3.3-x86_64-disk'
        lb2_config = lbaas2.build_nsx_lbaas(
            cmgr, lb_name, image_name=image_name, **build_cfg)
    else:
        image_name = image_name or "cirros-0.3.3-x86_64-ESX"
        lb2_config = lbaas2.build_os_lbaas(
            cmgr, lb_name, image_name=image_name, **build_cfg)
    keypair = lb2_config['network']['keypair']
    security_group_id = lb2_config['network']['security_group'].get('id')
    http_server_id_list = lb2_config.get('group_server_id_list')
    l7_server_id_list = lb2_config.get('other_server_id_list')
    http_server_name_list = lb2_config.get('group_server_name_list')
    l7_server_name_list = lb2_config.get('other_server_name_list')

    netaggr.show_toplogy(cmgr)
    lbaas2.show_lbaas_tree(cmgr, lb_name)
    cmgr.lbaas('loadbalancer-status', lb_name)
    vip_public_ip = lbaas2.get_loadbalancer_floatingip(
        cmgr, lb_name)[1][u'floating_ip_address']

    lb = cmgr.lbaas('loadbalancer-show', lb_name)
    lb_id = lb.get('id')
    vip_subnet_id = lb.get('vip_subnet_id')
    redirect_to_listener_id = lb.get('listeners')[0].get('id')

    l7_cfg = ll7.build_l7_switching(
        cmgr, vip_subnet_id, lb_id,
        redirect_to_listener_id, l7_server_id_list)

    # every server return its server-name upon http request
    ll7.run_l7_switching(http_server_name_list, vip_public_ip, '')
    ll7.run_l7_switching(http_server_name_list, vip_public_ip, 'v2/api')
    # wait little bit before l7 switching kicked in?
    time.sleep(5.0)
    ll7.run_l7_switching(l7_server_name_list, vip_public_ip, 'api')
    ll7.run_l7_switching(l7_server_name_list, vip_public_ip, 'api/firewalls')

    return dict(
        name=lb_name, image_name=image_name, keypair=keypair,
        vip_public_ip=vip_public_ip,
        subnet_id=vip_subnet_id,
        security_group_id=security_group_id,
        http_server_id_list=http_server_id_list,
        http_server_name_list=http_server_name_list,
        l7_server_id_list=l7_server_id_list,
        l7_server_name_list=l7_server_name_list,
        l7_pool=l7_cfg.get('pool')
    )
            if sp_idx < 0:
                cmd_kwargs[xarg] = True
            else:
                k = xarg[:sp_idx]
                v = xarg[sp_idx + 1:]
                cmd_kwargs[k] = v
        return cmd_kwargs
    except:
        return {}


target = get_my_commands()
if 'halt' in target:
    import pdb;

    pdb.set_trace()

if 'project' in target:
    project_name = target.get('project')
    password = target.get('password', osn.os_password)
    project_cmgr = osn.get_mcli(project_name, password=password)
    from itempest.tools import build_lbaas_v2 as lbaasv2

    for mtype in ('HTTP', 'TCP', 'PING'):
        lb_name = "%s-lb2-%s" % (project_name.lower(), mtype)
        lbaasv2.build_os_lbaas(project_cmgr, lb_name,
                               monitor_type=mtype)
else:
    raise Exception(
        "project is required to launch create its lbaas environment.")