Source code for jnpr.junos.cfg.phyport.base

# 3rd-party
from lxml.builder import E

# local module
from jnpr.junos.cfg.resource import Resource


[docs]class PhyPortBase(Resource): """ [edit interfaces <name>] Resource name: str <name> is the interface-name (IFD), e.g. 'ge-0/0/0' """ PROPERTIES = [ 'admin', # True 'description', # str 'speed', # ['10m','100m','1g','10g'] 'duplex', # ['full','half'] 'mtu', # int 'loopback', # True '$unit_count' # number of units defined ] PORT_DUPLEX = { 'full': 'full-duplex', 'half': 'half-duplex' } @classmethod def _set_invert(cls, in_this, item, from_this): from_item = in_this[item] in_this[item] = [ _k for _k, _v in from_this.items() if _v == from_item][0] # ----------------------------------------------------------------------- # XML readers # ----------------------------------------------------------------------- def _xml_at_top(self): return E.interfaces(E.interface( E.name(self._name) )) def _xml_at_res(self, xml): return xml.find('.//interface') def _xml_to_py(self, has_xml, has_py): # common to all subclasses Resource._r_has_xml_status(has_xml, has_py) has_py['admin'] = bool(has_xml.find('disable') is None) Resource.copyifexists(has_xml, 'description', has_py) Resource.copyifexists(has_xml, 'mtu', has_py) has_py['$unit_count'] = len(has_xml.findall('unit')) # ----------------------------------------------------------------------- # XML writers # ----------------------------------------------------------------------- # description handed by Resource def _xml_change_admin(self, xml): xml.append( Resource.xmltag_set_or_del( 'disable', (self.admin == False))) return True def _xml_change_mtu(self, xml): Resource.xml_set_or_delete(xml, 'mtu', self.mtu) return True # ----------------------------------------------------------------------- # Manager List, Catalog # ----------------------------------------------------------------------- def _r_list(self): got = self.R.get_interface_information( media=True, interface_name="[xgf]e*") self._rlist = [ name.text.strip() for name in got.xpath('physical-interface/name')]