refactored configs back to be able to provide instance conifgurations for sessions
This commit is contained in:
parent
eb415aa4d4
commit
3a39432fc7
22 changed files with 560 additions and 319 deletions
|
@ -72,7 +72,12 @@ class CoreDocumentParser0(object):
|
|||
"""
|
||||
Helper to return tuple of attributes common to nodes and nets.
|
||||
"""
|
||||
node_id = int(obj.getAttribute("id"))
|
||||
node_id = obj.getAttribute("id")
|
||||
try:
|
||||
node_id = int(node_id)
|
||||
except:
|
||||
logger.debug("parsing node without integer id: %s", node_id)
|
||||
|
||||
name = str(obj.getAttribute("name"))
|
||||
node_type = str(obj.getAttribute("type"))
|
||||
return node_id, name, node_type
|
||||
|
@ -205,7 +210,8 @@ class CoreDocumentParser0(object):
|
|||
|
||||
# TODO: assign other config managers here
|
||||
if mgr:
|
||||
mgr.setconfig_keyvalues(nodenum, name, kvs)
|
||||
for k, v in kvs:
|
||||
mgr.set_config(k, v, node_id=nodenum, config_type=name)
|
||||
|
||||
def parsenetem(self, model, obj, kvs):
|
||||
"""
|
||||
|
@ -218,7 +224,6 @@ class CoreDocumentParser0(object):
|
|||
# nodes and interfaces do not exist yet, at this point of the parsing,
|
||||
# save (key, value) pairs for later
|
||||
try:
|
||||
# kvs = map(lambda(k, v): (int(v)), kvs)
|
||||
kvs = map(self.numericvalue, kvs)
|
||||
except ValueError:
|
||||
logger.warn("error parsing link parameters for '%s' on '%s'", ifname, peer)
|
||||
|
@ -394,7 +399,7 @@ class CoreDocumentParser0(object):
|
|||
v = str(param.getAttribute("value"))
|
||||
if v == '':
|
||||
v = xmlutils.get_text_child(param) # allow attribute/text for newlines
|
||||
setattr(self.session.options, k, v)
|
||||
self.session.options.set_config(k, v)
|
||||
hooks = xmlutils.get_one_element(self.meta, "Hooks")
|
||||
if hooks:
|
||||
self.parsehooks(hooks)
|
||||
|
@ -405,4 +410,4 @@ class CoreDocumentParser0(object):
|
|||
v = str(param.getAttribute("value"))
|
||||
if v == '':
|
||||
v = xmlutils.get_text_child(param)
|
||||
self.session.metadata.add_item(k, v)
|
||||
self.session.metadata.set_config(k, v)
|
||||
|
|
|
@ -210,12 +210,11 @@ class CoreDocumentParser1(object):
|
|||
raise NotImplementedError
|
||||
logger.info("setting wireless link params: node(%s) model(%s) mobility_model(%s)",
|
||||
nodenum, model_name, mobility_model_name)
|
||||
model_class = mgr.get_model_class(model_name)
|
||||
model_class.set_configs(link_params, node_id=nodenum)
|
||||
mgr.set_model_config(node_id=nodenum, model_name=model_name, config=link_params)
|
||||
|
||||
if mobility_model_name and mobility_params:
|
||||
model_class = mgr.get_model_class(mobility_model_name)
|
||||
model_class.set_configs(mobility_params, node_id=nodenum)
|
||||
self.session.mobility.set_model_config(node_id=nodenum, model_name=mobility_model_name,
|
||||
config=mobility_params)
|
||||
|
||||
def link_layer2_devices(self, device1, ifname1, device2, ifname2):
|
||||
"""
|
||||
|
|
|
@ -6,7 +6,7 @@ import pwd
|
|||
from core import logger
|
||||
from core.coreobj import PyCoreNet
|
||||
from core.coreobj import PyCoreNode
|
||||
from core.enumerations import RegisterTlvs
|
||||
from core.enumerations import RegisterTlvs, EventTypes
|
||||
from core.xml import xmlutils
|
||||
|
||||
|
||||
|
@ -38,7 +38,8 @@ class CoreDocumentWriter0(Document):
|
|||
self.populatefromsession()
|
||||
|
||||
def populatefromsession(self):
|
||||
self.session.emane.setup() # not during runtime?
|
||||
if self.session.state != EventTypes.RUNTIME_STATE.value:
|
||||
self.session.emane.setup() # not during runtime?
|
||||
self.addorigin()
|
||||
self.adddefaultservices()
|
||||
self.addnets()
|
||||
|
@ -136,14 +137,14 @@ class CoreDocumentWriter0(Document):
|
|||
for m, conf in configs:
|
||||
model = self.createElement("model")
|
||||
n.appendChild(model)
|
||||
model.setAttribute("name", m._name)
|
||||
model.setAttribute("name", m.name)
|
||||
type = "wireless"
|
||||
if m._type == RegisterTlvs.MOBILITY.value:
|
||||
if m.config_type == RegisterTlvs.MOBILITY.value:
|
||||
type = "mobility"
|
||||
model.setAttribute("type", type)
|
||||
for i, k in enumerate(m.getnames()):
|
||||
|
||||
for k, value in conf.iteritems():
|
||||
key = self.createElement(k)
|
||||
value = conf[i]
|
||||
if value is None:
|
||||
value = ""
|
||||
key.appendChild(self.createTextNode("%s" % value))
|
||||
|
@ -193,8 +194,8 @@ class CoreDocumentWriter0(Document):
|
|||
# could use ifc.params, transport_type
|
||||
self.addaddresses(i, ifc)
|
||||
# per-interface models
|
||||
if netmodel and netmodel._name[:6] == "emane_":
|
||||
cfg = netmodel.getifcconfig(node.objid, ifc)
|
||||
if netmodel and netmodel.name[:6] == "emane_":
|
||||
cfg = self.session.emane.getifcconfig(node.objid, ifc, netmodel.name)
|
||||
if cfg:
|
||||
self.addmodels(i, ((netmodel, cfg),))
|
||||
|
||||
|
|
|
@ -654,7 +654,7 @@ class DeviceElement(NamedXmlElement):
|
|||
# per-interface models
|
||||
# XXX Remove???
|
||||
if netmodel and netmodel.name[:6] == "emane_":
|
||||
cfg = netmodel.getifcconfig(device_object.objid, interface_object)
|
||||
cfg = self.coreSession.emane.getifcconfig(device_object.objid, interface_object, netmodel.name)
|
||||
if cfg:
|
||||
interface_element.addModels(((netmodel, cfg),))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue