Exemple #1
0
    def lldp_details(self):
        """
        :return: lldp info for the bond members
        """
        _header = [_('lldp'), '', '']
        _table = []
        for _bondmem in self.iface.members.values():
            lldp_output = _bondmem.lldp
            if not lldp_output:
                continue
            _table.append([
                "%s(%s)" % (_bondmem.name, self.abbrev_bondstate(_bondmem)),
                '====',
                "%s(%s)" % (lldp_output[0].get('adj_port'),
                            lldp_output[0].get('adj_hostname'))
            ])
            del lldp_output[0]
            for _entry in lldp_output:
                _table.append([
                    '', '====',
                    "%s(%s)" %
                    (_entry.get('adj_port'), _entry.get('adj_hostname'))
                ])

        if len(_table) > 0:
            return tabulate(_table, _header)
        else:
            return _('no_lldp_entries')
 def port_category(self):
     """
     :return: port category for bridge member
     """
     if self.iface.is_trunk():
         return _('trunk/l2')
     return _('access/l2')
 def port_category(self):
     """
     :return: port category of bridge. Then return its a L2 or L3 port as wel
     """
     if self.iface.is_l3():
         return _('bridge/l3')
     return _('bridge/l2')
Exemple #4
0
 def port_category(self):
     """
     :return: port category for bridge member
     """
     if self.iface.is_trunk():
         return _('trunk/l2')
     return _('access/l2')
    def lldp_details(self):
        """
        :return: lldp info for the bond members
        """
        _header = [_('lldp'), '', '']
        _table = []
        for _bondmem in self.iface.members.values():
            lldp_output = _bondmem.lldp
            if not lldp_output:
                continue
            _table.append(["%s(%s)" % (_bondmem.name,
                                       self.abbrev_bondstate(_bondmem)),
                           '====',
                           "%s(%s)" % (lldp_output[0].get('adj_port'),
                                       lldp_output[0].get('adj_hostname'))])
            del lldp_output[0]
            for _entry in lldp_output:
                _table.append(['', '====',
                               "%s(%s)" % (_entry.get('adj_port'),
                                           _entry.get('adj_hostname'))])

        if len(_table) > 0:
            return tabulate(_table, _header)
        else:
            return _('no_lldp_entries')
Exemple #6
0
 def port_category(self):
     """
     :return: port category of bridge. Then return its a L2 or L3 port as wel
     """
     if self.iface.is_l3():
         return _('bridge/l3')
     return _('bridge/l2')
 def state_in_bond(self):
     """
     :return: text describing the state of the port in the bond
     """
     if self.iface.bondstate == 1:
         return _('port_in_bond')
     else:
         return _('port_not_in_bond')
Exemple #8
0
 def state_in_bond(self):
     """
     :return: text describing the state of the port in the bond
     """
     if self.iface.bondstate == 1:
         return _('port_in_bond')
     else:
         return _('port_not_in_bond')
Exemple #9
0
 def cli_output(self):
     """
     print linux basic system output on a terminal
     """
     _str = ''
     _str += "%s %s\n" % (self.system.os_name, self.system.version)
     _str += "%s: %s\n" % (_('build'), self.system.os_build)
     _str += "%s: %s\n" % (_('uptime'), self.uptime)
     return _str
Exemple #10
0
 def abbrev_linksummary(cls, linuxiface):
     """
     :return: 'U' if port is up
     :return: 'D' if port is down or admdn
     """
     if linuxiface.linkstate == 2:
         return _('U')
     else:
         return _('D')
 def abbrev_bondstate(cls, bondmem):
     """
     :param bondmem: :class:`netshowlib.linux.BondMember` instance
     :return: 'P' if bondmem in bond
     :return: 'N' if bondmem is not in bond
     """
     if bondmem.bondstate == 1:
         return _('P')
     else:
         return _('N')
 def cli_output(self):
     """
     print linux basic system output on a terminal
     """
     _str = ''
     _str += "%s %s\n" % (self.system.os_name,
                          self.system.version)
     _str += "%s: %s\n" % (_('build'), self.system.os_build)
     _str += "%s: %s\n" % (_('uptime'), self.uptime)
     return _str
Exemple #13
0
 def abbrev_bondstate(cls, bondmem):
     """
     :param bondmem: :class:`netshowlib.linux.BondMember` instance
     :return: 'P' if bondmem in bond
     :return: 'N' if bondmem is not in bond
     """
     if bondmem.bondstate == 1:
         return _('P')
     else:
         return _('N')
Exemple #14
0
 def cli_header(self):
     """
     :return common cli header when printing single iface info
     """
     _header = ['', _('name'), _('mac'), _('speed'), _('mtu'), _('mode')]
     _table = [[
         self.linkstate, self.name, self.iface.mac, self.speed,
         self.iface.mtu, self.port_category
     ]]
     return tabulate(_table, _header) + self.new_line()
Exemple #15
0
 def ip_info(self):
     _arr = ['']
     if self.iface.is_l3():
         _arr = []
         if self.iface.ip_addr_assign == 1:
             first_addr = self.iface.ip_address.allentries[0]
             _arr.append("%s: %s(%s)" % (_('ip'), first_addr, _('dhcp')))
         else:
             self.print_list_in_chunks(self.iface.ip_address.allentries,
                                       _('ip'), _arr)
     return _arr
Exemple #16
0
 def port_category(self):
     """
     :return: port category for a bond
     """
     if self.iface.is_l3():
         return _('bond/l3')
     elif self.iface.is_trunk():
         return _('bond/trunk')
     elif self.iface.is_access():
         return _('bond/access')
     else:
         return _('bond')
 def lacp_rate(self):
     """
     :return: lacp rate in plain english
     """
     _lacp = self.iface.lacp
     if _lacp:
         if _lacp.rate == '1':
             return _('fast_lacp')
         elif _lacp.rate == '0':
             return _('slow_lacp')
         else:
             return _('unknown')
Exemple #18
0
 def lacp_rate(self):
     """
     :return: lacp rate in plain english
     """
     _lacp = self.iface.lacp
     if _lacp:
         if _lacp.rate == '1':
             return _('fast_lacp')
         elif _lacp.rate == '0':
             return _('slow_lacp')
         else:
             return _('unknown')
 def port_category(self):
     """
     :return: port category for a bond
     """
     if self.iface.is_l3():
         return _('bond/l3')
     elif self.iface.is_trunk():
         return _('bond/trunk')
     elif self.iface.is_access():
         return _('bond/access')
     else:
         return _('bond')
Exemple #20
0
 def hash_policy(self):
     """
     :return: hash policy for bond
     """
     _hash_policy = self.iface.hash_policy
     if _hash_policy == '1':
         return _('layer3+4')
     elif _hash_policy == '2':
         return _('layer2+3')
     elif _hash_policy == '0':
         return _('layer2')
     else:
         return _('unknown')
 def hash_policy(self):
     """
     :return: hash policy for bond
     """
     _hash_policy = self.iface.hash_policy
     if _hash_policy == '1':
         return _('layer3+4')
     elif _hash_policy == '2':
         return _('layer2+3')
     elif _hash_policy == '0':
         return _('layer2')
     else:
         return _('unknown')
Exemple #22
0
 def linkstate(self):
     """
     :return string that prints out link state. admin down or down or up
     """
     _linkstate_value = self.iface.linkstate
     if _linkstate_value == 0:
         return _('admdn')
     elif _linkstate_value == 1:
         return _('dn')
     elif _linkstate_value == 2:
         return _('up')
     elif _linkstate_value == 3:
         return _('drmnt')
 def print_bondmems(self):
     """
     :return: bondmember list when showing summary in netshow interfaces \
         for the bond interface
     """
     _arr = []
     for _bondmem in self.iface.members.values():
         _arr.append("%s(%s%s)" % (_bondmem.name,
                                   self.abbrev_linksummary(_bondmem),
                                   self.abbrev_bondstate(_bondmem)))
     if len(_arr) > 0:
         return ': '.join([_('bondmems'), ', '.join(sorted(_arr))])
     else:
         return _('no_bond_members_found')
Exemple #24
0
 def print_bondmems(self):
     """
     :return: bondmember list when showing summary in netshow interfaces \
         for the bond interface
     """
     _arr = []
     for _bondmem in self.iface.members.values():
         _arr.append("%s(%s%s)" %
                     (_bondmem.name, self.abbrev_linksummary(_bondmem),
                      self.abbrev_bondstate(_bondmem)))
     if len(_arr) > 0:
         return ': '.join([_('bondmems'), ', '.join(sorted(_arr))])
     else:
         return _('no_bond_members_found')
Exemple #25
0
    def port_category(self):
        """
        :return: port type. Via interface discovery determine classify port \
        type
        """
        if self.iface.is_loopback():
            return _('loopback')
        elif self.iface.is_l3():
            if self.iface.is_subint():
                return _('subint/l3')
            else:
                return _('access/l3')

        return _('unknown_int_type')
 def no_stp_details(self):
     """
     :return: details when stp is not enabled
     """
     _header = [_('bridge_details'), '']
     _table = []
     memberlist = self.iface.members.keys()
     _table2 = []
     self.print_portlist_in_chunks(memberlist, '', _table2)
     _table.append([_('bridge_members') + ':',  _table2[0]])
     for i in range(1, len(_table2)):
         _table.append(['', _table2[i]])
     _table.append([_('stp_mode') + ':', _('disabled')])
     _table.append(self.vlan_id_field().split(':'))
     return tabulate(_table, _header) + self.new_line()
Exemple #27
0
 def no_stp_details(self):
     """
     :return: details when stp is not enabled
     """
     _header = [_('bridge_details'), '']
     _table = []
     memberlist = self.iface.members.keys()
     _table2 = []
     self.print_list_in_chunks(memberlist, '', _table2)
     _table.append([_('bridge_members') + ':', _table2[0]])
     for i in range(1, len(_table2)):
         _table.append(['', _table2[i]])
     _table.append([_('stp_mode') + ':', _('disabled')])
     _table.append(self.vlan_id_field().split(':'))
     return tabulate(_table, _header) + self.new_line()
Exemple #28
0
    def trunk_summary(self):
        """
        :return: summary info for a trunk port
        """
        _vlanlist = self.iface.vlan_list
        native_bridges = []
        tagged_bridges = []
        for _bridgename, _vlanid in _vlanlist.items():
            if len(_vlanid) > 0 and int(_vlanid[0]) > 0:
                _vlan_tags = ','.join(_vlanid)
                tagged_bridges.append('%s(%s)' % (_bridgename, _vlan_tags))
            else:
                native_bridges.append(_bridgename)
        _strlist = [_('bridge_membership') + ':']
        self.print_list_in_chunks(tagged_bridges, _('tagged'), _strlist)
        self.print_list_in_chunks(native_bridges, _('untagged'), _strlist)

        return _strlist
Exemple #29
0
 def stp_summary(self):
     """
     :return: root switch priority if switch is root of bridge
     :return: root port if switch is not root of bridge
     :return: stp disabled if stp is disabled
     """
     _str = ["%s:" % (_('stp'))]
     if self.iface.stp:
         if self.iface.stp.is_root():
             _str.append("%s(%s)" %
                         (_('rootswitch'), self.iface.stp.root_priority))
         else:
             _str.append("%s(%s)" % (','.join(self.root_port()), _('root')))
             _str.append("%s(%s)" %
                         (self.iface.stp.root_priority, _('root_priority')))
     else:
         _str.append(_('disabled'))
     return ' '.join(_str)
 def stp_summary(self):
     """
     :return: root switch priority if switch is root of bridge
     :return: root port if switch is not root of bridge
     :return: stp disabled if stp is disabled
     """
     _str = ["%s:" % (_('stp'))]
     if self.iface.stp:
         if self.iface.stp.is_root():
             _str.append("%s(%s)" % (_('rootswitch'),
                                     self.iface.stp.root_priority))
         else:
             _str.append("%s(%s)" % (','.join(self.root_port()),
                                     _('root')))
             _str.append("%s(%s)" % (self.iface.stp.root_priority,
                                     _('root_priority')))
     else:
         _str.append(_('disabled'))
     return ' '.join(_str)
 def tagged_ifaces(self):
     """
     :return: list of tagged interfaces of the bridge
     """
     _tagmems = self.iface.tagged_members.keys()
     if _tagmems:
         _str = []
         self.print_portlist_in_chunks(_tagmems, _('tagged_members'), _str)
         return _str
     return []
Exemple #32
0
 def summary(self):
     """
     :return: summary info for bond members for 'netshow interfaces'
     """
     _arr = []
     _arr.append("%s: %s(%s%s)" %
                 (_('master'), self.iface.master.name,
                  PrintIface.abbrev_linksummary(self.iface.master),
                  PrintBond.abbrev_bondstate(self.iface)))
     return _arr
 def summary(self):
     """
     :return: summary info for bond members for 'netshow interfaces'
     """
     _arr = []
     _arr.append("%s: %s(%s%s)" % (_('master'),
                                   self.iface.master.name,
                                   PrintIface.abbrev_linksummary(self.iface),
                                   PrintBond.abbrev_bondstate(self.iface)))
     return _arr
Exemple #34
0
 def tagged_ifaces(self):
     """
     :return: list of tagged interfaces of the bridge
     """
     _tagmems = self.iface.tagged_members.keys()
     if _tagmems:
         _str = []
         self.print_list_in_chunks(_tagmems, _('tagged_members'), _str)
         return _str
     return []
 def vlan_id(self):
     """
     :return: vlan id
     :return: 'untagged' if non is available
     """
     _vlantag = self.iface.vlan_tag
     if _vlantag:
         _str = ','.join(_vlantag)
     else:
         _str = _('untagged')
     return _str
Exemple #36
0
    def ip_details(self):
        """
        :return: basic IP info about the interface for single iface info
        """
        _header = [_('ip_details'), '']
        _table = []
        if not self.iface.is_l3():
            return ''
        else:
            self.print_list_in_chunks(self.iface.ip_address.allentries,
                                      _('ip'),
                                      _table,
                                      place_in_list=False,
                                      break_into_list=True)
            _table.append([
                "%s:" % (_('arp_entries')),
                len(self.iface.ip_neighbor.allentries)
            ])

        return tabulate(_table, _header) + self.new_line()
Exemple #37
0
 def vlan_id(self):
     """
     :return: vlan id
     :return: 'untagged' if non is available
     """
     _vlantag = self.iface.vlan_tag
     if _vlantag:
         _str = ','.join(_vlantag)
     else:
         _str = _('untagged')
     return _str
    def bondmem_details(self):
        """
        print out table with bond member summary info for netshow interface [ifacename]
        for bond interface
        """
        _header = ['', _('port'), _('speed'), _('link_failures')]
        _table = []
        _bondmembers = self.iface.members.values()
        if len(_bondmembers) == 0:
            return _('no_bond_members_found')

        for _bondmem in _bondmembers:
            _printbondmem = PrintBondMember(_bondmem)
            _table.append([_printbondmem.linkstate,
                           "%s(%s)" % (_printbondmem.name,
                                       self.abbrev_bondstate(_bondmem)),
                           _printbondmem.speed,
                           _bondmem.linkfailures])

        return tabulate(_table, _header) + self.new_line()
Exemple #39
0
    def bondmem_details(self):
        """
        print out table with bond member summary info for netshow interface [ifacename]
        for bond interface
        """
        _header = ['', _('port'), _('speed'), _('link_failures')]
        _table = []
        _bondmembers = self.iface.members.values()
        if len(_bondmembers) == 0:
            return _('no_bond_members_found')

        for _bondmem in _bondmembers:
            _printbondmem = PrintBondMember(_bondmem)
            _table.append([
                _printbondmem.linkstate,
                "%s(%s)" %
                (_printbondmem.name, self.abbrev_bondstate(_bondmem)),
                _printbondmem.speed, _bondmem.linkfailures
            ])

        return tabulate(_table, _header) + self.new_line()
    def print_neighbor_info(self):
        """
        :return: cli output of netshow neighbor
        """
        _header = [
            _('local'),
            _('speed'),
            _('mode'), '',
            _('remote'),
            _('sw/hostname'),
            _('summary')
        ]
        _table = []
        for _iface in self.ifacelist.values():
            _table.append([
                _iface.name, _iface.speed, _iface.port_category, '====',
                _iface.iface.lldp[0].get('adj_port'),
                _iface.iface.lldp[0].get('adj_hostname'),
                ', '.join(_iface.summary)
            ])
            del _iface.iface.lldp[0]
            if _iface.iface.lldp:
                for _entry in _iface.iface.lldp:
                    _table.append([
                        '', '', '', '====',
                        _entry.get('adj_port'),
                        _entry.get('adj_hostname')
                    ])

        return legend_wrapped_cli_output(tabulate(_table, _header),
                                         self.show_legend)
Exemple #41
0
 def ports_of_some_kind_of_state(self, statename):
     _header = [_("ports in %s state") % (inflection.titleize(statename))]
     _table = []
     _portlist = [
         _x.name for _x in self.iface.stp.member_state.get(statename)
     ]
     if _portlist:
         _table2 = []
         self.print_list_in_chunks(_portlist, '', _table2)
         for i in _table2:
             _table.append([i])
         return tabulate(_table, _header) + self.new_line()
     return ''
 def ports_of_some_kind_of_state(self, statename):
     _header = [_("ports in %s state") %
                (inflection.titleize(statename))]
     _table = []
     _portlist = [_x.name for _x in
                  self.iface.stp.member_state.get(statename)]
     if _portlist:
         _table2 = []
         self.print_portlist_in_chunks(_portlist, '', _table2)
         for i in _table2:
             _table.append([i])
         return tabulate(_table, _header) + self.new_line()
     return ''
    def bondmem_details(self):
        """
        :return: string with output shown when netshow interfaces is issued on a \
        bond member
        """
        _header = [_('bond_details'), '']
        _master = self.iface.master
        _printbond = PrintBond(_master)
        _table = []
        _table.append([_('master_bond') + ':', _master.name])
        _table.append([_('state_in_bond') + ':', self.state_in_bond])
        _table.append([_('link_failures') + ':', self.iface.linkfailures])
        _table.append([_('bond_members') + ':', ', '.join(_master.members.keys())])
        _table.append([_('bond_mode') + ':', _printbond.mode])
        _table.append([_('load_balancing') + ':', _printbond.hash_policy])
        _table.append([_('minimum_links') + ':', _master.min_links])
        _lacp_info = self.iface.master.lacp
        if _lacp_info:
            _table.append([_('lacp_sys_priority') + ':', _master.lacp.sys_priority])
            _table.append([_('lacp_rate') + ':', _printbond.lacp_rate()])

        return tabulate(_table, _header) + self.new_line()
 def stp_details(self):
     """
     :return: stp details for the bridge interface
     """
     _header = [_('bridge_details'), '']
     _table = []
     _table.append([_('stp_mode') + ':', _('802.1d / per bridge instance')])
     if self.iface.stp.is_root():
         _table.append([_('root_port') + ':', _('rootswitch')])
     else:
         _table.append([_('root_port') + ':', ', '.join(self.root_port())])
     _table.append([_('root_priority') + ':', self.iface.stp.root_priority])
     _table.append([_('bridge_priority') + ':', self.iface.stp.bridge_priority])
     _table.append(self.vlan_id_field().split(':'))
     return tabulate(_table, _header) + self.new_line()
Exemple #45
0
 def stp_details(self):
     """
     :return: stp details for the bridge interface
     """
     _header = [_('bridge_details'), '']
     _table = []
     _table.append([_('stp_mode') + ':', _('802.1d / per bridge instance')])
     if self.iface.stp.is_root():
         _table.append([_('root_port') + ':', _('rootswitch')])
     else:
         _table.append([_('root_port') + ':', ', '.join(self.root_port())])
     _table.append([_('root_priority') + ':', self.iface.stp.root_priority])
     _table.append(
         [_('bridge_priority') + ':', self.iface.stp.bridge_priority])
     _table.append(self.vlan_id_field().split(':'))
     return tabulate(_table, _header) + self.new_line()
Exemple #46
0
 def speed(self):
     """
     :return: print out current speed
     """
     _str = _('n/a')
     _speed_value = self.iface.speed
     if _speed_value is None or int(_speed_value) > 4294967200:
         return _str
     elif int(_speed_value) < 1000:
         _str = str(_speed_value) + 'M'
     else:
         # Python3 supports this true division thing so 40/10 gives you 4.0
         # To not have the .0, have to do double _'/'_
         _str = str(int(_speed_value) // 1000) + 'G'
     return _str
Exemple #47
0
    def print_single_iface(self):
        """
        :return: netshow terminal output or JSON of a single iface
        """
        feature_cache = linux_cache.Cache()
        feature_cache.run()
        _printiface = print_iface.iface(self.single_iface, feature_cache)
        if not _printiface:
            return _('interface_does_not_exist')

        if self.use_json:
            return json.dumps(_printiface,
                              cls=NetEncoder, indent=4)
        else:
            return _printiface.cli_output(show_legend=self.show_legend)
Exemple #48
0
    def bondmem_details(self):
        """
        :return: string with output shown when netshow interfaces is issued on a \
        bond member
        """
        _header = [_('bond_details'), '']
        _master = self.iface.master
        _printbond = PrintBond(_master)
        _table = []
        _table.append([_('master_bond') + ':', _master.name])
        _table.append([_('state_in_bond') + ':', self.state_in_bond])
        _table.append([_('link_failures') + ':', self.iface.linkfailures])
        _table.append(
            [_('bond_members') + ':', ', '.join(_master.members.keys())])
        _table.append([_('bond_mode') + ':', _printbond.mode])
        _table.append([_('load_balancing') + ':', _printbond.hash_policy])
        _table.append([_('minimum_links') + ':', _master.min_links])
        _lacp_info = self.iface.master.lacp
        if _lacp_info:
            _table.append(
                [_('lacp_sys_priority') + ':', _master.lacp.sys_priority])
            _table.append([_('lacp_rate') + ':', _printbond.lacp_rate()])

        return tabulate(_table, _header) + self.new_line()
    def print_single_iface(self):
        """
        :return: netshow terminal output or JSON of a single iface
        """
        feature_cache = linux_cache.Cache()
        feature_cache.run()
        _printiface = print_iface.iface(self.single_iface, feature_cache)
        if not _printiface:
            return _('interface_does_not_exist')

        if self.use_json:
            return json.dumps(_printiface,
                              cls=NetEncoder, indent=4)
        else:
            return _printiface.cli_output(show_legend=self.show_legend)
Exemple #50
0
    def bridgemem_details(self):
        """
        :return: list vlans or bridge names of various stp states
        """
        if not self.iface.is_bridgemem():
            return None

        _str = ''
        _stpstate = self.iface.stp.state
        for _category, _bridgelist in _stpstate.items():
            if _stpstate.get(_category):
                _header = [
                    _("vlans in %s state") % (inflection.titleize(_category))
                ]
                _table = [self._pretty_vlanlist(_bridgelist)]
                _str += tabulate(_table, _header, numalign="left") + \
                    self.new_line()
        return _str
 def bond_details(self):
     """
     print out table with bond details for netshow interface [ifacename]
     """
     _header = [_('bond_details'), '']
     _table = []
     _table.append([_('bond_mode') + ':', self.mode])
     _table.append([_('load_balancing') + ':', self.hash_policy])
     _table.append([_('minimum_links') + ':', self.iface.min_links])
     _lacp_info = self.iface.lacp
     if _lacp_info:
         _table.append([_('lacp_sys_priority') + ':', self.iface.lacp.sys_priority])
         _table.append([_('lacp_rate') + ':', self.lacp_rate()])
     return tabulate(_table, _header) + self.new_line()
 def mode(self):
     """
     :return: name of the bond mode
     """
     _mode = self.iface.mode
     if _mode == '4':
         return _('lacp')
     elif _mode == '3':
         return _('broadcast')
     elif _mode == '2':
         return _('balance-xor')
     elif _mode == '1':
         return _('active-backup')
     elif _mode == '0':
         return _('balance-rr')
     else:
         return _('unknown')
    def print_neighbor_info(self):
        """
        :return: cli output of netshow neighbor
        """
        _header = [_('local'), _('speed'), _('mode'), '',
                   _('remote'), _('sw/hostname'), _('summary')]
        _table = []
        for _iface in self.ifacelist.values():
            _table.append([_iface.name, _iface.speed,
                           _iface.port_category,
                           '====',
                           _iface.iface.lldp[0].get('adj_port'),
                           _iface.iface.lldp[0].get('adj_hostname'),
                           ', '.join(_iface.summary)])
            del _iface.iface.lldp[0]
            if _iface.iface.lldp:
                for _entry in _iface.iface.lldp:
                    _table.append(['', '', '', '====',
                                   _entry.get('adj_port'),
                                   _entry.get('adj_hostname')])

        return legend_wrapped_cli_output(tabulate(_table, _header), self.show_legend)
 def summary_header(self):
     """
     :return: summary header for 'netshow interfaces'
     """
     if self.show_mac:
         return ['', _('name'), _('mac'), _('speed'),
                 _('mtu'), _('mode'), _('summary')]
     else:
         return ['', _('name'), _('speed'),
                 _('mtu'), _('mode'), _('summary')]
 def port_category(self):
     """
     :return: port category for a bondmem
     """
     return _('bondmem')
 def vlan_id_field(self):
     """
     return: list with label saying 'vlan id' and vlan tag
     """
     _str = "%s: %s" % (_('802.1q_tag'), self.vlan_id())
     return _str