Example #1
0
 def _reset_global_config(self):
     from pecan import configuration
     configuration.set_config(
         dict(configuration.initconf()),
         overwrite=True
     )
     os.environ.pop('PECAN_CONFIG', None)
Example #2
0
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
Example #3
0
 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')
Example #4
0
 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'
Example #5
0
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
Example #6
0
 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'}
Example #7
0
 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'
Example #8
0
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
Example #9
0
 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'}
Example #10
0
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)
Example #11
0
 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!')
Example #12
0
 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)
Example #13
0
    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
Example #14
0
    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
Example #15
0
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)
Example #16
0
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()
Example #17
0
    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')
Example #18
0
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()
Example #19
0
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)
Example #20
0
        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
Example #21
0
 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)
Example #22
0
File: serve.py Project: anh/pecan
        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
Example #23
0
 def _reset_global_config(self):
     from pecan import configuration
     configuration.set_config(dict(configuration.initconf()),
                              overwrite=True)
     os.environ.pop('PECAN_CONFIG', None)
Example #24
0
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()
Example #25
0
 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
Example #26
0
 def load_configuration(self, name):
     set_config(name)
     return _runtime_conf
Example #27
0
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()
Example #28
0
 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')
Example #29
0
 def test_overwrite_from_dict(self):
     from pecan import configuration
     configuration.set_config({'foo': 'bar'}, overwrite=True)
     assert dict(configuration._runtime_conf) == {'foo': 'bar'}
Example #30
0
 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',))
Example #31
0
 def tearDown(self):
     from pecan import configuration
     configuration.set_config(
         dict(configuration.initconf()),
         overwrite=True
     )
Example #32
0
 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')
Example #33
0
 def test_overwrite_from_dict(self):
     from pecan import configuration
     configuration.set_config({'foo': 'bar'}, overwrite=True)
     assert dict(configuration._runtime_conf) == {'foo': 'bar'}
Example #34
0
 def tearDown(self):
     from pecan import configuration
     configuration.set_config(dict(configuration.initconf()),
                              overwrite=True)
Example #35
0
 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
Example #36
0
 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)
Example #37
0
 def test_config_set_from_module(self):
     configuration.set_config("config")
     self.assertEqual(_runtime_conf.server.host, "1.1.1.1")
Example #38
0
 def test_config_set_from_module_with_extension(self):
     configuration.set_config("config.py")
     self.assertEqual(_runtime_conf.server.host, "1.1.1.1")