diff --git a/scripts/ecmp/ecmp_traffic.py b/scripts/ecmp/ecmp_traffic.py index 4ac9dc469..2cb233485 100644 --- a/scripts/ecmp/ecmp_traffic.py +++ b/scripts/ecmp/ecmp_traffic.py @@ -111,32 +111,22 @@ def verify_flow_records(self, src_vm, src_ip= None, dst_ip= None): dpi2 = unicode(9001) dpi3 = unicode(9002) dpi_list = [dpi1, dpi2, dpi3] + vn_fq_name= src_vm.vn_fq_name + items_list= src_vm.tap_intf[vn_fq_name].items() + for items, values in items_list: + if items == 'flow_key_idx': + nh_id= values + self.logger.debug('Flow Index of the src_vm is %s'%nh_id) inspect_h = self.agent_inspect[src_vm.vm_node_ip] - rev_flow_result = False - for iter in range(25): - self.logger.debug('**** Iteration %s *****' % iter) - flowrecords = [] - flowrecords = inspect_h.get_vna_fetchallflowrecords() - if type(flowrecords) == types.NoneType: - self.logger.debug('No flows on %s.' %src_vm.vm_node_ip) - break - else: - for rec in flowrecords: - if ((rec['dip'] == src_ip) or (rec['sip'] == src_ip))and (rec['protocol'] == '17'): - self.logger.info( - 'Flow between %s and %s exists.' % - (dst_ip, src_ip)) - rev_flow_result = True - break - else: - rev_flow_result = False - if rev_flow_result: - break - else: - iter += 1 - sleep(5) - assert rev_flow_result, 'Flow between %s and %s not seen' % ( - dst_ip, src_ip) + flow_rec = inspect_h.get_vna_fetchflowrecord( + nh= nh_id, sip=src_ip, dip=dst_ip, sport=src_port, dport=dpi1, protocol='17') + + flow_result= True + if flow_rec is None: + flow_result= False + else: + self.logger.info('Flow between %s and %s seen' % (dst_ip, src_ip)) + assert flow_result, 'Flow between %s and %s not seen' % (dst_ip, src_ip) return True # end verify_flow_records diff --git a/scripts/vna_introspect_utils.py b/scripts/vna_introspect_utils.py index 7d7a6af66..71c51f009 100755 --- a/scripts/vna_introspect_utils.py +++ b/scripts/vna_introspect_utils.py @@ -209,12 +209,12 @@ def get_vna_fetchallflowrecords(self): records = EtreeToDict(xpath).get_all_entry(r) return records['flow_list'] - def get_vna_fetchflowrecord(self, vrf=None, sip=None, dip=None, sport=None, dport=None, protocol=None): + def get_vna_fetchflowrecord(self, nh=None, sip=None, dip=None, sport=None, dport=None, protocol=None): '''http://10.204.216.15:8085/Snh_FetchFlowRecord?vrf=1&sip=1.1.1.253&dip=2.1.1.253&src_port=0&dst_port=0&protocol=1 usage:self.records=inspect_h.get_vna_fetchflowrecord(vrf='1',sip='1.1.1.253',dip='2.1.1.253',sport='0',dport='0',protocol='1') return value:[{'vrf': '1'}, {'sip': '1.1.1.253'}, {'dip': '2.1.1.253'}, {'src_port': '0'}, {'dst_port': '0'}, {'protocol': '1'}, {'dest_vrf': '0'}, {'action': '32'}, {'mirror_ip': '0.0.0.0'}, {'mirror_port': '0'}, {'direction': 'ingress'}, {'stats_bytes': '0'}, {'stats_packets': '0'}, {'uuid': 'aa010de9-5eec-48d8-884a-ccbc5de665bb'}, {'nat': 'disabled'}, {'flow_handle': '54518'}, {'interface_idx': '3'}, {'setup_time': '2013-Jun-17 11:28:08.708658'}, {'refcount': '4'}, {'implicit_deny': 'no'}, {'short_flow': 'no'}, {'setup_time_utc': '1371468488708658'}]''' - path = 'Snh_FetchFlowRecord?vrf=' + vrf + '&sip=' + sip + '&dip=' + dip + \ + path = 'Snh_FetchFlowRecord?nh=' + nh + '&sip=' + sip + '&dip=' + dip + \ '&src_port=' + sport + '&dst_port=' + \ dport + '&protocol=' + protocol rec = self.dict_get(path)