def __init__(self, args): self._components = [] self.uistates = {} self.uistates_by_name = {} self._translator = Translator() log.init() parser = optparse.OptionParser() parser.add_option('-d', '--debug', action="store", type="string", dest="debug", help="set debug levels") parser.add_option('-u', '--usage', action="store_true", dest="usage", help="show a usage message") parser.add_option('-m', '--manager', action="store", type="string", dest="manager", help="the manager to connect to, e.g. localhost:7531") parser.add_option('', '--no-ssl', action="store_true", dest="no_ssl", help="disable encryption when connecting to the manager") parser.add_option('-s', '--stomp-port', action="store", type="string", dest="stomp") options, args = parser.parse_args(args) if options.debug: log.setFluDebug(options.debug) if options.usage: self.usage(args) if not options.manager or not options.stomp: self.usage(args) print "need to connect to stomp port %s" % (options.stomp,) self.options = options connection = connections.parsePBConnectionInfo(options.manager, not options.no_ssl) self.model = model = AdminModel() self.stomp_client = StompClient() reactor.connectTCP("localhost", int(self.options.stomp), self.stomp_client) self.model.connect('connected', self._connected) self.model.connect('disconnected', self._disconnected) self.model.connect('update', self._update) d = model.connectToManager(connection) def failed(failure): if failure.check(errors.ConnectionRefusedError): print "Manager refused connection. Check your user and password." elif failure.check(errors.ConnectionFailedError): message = "".join(failure.value.args) print "Connection to manager failed: %s" % message else: print ("Exception while connecting to manager: %s" % log.getFailureMessage(failure)) return failure d.addErrback(failed) d.addErrback(lambda x: reactor.stop())
def __init__(self, args): self._components = [] self.uistates = {} self.uistates_by_name = {} self._translator = Translator() log.init() parser = optparse.OptionParser() parser.add_option('-d', '--debug', action="store", type="string", dest="debug", help="set debug levels") parser.add_option('-u', '--usage', action="store_true", dest="usage", help="show a usage message") parser.add_option('-m', '--manager', action="store", type="string", dest="manager", help="the manager to connect to, e.g. localhost:7531") parser.add_option('', '--no-ssl', action="store_true", dest="no_ssl", help="disable encryption when connecting to the manager") parser.add_option('-s', '--stomp-port', action="store", type="string", dest="stomp") options, args = parser.parse_args(args) if options.debug: log.setFluDebug(options.debug) if options.usage: self.usage(args) if not options.manager or not options.stomp: self.usage(args) print "need to connect to stomp port %s" % (options.stomp,) self.options = options connection = connections.parsePBConnectionInfo(options.manager, use_ssl=not options.no_ssl) self.model = model = AdminModel() self.stomp_client = StompClient() reactor.connectTCP("localhost", int(self.options.stomp), self.stomp_client) self.model.connect('connected', self._connected) self.model.connect('disconnected', self._disconnected) self.model.connect('update', self._update) d = model.connectToManager(connection) def failed(failure): if failure.check(errors.ConnectionRefusedError): print "Manager refused connection. Check your user and password." elif failure.check(errors.ConnectionFailedError): message = "".join(failure.value.args) print "Connection to manager failed: %s" % message else: print ("Exception while connecting to manager: %s" % log.getFailureMessage(failure)) return failure d.addErrback(failed) d.addErrback(lambda x: reactor.stop())
def main(args): parser = _createParser() log.debug('rrdmon', 'Parsing arguments (%r)' % ', '.join(args)) options, args = parser.parse_args(args) # Force options down configure's throat for d in ['logdir', 'rundir']: o = getattr(options, d, None) if o: log.debug('rrdmon', 'Setting configure.%s to %s' % (d, o)) setattr(configure, d, o) # check if a config file was specified; if so, parse config and copy over if len(args) != 2: raise SystemExit('usage: flumotion-rrdtool [OPTIONS] CONFIG-FILE') confXml = args[1] cfg = _readConfig(confXml, options) # reset FLU_DEBUG which could be different after parsing XML file if options.debug: log.setFluDebug(options.debug) if options.daemonizeTo and not options.daemonize: sys.stderr.write( 'ERROR: --daemonize-to can only be used with -D/--daemonize.\n') return 1 if options.serviceName and not options.daemonize: sys.stderr.write( 'ERROR: --service-name can only be used with -D/--daemonize.\n') return 1 monitor = rrdmon.RRDMonitor(cfg['sources']) name = 'rrdmon' if options.daemonize: if options.serviceName: name = options.serviceName if not options.daemonizeTo: options.daemonizeTo = "/" startup("rrdmon", name, options.daemonize, options.daemonizeTo) log.debug('rrdmon', 'Running Flumotion version %s' % configure.version) import twisted.copyright log.debug('rrdmon', 'Running against Twisted version %s' % twisted.copyright.version) # go into the reactor main loop reactor.run() return 0
def parse_args(self, args): options, args = OptionParser.parse_args(self, args) if options.verbose: log.setFluDebug("*:3") if options.version: print common.version(self.domain) import sys sys.exit(0) if options.debug: log.setFluDebug(options.debug) return options, args
def main(args): from flumotion.common import setup setup.setupPackagePath() from flumotion.configure import configure log.debug('launch', 'Running Flumotion version %s' % configure.version) import twisted.copyright log.debug('launch', 'Running against Twisted version %s' % twisted.copyright.version) from flumotion.project import project for p in project.list(): log.debug('launch', 'Registered project %s version %s' % ( p, project.get(p, 'version'))) parser = OptionParser(domain="flumotion-launch") log.debug('launch', 'Parsing arguments (%r)' % ', '.join(args)) options, args = parser.parse_args(args) i18n.installGettext() # verbose overrides --debug if options.verbose: log.setFluDebug("*:3") # handle all options if options.version: print common.version("flumotion-launch") return 0 if options.debug: log.setFluDebug(options.debug) # note parser versus parse configs = parse.parse_args(args[1:]) # load the modules, make the component wrappers = [ComponentWrapper(config) for config in configs] # make socket pairs fds = make_pipes(wrappers) reactor.running = False reactor.failure = False reactor.callLater(0, lambda: setattr(reactor, 'running', True)) d = start_components(wrappers, fds) def errback(failure): log.debug('launch', log.getFailureMessage(failure)) print "Error occurred: %s" % failure.getErrorMessage() failure.printDetailedTraceback() reactor.failure = True if reactor.running: print "Stopping reactor." reactor.stop() d.addErrback(errback) if not reactor.failure: print 'Running the reactor. Press Ctrl-C to exit.' log.debug('launch', 'Starting reactor') reactor.run() log.debug('launch', 'Reactor stopped') if reactor.failure: return 1 else: return 0
options.transport = cfg.manager.transport log.debug("manager", "Setting manager transport to %s" % options.transport) if not options.certificate and cfg.manager.certificate: options.certificate = cfg.manager.certificate log.debug("manager", "Using certificate %s" % options.certificate) if not options.name and cfg.manager.name: options.name = cfg.manager.name log.debug("manager", "Setting manager name to %s" % options.name) # environment debug > command-line debug > config file debug if not options.debug and cfg.manager.fludebug and not "FLU_DEBUG" in os.environ: options.debug = cfg.manager.fludebug log.debug("manager", "Setting debug level to config file value %s" % options.debug) # set debug level as soon as we can after deciding if options.debug: log.setFluDebug(options.debug) # set default values for all unset options if not options.host: options.host = "" # needed for bind to work if not options.transport: options.transport = "ssl" if not options.port: if options.transport == "tcp": options.port = defaultTCPPort elif options.transport == "ssl": options.port = defaultSSLPort if not options.certificate and options.transport == "ssl": options.certificate = "default.pem" if not options.name: # if the file is in a directory under a 'managers' directory,
def main(args): parser = _createParser() log.debug('worker', 'Parsing arguments (%r)' % ', '.join(args)) options, args = parser.parse_args(args) # Force options down configure's throat for d in ['logdir', 'rundir']: o = getattr(options, d, None) if o: log.debug('worker', 'Setting configure.%s to %s' % (d, o)) setattr(configure, d, o) # translate feederports string to range if options.feederports: if not '-' in options.feederports: raise errors.OptionError("feederports '%s' does not contain '-'" % options.feederports) (lower, upper) = options.feederports.split('-') options.feederports = range(int(lower), int(upper) + 1) # check if a config file was specified; if so, parse config and copy over if len(args) > 1: workerFile = args[1] _readConfig(workerFile, options) # set default values for all unset options if not options.host: options.host = 'localhost' if not options.transport: options.transport = 'ssl' if not options.port: if options.transport == "tcp": options.port = configure.defaultTCPManagerPort elif options.transport == "ssl": options.port = configure.defaultSSLManagerPort # set a default name if none is given if not options.name: if options.host == 'localhost': options.name = 'localhost' log.debug('worker', 'Setting worker name localhost') else: import socket options.name = socket.gethostname() log.debug('worker', 'Setting worker name %s (from hostname)' % options.name) if options.feederports is None and not options.randomFeederports: options.feederports = configure.defaultGstPortRange log.debug('worker', 'Using default feederports %r' % options.feederports) # check for wrong options/arguments if not options.transport in ['ssl', 'tcp']: sys.stderr.write('ERROR: wrong transport %s, must be ssl or tcp\n' % options.transport) return 1 # reset FLU_DEBUG which could be different after parsing XML file if options.debug: log.setFluDebug(options.debug) if options.daemonizeTo and not options.daemonize: sys.stderr.write( 'ERROR: --daemonize-to can only be used with -D/--daemonize.\n') return 1 if options.serviceName and not options.daemonize: sys.stderr.write( 'ERROR: --service-name can only be used with -D/--daemonize.\n') return 1 brain = worker.WorkerBrain(options) # Now bind and listen to our unix and tcp sockets if not brain.listen(): sys.stderr.write('ERROR: Failed to listen on worker ports.\n') return 1 name = options.name if options.daemonize: if options.serviceName: name = options.serviceName if not options.daemonizeTo: options.daemonizeTo = "/" startup("worker", name, options.daemonize, options.daemonizeTo) log.debug('worker', 'Running Flumotion version %s' % configure.version) import twisted.copyright log.debug('worker', 'Running against Twisted version %s' % twisted.copyright.version) # register all package paths (FIXME: this should go away when # components come from manager) from flumotion.common import setup setup.setupPackagePath() # FIXME: why address='localhost' ? authenticator = pb.Authenticator(username=options.username, password=options.password, address='localhost', avatarId=options.name) info = connection.PBConnectionInfo(options.host, options.port, options.transport == "ssl", authenticator) brain.login(info) log.info('worker', 'Connecting to manager %s using %s' % (info, options.transport.upper())) # go into the reactor main loop reactor.run() return 0
log.debug('manager', 'Using certificate %s' % options.certificate) if not options.name and cfg.manager.name: options.name = cfg.manager.name log.debug('manager', 'Setting manager name to %s' % options.name) # environment debug > command-line debug > config file debug if not options.debug and cfg.manager.fludebug \ and not 'FLU_DEBUG' in os.environ: options.debug = cfg.manager.fludebug log.debug('manager', 'Setting debug level to config file value %s' % options.debug) # set debug level as soon as we can after deciding if options.debug: log.setFluDebug(options.debug) # set default values for all unset options if not options.host: options.host = "" # needed for bind to work if not options.transport: options.transport = 'ssl' if not options.port: if options.transport == "tcp": options.port = defaultTCPPort elif options.transport == "ssl": options.port = defaultSSLPort if not options.certificate and options.transport == 'ssl': options.certificate = 'default.pem' if not options.name: # if the file is in a directory under a 'managers' directory,