Allow no configured sources, provide a default file

This fixes bug #1073654

Change-Id: I7cfb5016ab8a70bf9738baa497f6fe173f307242
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2012-10-31 18:29:52 +01:00
parent 415453bfe8
commit 445d711dd0
4 changed files with 32 additions and 20 deletions

View File

@ -37,13 +37,10 @@ if __name__ == '__main__':
cfg.CONF(sys.argv[1:]) cfg.CONF(sys.argv[1:])
logging.setup('ceilometer.api') logging.setup('ceilometer.api')
root = app.app root = app.make_app()
# Enable debug mode # Enable debug mode
if cfg.CONF.verbose or cfg.CONF.debug: if cfg.CONF.verbose or cfg.CONF.debug:
root.debug = True root.debug = True
# Install the middleware wrapper
root = acl.install(root, cfg.CONF)
root.run(host='0.0.0.0', port=cfg.CONF.metering_api_port) root.run(host='0.0.0.0', port=cfg.CONF.metering_api_port)

View File

@ -24,23 +24,36 @@ from ceilometer.openstack.common import cfg
from ceilometer.openstack.common import jsonutils from ceilometer.openstack.common import jsonutils
from ceilometer import storage from ceilometer import storage
from ceilometer.api import v1 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) storage.register_opts(cfg.CONF)
@app.before_request def make_app(enable_acl=True, attach_storage=True):
def attach_config(): app = flask.Flask('ceilometer.api')
flask.request.cfg = cfg.CONF app.register_blueprint(v1.blueprint, url_prefix='/v1')
storage_engine = storage.get_engine(cfg.CONF)
flask.request.storage_engine = storage_engine
flask.request.storage_conn = storage_engine.get_connection(cfg.CONF)
try:
with open("sources.json", "r") as f:
sources = jsonutils.load(f)
except IOError:
sources = {}
@app.before_request @app.before_request
def attach_sources(): def attach_config():
with open("sources.json", "r") as f: flask.request.cfg = cfg.CONF
flask.request.sources = jsonutils.load(f) flask.request.sources = sources
if attach_storage:
@app.before_request
def attach_storage():
storage_engine = storage.get_engine(cfg.CONF)
flask.request.storage_engine = storage_engine
flask.request.storage_conn = \
storage_engine.get_connection(cfg.CONF)
# Install the middleware wrapper
if enable_acl:
return acl.install(app, cfg.CONF)
return app

View File

@ -26,13 +26,14 @@ import flask
from ceilometer.tests import db as db_test_base from ceilometer.tests import db as db_test_base
from ceilometer.api import v1 from ceilometer.api import v1
from ceilometer.api import app from ceilometer.api import app
from ceilometer.openstack.common import cfg
class TestBase(db_test_base.TestBase): class TestBase(db_test_base.TestBase):
def setUp(self): def setUp(self):
super(TestBase, self).setUp() super(TestBase, self).setUp()
self.app = flask.Flask('test') self.app = app.make_app(enable_acl=False, attach_storage=False)
self.app.register_blueprint(v1.blueprint) self.app.register_blueprint(v1.blueprint)
self.test_app = self.app.test_client() self.test_app = self.app.test_client()
@ -40,8 +41,6 @@ class TestBase(db_test_base.TestBase):
def attach_storage_connection(): def attach_storage_connection():
flask.request.storage_conn = self.conn flask.request.storage_conn = self.conn
self.app.before_request(app.attach_sources)
def get(self, path, **kwds): def get(self, path, **kwds):
if kwds: if kwds:
query = path + '?' + urllib.urlencode(kwds) query = path + '?' + urllib.urlencode(kwds)

View File

@ -0,0 +1,3 @@
{
"openstack": {}
}