Merge branch 'rel/5.1' into core-future

This commit is contained in:
Blake J. Harnden 2018-04-20 21:48:32 -07:00
commit 8f0364c44b
13 changed files with 58 additions and 33 deletions

View file

@ -9,7 +9,10 @@ from core.emane import emanemodel
try:
from emane.events.commeffectevent import CommEffectEvent
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):

View file

@ -34,7 +34,12 @@ try:
from emane.events import LocationEvent
from emane.events.eventserviceexception import EventServiceException
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 = [
EmaneRfPipeModel,
@ -76,7 +81,7 @@ class EmaneManager(ConfigurableManager):
self.transformport = self.session.get_config_item_int("emane_transform_port", 8200)
self.doeventloop = False
self.eventmonthread = None
self.logversion()
# model for global EMANE configuration options
self.emane_config = EmaneGlobalModel(session, None)
session.broker.handlers.add(self.handledistributed)
@ -86,24 +91,28 @@ class EmaneManager(ConfigurableManager):
self.emane_config.name: self.emane_config
}
# load provided models
self.load_models(EMANE_MODELS)
# load custom models
custom_models_path = session.config.get("emane_models_dir")
if custom_models_path:
emane_models = utils.load_classes(custom_models_path, EmaneModel)
self.load_models(emane_models)
self.service = None
self.emane_check()
def logversion(self):
def emane_check(self):
"""
Log the installed EMANE version.
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)
# load custom models
custom_models_path = self.session.config.get("emane_models_dir")
if custom_models_path:
emane_models = utils.load_classes(custom_models_path, EmaneModel)
self.load_models(emane_models)
except CoreCommandError:
logger.info("emane is not installed")

View file

@ -1,10 +1,14 @@
from core import logger
from core.enumerations import ConfigDataTypes
manifest = None
try:
from emane.shell import manifest
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):
@ -77,6 +81,10 @@ def parse(manifest_path, defaults):
:rtype: list
"""
# no results when emane bindings are not present
if not manifest:
return []
# load configuration file
manifest_file = manifest.Manifest(manifest_path)
manifest_configurations = manifest_file.getAllConfiguration()

View file

@ -15,7 +15,10 @@ from core.enumerations import RegisterTlvs
try:
from emane.events import LocationEvent
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):

View file

@ -72,6 +72,8 @@ class ServiceManager(object):
"""
services = utils.load_classes(path, CoreService)
for service in services:
if not service._name:
continue
service.on_load()
cls.add(service)

View file

@ -90,7 +90,7 @@ class BirdService(CoreService):
common to Bird's routing daemons.
"""
_name = "BirdDaemon"
_name = None
_group = "BIRD"
_depends = ("bird",)
_dirs = ()

View file

@ -13,7 +13,7 @@ class NrlService(CoreService):
Parent class for NRL services. Defines properties and methods
common to NRL's routing daemons.
"""""
_name = "Protean"
_name = None
_group = "ProtoSvc"
_depends = ()
_dirs = ()

View file

@ -222,7 +222,7 @@ class QuaggaService(CoreService):
Parent class for Quagga services. Defines properties and methods
common to Quagga's routing daemons.
"""
_name = "QuaggaDaemon"
_name = None
_group = "Quagga"
_depends = ("zebra",)
_dirs = ()

View file

@ -11,7 +11,7 @@ class SdnService(CoreService):
"""
Parent class for SDN services.
"""
_name = "SdnProcess"
_name = None
_group = "SDN"
_depends = ()
_dirs = ()

View file

@ -16,7 +16,7 @@ class UtilService(CoreService):
"""
Parent class for utility services.
"""
_name = "UtilityProcess"
_name = None
_group = "Utility"
_depends = ()
_dirs = ()

View file

@ -74,7 +74,7 @@ class XorpService(CoreService):
Parent class for XORP services. Defines properties and methods
common to XORP's routing daemons.
"""
_name = "XorpDaemon"
_name = None
_group = "XORP"
_depends = ("xorp_rtrmgr",)
_dirs = ()

View file

@ -68,7 +68,7 @@ proc findWlanNodes { peer } {
#
# Returns 1 if the given interface is wireless
proc isIfcWireless { node ifc } {
if { $ifc == "wireless" } {
if { $ifc == "wireless" } {
# wireless peudo-interface
return false
}
@ -102,7 +102,7 @@ proc clearWlanLinks { wlan } {
proc updateRangeCircles { wlan range } {
global .c zoom g_selected_model
set c .c
set radius [expr {$zoom * $range/2}]
$c delete -withtag rangecircles
if { $radius == 0 } {
@ -171,7 +171,7 @@ proc getWlanColor { wlan } {
if {[nodeType $node] != "wlan"} {
continue
}
if {$node == $wlan} {
if {$node == $wlan} {
return [lindex $wlanLinkColors $colornum]
}
incr colornum
@ -180,7 +180,7 @@ proc getWlanColor { wlan } {
# default color
return [lindex $wlanLinkColors 0]
}
# move a node given incremental coordinates
# dx dy should be adjusted for zoom
proc moveNodeIncr { c node dx dy } {
@ -389,7 +389,7 @@ proc wlanConfigDialogHelper { wi target apply } {
# use default model/values when none configured for this node
if { $mobmodel == "" } {
set mobmodel $DEFAULT_WLAN_MODEL
set mobmodel $DEFAULT_WLAN_MODEL
set vals $DEFAULT_WLAN_MODEL_VALS
# look for customized range/bw/jitter/delay/per
} else {
@ -473,7 +473,7 @@ proc wlanConfigDialogHelper { wi target apply } {
-side left -padx 4 -pady 4
pack $de -side top -anchor w -padx 4 -pady 4
# jitter frame
# jitter frame
set jt $wi.wl.note.basic.jt
ttk::frame $jt
ttk::label $jt.label1 -anchor w -text "Jitter (us):"
@ -528,7 +528,7 @@ proc wlanConfigDialogHelper { wi target apply } {
}
if { ! $have_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"
after 500 {
update ;# allow dialog layout, otherwise strange results
@ -608,16 +608,16 @@ proc wlanConfigDialogHelper { wi target apply } {
set cmd "linkSelectedNodes $target"
button $wi.bottom.memb -text "Choose WLAN members" \
-command "popupSelectNodes \"$msg\" \"\" {$cmd}"
# layout items
pack $wi.bottom.ipv4.addrl $wi.bottom.ipv4.addrv -side left
pack $wi.bottom.ipv4 -side top -anchor w
pack $wi.bottom.ipv6.addrl $wi.bottom.ipv6.addrv -side left
pack $wi.bottom.ipv6 -side top -anchor w
pack $wi.bottom.script $wi.bottom.linkall $wi.bottom.memb \
-side left -anchor center
pack $wi.bottom -side top -anchor w
}

View file

@ -20,7 +20,7 @@
NAME=`basename $0`
PIDFILE="@CORE_STATE_DIR@/run/$NAME.pid"
LOG="@CORE_STATE_DIR@/log/$NAME.log"
CMD="PYTHON_PATH=@pythondir@ @PYTHON@ @bindir@/$NAME"
CMD="PYTHONPATH=@pythondir@ @PYTHON@ @bindir@/$NAME"
get_pid() {
cat "$PIDFILE"