Source code for jnpr.junos.factory
import yaml
import os.path
from jnpr.junos.factory.factory_loader import FactoryLoader
__all__ = ["loadyaml", "FactoryLoader"]
[docs]def loadyaml(path):
"""
Load a YAML file at :path: that contains Table and View definitions.
Returns a <dict> of item-name anditem-class definition.
If you want to import these definitions directly into your namespace,
(like a module) you would do the following:
globals().update( loadyaml( <path-to-yaml-file> ))
If you did not want to do this, you can access the items as the <dict>.
For example, if your YAML file contained a Table called MyTable, then
you could do something like:
catalog = loadyaml( <path-to-yaml-file> )
MyTable = catalog['MyTable']
table = MyTable(dev)
table.get()
...
"""
# if no extension is given, default to '.yml'
if os.path.splitext(path)[1] == "":
path += ".yml"
return FactoryLoader().load(yaml.load(open(path, "r"), Loader=yaml.FullLoader))