def ifacelist(self): """ :return: hash of interface categories. each category containing a list of \ iface pointers to interfaces that belong in that category. For example ifacelist['bridges'] points to a list of bridge Ifaces. TODO: refactor! """ # ifacelist is already populated.. # to reset set ``self._ifacelist = None`` if len(self._ifacelist.get('all')) > 0: return self._ifacelist self._initialize_ifacelist() list_of_ports = sorted(nn.portname_list()) feature_cache = self.cache.Cache() feature_cache.run() for _portname in list_of_ports: _printiface = self.print_iface.iface(_portname, feature_cache) if self.show_up and _printiface.iface.linkstate < 2: continue # if iface is a l2 subint bridgemem, then ignore if _printiface.iface.is_subint() and \ isinstance(_printiface, self.print_bridge.PrintBridgeMember): continue self._ifacelist['all'][_portname] = _printiface if isinstance(_printiface.iface, self.iface.Iface): if _printiface.iface.is_phy(): self._ifacelist['phy'][_portname] = _printiface elif _printiface.iface.is_mgmt(): self._ifacelist['mgmt'][_portname] = _printiface # mutual exclusive bond/bridge/bondmem/bridgemem if isinstance(_printiface, self.print_bridge.PrintBridge): self._ifacelist['bridge'][_portname] = _printiface self._ifacelist['l2'][_portname] = _printiface elif isinstance(_printiface, self.print_bond.PrintBond): self._ifacelist['bond'][_portname] = _printiface if _printiface.iface.is_bridgemem(): self._ifacelist['l2'][_portname] = _printiface elif isinstance(_printiface, self.print_bridge.PrintBridgeMember): self._ifacelist['l2'][_portname] = _printiface elif isinstance(_printiface, self.print_bond.PrintBondMember): self._ifacelist['bondmem'][_portname] = _printiface continue # mutual exclusive - l3/trunk/access if _printiface.iface.is_l3(): self._ifacelist['l3'][_portname] = _printiface elif _printiface.iface.is_trunk(): self._ifacelist['trunk'][_portname] = _printiface elif _printiface.iface.is_access(): self._ifacelist['access'][_portname] = _printiface return self._ifacelist
def test_portlist(mock_import, mock_provider_check): mock_provider_check.return_value = 'debian' mock_debian_iface = MagicMock() mock_debian_iface.portname_list.return_value = ['eth22', 'eth33'] values = { 'netshowlib.debian.iface': mock_debian_iface } mock_import.side_effect = mod_args_generator(values) assert_equals(nn.portname_list(), ['eth22', 'eth33'])
def vlan_aware_bridge(self): if self._vlan_aware_bridge: return self._vlan_aware_bridge portlist = netshowlib.portname_list() for _portname in portlist: _iface = netshowlib.iface(_portname) if hasattr(_iface, 'vlan_filtering') and \ _iface.vlan_filtering and \ _iface.is_bridge(): self._vlan_aware_bridge = _iface return self._vlan_aware_bridge
def run(self): """ :return: basic neighbor information based on data obtained on netshow-lib """ feature_cache = self.cache.Cache() feature_cache.run() for _ifacename in sorted(nn.portname_list()): _piface = self.print_iface.iface(_ifacename, feature_cache) if hasattr(_piface.iface, 'is_phy') and _piface.iface.is_phy(): if self.show_up and _piface.iface.linkstate < 2: continue if self.show_errors and _piface.iface.counters.total_err == 0: continue self.ifacelist[_ifacename] = _piface if self.use_json: return json.dumps(self.ifacelist, cls=NetEncoder, indent=4) return self.print_counters()