Source code for jnpr.junos.factory.viewfields
[docs]class ViewFields(object):
"""
Used to dynamically create a field dictionary used with the
RunstatView class
"""
[docs] def __init__(self):
self._fields = dict()
def _prockvargs(self, field, name, **kvargs):
if not len(kvargs):
return
field[name].update(kvargs)
@property
def end(self):
return self._fields
[docs] def str(self, name, xpath=None, **kvargs):
"""field is a string"""
if xpath is None:
xpath = name
field = {name: {"xpath": xpath}}
self._prockvargs(field, name, **kvargs)
self._fields.update(field)
return self
[docs] def astype(self, name, xpath=None, astype=int, **kvargs):
"""
field string value will be passed to function :astype:
This is typically used to do simple type conversions,
but also works really well if you set :astype: to
a function that does a basic converstion like look
at the value and change it to a True/False. For
example:
astype=lambda x: True if x == 'enabled' else False
"""
if xpath is None:
xpath = name
field = {name: {"xpath": xpath, "astype": astype}}
self._prockvargs(field, name, **kvargs)
self._fields.update(field)
return self
[docs] def int(self, name, xpath=None, **kvargs):
"""field is an integer"""
return self.astype(name, xpath, int, **kvargs)
[docs] def flag(self, name, xpath=None, **kvargs):
"""
field is a flag, results in True/False if the xpath element exists or
not. Model this as a boolean type <bool>
"""
return self.astype(name, xpath, bool, **kvargs)
[docs] def group(self, name, xpath=None, **kvargs):
"""
field is an apply group, results in value of group attr if the xpath
element has the associated group attribute.
"""
xpath = "./{}/@group".format(xpath)
return self.astype(name, xpath, str, **kvargs)
[docs] def table(self, name, table):
"""field is a RunstatTable"""
self._fields.update({name: {"table": table}})
return self