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.")