Merge branch 'rel/5.1' into core-future
This commit is contained in:
commit
8f0364c44b
13 changed files with 58 additions and 33 deletions
|
@ -9,7 +9,10 @@ from core.emane import emanemodel
|
||||||
try:
|
try:
|
||||||
from emane.events.commeffectevent import CommEffectEvent
|
from emane.events.commeffectevent import CommEffectEvent
|
||||||
except ImportError:
|
except ImportError:
|
||||||
logger.info("emane 1.2.1 not found")
|
try:
|
||||||
|
from emanesh.events.commeffectevent import CommEffectEvent
|
||||||
|
except ImportError:
|
||||||
|
logger.warn("compatible emane python bindings not installed")
|
||||||
|
|
||||||
|
|
||||||
def convert_none(x):
|
def convert_none(x):
|
||||||
|
|
|
@ -34,7 +34,12 @@ try:
|
||||||
from emane.events import LocationEvent
|
from emane.events import LocationEvent
|
||||||
from emane.events.eventserviceexception import EventServiceException
|
from emane.events.eventserviceexception import EventServiceException
|
||||||
except ImportError:
|
except ImportError:
|
||||||
logger.info("emane 1.2.1 not found")
|
try:
|
||||||
|
from emanesh.events import EventService
|
||||||
|
from emanesh.events import LocationEvent
|
||||||
|
from emanesh.events.eventserviceexception import EventServiceException
|
||||||
|
except ImportError:
|
||||||
|
logger.warn("compatible emane python bindings not installed")
|
||||||
|
|
||||||
EMANE_MODELS = [
|
EMANE_MODELS = [
|
||||||
EmaneRfPipeModel,
|
EmaneRfPipeModel,
|
||||||
|
@ -76,7 +81,7 @@ class EmaneManager(ConfigurableManager):
|
||||||
self.transformport = self.session.get_config_item_int("emane_transform_port", 8200)
|
self.transformport = self.session.get_config_item_int("emane_transform_port", 8200)
|
||||||
self.doeventloop = False
|
self.doeventloop = False
|
||||||
self.eventmonthread = None
|
self.eventmonthread = None
|
||||||
self.logversion()
|
|
||||||
# model for global EMANE configuration options
|
# model for global EMANE configuration options
|
||||||
self.emane_config = EmaneGlobalModel(session, None)
|
self.emane_config = EmaneGlobalModel(session, None)
|
||||||
session.broker.handlers.add(self.handledistributed)
|
session.broker.handlers.add(self.handledistributed)
|
||||||
|
@ -86,24 +91,28 @@ class EmaneManager(ConfigurableManager):
|
||||||
self.emane_config.name: self.emane_config
|
self.emane_config.name: self.emane_config
|
||||||
}
|
}
|
||||||
|
|
||||||
# load provided models
|
self.service = None
|
||||||
|
self.emane_check()
|
||||||
|
|
||||||
|
def emane_check(self):
|
||||||
|
"""
|
||||||
|
Check if emane is installed and load models.
|
||||||
|
|
||||||
|
:return: nothing
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# check for emane
|
||||||
|
emane_version = utils.check_cmd(["emane", "--version"])
|
||||||
|
logger.info("using EMANE: %s", emane_version)
|
||||||
|
|
||||||
|
# load default emane models
|
||||||
self.load_models(EMANE_MODELS)
|
self.load_models(EMANE_MODELS)
|
||||||
|
|
||||||
# load custom models
|
# load custom models
|
||||||
custom_models_path = session.config.get("emane_models_dir")
|
custom_models_path = self.session.config.get("emane_models_dir")
|
||||||
if custom_models_path:
|
if custom_models_path:
|
||||||
emane_models = utils.load_classes(custom_models_path, EmaneModel)
|
emane_models = utils.load_classes(custom_models_path, EmaneModel)
|
||||||
self.load_models(emane_models)
|
self.load_models(emane_models)
|
||||||
|
|
||||||
self.service = None
|
|
||||||
|
|
||||||
def logversion(self):
|
|
||||||
"""
|
|
||||||
Log the installed EMANE version.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
emane_version = utils.check_cmd(["emane", "--version"])
|
|
||||||
logger.info("using EMANE: %s", emane_version)
|
|
||||||
except CoreCommandError:
|
except CoreCommandError:
|
||||||
logger.info("emane is not installed")
|
logger.info("emane is not installed")
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
from core import logger
|
from core import logger
|
||||||
from core.enumerations import ConfigDataTypes
|
from core.enumerations import ConfigDataTypes
|
||||||
|
|
||||||
|
manifest = None
|
||||||
try:
|
try:
|
||||||
from emane.shell import manifest
|
from emane.shell import manifest
|
||||||
except ImportError:
|
except ImportError:
|
||||||
logger.info("emane 1.2.1 not found")
|
try:
|
||||||
|
from emanesh import manifest
|
||||||
|
except ImportError:
|
||||||
|
logger.warn("compatible emane python bindings not installed")
|
||||||
|
|
||||||
|
|
||||||
def _type_value(config_type):
|
def _type_value(config_type):
|
||||||
|
@ -77,6 +81,10 @@ def parse(manifest_path, defaults):
|
||||||
:rtype: list
|
:rtype: list
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# no results when emane bindings are not present
|
||||||
|
if not manifest:
|
||||||
|
return []
|
||||||
|
|
||||||
# load configuration file
|
# load configuration file
|
||||||
manifest_file = manifest.Manifest(manifest_path)
|
manifest_file = manifest.Manifest(manifest_path)
|
||||||
manifest_configurations = manifest_file.getAllConfiguration()
|
manifest_configurations = manifest_file.getAllConfiguration()
|
||||||
|
|
|
@ -15,7 +15,10 @@ from core.enumerations import RegisterTlvs
|
||||||
try:
|
try:
|
||||||
from emane.events import LocationEvent
|
from emane.events import LocationEvent
|
||||||
except ImportError:
|
except ImportError:
|
||||||
logger.info("emane 1.2.1 not found")
|
try:
|
||||||
|
from emanesh.events import LocationEvent
|
||||||
|
except ImportError:
|
||||||
|
logger.warn("compatible emane python bindings not installed")
|
||||||
|
|
||||||
|
|
||||||
class EmaneNet(PyCoreNet):
|
class EmaneNet(PyCoreNet):
|
||||||
|
|
|
@ -72,6 +72,8 @@ class ServiceManager(object):
|
||||||
"""
|
"""
|
||||||
services = utils.load_classes(path, CoreService)
|
services = utils.load_classes(path, CoreService)
|
||||||
for service in services:
|
for service in services:
|
||||||
|
if not service._name:
|
||||||
|
continue
|
||||||
service.on_load()
|
service.on_load()
|
||||||
cls.add(service)
|
cls.add(service)
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ class BirdService(CoreService):
|
||||||
common to Bird's routing daemons.
|
common to Bird's routing daemons.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_name = "BirdDaemon"
|
_name = None
|
||||||
_group = "BIRD"
|
_group = "BIRD"
|
||||||
_depends = ("bird",)
|
_depends = ("bird",)
|
||||||
_dirs = ()
|
_dirs = ()
|
||||||
|
|
|
@ -13,7 +13,7 @@ class NrlService(CoreService):
|
||||||
Parent class for NRL services. Defines properties and methods
|
Parent class for NRL services. Defines properties and methods
|
||||||
common to NRL's routing daemons.
|
common to NRL's routing daemons.
|
||||||
"""""
|
"""""
|
||||||
_name = "Protean"
|
_name = None
|
||||||
_group = "ProtoSvc"
|
_group = "ProtoSvc"
|
||||||
_depends = ()
|
_depends = ()
|
||||||
_dirs = ()
|
_dirs = ()
|
||||||
|
|
|
@ -222,7 +222,7 @@ class QuaggaService(CoreService):
|
||||||
Parent class for Quagga services. Defines properties and methods
|
Parent class for Quagga services. Defines properties and methods
|
||||||
common to Quagga's routing daemons.
|
common to Quagga's routing daemons.
|
||||||
"""
|
"""
|
||||||
_name = "QuaggaDaemon"
|
_name = None
|
||||||
_group = "Quagga"
|
_group = "Quagga"
|
||||||
_depends = ("zebra",)
|
_depends = ("zebra",)
|
||||||
_dirs = ()
|
_dirs = ()
|
||||||
|
|
|
@ -11,7 +11,7 @@ class SdnService(CoreService):
|
||||||
"""
|
"""
|
||||||
Parent class for SDN services.
|
Parent class for SDN services.
|
||||||
"""
|
"""
|
||||||
_name = "SdnProcess"
|
_name = None
|
||||||
_group = "SDN"
|
_group = "SDN"
|
||||||
_depends = ()
|
_depends = ()
|
||||||
_dirs = ()
|
_dirs = ()
|
||||||
|
|
|
@ -16,7 +16,7 @@ class UtilService(CoreService):
|
||||||
"""
|
"""
|
||||||
Parent class for utility services.
|
Parent class for utility services.
|
||||||
"""
|
"""
|
||||||
_name = "UtilityProcess"
|
_name = None
|
||||||
_group = "Utility"
|
_group = "Utility"
|
||||||
_depends = ()
|
_depends = ()
|
||||||
_dirs = ()
|
_dirs = ()
|
||||||
|
|
|
@ -74,7 +74,7 @@ class XorpService(CoreService):
|
||||||
Parent class for XORP services. Defines properties and methods
|
Parent class for XORP services. Defines properties and methods
|
||||||
common to XORP's routing daemons.
|
common to XORP's routing daemons.
|
||||||
"""
|
"""
|
||||||
_name = "XorpDaemon"
|
_name = None
|
||||||
_group = "XORP"
|
_group = "XORP"
|
||||||
_depends = ("xorp_rtrmgr",)
|
_depends = ("xorp_rtrmgr",)
|
||||||
_dirs = ()
|
_dirs = ()
|
||||||
|
|
|
@ -528,7 +528,7 @@ proc wlanConfigDialogHelper { wi target apply } {
|
||||||
}
|
}
|
||||||
if { ! $have_emane_models } {
|
if { ! $have_emane_models } {
|
||||||
# show connection dialog box to indicate why there are no EMANE models
|
# show connection dialog box to indicate why there are no EMANE models
|
||||||
$mod.none configure -text "none - connection to CORE daemon required!" \
|
$mod.none configure -text "Please install EMANE" \
|
||||||
-width "45"
|
-width "45"
|
||||||
after 500 {
|
after 500 {
|
||||||
update ;# allow dialog layout, otherwise strange results
|
update ;# allow dialog layout, otherwise strange results
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
NAME=`basename $0`
|
NAME=`basename $0`
|
||||||
PIDFILE="@CORE_STATE_DIR@/run/$NAME.pid"
|
PIDFILE="@CORE_STATE_DIR@/run/$NAME.pid"
|
||||||
LOG="@CORE_STATE_DIR@/log/$NAME.log"
|
LOG="@CORE_STATE_DIR@/log/$NAME.log"
|
||||||
CMD="PYTHON_PATH=@pythondir@ @PYTHON@ @bindir@/$NAME"
|
CMD="PYTHONPATH=@pythondir@ @PYTHON@ @bindir@/$NAME"
|
||||||
|
|
||||||
get_pid() {
|
get_pid() {
|
||||||
cat "$PIDFILE"
|
cat "$PIDFILE"
|
||||||
|
|
Loading…
Add table
Reference in a new issue