def initialize_nova_flags(config_file): from nova import flags from nova import log as logging from nova import service from nova import utils flags.parse_args(['int_tests'], default_config_files=[config_file]) logging.setup() utils.monkey_patch()
def get_server(): """Get the Nova API server.""" args = sys.argv args.append('--config-dir=etc/nova') config.parse_args(args) logging.setup("nova") utils.monkey_patch() should_use_ssl = 'osapi_compute' in CONF.enabled_ssl_apis server = service.WSGIService('osapi_compute', use_ssl=should_use_ssl) return server
def setup_logging(): logging.setup(CONF, 'kuryr-kubernetes') logging.set_defaults(default_log_levels=logging.get_default_log_levels()) version_k8s = version.version_info.version_string() LOG.info("Logging enabled!") LOG.info("%(prog)s version %(version)s", { 'prog': sys.argv[0], 'version': version_k8s })
""" pass def local_path(self, volume): raise NotImplementedError() if __name__ == "__main__": """The following code make it possible to execute a set of arbitrary commands on the SAN without starting up the nova-volume service. The script requires no additional configuration beyond one already used by regular nova services. To run the script use the following command line: python <nova-pkg-dir>/volume/san.py [--config=<optional-file-with-extra-cfg>] <cmd1> ... <cmdN> NOTE: when working with the source packaged nova use the command line cd <nova-src-dir> && python nova/volume/san.py ... """ utils.default_flagfile() args = flags.FLAGS(sys.argv) logging.setup() utils.monkey_patch() volume_driver = utils.import_object(FLAGS.volume_driver) volume_driver.do_setup(None) volume_driver.check_for_setup_error() for command in args[1:]: sys.stdout.write('\n'.join(volume_driver._execute(command)))
self.__result.printErrors() self.__result.printSummary(self.__start_time, stop_time) self.config.plugins.finalize(self.__result) if self.show_elapsed: self._writeSlowTests(self.__result) def run(self, test): result_ = super(NovaTestRunner, self).run(test) if self.show_elapsed: self._writeSlowTests(result_) self.__finished = True return result_ if __name__ == '__main__': logging.setup() # If any argument looks like a test name but doesn't have "nova.tests" in # front of it, automatically add that so we don't have to type as much show_elapsed = True argv = [] test_fixture = os.getenv("UNITTEST_FIXTURE", "trove") for x in sys.argv: if x.startswith('test_'): argv.append('%s.tests.%s' % (test_fixture, x)) elif x.startswith('--hide-elapsed'): show_elapsed = False else: argv.append(x) testdir = os.path.abspath(os.path.join(test_fixture, "tests")) c = config.Config(stream=sys.stdout,
def main(start=True, argv=None): try: import twisted except ImportError: print "Orbited requires Twisted, which is not installed. See http://twistedmatrix.com/trac/ for installation instructions." sys.exit(1) ################# # This corrects a bug in Twisted 8.2.0 for certain Python 2.6 builds on Windows # Twisted ticket: http://twistedmatrix.com/trac/ticket/3868 # -mario try: from twisted.python import lockfile except ImportError: from orbited import __path__ as orbited_path sys.path.append(os.path.join(orbited_path[0],"hotfixes","win32api")) from twisted.python import lockfile lockfile.kill = None ################# from optparse import OptionParser parser = OptionParser() parser.add_option( "-c", "--config", dest="config", default=None, help="path to configuration file" ) parser.add_option( "-v", "--version", dest="version", action="store_true", default=False, help="print Orbited version" ) parser.add_option( "-p", "--profile", dest="profile", action="store_true", default=False, help="run Orbited with a profiler" ) parser.add_option( "-q", "--quickstart", dest="quickstart", action="store_true", default=False, help="run Orbited on port 8000 and MorbidQ on port 61613" ) if argv == None: argv = sys.argv[1:] (options, args) = parser.parse_args(argv) if args: print 'the "orbited" command does not accept positional arguments. type "orbited -h" for options.' sys.exit(1) if options.version: print "Orbited version: %s" % (version,) sys.exit(0) if options.quickstart: config.map['[listen]'].append('http://:8000') config.map['[listen]'].append('stomp://:61613') config.map['[access]'][('localhost',61613)] = ['*'] print "Quickstarting Orbited" else: # load configuration from configuration # file and from command line arguments. config.setup(options=options) logging.setup(config.map) # we can now safely get loggers. global logger; logger = logging.get_logger('orbited.start') ############ # This crude garbage corrects a bug in twisted # Orbited ticket: http://orbited.org/ticket/111 # Twisted ticket: http://twistedmatrix.com/trac/ticket/2447 # XXX : do we still need this? # -mcarter 9/24/09 # import twisted.web.http # twisted.web.http.HTTPChannel.setTimeout = lambda self, arg: None # twisted.web.http.HTTPChannel.resetTimeout = lambda self: None ############ # NB: we need to install the reactor before using twisted. reactor_name = config.map['[global]'].get('reactor') if reactor_name: install = _import('twisted.internet.%sreactor.install' % reactor_name) install() logger.info('using %s reactor' % reactor_name) from twisted.internet import reactor from twisted.web import resource from twisted.web import server from twisted.web import static # import orbited.system if 'INDEX' in config.map['[static]']: root = static.File(config.map['[static]']['INDEX']) else: root = resource.Resource() static_files = static.File(os.path.join(os.path.dirname(__file__), 'static')) root.putChild('static', static_files) # Note: hard coding timeout to 120. site = server.Site(root, timeout=120) from proxy import ProxyFactory from csp_twisted import CometPort reactor.listenWith(CometPort, factory=ProxyFactory(), resource=root, childName='csp') _setup_static(root, config.map) start_listening(site, config.map, logger) # switch uid and gid to configured user and group. if os.name == 'posix' and os.getuid() == 0: user = config.map['[global]'].get('user') group = config.map['[global]'].get('group') if user: import pwd import grp try: pw = pwd.getpwnam(user) uid = pw.pw_uid if group: gr = grp.getgrnam(group) gid = gr.gr_gid else: gid = pw.pw_gid gr = grp.getgrgid(gid) group = gr.gr_name except Exception, e: logger.error('Aborting; Unknown user or group: %s' % e) sys.exit(1) logger.info('switching to user %s (uid=%d) and group %s (gid=%d)' % (user, uid, group, gid)) os.setgid(gid) os.setuid(uid) else: logger.error('Aborting; You must define a user (and optionally a group) in the configuration file.') sys.exit(1)