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

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": {}
}