remerged with git pending fix to distributed configuration problem

This commit is contained in:
Rod A Santiago 2016-10-19 16:21:06 -07:00
parent 5d0aa4ac1a
commit d17ed889d2
9 changed files with 348 additions and 345 deletions

View file

@ -67,7 +67,7 @@ class Emane(ConfigurableManager):
self.logversion()
# model for global EMANE configuration options
self.emane_config = EmaneGlobalModel(session, None, self.verbose)
session.broker.handlers += (self.handledistributed, )
session.broker.handlers.add(self.handledistributed)
self.loadmodels()
self.service = None
@ -455,11 +455,11 @@ class Emane(ConfigurableManager):
servers.append(s)
self._objslock.release()
servers.sort(key = lambda x: x.name)
for server in servers:
if server == "localhost":
if server.name == "localhost":
continue
(host, port, sock) = self.session.broker.getserver(server)
if sock is None:
if server.sock is None:
continue
platformid += 1
typeflags = coreapi.CONF_TYPE_FLAGS_UPDATE
@ -467,12 +467,11 @@ class Emane(ConfigurableManager):
values[names.index("nem_id_start")] = str(nemid)
msg = EmaneGlobalModel.toconfmsg(flags=0, nodenum=None,
typeflags=typeflags, values=values)
sock.send(msg)
server.sock.send(msg)
# increment nemid for next server by number of interfaces
self._ifccountslock.acquire()
if server in self._ifccounts:
nemid += self._ifccounts[server]
self._ifccountslock.release()
with self._ifccountslock:
if server in self._ifccounts:
nemid += self._ifccounts[server]
return False
@ -511,7 +510,7 @@ class Emane(ConfigurableManager):
session = self.session
if not session.master:
return # slave server
servers = session.broker.getserverlist()
servers = session.broker.getservernames()
if len(servers) < 2:
return # not distributed
prefix = session.cfg.get('controlnet')
@ -1155,6 +1154,22 @@ class Emane(ConfigurableManager):
self.session.sdt.updatenodegeo(node.objid, lat, long, alt)
return True
def emanerunning(self, node):
'''\
Return True if an EMANE process associated with the given node
is running, False otherwise.
'''
status = -1
cmd = ['pkill', '-0', '-x', 'emane']
try:
if self.version < self.EMANE092:
status = subprocess.call(cmd)
else:
status = node.cmd(cmd, wait=True)
except:
pass
return status == 0
def emane_version():
'Return the locally installed EMANE version identifier and string.'
cmd = ('emane', '--version')