Exemple #1
0
def _get_pool_from_vs(vs_obj, **kwargs):
    """
    Check if there is a poolgroup on this VS, if so get pool from the poolgroup
    For containers, poolgroup will be there by default
    :param vs_obj:
    :param kwargs:
    :return:
    """

    pool_ref = vs_obj.get('pool_ref', None)
    if pool_ref:
        return pool_ref

    pg_ref = vs_obj.get('pool_group_ref', None)
    if not pg_ref:
        logger.info("Didnot find pool or poolgroup on this VS, very strange!!")
        return None

    pg_uuid = rest.get_uuid_from_ref(pg_ref)
    _, pg_obj = rest.get('poolgroup', uuid=pg_uuid)
    # Pick first member (there will most likely be only one member)
    pg_mem = pg_obj['members'][0]
    pool_ref = pg_mem.get('pool_ref', None)
    if not pool_ref:
        logger.info("Could not find pool on the VS or on the poolgroup "
                    "associated with the VS")
        logger.info("vs %s: %s\n; poolgroup %s: %s" %
                    (vs_obj['name'], vs_obj, pg_uuid, pg_obj))
        return None
    return pool_ref
Exemple #2
0
    def test_get_obj_api(self, obj_type, obj_name):
        '''
            Test get_obj_ref, get_uuid_from_ref, get_name_from_ref, get_uuid_by_name, get_name_by_uuid
        '''
        obj_url = rest.get_obj_ref(obj_type, obj_name)
        uuid_from_url = rest.get_uuid_from_ref(obj_url)
        name_from_url = rest.get_name_from_ref(obj_url)
        name_from_url_uuid = rest.get_name_by_uuid(obj_type, uuid_from_url)
        assert name_from_url == name_from_url_uuid == obj_name

        uuid_from_name_1 = rest.get_uuid_by_name(obj_type, name_from_url)
        uuid_from_name_2 = rest.get_uuid_by_name(obj_type, name_from_url_uuid)
        assert uuid_from_name_1 == uuid_from_url == uuid_from_name_2
Exemple #3
0
def placement_get_vs_primary_se_uuid(vs_name):
    """

    :param vs_name:
    :return:
    """

    con = placement_get_vs_by_name(vs_name)
    if con.get('resources_consumed'):
        for res in con['resources_consumed']:
            if res['is_primary'] is True:
                return rest.get_uuid_from_ref(res['res_ref'])
    return None
Exemple #4
0
def get_vs_default_pool_name(vs_name, **kwargs):
    """

    :param vs_name:
    :param kwargs:
    :return:
    """

    _, vs_obj = rest.get('virtualservice', name=vs_name)
    pool_ref = pool_lib._get_pool_from_vs(vs_obj, **kwargs)
    pool_uuid = rest.get_uuid_from_ref(pool_ref)
    _, pool_obj = rest.get('pool', uuid=pool_uuid)
    pool_name = pool_obj['name']
    return pool_name
Exemple #5
0
def placement_get_vs_se_list(vs_name, **kwargs):
    """

    :param vs_name:
    :param kwargs:
    :return:
    """
    con = placement_get_vs_by_name(vs_name)
    se_list = []
    if con.get('resources_consumed'):
        for res in con['resources_consumed']:
            if kwargs.get('primary') and not res.get('is_primary'):
                continue
            if kwargs.get('standby') and not res.get('is_stby'):
                continue
            if kwargs.get('secondary') and res.get('is_primary'):
                continue
            if kwargs.get('secondary') and res.get('is_stby'):
                continue
            se_list.append(rest.get_uuid_from_ref(res['res_ref']))
    return se_list
Exemple #6
0
def get_all_pool_stats(pool_name):
    """

    :param pool_name:
    :return:
    """
    pool_stats = []
    logger.info('get all pool stats for pool: %s' % pool_name)
    logger.info('delete servers from pool %s' % pool_name)
    status_code, json_pool_data = rest.get('pool', name=pool_name)

    # getting all the healthmonitor stats
    hm_list = json_pool_data.get('health_monitor_refs')
    hm_stat_list = list()
    for hm_ref in hm_list:
        hm_uuid = rest.get_uuid_from_ref(hm_ref)
        _, hm_stat = rest.get('healthmonitor', uuid=hm_uuid)
        hm_stat_list.append(hm_stat)

    pool_stats.append(
        {'servers': [server for server in json_pool_data.get('servers')]})
    pool_stats.append({'healthmonitors': hm_stat_list})
    return pool_stats
def validate_se_static_ips_on_network(nw_name):
    """

    :param nw_name:
    :return:
    """
    retry = 6
    _, json_data = rest.get('networkruntime', name=nw_name)
    json_data = json_data['results'][0] if json_data.get('results',
                                                         None) else json_data
    for val in json_data['subnet_runtime'][0]['ip_alloced']:
        mac_found = False
        ip_found = False
        se_ref = val['se_ref']
        se_uuid = rest.get_uuid_from_ref(se_ref)
        mac = val['mac']
        while retry > 0:
            logger_utils.asleep(delay=10)
            _, se_json = rest.get('serviceengine', uuid=se_uuid)
            for data_vnic in se_json.get('data_vnics', []):
                if data_vnic['mac_address'] == mac:
                    mac_found = True
                    for vnic_network in data_vnic.get('vnic_networks', []):
                        if (vnic_network['mode'] == 'STATIC'
                                and vnic_network['ip']['ip_addr']['addr']
                                == val['ip']['addr']):
                            ip_found = True
            retry -= 1
            if mac_found and ip_found:
                break
        if not mac_found:
            logger_utils.fail('Mac address %s not found on SE %s' %
                              (mac, se_uuid))
        if not ip_found:
            logger_utils.fail('IP %s not found on mac address %s on SE %s' %
                              (val['ip']['addr'], mac, se_uuid))