def analyze_neutron_port(args, port, iface, ifstate): for flow in utils.sort(flows.get_all_flows(args, ['all']), 'table'): if ((flow.get('ifname') == port['uuid']) or (flow.get('lport') and ifstate and flow['lport'] == ifstate.get('if-index')) or (iface['name'] == flow.get('ifname'))): result = utils.show_all(flow) print(result) print("Flow: {}".format(utils.format_json(None, flow_parser.parse_flow(flow.get('flow')))))
def analyze_neutron_port(args, port, iface, ifstate): for flow in utils.sort(flows.get_all_flows(args, ['all']), 'table'): if ((flow.get('ifname') == port['uuid']) or (flow.get('lport') and ifstate and flow['lport'] == ifstate.get('if-index')) or (iface['name'] == flow.get('ifname'))): result = 'Table:{},FlowId:{}{}'.format( flow['table'], flow['id'], utils.show_optionals(flow)) print(result) print("Flow: {}".format(utils.format_json(None, flow_parser.parse_flow(flow.get('flow')))))
def analyze_neutron_port(args, port, iface, ifstate): for flow in flows.sort(flows.get_all_flows(args, ['all']), 'table'): if ((flow.pdata.get('ifname') == port['uuid']) or (flow.pdata.get('lport') and ifstate and flow.pdata['lport'] == ifstate.get('if-index')) or (iface['name'] == flow.pdata.get('ifname'))): result = flows.show_all(flow) print(result) print("Flow: {}".format( utils.format_json(None, inv_flow_parser.parse_flow(flow.rdata))))
def analyze_trunks(args): config.get_models( args, { "ietf_interfaces_interfaces", # "ietf_interfaces_interfaces_state", "l3vpn_vpn_interfaces", "neutron_neutron" }) vpninterfaces = config.gmodels.l3vpn_vpn_interfaces.get_clist_by_key() ifaces = config.gmodels.ietf_interfaces_interfaces.get_clist_by_key() # ifstates = config.gmodels.ietf_interfaces_interfaces_state.get_clist_by_key() nports = config.gmodels.neutron_neutron.get_objects_by_key( obj=Neutron.PORTS) ntrunks = config.gmodels.neutron_neutron.get_trunks_by_key() subport_dict = {} for v in ntrunks.values(): nport = nports.get(v.get('port-id')) s_subports = [] for subport in v.get('sub-ports'): sport_id = subport.get('port-id') snport = nports.get(sport_id) svpniface = vpninterfaces.get(sport_id) siface = ifaces.get(sport_id) # sifstate = ifstates.get(sport_id) subport['SubNeutronPort'] = 'Correct' if snport else 'Wrong' subport['SubVpnInterface'] = 'Correct' if svpniface else 'Wrong' subport['ofport'] = Model.get_ofport_from_ncid() if siface: vlan_mode = siface.get('odl-interface:l2vlan-mode') parent_iface_id = siface.get('odl-interface:parent-interface') if vlan_mode != 'trunk-member': subport['SubIface'] = 'WrongMode' elif parent_iface_id != v.get('port-id'): subport['SubIface'] = 'WrongParent' elif siface.get('odl-interface:vlan-id') != subport.get( 'segmentation-id'): subport['SubIface'] = 'WrongVlanId' else: subport['SubIface'] = 'Correct' else: subport['SubIface'] = 'Wrong' # s_subport = 'SegId:{}, PortId:{}, SubNeutronPort:{}, SubIface:{}, SubVpnIface:{}'.format( # subport.get('segmentation-id'), subport.get('port-id'), # subport.get('SubNeutronPort'), # subport.get('SubIface'), # subport.get('SubVpnInterface')) s_subports.append(subport) subport_dict[subport['port-id']] = subport s_trunk = 'TrunkName:{}, TrunkId:{}, PortId:{}, NeutronPort:{}, SubPorts:{}'.format( v.get('name'), v.get('uuid'), v.get('port-id'), 'Correct' if nport else 'Wrong', utils.format_json(args, s_subports)) print(s_trunk) print("\n------------------------------------") print("Analyzing Flow status for SubPorts") print("------------------------------------") for flow in utils.sort( flows.get_all_flows(args, ['ifm'], ['vlanid']), 'ifname'): subport = subport_dict.get(flow.get('ifname')) or None vlanid = subport.get('segmentation-id') if subport else None ofport = subport.get('ofport') if subport else None flow_status = 'Okay' if flow.get('ofport') and flow.get('ofport') != ofport: flow_status = 'OfPort mismatch for SubPort:{} and Flow:{}'.format( subport, flow.get('flow')) if flow.get('vlanid') and flow.get('vlanid') != vlanid: flow_status = 'VlanId mismatch for SubPort:{} and Flow:{}'.format( subport, flow.get('flow')) if subport: print("SubPort:{},Table:{},FlowStatus:{}".format( subport.get('port-id'), flow.get('table'), flow_status))
def analyze_trunks(args): config.get_models(args, { "ietf_interfaces_interfaces", # "ietf_interfaces_interfaces_state", "l3vpn_vpn_interfaces", "neutron_neutron"}) vpninterfaces = config.gmodels.l3vpn_vpn_interfaces.get_clist_by_key() ifaces = config.gmodels.ietf_interfaces_interfaces.get_clist_by_key() # ifstates = config.gmodels.ietf_interfaces_interfaces_state.get_clist_by_key() nports = config.gmodels.neutron_neutron.get_objects_by_key(obj=Neutron.PORTS) ntrunks = config.gmodels.neutron_neutron.get_trunks_by_key() subport_dict = {} for v in ntrunks.values(): nport = nports.get(v.get('port-id')) s_subports = [] for subport in v.get('sub-ports'): sport_id = subport.get('port-id') snport = nports.get(sport_id) svpniface = vpninterfaces.get(sport_id) siface = ifaces.get(sport_id) # sifstate = ifstates.get(sport_id) subport['SubNeutronPort'] = 'Correct' if snport else 'Wrong' subport['SubVpnInterface'] = 'Correct' if svpniface else 'Wrong' subport['ofport'] = Model.get_ofport_from_ncid() if siface: vlan_mode = siface.get('odl-interface:l2vlan-mode') parent_iface_id = siface.get('odl-interface:parent-interface') if vlan_mode != 'trunk-member': subport['SubIface'] = 'WrongMode' elif parent_iface_id != v.get('port-id'): subport['SubIface'] = 'WrongParent' elif siface.get('odl-interface:vlan-id') != subport.get('segmentation-id'): subport['SubIface'] = 'WrongVlanId' else: subport['SubIface'] = 'Correct' else: subport['SubIface'] = 'Wrong' # s_subport = 'SegId:{}, PortId:{}, SubNeutronPort:{}, SubIface:{}, SubVpnIface:{}'.format( # subport.get('segmentation-id'), subport.get('port-id'), # subport.get('SubNeutronPort'), # subport.get('SubIface'), # subport.get('SubVpnInterface')) s_subports.append(subport) subport_dict[subport['port-id']] = subport s_trunk = 'TrunkName:{}, TrunkId:{}, PortId:{}, NeutronPort:{}, SubPorts:{}'.format( v.get('name'), v.get('uuid'), v.get('port-id'), 'Correct' if nport else 'Wrong', utils.format_json(args, s_subports)) print(s_trunk) print("\n------------------------------------") print("Analyzing Flow status for SubPorts") print("------------------------------------") for flow in utils.sort(flows.get_all_flows(args, ['ifm'], ['vlanid']), 'ifname'): subport = subport_dict.get(flow.get('ifname')) or None vlanid = subport.get('segmentation-id') if subport else None ofport = subport.get('ofport') if subport else None flow_status = 'Okay' if flow.get('ofport') and flow.get('ofport') != ofport: flow_status = 'OfPort mismatch for SubPort:{} and Flow:{}'.format(subport, flow.get('flow')) if flow.get('vlanid') and flow.get('vlanid') != vlanid: flow_status = 'VlanId mismatch for SubPort:{} and Flow:{}'.format(subport, flow.get('flow')) if subport: print("SubPort:{},Table:{},FlowStatus:{}".format( subport.get('port-id'), flow.get('table'), flow_status))