def setup_lb_network_and_servers(cmgr, x_name, **kwargs):
    num_servers = kwargs.pop('num_servers', 2)
    username = kwargs.pop('username', 'cirros')
    password = kwargs.pop('password', 'cubswin:)')
    image_id = kwargs.pop('image_id', None)
    image_name = kwargs.pop('image_name', None)
    flavor_id = kwargs.pop('flavor_id', 1)
    extra_timeout = kwargs.pop('server_extra_wait_time', 1)
    halt = kwargs.pop('halt', False)
    my_name = data_utils.rand_name(x_name)
    cidr = kwargs.pop('cidr', '10.199.88.0/24')
    port = kwargs.pop('port', 80)
    public_network_id = kwargs.pop('public_network_id', None)
    # NSX-v plugin need to use exclusive router for its lbaas env
    # Overwrite it if your env requiring a different type
    router_type = kwargs.pop('router_type', 'exclusive')
    router, network, subnet = create_networks(cmgr, my_name, cidr,
                                              router_type=router_type,
                                              **kwargs)
    sg = NET.create_security_group_loginable(cmgr, my_name, http=True)
    lb_env = add_server_to_lb_network(
        cmgr, network.get('id'), sg.get('id'), range(1, 1 + num_servers),
        username=username, password=password,
        flavor_id=flavor_id, image_id=image_id, image_name=image_name,
        public_network_id=public_network_id, extra_timeout=extra_timeout,
        halt=halt)
    lb_env.update(dict(router=router, network=network, subnet=subnet,
                       name=my_name, cidr=cidr, port=port))
    return lb_env
def _setup_lb_network_and_servers(cmgr, x_name, **kwargs):
    num_servers = kwargs.pop('num_servers', 2)
    username = kwargs.pop('username', 'cirros')
    password = kwargs.pop('password', 'cubswin:)')
    image_id = kwargs.pop('image_id', None)
    image_name = kwargs.pop('image_name', None)
    flavor_id = kwargs.pop('flavor_id', 1)
    extra_timeout = kwargs.pop('server_extra_wait_time', 1)
    my_name = data_utils.rand_name(x_name)
    cidr = kwargs.pop('cidr', '10.199.88.0/24')
    port = kwargs.pop('port', 80)
    public_network_id = kwargs.pop('public_network_id', None)
    # NSX-v plugin need to use exclusive router for its lbaas env
    # Overwrite it if your env requiring a different type
    router_type = kwargs.pop('router_type', 'exclusive')
    router, network, subnet = create_networks(cmgr, my_name, cidr,
                                              router_type=router_type,
                                              **kwargs)
    sg = NET.create_security_group_loginable(cmgr, my_name, http=True)
    # ssh keypair
    keypair = make_ssh_keypair(cmgr, my_name)
    kp_filename = keypair_to_tempfile_json(keypair)
    servers = {}
    for sid in range(1, (num_servers + 1)):
        server_name = "%s-%d" % (my_name, sid)
        server = NET.create_server_on_network(
            cmgr, network['id'], security_group_name_or_id=sg['id'],
            key_name=keypair['name'], server_name=server_name,
            image_id=image_id, image_name=image_name,
            flavor_id=flavor_id, wait_on_boot=False)
        servers[server['id']] = dict(server=server, fip=None)

    # servers need in status=ACTIVE before assign floatingip to them
    # vm1 should be active by now
    for server_id in servers.keys():
        waiters.wait_for_server_status(
            cmgr.manager.servers_client, server_id, 'ACTIVE',
            extra_timeout=extra_timeout)

    for server_id, server in servers.items():
        server['fip'] = NET.create_floatingip_for_server(cmgr, server_id,
                                                         public_network_id)
        server['server'] = cmgr.nova('server-show', server_id)
        img_id = server['server']['image']['id']
        img_name = cmgr.nova('image-show', img_id).get('name', '')
        server['image_name'] = img_name

    lb_env = dict(
        name=my_name, username=username, password=password,
        keypair=keypair, kp_filename=kp_filename,
        security_group=sg,
        router=router, port=port, network=network, subnet=subnet,
        servers=servers)
    return lb_env
def setup_mtz_simple(cmgr, x_name, **kwargs):
    x_name = x_name or data_utils.rand_name('mtz-i')
    wait4server_active = kwargs.pop('wait4servers', True)
    tenant_cmgr = kwargs.pop('for_tenant', None)
    if tenant_cmgr:
        # in this condition, cmgr must have admin privilege
        tenant_id = tenant_cmgr.manager.credentials.tenant_id
    else:
        tenant_cmgr = cmgr
        tenant_id = kwargs.pop('tenant_id', None)
        if tenant_id:
            msg = "tenant_id not supported, use for_tenant=tenant_cmgr"
            raise exceptions.NotImplementedError(msg)
    router_type = kwargs.pop('router_type', 'shared')
    scope_id_list = kwargs.pop('scope_id_list', [])
    mtz_ip = netaddr.IPNetwork(kwargs.pop('cidr', '10.199.1.0/24'))
    mask_bits = kwargs.pop('mask_bits', (mtz_ip.prefixlen + 3))
    cidr_list = [x for x in mtz_ip.subnet(mask_bits)]
    net_list = []
    for ix, scope_id in enumerate(scope_id_list):
        subnet_cidr = str(cidr_list[ix])
        name = x_name + ("-%d" % (ix + 1))
        network_subnet = create_mtz_networks(cmgr, scope_id, subnet_cidr,
                                             name=name, tenant_id=tenant_id,
                                             **kwargs)
        net_list.append(network_subnet)
    # server_create does not accept tenant_id, always use tenant_cmgr
    router = NET.create_router_and_add_interfaces(tenant_cmgr,
                                                  x_name + "-router",
                                                  net_list,
                                                  router_type=router_type,
                                                  tenant_id=tenant_id)
    sg = NET.create_security_group_loginable(tenant_cmgr, x_name,
                                             tenant_id=tenant_id)
    security_group_id = sg['id']
    net_id_servers = {}
    for ix, (network, subnet) in enumerate(net_list):
        net_id = network['id']
        vm = NET.create_server_on_network(
            tenant_cmgr, net_id,
            security_group_name_or_id=security_group_id,
            server_name=network['name'])
        net_id_servers[net_id] = dict(server=vm,
                                      network=network, subnet=subnet)
    if wait4server_active:
        try:
            wait_for_servers_active(cmgr, net_id_servers)
        except Exception:
            # if servers failed to be ACTIVE, we want to examine them
            pass
    return (router, net_id_servers, sg)
from itempest.lib import lib_networks as NETS

demo = osn.get_mcli("demo", password="******")
pub = demo.qsvc("net-show public")
mynet = demo.qsvc("net-show private")

fip_list = []
for ix in range(6):
    fip = demo.qsvc("floatingip-create", pub["id"])
    fip_list.append(fip)

from operator import itemgetter

fip2_list = sorted(fip_list, key=itemgetter("floating_ip_address"), reverse=True)

demo_sg = NETS.create_security_group_loginable(demo, "demo_sg_login")
demo_img = demo.nova("image-list", name=u"cirros-0.3.3-x86_64-disk")[0]

server_list = []
for ix in range(6):
    sv_name = "demo-sv-%d" % ix
    server = NETS.create_server_on_network(
        demo, mynet["id"], sv_name, image_id=demo_img["id"], security_group_name_or_id=demo_sg["id"], wait_on_boot=False
    )
    server_list.append(server)

# waitfor all servers become ACTIVE
fip3 = {}
for ix in range(6):
    fip = NETS.associate_floatingip_to_server(demo, fip_list[ix], server_list[ix])
    fip3[fip.get("floating_ip_address")] = fip_list