def _reset_global_config(self): from pecan import configuration configuration.set_config( dict(configuration.initconf()), overwrite=True ) os.environ.pop('PECAN_CONFIG', None)
def setup_app(pecan_config=None, extra_hooks=None): # FIXME: Replace DBHook with a hooks.TransactionHook app_hooks = [hooks.ConfigHook(), hooks.DBHook()] if extra_hooks: app_hooks.extend(extra_hooks) if not pecan_config: pecan_config = get_pecan_config() if pecan_config.app.enable_acl: app_hooks.append(acl.AdminAuthHook()) configuration.set_config(dict(pecan_config), overwrite=True) app = make_app( pecan_config.app.root, static_root=pecan_config.app.static_root, template_path=pecan_config.app.template_path, logging=getattr(pecan_config, 'logging', {}), debug=getattr(pecan_config.app, 'debug', False), force_canonical=getattr(pecan_config.app, 'force_canonical', True), hooks=app_hooks, wrap_app=middleware.ParsableErrorMiddleware, ) if pecan_config.app.enable_acl: return acl.install(app, cfg.CONF) return app
def __init__(self, name, uri, parsers=None, con=None, config=None): if config: configuration.set_config(config) if not con: self.con = index.Connector() else: self.con = con self.c = Commits(self.con) self.t = Tags(self.con) if not os.path.isdir(conf.git_store): os.makedirs(conf.git_store) self.name = name self.uri = uri self.base_id = '%s:%s' % (self.uri, self.name) self.seen_refs_path = os.path.join(conf.db_path, SEEN_REFS_CACHED) if not parsers: self.parsers = [] else: self.parsers = parsers self.parsers_compiled = False self.local = os.path.join(conf.git_store, self.name, self.uri.replace('/', '_')) if not os.path.isdir(self.local): os.makedirs(self.local) self.credentials_helper_path = os.path.join( sys.prefix, 'bin', 'repoxplorer-git-credentials-helper')
def test_paint_from_file(self): from pecan import configuration configuration.set_config(os.path.join( __here__, 'config_fixtures/foobar.py' )) assert dict(configuration._runtime_conf) != {'foo': 'bar'} assert configuration._runtime_conf.foo == 'bar'
def app(request): _config = configuration.conf_from_file(config_file()).to_dict() config = deepcopy(_config) configuration.set_config(config, overwrite=True) # Set up a fake app app = TestApp(load_test_app(config)) return app
def test_overwrite_from_file(self): from pecan import configuration configuration.set_config(os.path.join( __here__, 'config_fixtures/foobar.py', ), overwrite=True) assert dict(configuration._runtime_conf) == {'foo': 'bar'}
def test_overwrite_from_file(self): from pecan import configuration configuration.set_config(os.path.join( __here__, 'config_fixtures/foobar.py', ), overwrite=True ) assert dict(configuration._runtime_conf) == {'foo': 'bar'}
def reset_global_config(): """ When tests alter application configurations they can get sticky and pollute other tests that might rely on a pristine configuration. This helper will reset the config by overwriting it with ``pecan.configuration.DEFAULT``. """ from pecan import configuration configuration.set_config(dict(configuration.initconf()), overwrite=True) os.environ.pop('PECAN_CONFIG', None)
def test_run(self): path = os.path.join(os.path.dirname(__file__), 'configs', 'discovery.py') configuration.set_config(path) result = AddTask.delay(1, 2) self.assertEqual(result.result, 3) result = concat('Hello, ', 'there!') self.assertEqual(result, 'Hello, there!')
def __init__(self, projects, con=None, config=None): if config: configuration.set_config(config) if not con: self.con = index.Connector() else: self.con = con self.projects = projects self.c = Commits(self.con) self.seen_refs_path = os.path.join(conf.db_path, SEEN_REFS_CACHED)
def load_app(self): config = configparser.ConfigParser() config.read(self.args.config_file) surveil_cfg = {"surveil_api_config": dict([i for i in config.items("surveil")])} configuration.set_config(surveil_cfg, overwrite=True) configuration.set_config(self.args.pecan_config, overwrite=False) app = deploy.loadapp('config:%s' % self.args.api_paste_config) app.config = configuration._runtime_conf return app
def load_app(self): config = configparser.ConfigParser() config.read(self.args.config_file) surveil_cfg = { "surveil_api_config": dict([i for i in config.items("surveil")]) } configuration.set_config(surveil_cfg, overwrite=True) configuration.set_config(self.args.pecan_config, overwrite=False) app = deploy.loadapp('config:%s' % self.args.api_paste_config) app.config = configuration._runtime_conf return app
def reset_global_config(): """ When tests alter application configurations they can get sticky and pollute other tests that might rely on a pristine configuration. This helper will reset the config by overwriting it with ``pecan.configuration.DEFAULT``. """ from pecan import configuration configuration.set_config( dict(configuration.initconf()), overwrite=True ) os.environ.pop('PECAN_CONFIG', None)
def reload_config(): from pecan import configuration config = configuration.conf_from_file(config_file()).to_dict() # Add the appropriate connection string to the app config. config['sqlalchemy'] = { 'url': '%s/%s' % (BIND, DBNAME), 'encoding': 'utf-8', 'poolclass': NullPool } configuration.set_config(config, overwrite=True) _db.init_model()
def test_queue_autodiscover(self): """ Ensure that if the configuration file *does not* include an explicit list of queues, a list of queues is auto-discovered. """ path = os.path.join(os.path.dirname(__file__), 'configs', 'discovery.py') configuration.set_config(path) conf = base_app.conf c = CeleryCommand('celeryd') c.config = conf self.assertEqual(c.determine_queues(), 'default,strings,math')
def reload_config(): from pecan import configuration config = configuration.conf_from_file(config_file()).to_dict() # Add the appropriate connection string to the app config. config['sqlalchemy'] = { 'url': '%s/%s' % (BIND, DBNAME), 'encoding': 'utf-8', 'poolclass': NullPool } configuration.set_config( config, overwrite=True ) _db.init_model()
def setup_app(pecan_config=None, debug=False, argv=None): """Creates and returns a pecan wsgi app.""" if argv is None: argv = sys.argv octavia_service.prepare_service(argv) cfg.CONF.log_opt_values(LOG, logging.DEBUG) _init_drivers() if not pecan_config: pecan_config = get_pecan_config() pecan_configuration.set_config(dict(pecan_config), overwrite=True) return pecan_make_app(pecan_config.app.root, wrap_app=_wrap_app, debug=debug, hooks=pecan_config.app.hooks, wsme=pecan_config.wsme)
def init(self, parser, opts, args): if len(args) != 1: parser.error("No configuration file was specified.") self.cfgfname = os.path.normpath(os.path.join( os.getcwd(), args[0])) self.cfgfname = os.path.abspath(self.cfgfname) if not os.path.exists(self.cfgfname): parser.error("Config file not found: %s" % self.cfgfname) from pecan.configuration import _runtime_conf, set_config set_config(self.cfgfname, overwrite=True) # If available, use the host and port from the pecan config file cfg = {} if _runtime_conf.get('server'): server = _runtime_conf['server'] if hasattr(server, 'host') and hasattr(server, 'port'): cfg['bind'] = '%s:%s' % (server.host, server.port) return cfg
def __init__(self, name, uri, parsers=None, con=None, config=None): if config: configuration.set_config(config) if not con: self.con = index.Connector() else: self.con = con self.c = Commits(self.con) self.t = Tags(self.con) if not os.path.isdir(conf.git_store): os.makedirs(conf.git_store) self.name = name self.uri = uri self.base_id = '%s:%s' % (self.uri, self.name) if not parsers: self.parsers = [] else: self.parsers = parsers self.parsers_compiled = False self.local = os.path.join(conf.git_store, self.name, self.uri.replace('/', '_')) if not os.path.isdir(self.local): os.makedirs(self.local)
def init(self, parser, opts, args): if len(args) != 1: parser.error("No configuration file was specified.") self.cfgfname = os.path.normpath( os.path.join(os.getcwd(), args[0]) ) self.cfgfname = os.path.abspath(self.cfgfname) if not os.path.exists(self.cfgfname): parser.error("Config file not found: %s" % self.cfgfname) from pecan.configuration import _runtime_conf, set_config set_config(self.cfgfname, overwrite=True) # If available, use the host and port from the pecan config file cfg = {} if _runtime_conf.get('server'): server = _runtime_conf['server'] if hasattr(server, 'host') and hasattr(server, 'port'): cfg['bind'] = '%s:%s' % ( server.host, server.port ) return cfg
def _reset_global_config(self): from pecan import configuration configuration.set_config(dict(configuration.initconf()), overwrite=True) os.environ.pop('PECAN_CONFIG', None)
def main(): parser = optparse.OptionParser() parser.add_option('-d', '--demo', default=False, dest='demo', help="Create fake hosts in Alignak", action="store_true") parser.add_option('-i', '--influxdb', default=False, dest='influxdb', help="Pre-create the InfluxDB database", action='store_true') parser.add_option('-m', '--mongodb', default=False, dest='mongodb', help="Drop the existing Alignak MongoDB database", action='store_true') parser.add_option('-p', '--packs', default=False, dest='packs', help="Upload/Update configuration packs to MongoDB", action='store_true') parser.add_option('--pecan_config', '-P', default='/etc/surveil/config.py', dest='pecan_config', help='Pecan config file (config.py)') parser.add_option('--config_file', '-c', default='/etc/surveil/surveil.cfg', dest='config_file', help='Pecan config file (surveil.cfg)') opts, _ = parser.parse_args(sys.argv) surveil_api_url = 'http://*****:*****@gmail.com", pager="12", can_submit_commands=1, is_admin=0, retain_status_information=1, retain_nonstatus_information=365, min_business_impact=24) cli_surveil.config.contactgroups.create( contactgroup_name="BDFL", members=["demoContact"], alias="group Alias", contactgroup_members=["Linus", "Richard"]) cli_surveil.config.hostgroups.create( hostgroup_name="OpenStack01", members=['sw-iwebcore-01', 'srv-monitoring-01'], alias="group Alias", hostgroup_members=["AWS01", "Azure01"], notes="notes", notes_url="http://....notes.com", action_url="mail") cli_surveil.config.macromodulations.create( macromodulation_name="Demo macroModulation", modulation_period="24x7", macro={ "Linus": "Linux", "Richard": "Gnu" }) cli_surveil.config.notificationways.create( notificationway_name="Demo motificationway", host_notification_period="24x7", service_notification_period="12x7", host_notification_options=["mail", "sms"], service_notification_options=["mail"], host_notification_commands=["sms admin"], service_notification_commands=["send mail to admin"], min_business_impact="24") cli_surveil.config.realms.create( realm_name="Mordor", realm_members=["Frodon", "Gandalf", "Sauron"], default=42) cli_surveil.config.servicegroups.create( servicegroup_name="check Openstack", members=["check-ws-arbiter"], alias="group Alias", servicegroup_members=["check Keystone", "check Nova"], notes="notes", notes_url="http://....notes.com", action_url="mail") cli_surveil.config.timeperiods.create( timeperiod_name="Demo TimePeriod", exclude=["24x7", "11x12"], periods={ "day": "demo", "night": "demoNight" }, alias="aliasGroup") # Reload the shinken config cli_surveil.config.reload_config()
def test_get_ansible_tar_not_configured(self, app): from pecan.configuration import set_config set_config({"api_user": "******", "api_key": "key"}, overwrite=True) result = app.get('/setup/ansible/', expect_errors=True) assert result.status_int == 404
def load_configuration(self, name): set_config(name) return _runtime_conf
def main(): parser = optparse.OptionParser() parser.add_option('-d', '--demo', default=False, dest='demo', help="Create fake hosts in Alignak", action="store_true") parser.add_option('-i', '--influxdb', default=False, dest='influxdb', help="Pre-create the InfluxDB database", action='store_true') parser.add_option('-m', '--mongodb', default=False, dest='mongodb', help="Drop the existing Alignak MongoDB database", action='store_true') parser.add_option('-p', '--packs', default=False, dest='packs', help="Upload/Update configuration packs to MongoDB", action='store_true') parser.add_option('--pecan_config', '-P', default='/etc/surveil/config.py', dest='pecan_config', help='Pecan config file (config.py)') parser.add_option('--config_file', '-c', default='/etc/surveil/surveil.cfg', dest='config_file', help='Pecan config file (surveil.cfg)') opts, _ = parser.parse_args(sys.argv) surveil_api_url = 'http://*****:*****@gmail.com", pager="12", can_submit_commands=1, is_admin=0, retain_status_information=1, retain_nonstatus_information=365, min_business_impact=24 ) cli_surveil.config.contactgroups.create( contactgroup_name="BDFL", members=["demoContact"], alias="group Alias", contactgroup_members=["Linus", "Richard"] ) cli_surveil.config.hostgroups.create( hostgroup_name="OpenStack01", members=['sw-iwebcore-01', 'srv-monitoring-01'], alias="group Alias", hostgroup_members=["AWS01", "Azure01"], notes="notes", notes_url="http://....notes.com", action_url="mail" ) cli_surveil.config.macromodulations.create( macromodulation_name="Demo macroModulation", modulation_period="24x7", macro={"Linus": "Linux", "Richard": "Gnu"} ) cli_surveil.config.notificationways.create( notificationway_name="Demo motificationway", host_notification_period="24x7", service_notification_period="12x7", host_notification_options=["mail", "sms"], service_notification_options=["mail"], host_notification_commands=["sms admin"], service_notification_commands=["send mail to admin"], min_business_impact="24" ) cli_surveil.config.realms.create( realm_name="Mordor", realm_members=["Frodon", "Gandalf", "Sauron"], default=42 ) cli_surveil.config.servicegroups.create( servicegroup_name="check Openstack", members=["check-ws-arbiter"], alias="group Alias", servicegroup_members=["check Keystone", "check Nova"], notes="notes", notes_url="http://....notes.com", action_url="mail" ) cli_surveil.config.timeperiods.create( timeperiod_name="Demo TimePeriod", exclude=["24x7", "11x12"], periods={"day": "demo", "night": "demoNight"}, alias="aliasGroup" ) # Reload the shinken config cli_surveil.config.reload_config()
def test_paint_from_dict(self): from pecan import configuration configuration.set_config({'foo': 'bar'}) assert dict(configuration._runtime_conf) != {'foo': 'bar'} self.assertEqual(configuration._runtime_conf.foo, 'bar')
def test_overwrite_from_dict(self): from pecan import configuration configuration.set_config({'foo': 'bar'}, overwrite=True) assert dict(configuration._runtime_conf) == {'foo': 'bar'}
def test_autodiscovery(self): path = os.path.join(os.path.dirname(__file__), 'configs', 'discovery.py') configuration.set_config(path) conf = base_app.conf self.assertEqual(conf.get('CELERY_IMPORTS'), ('sampleproj.tasks',))
def tearDown(self): from pecan import configuration configuration.set_config( dict(configuration.initconf()), overwrite=True )
def tearDown(self): from pecan import configuration configuration.set_config(dict(configuration.initconf()), overwrite=True)
def test_get_ansible_tar_not_configured(self, app): from pecan.configuration import set_config set_config({}, overwrite=True) result = app.get('/setup/ansible/', expect_errors=True) assert result.status_int == 404
def test_config_set_from_file(self): path = os.path.join(os.path.dirname(__file__), "test_config", "empty.py") configuration.set_config(path) assert list(_runtime_conf.server) == list(configuration.initconf().server)
def test_config_set_from_module(self): configuration.set_config("config") self.assertEqual(_runtime_conf.server.host, "1.1.1.1")
def test_config_set_from_module_with_extension(self): configuration.set_config("config.py") self.assertEqual(_runtime_conf.server.host, "1.1.1.1")