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')
    )
from itempest import load_our_solar_system as osn
from itempest.lib import lib_net_aggr as netaggr
from itempest.lib import lib_networks
# create lb network and servers
from itempest.tools import build_lbaas_networks as lb_net
from itempest.tools import build_lbaas_v1 as lbaasv1

username = '******'
password = "******"
test_prefix = 'lb-venus'
venus = osn.utils.get_mimic_manager_cli(osn.os_auth_url, username, password)
lb_core_network = lb_net.setup_lb_network_and_servers(venus, test_prefix)
lb_net.start_webservers(lb_core_network)

netaggr.show_toplogy(venus)
web_servers = [server
               for server_id, server
               in lb_core_network['servers'].items()]
subnet = lb_core_network['subnet']
mem_address_list = [wserv['fip']['fixed_ip_address'] for wserv in web_servers]
port = lb_core_network['port']
security_group_id = lb_core_network['security_group']['id']

# create lbaas load-balancer, listener, pool, monitor, member
lb_v = lbaasv1.create_lbv1(venus, subnet, mem_address_list,
                           prefix=test_prefix,
                           protocol_port=port, ip_version=4)
lb_vip = lb_v['vip']
vip_fip = lbaasv1.assign_floatingip_to_vip(
    venus, lb_vip, security_group_id=security_group_id)
# sshc = lib_networks.create_ssh_client(vip_fip["floating_ip_address”])