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