def init_host(self): # Use the nova configuration flags to get # a connection to the RPC mechanism nova # is using. self.connection = nova_rpc.create_connection() storage.register_opts(cfg.CONF) self.storage_engine = storage.get_engine(cfg.CONF) self.storage_conn = self.storage_engine.get_connection(cfg.CONF) self.compute_handler = dispatcher.NotificationDispatcher( COMPUTE_COLLECTOR_NAMESPACE, self._publish_counter, ) # FIXME(dhellmann): Should be using create_worker(), except # that notification messages do not conform to the RPC # invocation protocol (they do not include a "method" # parameter). self.connection.declare_topic_consumer( topic='%s.info' % flags.FLAGS.notification_topics[0], callback=self.compute_handler.notify) # Set ourselves up as a separate worker for the metering data, # since the default for manager is to use create_consumer(). self.connection.create_worker( cfg.CONF.metering_topic, rpc_dispatcher.RpcDispatcher([self]), 'ceilometer.collector.' + cfg.CONF.metering_topic, ) self.connection.consume_in_thread()
def start(self): super(CollectorService, self).start() storage.register_opts(cfg.CONF) self.storage_engine = storage.get_engine(cfg.CONF) self.storage_conn = self.storage_engine.get_connection(cfg.CONF) self.ext_manager = extension_manager.ActivatedExtensionManager( namespace=self.COLLECTOR_NAMESPACE, disabled_names=cfg.CONF.disabled_notification_listeners, ) if not list(self.ext_manager): LOG.warning('Failed to load any notification handlers for %s', self.COLLECTOR_NAMESPACE) self.ext_manager.map(self._setup_subscription) # Set ourselves up as a separate worker for the metering data, # since the default for service is to use create_consumer(). self.conn.create_worker( cfg.CONF.metering_topic, rpc_dispatcher.RpcDispatcher([self]), 'ceilometer.collector.' + cfg.CONF.metering_topic, )
def test_register_opts(self): self.stubs.Set(storage, 'get_engine', self.faux_get_engine) self._faux_engine = self.mox.CreateMock(base.StorageEngine) self._faux_engine.register_opts(cfg.CONF) self.mox.ReplayAll() storage.register_opts(cfg.CONF) self.mox.VerifyAll()
def init_host(self): # Use the nova configuration flags to get # a connection to the RPC mechanism nova # is using. self.connection = rpc.create_connection() storage.register_opts(cfg.CONF) self.storage_engine = storage.get_engine(cfg.CONF) self.storage_conn = self.storage_engine.get_connection(cfg.CONF) self.handler = dispatcher.NotificationDispatcher( COLLECTOR_NAMESPACE, self._publish_counter, ) # FIXME(dhellmann): Should be using create_worker(), except # that notification messages do not conform to the RPC # invocation protocol (they do not include a "method" # parameter). for topic in self.handler.topics: self.connection.declare_topic_consumer( topic=topic, queue_name="ceilometer.notifications", callback=functools.partial(self.handler.notify, topic)) # Set ourselves up as a separate worker for the metering data, # since the default for manager is to use create_consumer(). self.connection.create_worker( cfg.CONF.metering_topic, rpc_dispatcher.RpcDispatcher([self]), 'ceilometer.collector.' + cfg.CONF.metering_topic, ) self.connection.consume_in_thread()
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'], ) storage.register_opts(cfg.CONF) db = storage.get_connection(cfg.CONF) command = extra_args[0] if extra_args else 'help' COMMANDS[command](db, extra_args[1:])
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-collector.conf'], ) storage.register_opts(cfg.CONF) db = storage.get_connection(cfg.CONF) command = extra_args[0] if extra_args else 'help' COMMANDS[command](db, extra_args[1:])
def init_host(self): # Use the nova configuration flags to get # a connection to the RPC mechanism nova # is using. self.connection = rpc.create_connection() storage.register_opts(cfg.CONF) self.storage_engine = storage.get_engine(cfg.CONF) self.storage_conn = self.storage_engine.get_connection(cfg.CONF) self.handlers = self._load_plugins(self.COLLECTOR_NAMESPACE) if not self.handlers: LOG.warning('Failed to load any notification handlers for %s', self.plugin_namespace) # FIXME(dhellmann): Should be using create_worker(), except # that notification messages do not conform to the RPC # invocation protocol (they do not include a "method" # parameter). # FIXME(dhellmann): Break this out into its own method # so we can test the subscription logic. for handler in self.handlers: LOG.debug('Event types: %r', handler.get_event_types()) for exchange_topic in handler.get_exchange_topics(cfg.CONF): for topic in exchange_topic.topics: self.connection.declare_topic_consumer( queue_name="ceilometer.notifications", topic=topic, exchange_name=exchange_topic.exchange, callback=self.process_notification, ) # Set ourselves up as a separate worker for the metering data, # since the default for manager is to use create_consumer(). self.connection.create_worker( cfg.CONF.metering_topic, rpc_dispatcher.RpcDispatcher([self]), 'ceilometer.collector.' + cfg.CONF.metering_topic, ) self.connection.consume_in_thread()
def init_host(self): storage.register_opts(CONF) self.storage_engine = storage.get_engine(CONF) self.storage_conn = self.storage_engine.get_connection(CONF) self.price_list = price.PriceList() self.items = CONF.supported_items self.db_api = db.get_api() self.db_api.configure_db() self.price_counter = price.PriceCounter(self.db_api) # Create scoped token for admin. unscoped_token = nova_client.token_create(CONF.admin_user, CONF.admin_password) tenants = nova_client.tenant_list_for_token(unscoped_token.id) token = nova_client.token_create(CONF.admin_user, CONF.admin_password, tenants[0].id) self.cred = {"username": CONF.admin_user, "password": CONF.admin_password, "tenant_id": tenants[0].id, "token": token} return
def init_host(self): storage.register_opts(CONF) self.storage_engine = storage.get_engine(CONF) self.storage_conn = self.storage_engine.get_connection(CONF) self.price_list = price.PriceList() self.items = CONF.supported_items self.db_api = db.get_api() self.db_api.configure_db() self.price_counter = price.PriceCounter(self.db_api) # Create scoped token for admin. unscoped_token = nova_client.token_create(CONF.admin_user, CONF.admin_password) tenants = nova_client.tenant_list_for_token(unscoped_token.id) token = nova_client.token_create(CONF.admin_user, CONF.admin_password, tenants[0].id) self.cred = { "username": CONF.admin_user, "password": CONF.admin_password, "tenant_id": tenants[0].id, "token": token } return
def start(self): super(CollectorService, self).start() storage.register_opts(cfg.CONF) self.storage_engine = storage.get_engine(cfg.CONF) self.storage_conn = self.storage_engine.get_connection(cfg.CONF)
"""Set up the API server application instance """ import flask from ceilometer.openstack.common import cfg from ceilometer.openstack.common import jsonutils from ceilometer import storage from ceilometer.api import v1 from ceilometer.api import acl app = flask.Flask('ceilometer.api') app.register_blueprint(v1.blueprint, url_prefix='/v1') storage.register_opts(cfg.CONF) @app.before_request def attach_config(): flask.request.cfg = cfg.CONF storage_engine = storage.get_engine(cfg.CONF) flask.request.storage_engine = storage_engine flask.request.storage_conn = storage_engine.get_connection(cfg.CONF) @app.before_request def attach_sources(): with open("sources.json", "r") as f: flask.request.sources = jsonutils.load(f)
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Set up the API server application instance.""" import flask from oslo.config import cfg from ceilometer.api import acl from ceilometer.api.v1 import blueprint as v1_blueprint from ceilometer.openstack.common import jsonutils from ceilometer import storage storage.register_opts(cfg.CONF) def make_app(conf, enable_acl=True, attach_storage=True): app = flask.Flask('ceilometer.api') app.register_blueprint(v1_blueprint.blueprint, url_prefix='/v1') try: with open("sources.json", "r") as f: sources = jsonutils.load(f) except IOError: sources = {} @app.before_request def attach_config(): flask.request.cfg = conf
def get_storage_connection(conf): storage.register_opts(conf) storage_engine = storage.get_engine(conf) return storage_engine.get_connection(conf)