daemon: Assign version variables to the Emane class instead of
instances.
This commit is contained in:
parent
63ff54243e
commit
026f54d658
1 changed files with 30 additions and 40 deletions
|
@ -63,44 +63,18 @@ class Emane(ConfigurableManager):
|
||||||
8200)
|
8200)
|
||||||
self.doeventloop = False
|
self.doeventloop = False
|
||||||
self.eventmonthread = None
|
self.eventmonthread = None
|
||||||
self.detectversion()
|
self.logversion()
|
||||||
# model for global EMANE configuration options
|
# model for global EMANE configuration options
|
||||||
self.emane_config = EmaneGlobalModel(session, None, self.verbose)
|
self.emane_config = EmaneGlobalModel(session, None, self.verbose)
|
||||||
session.broker.handlers += (self.handledistributed, )
|
session.broker.handlers += (self.handledistributed, )
|
||||||
self.loadmodels()
|
self.loadmodels()
|
||||||
self.service = None
|
self.service = None
|
||||||
|
|
||||||
def detectversion(self):
|
def logversion(self):
|
||||||
''' Detects the installed EMANE version and sets self.version.
|
'Log the installed EMANE version.'
|
||||||
'''
|
|
||||||
self.version, self.versionstr = self.detectversionfromcmd()
|
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
self.info("detected EMANE version: %s" % self.versionstr)
|
self.info("using EMANE version: %s" % self.versionstr)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def detectversionfromcmd(cls):
|
|
||||||
''' Runs 'emane --version' locally to determine version number.
|
|
||||||
'''
|
|
||||||
# for further study: different EMANE versions on distributed machines
|
|
||||||
try:
|
|
||||||
# TODO: fix BUG here -- killall may kill this process too
|
|
||||||
status, result = cmdresult(['emane', '--version'])
|
|
||||||
except OSError:
|
|
||||||
status = -1
|
|
||||||
result = ""
|
|
||||||
v = cls.EMANEUNK
|
|
||||||
if status == 0:
|
|
||||||
if result[:5] == "0.7.4":
|
|
||||||
v = cls.EMANE074
|
|
||||||
elif result[:5] == "0.8.1":
|
|
||||||
v = cls.EMANE081
|
|
||||||
elif result[:5] == "0.9.1":
|
|
||||||
v = cls.EMANE091
|
|
||||||
elif result[:5] == "0.9.2":
|
|
||||||
v = cls.EMANE092
|
|
||||||
return v, result.strip()
|
|
||||||
|
|
||||||
|
|
||||||
def initeventservice(self, filename=None, shutdown=False):
|
def initeventservice(self, filename=None, shutdown=False):
|
||||||
''' (Re-)initialize the EMANE Event service.
|
''' (Re-)initialize the EMANE Event service.
|
||||||
The multicast group and/or port may be configured.
|
The multicast group and/or port may be configured.
|
||||||
|
@ -266,8 +240,8 @@ class Emane(ConfigurableManager):
|
||||||
self.addobj(obj)
|
self.addobj(obj)
|
||||||
if len(self._objs) == 0:
|
if len(self._objs) == 0:
|
||||||
return Emane.NOT_NEEDED
|
return Emane.NOT_NEEDED
|
||||||
if self.versionstr == "":
|
if self.version == self.EMANEUNK:
|
||||||
self.detectversion()
|
raise ValueError, 'EMANE version not properly detected'
|
||||||
# control network bridge required for EMANE 0.9.2
|
# control network bridge required for EMANE 0.9.2
|
||||||
# - needs to be configured before checkdistributed() for distributed
|
# - needs to be configured before checkdistributed() for distributed
|
||||||
# - needs to exist when eventservice binds to it (initeventservice)
|
# - needs to exist when eventservice binds to it (initeventservice)
|
||||||
|
@ -1144,6 +1118,28 @@ class Emane(ConfigurableManager):
|
||||||
self.session.sdt.updatenodegeo(node.objid, lat, long, alt)
|
self.session.sdt.updatenodegeo(node.objid, lat, long, alt)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def emane_version():
|
||||||
|
'Return the locally installed EMANE version identifier and string.'
|
||||||
|
cmd = ('emane', '--version')
|
||||||
|
try:
|
||||||
|
status, result = cmdresult(cmd)
|
||||||
|
except:
|
||||||
|
status = -1
|
||||||
|
result = ''
|
||||||
|
v = Emane.EMANEUNK
|
||||||
|
if status == 0:
|
||||||
|
if result.startswith('0.7.4'):
|
||||||
|
v = Emane.EMANE074
|
||||||
|
elif result.startswith('0.8.1'):
|
||||||
|
v = Emane.EMANE081
|
||||||
|
elif result.startswith('0.9.1'):
|
||||||
|
v = Emane.EMANE091
|
||||||
|
elif result.startswith('0.9.2'):
|
||||||
|
v = Emane.EMANE092
|
||||||
|
return v, result.strip()
|
||||||
|
|
||||||
|
# set version variables for the Emane class
|
||||||
|
Emane.version, Emane.versionstr = emane_version()
|
||||||
|
|
||||||
class EmaneModel(WirelessModel):
|
class EmaneModel(WirelessModel):
|
||||||
''' EMANE models inherit from this parent class, which takes care of
|
''' EMANE models inherit from this parent class, which takes care of
|
||||||
|
@ -1314,12 +1310,6 @@ class EmaneModel(WirelessModel):
|
||||||
return None
|
return None
|
||||||
return addparamlisttoparent(dom, parent=None, name=name, values=values)
|
return addparamlisttoparent(dom, parent=None, name=name, values=values)
|
||||||
|
|
||||||
# EMANE 0.9.2 detected upon module load to support class vars
|
|
||||||
try:
|
|
||||||
HAVE092 = (Emane.detectversionfromcmd()[0] >= Emane.EMANE092)
|
|
||||||
except Exception, e:
|
|
||||||
HAVE092 = False
|
|
||||||
|
|
||||||
class EmaneGlobalModel(EmaneModel):
|
class EmaneGlobalModel(EmaneModel):
|
||||||
''' Global EMANE configuration options.
|
''' Global EMANE configuration options.
|
||||||
'''
|
'''
|
||||||
|
@ -1329,7 +1319,7 @@ class EmaneGlobalModel(EmaneModel):
|
||||||
# Over-The-Air channel required for EMANE 0.9.2
|
# Over-The-Air channel required for EMANE 0.9.2
|
||||||
_DEFAULT_OTA = '0'
|
_DEFAULT_OTA = '0'
|
||||||
_DEFAULT_DEV = 'lo'
|
_DEFAULT_DEV = 'lo'
|
||||||
if HAVE092:
|
if Emane.version >= Emane.EMANE092:
|
||||||
_DEFAULT_OTA = '1'
|
_DEFAULT_OTA = '1'
|
||||||
_DEFAULT_DEV = 'ctrl0'
|
_DEFAULT_DEV = 'ctrl0'
|
||||||
|
|
||||||
|
@ -1376,7 +1366,7 @@ class EmaneGlobalModel(EmaneModel):
|
||||||
if 'EventService' in globals():
|
if 'EventService' in globals():
|
||||||
_confmatrix_platform = _confmatrix_platform_base + \
|
_confmatrix_platform = _confmatrix_platform_base + \
|
||||||
_confmatrix_platform_091
|
_confmatrix_platform_091
|
||||||
if HAVE092:
|
if Emane.version >= Emane.EMANE092:
|
||||||
_confmatrix_nem = _confmatrix_nem_092
|
_confmatrix_nem = _confmatrix_nem_092
|
||||||
else:
|
else:
|
||||||
_confmatrix_platform = _confmatrix_platform_base + \
|
_confmatrix_platform = _confmatrix_platform_base + \
|
||||||
|
|
Loading…
Reference in a new issue