ODLTools: Misc fixes and additions 02/71602/5
authorVishal Thapar <vthapar@redhat.com>
Tue, 1 May 2018 09:19:51 +0000 (14:49 +0530)
committerSam Hague <shague@redhat.com>
Tue, 1 May 2018 20:47:13 +0000 (20:47 +0000)
1. Add using ifindexes for mapping lport to interface
2. Fix tunnel state always showing none
3. Fix 'show flows elan'
4. Fix dpn to hostname mapping

JIRA: NETVIRT-1232
Change-Id: I9bda2ce3d77c3b011fee8ed308b46957cf199229
Signed-off-by: Vishal Thapar <vthapar@redhat.com>
resources/tools/odltools/odltools/netvirt/analyze.py
resources/tools/odltools/odltools/netvirt/flows.py
resources/tools/odltools/odltools/netvirt/show.py

index ccc3d582ff40d25bdc4d997307a4a6361fe6c595..e814110a50b90be871170a6c9eb4e4716f3b2346 100644 (file)
@@ -19,6 +19,7 @@ def print_keys(ifaces, ifstates):
 
 def by_ifname(args, ifname, ifstates, ifaces):
     itm_state_tunnels_state = itm_state.tunnels_state(Model.OPERATIONAL, args)
+    # itm_state_tunnels_list = itm_state.tunnels_list(Model.CONFIG, args)
     neutron_neutron = neutron.neutron(Model.CONFIG, args)
     ifstate = ifstates.get(ifname)
     iface = ifaces.get(ifname)
@@ -29,9 +30,9 @@ def by_ifname(args, ifname, ifstates, ifaces):
         ports = neutron_neutron.get_ports_by_key()
         port = ports.get(ifname)
     elif iface and iface.get('type') == constants.IFTYPE_TUNNEL:
-        tunnels = itm_state_tunnels_state.get_tunnels_by_key()
-        tunnel = tunnels.get(ifname)
-        tun_states = itm_state_tunnels_state.get_tunnel_states()
+        tunnels = itm_state_tunnels_state.get_tunnels_by_key()
+        tunnel = tunnels.get(ifname)
+        tun_states = itm_state_tunnels_state.get_tunnels_by_key()
         tun_state = tun_states.get(ifname)
     else:
         print "UNSUPPORTED IfType"
index ea6c7d4fe7e9151ef44e9998bd71e0f1e9066f7b..f9d065013d9ee9a75bdf03fc51504f98d201fe8a 100644 (file)
@@ -77,11 +77,11 @@ def get_all_flows(args, modules=None, filter_by=None):
         ifaces = ifaces or config.gmodels.ietf_interfaces_interfaces.get_interfaces_by_key()
         ifindexes = ifindexes or config.gmodels.odl_interface_meta_if_index_interface_map.get_if_index_interfaces_by_key()
         einsts = einsts or config.gmodels.elan_elan_instances.get_elan_instances_by_key()
-        eifaces = eifaces or config.gmodels.elan_elan_interfaces.get_elan_interfaces()
+        eifaces = eifaces or config.gmodels.elan_elan_interfaces.get_elan_interfaces_by_key()
     if 'elan' in modules:
         ifaces = ifaces or config.gmodels.ietf_interfaces_interfaces.get_interfaces_by_key()
         einsts = einsts or config.gmodels.elan_elan_instances.get_elan_instances_by_key()
-        eifaces = eifaces or config.gmodels.elan_elan_interfaces.get_elan_interfaces()
+        eifaces = eifaces or config.gmodels.elan_elan_interfaces.get_elan_interfaces_by_key()
         ifindexes = ifindexes or config.gmodels.odl_interface_meta_if_index_interface_map.get_if_index_interfaces_by_key()
     if 'all' in modules:
         groups = groups or config.gmodels.odl_inventory_nodes_config.get_groups(of_nodes)
@@ -92,7 +92,7 @@ def get_all_flows(args, modules=None, filter_by=None):
         vpnids = vpnids or config.gmodels.odl_l3vpn_vpn_instance_to_vpn_id.get_vpn_ids_by_key()
         vpninterfaces = vpninterfaces or config.gmodels.l3vpn_vpn_interfaces.get_vpn_ids_by_key()
         einsts = einsts or config.gmodels.elan_elan_instances.get_elan_instances_by_key()
-        eifaces = eifaces or config.gmodels.elan_elan_interfaces.get_elan_interfaces()
+        eifaces = eifaces or config.gmodels.elan_elan_interfaces.get_elan_interfaces_by_key()
     flows = []
     for node in of_nodes.itervalues():
         tables = [x for x in node[Nodes.NODE_TABLE] if x['id'] in table_list]
@@ -252,6 +252,7 @@ def get_iface_for_lport(ifaces, ifindexes, lport):
 
 
 def get_eltag_for_iface(eifaces, einsts, iface):
+    print eifaces
     ifname = iface.get('name') if iface else None
     eiface = eifaces.get(ifname) if ifname else None
     einst_name = eiface.get('elan-instance-name') if eiface else None
@@ -281,21 +282,21 @@ def get_stale_flows(modules=['ifm']):
         ifstates = config.gmodels.ietf_interfaces_interfaces_state.get_interfaces_by_key()
     if 'l3vpn' in modules:
         ifaces = ifaces or config.gmodels.ietf_interfaces_interfaces.get_interfaces_by_key()
-        ifindexes = ifindexes or config.gmodels.odl_interface_meta_if_index_interface_map.get_if_index_interfaces_by_key()
+        ifindexes = ifindexes or config.gmodels.odl_interface_meta_if_index_interface_map.get_if_index_interfaces_by_key()
         fibentries = fibentries or config.gmodels.odl_fib_fib_entries.get_vrf_entries_by_key()
         vpnids = vpnids or config.gmodels.odl_l3vpn_vpn_instance_to_vpn_id.get_vpn_instances_by_key()
         vpninterfaces = vpninterfaces or config.gmodels.l3vpn_vpn_interfaces.get_vpn_ids_by_key()
         groups = groups or config.gmodels.odl_inventory_nodes_config.get_groups(of_nodes)
     if 'acl' in modules:
         ifaces = ifaces or config.gmodels.ietf_interfaces_interfaces.get_interfaces_by_key()
-        ifindexes = ifindexes or config.gmodels.odl_interface_meta_if_index_interface_map.get_if_index_interfaces_by_key()
+        ifindexes = ifindexes or config.gmodels.odl_interface_meta_if_index_interface_map.get_if_index_interfaces_by_key()
         einsts = einsts or config.gmodels.elan_elan_instances.get_elan_instances_by_key()
         eifaces = eifaces or config.gmodels.elan_elan_interfaces.get_elan_interfaces_by_key()
     if 'elan' in modules:
         ifaces = ifaces or config.gmodels.ietf_interfaces_interfaces.get_interfaces_by_key()
         einsts = einsts or config.gmodels.elan_elan_instances.get_elan_instances_by_key()
         eifaces = eifaces or config.gmodels.elan_elan_interfaces.get_elan_interfaces_by_key()
-        ifindexes = ifindexes or config.gmodels.odl_interface_meta_if_index_interface_map.get_if_index_interfaces_by_key()
+        ifindexes = ifindexes or config.gmodels.odl_interface_meta_if_index_interface_map.get_if_index_interfaces_by_key()
     stale_flows = []
     for node in of_nodes.itervalues():
         tables = [x for x in node[Nodes.NODE_TABLE] if x['id'] in table_list]
@@ -339,10 +340,11 @@ def show_stale_flows(args, sort_by='table'):
         # "mip_mac",
         "neutron_neutron",
         "odl_fib_fib_entries",
-        "odl_interface_meta_if_index_interface_map",
+        "odl_interface_meta_if_index_interface_map",
         "odl_l3vpn_vpn_instance_to_vpn_id",
-        "odl_inventory_nodes_config"})
-    compute_map = config.gmodels.odl_inventory_nodes_config.get_dpn_host_mapping()
+        "odl_inventory_nodes_config",
+        "odl_inventory_nodes_operational"})
+    compute_map = config.gmodels.odl_inventory_nodes_operational.get_dpn_host_mapping()
     nports = config.gmodels.neutron_neutron.get_ports_by_key()
 
     for flow in utils.sort(get_stale_flows(['ifm', 'acl', 'elan', 'l3vpn']), sort_by):
@@ -360,8 +362,16 @@ def show_stale_flows(args, sort_by='table'):
 
 
 def show_elan_flows(args):
-    compute_map = config.gmodels.odl_inventory_nodes_config.get_dpn_host_mapping()
-    for flow in utils.sort(get_all_flows(['elan']), 'id'):
+    config.get_models(args, {
+        "elan_elan_instances",
+        "elan_elan_interfaces",
+        "ietf_interfaces_interfaces",
+        "ietf_interfaces_interfaces_state",
+        "odl_interface_meta_if_index_interface_map",
+        "odl_inventory_nodes_config",
+        "odl_inventory_nodes_operational"})
+    compute_map = config.gmodels.odl_inventory_nodes_operational.get_dpn_host_mapping()
+    for flow in utils.sort(get_all_flows(args, modules=['elan']), 'id'):
         host = compute_map.get(flow.get('dpnid'), flow.get('dpnid'))
         result = 'MacHost:{}{}, Table:{}, FlowId:{}, {}, Flow:{}'.format(
             flow['id'][-17:], host, flow['table'], flow['id'], utils.show_optionals(flow),
@@ -390,12 +400,13 @@ def show_dup_flows(args):
         "l3vpn_vpn_interfaces",
         # "mip_mac",
         "odl_fib_fib_entries",
-        "odl_interface_meta_if_index_interface_map",
+        "odl_interface_meta_if_index_interface_map",
         "odl_l3vpn_vpn_instance_to_vpn_id",
-        "odl_inventory_nodes_config"})
+        "odl_inventory_nodes_config",
+        "odl_inventory_nodes_operational"})
     mmac = {}  # config.gmodels.mip_mac.get_entries_by_key()
     einsts = config.gmodels.elan_elan_instances.get_elan_instances_by_key()
-    compute_map = config.gmodels.odl_inventory_nodes_config.get_dpn_host_mapping()
+    compute_map = config.gmodels.odl_inventory_nodes_operational.get_dpn_host_mapping()
 
     flows = utils.sort(get_all_flows(['elan']), 'table')
     matches = collections.defaultdict(list)
@@ -432,11 +443,12 @@ def show_learned_mac_flows(args):
         # "mip_mac",
         "neutron_neutron",
         "odl_fib_fib_entries",
-        "odl_interface_meta_if_index_interface_map",
+        "odl_interface_meta_if_index_interface_map",
         "odl_l3vpn_vpn_instance_to_vpn_id",
-        "odl_inventory_nodes_config"})
+        "odl_inventory_nodes_config",
+        "odl_inventory_nodes_operational"})
     nports = config.gmodels.neutron_neutron.get_ports_by_key(key='mac-address')
-    compute_map = config.gmodels.odl_inventory_nodes_config.get_dpn_host_mapping()
+    compute_map = config.gmodels.odl_inventory_nodes_operational.get_dpn_host_mapping()
 
     flows = utils.sort(get_all_flows(['elan']), 'table')
     for flow_info in flows:
@@ -467,7 +479,7 @@ def dump_flows(args, modules=None, sort_by='table', filter_by=None):
     modules = modules if modules else ['ifm']
     filter_by = filter_by if filter_by else []
     # odl_inventory_nodes_config = opendaylight_inventory.nodes(Model.CONFIG, args)
-    compute_map = config.gmodels.odl_inventory_nodes_config.get_dpn_host_mapping()
+    compute_map = config.gmodels.odl_inventory_nodes_operational.get_dpn_host_mapping()
     # neutron_neutron = neutron.neutron(Model.CONFIG, args)
     nports = config.gmodels.neutron_neutron.get_ports_by_key()
     logger.info("dump_flows: %s", args)
@@ -493,9 +505,10 @@ def show_all_flows(args):
         "l3vpn_vpn_interfaces",
         "neutron_neutron",
         "odl_fib_fib_entries",
-        "odl_interface_meta_if_index_interface_map",
+        "odl_interface_meta_if_index_interface_map",
         "odl_l3vpn_vpn_instance_to_vpn_id",
-        "odl_inventory_nodes_config"})
+        "odl_inventory_nodes_config",
+        "odl_inventory_nodes_operational"})
     dump_flows(args, modules=['all'])
 
 
index 6900e37f47e79ebe102b6b5308b561d8a44ac1aa..aa79ee441350057f8b65f10428e415f7e8c79440 100644 (file)
@@ -117,3 +117,5 @@ def show_flows(args):
         flows.show_learned_mac_flows(args)
     if args.flowtype == "stale":
         flows.show_stale_flows(args)
+    if args.flowtype == "elan":
+        flows.show_elan_flows(args)