git://git.onelab.eu
/
nodemanager.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
install for sytemd *or* init
[nodemanager.git]
/
nodemanager.py
diff --git
a/nodemanager.py
b/nodemanager.py
index
8b2c6f6
..
7f5e204
100755
(executable)
--- a/
nodemanager.py
+++ b/
nodemanager.py
@@
-15,16
+15,16
@@
import xmlrpclib
import socket
import os
import sys
import socket
import os
import sys
-import resource
import glob
import pickle
import glob
import pickle
+import random
+import resource
import logger
import tools
from config import Config
from plcapi import PLCAPI
import logger
import tools
from config import Config
from plcapi import PLCAPI
-import random
class NodeManager:
class NodeManager:
@@
-74,7
+74,10
@@
class NodeManager:
# Deal with plugins directory
if os.path.exists(self.options.path):
sys.path.append(self.options.path)
# Deal with plugins directory
if os.path.exists(self.options.path):
sys.path.append(self.options.path)
- plugins = [ os.path.split(os.path.splitext(x)[0])[1] for x in glob.glob( os.path.join(self.options.path,'*.py') ) ]
+ plugins = [ os.path.split(os.path.splitext(x)[0])[1]
+ for x in glob.glob( os.path.join(self.options.path,'*.py') )
+ if not x.endswith("/__init__.py")
+ ]
self.modules += plugins
if self.options.user_module:
assert self.options.user_module in self.modules
self.modules += plugins
if self.options.user_module:
assert self.options.user_module in self.modules
@@
-171,12
+174,16
@@
class NodeManager:
return {}
def run(self):
return {}
def run(self):
+ # make sure to create /etc/planetlab/virt so others can read that
+ # used e.g. in vsys-scripts's sliceip
+ tools.get_node_virt()
try:
if self.options.daemon: tools.daemon()
# set log level
if (self.options.verbose):
logger.set_level(logger.LOG_VERBOSE)
try:
if self.options.daemon: tools.daemon()
# set log level
if (self.options.verbose):
logger.set_level(logger.LOG_VERBOSE)
+ tools.init_signals()
# Load /etc/planetlab/plc_config
config = Config(self.options.config)
# Load /etc/planetlab/plc_config
config = Config(self.options.config)
@@
-196,10
+203,15
@@
If this is not the case, please remove the pid file %s. -- exiting""" % (other_p
try:
m = __import__(module)
logger.verbose("nodemanager: triggering %s.start"%m.__name__)
try:
m = __import__(module)
logger.verbose("nodemanager: triggering %s.start"%m.__name__)
- m.start()
+ try: m.start()
+ except: logger.log("WARNING: module %s did not start")
self.loaded_modules.append(m)
self.loaded_modules.append(m)
- except ImportError, err:
- print "Warning while loading module %s:" % module, err
+ except:
+ if module not in NodeManager.core_modules:
+ logger.log_exc ("ERROR while loading module %s - skipped" % module)
+ else:
+ logger.log("FATAL : failed to start core module %s"%module)
+ sys.exit(1)
# sort on priority (lower first)
def sort_module_priority (m1,m2):
# sort on priority (lower first)
def sort_module_priority (m1,m2):
@@
-246,7
+258,10
@@
If this is not the case, please remove the pid file %s. -- exiting""" % (other_p
work_duration=int(work_end-work_beg)
logger.log('nodemanager: mainloop has worked for %s s - sleeping for %d s'%(work_duration,delay))
time.sleep(delay)
work_duration=int(work_end-work_beg)
logger.log('nodemanager: mainloop has worked for %s s - sleeping for %d s'%(work_duration,delay))
time.sleep(delay)
- except: logger.log_exc("nodemanager: failed in run")
+ except SystemExit:
+ pass
+ except:
+ logger.log_exc("nodemanager: failed in run")
def run():
logger.log("======================================== Entering nodemanager.py")
def run():
logger.log("======================================== Entering nodemanager.py")