def test_get_connection_no_such_engine(self):
     conf = mock.Mock()
     conf.database.connection = 'no-such-engine://localhost'
     try:
         storage.get_connection(conf)
     except RuntimeError as err:
         self.assertIn('no-such-engine', unicode(err))
示例#2
0
 def setUp(self):
     super(SQLiteManager, self).setUp()
     self.url = self._url
     self.connection = storage.get_connection(
         self._conf, self._url, 'ceilometer.metering.storage')
     self.event_connection = storage.get_connection(
         self._conf, self._url, 'ceilometer.event.storage')
 def test_get_connection_no_such_engine(self):
     conf = mock.Mock()
     conf.database.connection = 'no-such-engine://localhost'
     try:
         storage.get_connection(conf)
     except RuntimeError as err:
         self.assertIn('no-such-engine', unicode(err))
示例#4
0
    def setUp(self):
        super(HBaseManager, self).setUp()
        self.connection = storage.get_connection(
            self.url, 'ceilometer.metering.storage')
        self.event_connection = storage.get_connection(
            self.url, 'ceilometer.event.storage')
        # Unique prefix for each test to keep data is distinguished because
        # all test data is stored in one table
        data_prefix = str(uuid.uuid4().hex)

        def table(conn, name):
            return mocks.MockHBaseTable(name, conn, data_prefix)

        # Mock only real HBase connection, MConnection "table" method
        # stays origin.
        mock.patch('happybase.Connection.table', new=table).start()
        # We shouldn't delete data and tables after each test,
        # because it last for too long.
        # All tests tables will be deleted in setup-test-env.sh
        mock.patch("happybase.Connection.disable_table",
                   new=mock.MagicMock()).start()
        mock.patch("happybase.Connection.delete_table",
                   new=mock.MagicMock()).start()
        mock.patch("happybase.Connection.create_table",
                   new=mock.MagicMock()).start()
示例#5
0
def upgrade():
    conf = cfg.ConfigOpts()
    conf.register_cli_opts([
        cfg.BoolOpt('skip-metering-database',
                    help='Skip metering database upgrade.',
                    default=False),
        cfg.BoolOpt('skip-gnocchi-resource-types',
                    help='Skip gnocchi resource-types upgrade.',
                    default=False),
    ])

    service.prepare_service(conf=conf)
    if conf.skip_metering_database:
        LOG.info("Skipping metering database upgrade")
    else:

        url = (getattr(conf.database, 'metering_connection')
               or conf.database.connection)
        if url:
            LOG.debug("Upgrading metering database")
            storage.get_connection(conf, url).upgrade()
        else:
            LOG.info("Skipping metering database upgrade, "
                     "legacy database backend not configured.")

    if conf.skip_gnocchi_resource_types:
        LOG.info("Skipping Gnocchi resource types upgrade")
    else:
        LOG.debug("Upgrading Gnocchi resource types")
        from ceilometer import gnocchi_client
        gnocchi_client.upgrade_resource_types(conf)
示例#6
0
 def test_get_connection_no_such_engine(self):
     try:
         storage.get_connection(self.CONF,
                                'no-such-engine://localhost',
                                'ceilometer.metering.storage')
     except RuntimeError as err:
         self.assertIn('no-such-engine', six.text_type(err))
示例#7
0
def upgrade():
    conf = cfg.ConfigOpts()
    conf.register_cli_opts([
        cfg.BoolOpt('skip-metering-database',
                    help='Skip metering database upgrade.',
                    default=False),
        cfg.BoolOpt('skip-gnocchi-resource-types',
                    help='Skip gnocchi resource-types upgrade.',
                    default=False),
    ])

    service.prepare_service(conf=conf)
    if conf.skip_metering_database:
        LOG.info("Skipping metering database upgrade")
    else:

        url = (getattr(conf.database, 'metering_connection') or
               conf.database.connection)
        if url:
            LOG.debug("Upgrading metering database")
            storage.get_connection(conf, url).upgrade()
        else:
            LOG.info("Skipping metering database upgrade, "
                     "legacy database backend not configured.")

    if conf.skip_gnocchi_resource_types:
        LOG.info("Skipping Gnocchi resource types upgrade")
    else:
        LOG.debug("Upgrading Gnocchi resource types")
        from ceilometer import gnocchi_client
        gnocchi_client.upgrade_resource_types(conf)
示例#8
0
    def setUp(self):
        super(HBaseManager, self).setUp()
        self.connection = storage.get_connection(
            self.url, 'ceilometer.metering.storage')
        self.alarm_connection = storage.get_connection(
            self.url, 'ceilometer.alarm.storage')
        # Unique prefix for each test to keep data is distinguished because
        # all test data is stored in one table
        data_prefix = str(uuid.uuid4().hex)

        def table(conn, name):
            return mocks.MockHBaseTable(name, conn, data_prefix)

        # Mock only real HBase connection, MConnection "table" method
        # stays origin.
        mock.patch('happybase.Connection.table', new=table).start()
        # We shouldn't delete data and tables after each test,
        # because it last for too long.
        # All tests tables will be deleted in setup-test-env.sh
        mock.patch("happybase.Connection.disable_table",
                   new=mock.MagicMock()).start()
        mock.patch("happybase.Connection.delete_table",
                   new=mock.MagicMock()).start()
        mock.patch("happybase.Connection.create_table",
                   new=mock.MagicMock()).start()
示例#9
0
 def setUp(self):
     super(SQLManager, self).setUp()
     self.connection = storage.get_connection(
         self.url, 'ceilometer.metering.storage')
     self.alarm_connection = storage.get_connection(
         self.url, 'ceilometer.alarm.storage')
     self.event_connection = storage.get_connection(
         self.url, 'ceilometer.event.storage')
示例#10
0
文件: db.py 项目: ravibeta/ceilometer
 def setUp(self):
     super(MySQLDbManager, self).setUp()
     self.connection = storage.get_connection(
         self.url, 'ceilometer.metering.storage')
     self.alarm_connection = storage.get_connection(
         self.url, 'ceilometer.alarm.storage')
     self.event_connection = storage.get_connection(
         self.url, 'ceilometer.event.storage')
示例#11
0
 def setUp(self):
     super(ElasticSearchManager, self).setUp()
     self.connection = storage.get_connection(self._conf, "sqlite://", "ceilometer.metering.storage")
     self.event_connection = storage.get_connection(self._conf, self.url, "ceilometer.event.storage")
     # prefix each test with unique index name
     self.event_connection.index_name = "events_%s" % uuid.uuid4().hex
     # force index on write so data is queryable right away
     self.event_connection._refresh_on_write = True
示例#12
0
 def setUp(self):
     super(MongoDbManager, self).setUp()
     with warnings.catch_warnings():
         warnings.filterwarnings(action="ignore", message=".*you must provide a username and password.*")
         try:
             self.connection = storage.get_connection(self._conf, self.url, "ceilometer.metering.storage")
             self.event_connection = storage.get_connection(self._conf, self.url, "ceilometer.event.storage")
         except storage.StorageBadVersion as e:
             raise testcase.TestSkipped(six.text_type(e))
示例#13
0
 def setUp(self):
     super(ElasticSearchManager, self).setUp()
     self.connection = storage.get_connection(
         'sqlite://', 'ceilometer.metering.storage')
     self.event_connection = storage.get_connection(
         self.url, 'ceilometer.event.storage')
     # prefix each test with unique index name
     self.event_connection.index_name = 'events_%s' % uuid.uuid4().hex
     # force index on write so data is queryable right away
     self.event_connection._refresh_on_write = True
示例#14
0
 def setUp(self):
     super(MongoDbManager, self).setUp()
     with warnings.catch_warnings():
         warnings.filterwarnings(
             action='ignore',
             message='.*you must provide a username and password.*')
         try:
             self.connection = storage.get_connection(
                 self.url, 'ceilometer.metering.storage')
             self.alarm_connection = storage.get_connection(
                 self.url, 'ceilometer.alarm.storage')
         except storage.StorageBadVersion as e:
             raise testcase.TestSkipped(six.text_type(e))
示例#15
0
 def setUp(self):
     super(MongoDbManager, self).setUp()
     with warnings.catch_warnings():
         warnings.filterwarnings(
             action='ignore',
             message='.*you must provide a username and password.*')
         try:
             self.connection = storage.get_connection(
                 self.url, 'ceilometer.metering.storage')
             self.event_connection = storage.get_connection(
                 self.url, 'ceilometer.event.storage')
         except storage.StorageBadVersion as e:
             raise testcase.TestSkipped(six.text_type(e))
def main(argv):
    cfg.CONF([], project='ceilometer')
    if os.getenv("CEILOMETER_TEST_STORAGE_URL", "").startswith("hbase://"):
        url = ("%s?table_prefix=%s" %
               (os.getenv("CEILOMETER_TEST_STORAGE_URL"),
                os.getenv("CEILOMETER_TEST_HBASE_TABLE_PREFIX", "test")))
        conn = storage.get_connection(url, 'ceilometer.metering.storage')
        event_conn = storage.get_connection(url, 'ceilometer.event.storage')
        for arg in argv:
            if arg == "--upgrade":
                conn.upgrade()
                event_conn.upgrade()
            if arg == "--clear":
                conn.clear()
                event_conn.clear()
示例#17
0
 def setUp(self):
     super(TestBase, self).setUp()
     cfg.CONF.set_override('connection', self.database_connection,
                           group='database')
     self.conn = storage.get_connection(cfg.CONF)
     self.conn.upgrade()
     self.conn.clear()
示例#18
0
def setup_app(pecan_config=None, extra_hooks=None):
    # FIXME: Replace DBHook with a hooks.TransactionHook
    app_hooks = [hooks.ConfigHook(),
                 hooks.DBHook(
                     storage.get_connection(cfg.CONF),
                 ),
                 hooks.PipelineHook(),
                 hooks.TranslationHook()]
    if extra_hooks:
        app_hooks.extend(extra_hooks)

    if not pecan_config:
        pecan_config = get_pecan_config()

    pecan.configuration.set_config(dict(pecan_config), overwrite=True)

    app = pecan.make_app(
        pecan_config.app.root,
        static_root=pecan_config.app.static_root,
        template_path=pecan_config.app.template_path,
        debug=CONF.debug,
        force_canonical=getattr(pecan_config.app, 'force_canonical', True),
        hooks=app_hooks,
        wrap_app=middleware.ParsableErrorMiddleware,
        guess_content_type_from_ext=False
    )

    if getattr(pecan_config.app, 'enable_acl', True):
        return acl.install(app, cfg.CONF)

    return app
示例#19
0
文件: api.py 项目: markmc/ceilometer
    def setUp(self):
        super(FunctionalTest, self).setUp()

        cfg.CONF.database_connection = 'test://localhost/%s' % self.DBNAME
        self.conn = storage.get_connection(cfg.CONF)
        self.conn.drop_database(self.DBNAME)
        self.app = self._make_app()
示例#20
0
 def setUp(self):
     super(TestBase, self).setUp()
     cfg.CONF.set_override('connection',
                           str(self.database_connection),
                           group='database')
     self.conn = storage.get_connection(cfg.CONF)
     self.conn.upgrade()
示例#21
0
文件: db.py 项目: hhamalai/ceilometer
    def setUp(self):
        super(TestBase, self).setUp()

        self.useFixture(self.db_manager)

        self.CONF = self.useFixture(config.Config()).conf
        self.CONF.set_override('connection',
                               self.db_manager.connection,
                               group='database')

        with warnings.catch_warnings():
            warnings.filterwarnings(
                action='ignore',
                message='.*you must provide a username and password.*')
            try:
                self.conn = storage.get_connection(self.CONF)
            except storage.StorageBadVersion as e:
                self.skipTest(six.text_type(e))
        self.conn.upgrade()

        self.useFixture(
            oslo_mock.Patch('ceilometer.storage.get_connection',
                            return_value=self.conn))

        self.CONF([], project='ceilometer')

        # Set a default location for the pipeline config file so the
        # tests work even if ceilometer is not installed globally on
        # the system.
        self.CONF.set_override('pipeline_cfg_file',
                               self.path_get('etc/ceilometer/pipeline.yaml'))
示例#22
0
def setup_app(pecan_config=None, extra_hooks=None):
    # FIXME: Replace DBHook with a hooks.TransactionHook
    app_hooks = [
        hooks.ConfigHook(),
        hooks.DBHook(storage.get_connection(cfg.CONF), ),
        hooks.PipelineHook(),
        hooks.TranslationHook()
    ]
    if extra_hooks:
        app_hooks.extend(extra_hooks)

    if not pecan_config:
        pecan_config = get_pecan_config()

    pecan.configuration.set_config(dict(pecan_config), overwrite=True)

    app = pecan.make_app(pecan_config.app.root,
                         static_root=pecan_config.app.static_root,
                         template_path=pecan_config.app.template_path,
                         debug=CONF.debug,
                         force_canonical=getattr(pecan_config.app,
                                                 'force_canonical', True),
                         hooks=app_hooks,
                         wrap_app=middleware.ParsableErrorMiddleware,
                         guess_content_type_from_ext=False)

    if getattr(pecan_config.app, 'enable_acl', True):
        return acl.install(app, cfg.CONF)

    return app
示例#23
0
文件: db.py 项目: c08007/ceilometer
    def setUp(self):
        super(TestBase, self).setUp()
        self.CONF = self.useFixture(config.Config()).conf
        self.CONF.set_override('connection', str(self.database_connection),
                               group='database')

        with warnings.catch_warnings():
            warnings.filterwarnings(
                action='ignore',
                message='.*you must provide a username and password.*')
            try:
                self.conn = storage.get_connection(self.CONF)
            except storage.StorageBadVersion as e:
                self.skipTest(str(e))
        self.conn.upgrade()

        self.CONF([], project='ceilometer')

        # Set a default location for the pipeline config file so the
        # tests work even if ceilometer is not installed globally on
        # the system.
        self.CONF.set_override(
            'pipeline_cfg_file',
            self.path_get('etc/ceilometer/pipeline.yaml')
        )
示例#24
0
def upgrade():
    conf = cfg.ConfigOpts()
    conf.register_cli_opts([
        cfg.BoolOpt('skip-metering-database',
                    help='Skip metering database upgrade.',
                    default=False),
        cfg.BoolOpt('skip-gnocchi-resource-types',
                    help='Skip gnocchi resource-types upgrade.',
                    default=False),
        cfg.IntOpt('retry',
                   min=0,
                   help='Number of times to retry on failure. '
                   'Default is to retry forever.'),
    ])

    service.prepare_service(conf=conf)
    if conf.skip_metering_database:
        LOG.info("Skipping metering database upgrade")
    else:

        url = (getattr(conf.database, 'metering_connection')
               or conf.database.connection)
        if url:
            LOG.debug("Upgrading metering database")
            storage.get_connection(conf, url).upgrade()
        else:
            LOG.info("Skipping metering database upgrade, "
                     "legacy database backend not configured.")

    if conf.skip_gnocchi_resource_types:
        LOG.info("Skipping Gnocchi resource types upgrade")
    else:
        LOG.debug("Upgrading Gnocchi resource types")
        from ceilometer import gnocchi_client
        from gnocchiclient import exceptions
        if conf.retry is None:
            stop = tenacity.stop_never
        else:
            stop = tenacity.stop_after_attempt(conf.retry)
        tenacity.Retrying(stop=stop,
                          retry=tenacity.retry_if_exception_type((
                              exceptions.ConnectionFailure,
                              exceptions.UnknownConnectionError,
                              exceptions.ConnectionTimeout,
                              exceptions.SSLError,
                          )))(gnocchi_client.upgrade_resource_types, conf)
示例#25
0
文件: db.py 项目: bclau/ceilometer
 def setUp(self):
     super(TestBase, self).setUp()
     cfg.CONF.set_override('connection', str(self.database_connection),
                           group='database')
     try:
         self.conn = storage.get_connection(cfg.CONF)
     except storage.StorageBadVersion as e:
         self.skipTest(str(e))
     self.conn.upgrade()
示例#26
0
def storage_expirer():
    service.prepare_service()
    if cfg.CONF.database.time_to_live > 0:
        LOG.debug(_("Clearing expired metering data"))
        storage_conn = storage.get_connection(cfg.CONF)
        storage_conn.clear_expired_metering_data(
            cfg.CONF.database.time_to_live)
    else:
        LOG.info(_("Nothing to clean, database time to live is disabled"))
示例#27
0
def storage_expirer():
    service.prepare_service()
    if cfg.CONF.database.time_to_live > 0:
        LOG.debug(_("Clearing expired metering data"))
        storage_conn = storage.get_connection(cfg.CONF)
        storage_conn.clear_expired_metering_data(
            cfg.CONF.database.time_to_live)
    else:
        LOG.info(_("Nothing to clean, database time to live is disabled"))
示例#28
0
def main(argv):
    extra_args = cfg.CONF(
        sys.argv[1:],
        # NOTE(dhellmann): Read the configuration file(s) for the
        #ceilometer collector by default.
        default_config_files=['/etc/ceilometer/ceilometer.conf'],
    )
    db = storage.get_connection(cfg.CONF)
    command = extra_args[0] if extra_args else 'help'
    COMMANDS[command](db, extra_args[1:])
示例#29
0
def main(argv):
    extra_args = cfg.CONF(
        sys.argv[1:],
        # NOTE(dhellmann): Read the configuration file(s) for the
        #ceilometer collector by default.
        default_config_files=['/etc/ceilometer/ceilometer.conf'],
    )
    db = storage.get_connection(cfg.CONF)
    command = extra_args[0] if extra_args else 'help'
    COMMANDS[command](db, extra_args[1:])
示例#30
0
    def setUp(self):
        super(FunctionalTest, self).setUp()

        cfg.CONF.database_connection = 'test://localhost/%s' % self.DBNAME
        self.conn = storage.get_connection(cfg.CONF)
        # Don't want to use drop_database() because we
        # may end up running out of spidermonkey instances.
        # http://davisp.lighthouseapp.com/projects/26898/tickets/22
        self.conn.conn[self.DBNAME].clear()

        self.app = self._make_app()
示例#31
0
    def setUp(self):

        cfg.CONF.database_connection = 'test://localhost/%s' % self.DBNAME
        self.conn = storage.get_connection(cfg.CONF)
        # Don't want to use drop_database() because we
        # may end up running out of spidermonkey instances.
        # http://davisp.lighthouseapp.com/projects/26898/tickets/22
        self.conn.conn[self.DBNAME].clear()

        # Determine where we are so we can set up paths in the config
        root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),
                                                '..',
                                                '..',
                                                )
                                   )
        self.config = {

            'app': {
                'root': 'ceilometer.api.controllers.root.RootController',
                'modules': ['ceilometer.api'],
                'static_root': '%s/public' % root_dir,
                'template_path': '%s/ceilometer/api/templates' % root_dir,
            },

            'logging': {
                'loggers': {
                    'root': {'level': 'INFO', 'handlers': ['console']},
                    'wsme': {'level': 'INFO', 'handlers': ['console']},
                    'ceilometer': {'level': 'DEBUG',
                                   'handlers': ['console'],
                                   },
                },
                'handlers': {
                    'console': {
                        'level': 'DEBUG',
                        'class': 'logging.StreamHandler',
                        'formatter': 'simple'
                    }
                },
                'formatters': {
                    'simple': {
                        'format': ('%(asctime)s %(levelname)-5.5s [%(name)s]'
                                   '[%(threadName)s] %(message)s')
                    }
                },
            },
        }

        self.mox = mox.Mox()
        self.stubs = stubout.StubOutForTesting()

        self.app = self._make_app()
示例#32
0
    def setUp(self):
        super(StackLightManager, self).setUp()
        self.resource_url = os.getenv("CEILOMETER_TEST_RESOURCE_URL",
                                      "es://127.0.0.1:9200")

        self.CONF = self.useFixture(fixture_config.Config()).conf
        self.CONF([], project='ceilometer', validate_default_values=True)
        self.CONF.import_opt("resource_connection",
                             "ceilometer.storage.impl_stacklight",
                             group="database")
        self.CONF.set_override("resource_connection", self.resource_url,
                               group="database")
        self.connection = storage.get_connection(
            self.url, 'ceilometer.metering.storage')
        self.connection.resource_index = "ceilometer_%s" % uuid.uuid4().hex
        self.connection._refresh_on_write = True
        self.event_connection = storage.get_connection(
            "sqlite://", 'ceilometer.event.storage')
        # prefix each test with unique index name
        self.event_connection.RES = 'events_%s' % uuid.uuid4().hex
        # force index on write so data is queryable right away
        self.event_connection._refresh_on_write = True
示例#33
0
文件: db.py 项目: mydaisy2/ceilometer
    def setUp(self):
        super(TestBase, self).setUp()
        cfg.CONF.set_override('connection', str(self.database_connection),
                              group='database')

        with warnings.catch_warnings():
            warnings.filterwarnings(
                action='ignore',
                message='.*you must provide a username and password.*')
            try:
                self.conn = storage.get_connection(cfg.CONF)
            except storage.StorageBadVersion as e:
                self.skipTest(str(e))
        self.conn.upgrade()
示例#34
0
文件: db.py 项目: DragonDM/ceilometer
    def setUp(self):
        super(TestBase, self).setUp()
        cfg.CONF.set_override('connection', str(self.database_connection),
                              group='database')

        with warnings.catch_warnings():
            warnings.filterwarnings(
                action='ignore',
                message='.*you must provide a username and password.*')
            try:
                self.conn = storage.get_connection(cfg.CONF)
            except storage.StorageBadVersion as e:
                self.skipTest(str(e))
        self.conn.upgrade()
    def setUp(self):
        super(TestApi, self).setUp()
        self.PATH_PREFIX = '/v2'

        self.CONF = self.useFixture(fixture_config.Config()).conf
        self.CONF([], project='ceilometer', validate_default_values=True)

        self.setup_messaging(self.CONF)
        opts.set_defaults(self.CONF)

        self.CONF.set_override("auth_version", "v2.0",
                               group=OPT_GROUP_NAME)
        self.CONF.set_override("policy_file",
                               self.path_get('etc/ceilometer/policy.json'),
                               group='oslo_policy')

        self.CONF.import_opt('pipeline_cfg_file', 'ceilometer.pipeline')
        self.CONF.set_override(
            'pipeline_cfg_file',
            self.path_get('etc/ceilometer/pipeline.yaml')
        )

        self.CONF.import_opt('monasca_mappings',
                             'ceilometer.publisher.monasca_data_filter',
                             group='monasca')

        self.CONF.set_override(
            'monasca_mappings',
            self.path_get('etc/ceilometer/monasca_field_definitions.yaml'),
            group='monasca'
        )

        with mock.patch("ceilometer.monasca_client.Client") as mock_client,\
                mock.patch('ceilometer.storage.get_connection') as \
                get_storage_conn, \
                mock.patch('ceilometer.publisher.get_publisher') as get_pub:

            get_storage_conn.side_effect = (
                self.get_connection_with_mock_driver_manager)
            get_pub.side_effect = self.get_publisher_with_mock_driver_manager
            self.mock_mon_client = mock_client
            self.conn = storage.get_connection('monasca://127.0.0.1:8080',
                                               'ceilometer.metering.storage')

            self.useFixture(mockpatch.Patch(
                'ceilometer.storage.get_connection',
                return_value=self.conn))

            self.app = self._make_app()
示例#36
0
    def setUp(self):
        super(TestApi, self).setUp()
        self.PATH_PREFIX = '/v2'

        self.CONF = self.useFixture(fixture_config.Config()).conf
        self.CONF([], project='ceilometer', validate_default_values=True)

        self.setup_messaging(self.CONF)
        opts.set_defaults(self.CONF)

        self.CONF.set_override("auth_version", "v2.0", group=OPT_GROUP_NAME)
        self.CONF.set_override("policy_file",
                               self.path_get('etc/ceilometer/policy.json'),
                               group='oslo_policy')

        self.CONF.import_opt('pipeline_cfg_file', 'ceilometer.pipeline')
        self.CONF.set_override(
            'pipeline_cfg_file',
            self.path_get('etc/ceilometer/monasca_pipeline.yaml'))

        self.CONF.import_opt('monasca_mappings',
                             'ceilometer.publisher.monasca_data_filter',
                             group='monasca')

        self.CONF.set_override(
            'monasca_mappings',
            self.path_get('etc/ceilometer/monasca_field_definitions.yaml'),
            group='monasca')

        with mock.patch("ceilometer.monasca_client.Client") as mock_client,\
                mock.patch('ceilometer.storage.get_connection') as \
                get_storage_conn, \
                mock.patch('ceilometer.publisher.get_publisher') as get_pub:

            get_storage_conn.side_effect = (
                self.get_connection_with_mock_driver_manager)
            get_pub.side_effect = self.get_publisher_with_mock_driver_manager
            self.mock_mon_client = mock_client
            self.conn = storage.get_connection('monasca://127.0.0.1:8080',
                                               'ceilometer.metering.storage')

            self.useFixture(
                fixtures.MockPatch('ceilometer.storage.get_connection',
                                   return_value=self.conn))

            self.app = self._make_app()
示例#37
0
 def setUp(self):
     super(HBaseManager, self).setUp()
     self.connection = storage.get_connection(self.url)
示例#38
0
 def setUp(self):
     super(SQLiteManager, self).setUp()
     self.connection = storage.get_connection(self.url)
示例#39
0
 def test_get_connection(self):
     engine = storage.get_connection(self.CONF,
                                     'log://localhost')
     self.assertIsInstance(engine, impl_log.Connection)
示例#40
0
 def test_get_connection(self):
     engine = storage.get_connection('log://localhost',
                                     'ceilometer.metering.storage')
     self.assertIsInstance(engine, impl_log.Connection)
示例#41
0
 def __init__(self, host, topic, manager=None):
     super(CollectorService, self).__init__(host, topic, manager)
     self.storage_conn = storage.get_connection(cfg.CONF)
示例#42
0
def storage_dbsync():
    service.prepare_service()
    storage.get_connection(cfg.CONF).upgrade()
示例#43
0
def storage_dbsync():
    service.prepare_service()
    storage.get_connection(cfg.CONF).upgrade()
示例#44
0
 def __init__(self, conf):
     super(DatabaseDispatcher, self).__init__(conf)
     self.storage_conn = storage.get_connection(conf)
示例#45
0
 def attach_storage():
     flask.request.storage_conn = \
         storage.get_connection(conf)
示例#46
0
 def setUp(self):
     super(TestBase, self).setUp()
     cfg.CONF.database_connection = self.database_connection
     self.conn = storage.get_connection(cfg.CONF)
     self.conn.upgrade()
     self.conn.clear()
示例#47
0
 def setUp(self):
     super(SQLManager, self).setUp()
     self.connection = storage.get_connection(self._conf, self.url)
示例#48
0
 def test_get_connection(self):
     engine = storage.get_connection(self.CONF, 'log://localhost')
     self.assertIsInstance(engine, impl_log.Connection)
示例#49
0
 def test_get_connection(self):
     conf = mock.Mock()
     conf.database.connection = 'log://localhost'
     engine = storage.get_connection(conf)
     self.assertIsInstance(engine, impl_log.Connection)
示例#50
0
 def __init__(self):
     super(UDPCollectorService, self).__init__()
     self.storage_conn = storage.get_connection(cfg.CONF)
示例#51
0
import os

from ceilometer.openstack.common import log
from ceilometer import storage
from ceilometer.storage import models

from oslo.config import cfg

LOG = log.getLogger(__name__)
log.setup('Ceilometer Load Test')

# LOAD_TEST_CONN = "mysql://*****:*****@127.0.0.1/ceilometer?charset=utf8"
connection_string = os.environ['LOAD_TEST_CONN']

cfg.CONF.set_override("connection", connection_string, group='database')
conn = storage.get_connection(cfg.CONF)

event_models = []
base = 0
now = datetime.datetime(2013, 12, 31, 5, 0)
for event_name in ['Foo', 'Bar', 'Zoo']:
    trait_models = \
        [models.Trait(name, dtype, value)
            for name, dtype, value in [
                ('trait_A', models.Trait.TEXT_TYPE,
                    "my_%s_text" % event_name),
                ('trait_B', models.Trait.INT_TYPE,
                    base + 1),
                ('trait_C', models.Trait.FLOAT_TYPE,
                    float(base) + 0.123456),
                ('trait_D', models.Trait.DATETIME_TYPE, now)]]
示例#52
0
 def setUp(self):
     super(TestBase, self).setUp()
     cfg.CONF.database_connection = self.database_connection
     self.conn = storage.get_connection(cfg.CONF)
     self.conn.upgrade()
     self.conn.clear()
示例#53
0
def main():
    cfg.CONF([], project='ceilometer')

    parser = argparse.ArgumentParser(
        description='generate metering data',
    )
    parser.add_argument(
        '--interval',
        default=10,
        type=int,
        help='the period between events, in minutes',
    )
    parser.add_argument(
        '--start',
        default=31,
        help='the number of days in the past to start timestamps',
    )
    parser.add_argument(
        '--end',
        default=2,
        help='the number of days into the future to continue timestamps',
    )
    parser.add_argument(
        '--type',
        choices=('gauge', 'cumulative'),
        default='gauge',
        help='counter type',
    )
    parser.add_argument(
        '--unit',
        default=None,
        help='counter unit',
    )
    parser.add_argument(
        '--project',
        help='project id of owner',
    )
    parser.add_argument(
        '--user',
        help='user id of owner',
    )
    parser.add_argument(
        'resource',
        help='the resource id for the meter data',
    )
    parser.add_argument(
        'counter',
        help='the counter name for the meter data',
    )
    parser.add_argument(
        'volume',
        help='the amount to attach to the meter',
        type=int,
        default=1,
    )
    args = parser.parse_args()

    # Set up logging to use the console
    console = logging.StreamHandler(sys.stderr)
    console.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    root_logger = logging.getLogger('')
    root_logger.addHandler(console)
    root_logger.setLevel(logging.DEBUG)

    # Connect to the metering database
    conn = storage.get_connection(cfg.CONF)

    # Find the user and/or project for a real resource
    if not (args.user or args.project):
        for r in conn.get_resources():
            if r['resource_id'] == args.resource:
                args.user = r['user_id']
                args.project = r['project_id']
                break

    # Compute start and end timestamps for the
    # new data.
    timestamp = timeutils.parse_isotime(args.start)
    end = timeutils.parse_isotime(args.end)
    increment = datetime.timedelta(minutes=args.interval)

    # Generate events
    n = 0
    while timestamp <= end:
        c = sample.Sample(name=args.counter,
                            type=args.type,
                            unit=args.unit,
                            volume=args.volume,
                            user_id=args.user,
                            project_id=args.project,
                            resource_id=args.resource,
                            timestamp=timestamp,
                            resource_metadata={},
                            source='artificial',
                            )
        data = utils.meter_message_from_counter(
            c,
            cfg.CONF.publisher.metering_secret)
        conn.record_metering_data(data)
        n += 1
        timestamp = timestamp + increment

    print('Added %d new events' % n)

    return 0
示例#54
0
 def setUp(self):
     super(SQLManager, self).setUp()
     self.connection = storage.get_connection(self._conf, self.url, "ceilometer.metering.storage")
     self.event_connection = storage.get_connection(self._conf, self.url, "ceilometer.event.storage")
示例#55
0
 def test_get_connection(self):
     engine = storage.get_connection('log://localhost',
                                     'ceilometer.metering.storage')
     self.assertIsInstance(engine, impl_log.Connection)
示例#56
0
def main():
    cfg.CONF([], project='ceilometer')

    parser = argparse.ArgumentParser(description='generate metering data', )
    parser.add_argument(
        '--interval',
        default=10,
        type=int,
        help='the period between events, in minutes',
    )
    parser.add_argument(
        '--start',
        default=31,
        help='the number of days in the past to start timestamps',
    )
    parser.add_argument(
        '--end',
        default=2,
        help='the number of days into the future to continue timestamps',
    )
    parser.add_argument(
        '--type',
        choices=('gauge', 'cumulative'),
        default='gauge',
        help='counter type',
    )
    parser.add_argument(
        '--unit',
        default=None,
        help='counter unit',
    )
    parser.add_argument(
        '--project',
        help='project id of owner',
    )
    parser.add_argument(
        '--user',
        help='user id of owner',
    )
    parser.add_argument(
        'resource',
        help='the resource id for the meter data',
    )
    parser.add_argument(
        'counter',
        help='the counter name for the meter data',
    )
    parser.add_argument(
        'volume',
        help='the amount to attach to the meter',
        type=int,
        default=1,
    )
    args = parser.parse_args()

    # Set up logging to use the console
    console = logging.StreamHandler(sys.stderr)
    console.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    root_logger = logging.getLogger('')
    root_logger.addHandler(console)
    root_logger.setLevel(logging.DEBUG)

    # Connect to the metering database
    conn = storage.get_connection(cfg.CONF)

    # Find the user and/or project for a real resource
    if not (args.user or args.project):
        for r in conn.get_resources():
            if r['resource_id'] == args.resource:
                args.user = r['user_id']
                args.project = r['project_id']
                break

    # Compute start and end timestamps for the
    # new data.
    timestamp = timeutils.parse_isotime(args.start)
    end = timeutils.parse_isotime(args.end)
    increment = datetime.timedelta(minutes=args.interval)

    # Generate events
    n = 0
    while timestamp <= end:
        c = sample.Sample(
            name=args.counter,
            type=args.type,
            unit=args.unit,
            volume=args.volume,
            user_id=args.user,
            project_id=args.project,
            resource_id=args.resource,
            timestamp=timestamp,
            resource_metadata={},
            source='artificial',
        )
        data = rpc.meter_message_from_counter(
            c, cfg.CONF.publisher_rpc.metering_secret)
        conn.record_metering_data(data)
        n += 1
        timestamp = timestamp + increment

    print 'Added %d new events' % n

    return 0
示例#57
0
 def test_get_connection_no_such_engine(self):
     try:
         storage.get_connection('no-such-engine://localhost',
                                'ceilometer.metering.storage')
     except RuntimeError as err:
         self.assertIn('no-such-engine', six.text_type(err))
示例#58
0
 def __init__(self, conf):
     super(DatabaseDispatcher, self).__init__(conf)
     self.storage_conn = storage.get_connection(conf)
示例#59
0
 def test_get_connection(self):
     conf = mock.Mock()
     conf.database.connection = 'log://localhost'
     engine = storage.get_connection(conf)
     self.assertIsInstance(engine, impl_log.Connection)