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')]