def createGenericServerCls(path, filename, conf): """Create a ServerProcess class representing a generic server. Options for this server are passed in as a string in standard .ini format. We use a string rather than a file to allow this configuration to be extracted from a larger file if necessary. """ class cls(ServerProcess): pass if isinstance(conf, bytes): conf = conf.decode('utf-8') scp = ConfigParser() scp.readfp(io.StringIO(conf)) # general information cls.name = scp.get('info', 'name', raw=True) cls.__doc__ = scp.get('info', 'description', raw=True) if scp.has_option('info', 'version'): cls.version = scp.get('info', 'version', raw=True) else: cls.version = '0.0' try: cls.instancename = scp.get('info', 'instancename', raw=True) except: cls.instancename = cls.name cls.environVars = findEnvironmentVars(cls.instancename) cls.isLocal = len(cls.environVars) > 0 # startup platform_cmdline_option = 'cmdline_{}'.format(sys.platform) if scp.has_option('startup', platform_cmdline_option): # use platform-specific command line cls.cmdline = scp.get('startup', platform_cmdline_option, raw=True) else: # use generic command line cls.cmdline = scp.get('startup', 'cmdline', raw=True) cls.path = path cls.filename = filename try: cls.timeout = float(scp.getint('startup', 'timeout')) except: pass # shutdown if scp.has_option('shutdown', 'message'): cls.shutdownMode = 'message', int(scp.get('shutdown', 'message', raw=True)) elif scp.has_option('shutdown', 'setting'): cls.shutdownMode = 'setting', scp.get('shutdown', 'setting', raw=True) try: cls.shutdownTimeout = float(scp.getint('shutdown', 'timeout')) except: pass return cls
def createGenericServerCls(path, filename, conf): """Create a ServerProcess class representing a generic server. Options for this server are passed in as a string in standard .ini format. We use a string rather than a file to allow this configuration to be extracted from a larger file if necessary. """ class cls(ServerProcess): pass scp = SafeConfigParser() scp.readfp(StringIO.StringIO(conf)) # general information cls.name = scp.get('info', 'name', raw=True) cls.__doc__ = scp.get('info', 'description', raw=True) if scp.has_option('info', 'version'): cls.version = scp.get('info', 'version', raw=True) else: cls.version = '0.0' try: cls.instancename = scp.get('info', 'instancename', raw=True) except: cls.instancename = cls.name cls.environVars = findEnvironmentVars(cls.instancename) cls.isLocal = len(cls.environVars) > 0 # startup platform_cmdline_option = 'cmdline_{}'.format(sys.platform) if scp.has_option('startup', platform_cmdline_option): # use platform-specific command line cls.cmdline = scp.get('startup', platform_cmdline_option, raw=True) else: # use generic command line cls.cmdline = scp.get('startup', 'cmdline', raw=True) cls.path = path cls.filename = filename try: cls.timeout = float(scp.getint('startup', 'timeout')) except: pass # shutdown if scp.has_option('shutdown', 'message'): cls.shutdownMode = 'message', int(scp.get('shutdown', 'message', raw=True)) elif scp.has_option('shutdown', 'setting'): cls.shutdownMode = 'setting', scp.get('shutdown', 'setting', raw=True) try: cls.shutdownTimeout = float(scp.getint('shutdown', 'timeout')) except: pass return cls
def createPythonServerCls(plugin): """Create a ServerProcess class representing a python server. Options for this server are read from the python object itself, located with the twisted plugin system. """ class cls(ServerProcess): pass # general information cls.name = plugin.name cls.__doc__ = plugin.__doc__ if hasattr(plugin, 'version'): cls.version = plugin.version else: cls.version = '0.0' if hasattr(plugin, 'instanceName'): cls.instancename = plugin.instanceName else: cls.instancename = plugin.name cls.environVars = findEnvironmentVars(cls.instancename) cls.isLocal = len(cls.environVars) > 0 # startup cls.cmdline = ' '.join([sys.executable, '-m', plugin.__module__]) cls.path, cls.filename = os.path.split( sys.modules[plugin.__module__].__file__) # shutdown if hasattr(plugin, 'shutdownMessage'): cls.shutdownMode = 'message', plugin.shutdownMessage elif hasattr(plugin, 'shutdownSetting'): cls.shutdownMode = 'setting', plugin.shutdownSetting try: cls.shutdownTimeout = float(plugin.shutdownTimeout) except: pass return cls
def createPythonServerCls(plugin): """Create a ServerProcess class representing a python server. Options for this server are read from the python object itself, located with the twisted plugin system. """ class cls(ServerProcess): pass # general information cls.name = plugin.name cls.__doc__ = plugin.__doc__ if hasattr(plugin, 'version'): cls.version = plugin.version else: cls.version = '0.0' if hasattr(plugin, 'instanceName'): cls.instancename = plugin.instanceName else: cls.instancename = plugin.name cls.environVars = findEnvironmentVars(cls.instancename) cls.isLocal = len(cls.environVars) > 0 # startup cls.cmdline = ' '.join([sys.executable, '-m', plugin.__module__]) cls.path, cls.filename = os.path.split(sys.modules[plugin.__module__].__file__) # shutdown if hasattr(plugin, 'shutdownMessage'): cls.shutdownMode = 'message', plugin.shutdownMessage elif hasattr(plugin, 'shutdownSetting'): cls.shutdownMode = 'setting', plugin.shutdownSetting try: cls.shutdownTimeout = float(plugin.shutdownTimeout) except: pass return cls