from core.service import CoreService, addservice from sys import maxint from inspect import isclass class Startup(CoreService): 'A CORE service to start other services in order, serially' _name = 'startup' _group = 'Utility' _depends = () _dirs = () _configs = ('startup.sh', ) _startindex = maxint _startup = ('sh startup.sh', ) _shutdown = () _validate = () @staticmethod def isStartupService(s): return isinstance(s, Startup) or \ (isclass(s) and issubclass(s, Startup)) @classmethod def generateconfig(cls, node, filename, services): if filename != cls._configs[0]: return '' script = '#!/bin/sh\n' \ '# auto-generated by Startup (startup.py)\n\n' \ 'exec > startup.log 2>&1\n\n' for s in sorted(services, key = lambda x: x._startindex): if cls.isStartupService(s) or len(str(s._starttime)) > 0: continue start = '\n'.join(s.getstartup(node, services)) if start: script += start + '\n' return script addservice(Startup)