Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 15 additions & 25 deletions scripts/ecmp/ecmp_traffic.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions scripts/vna_introspect_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down