summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2011-02-23 21:25:36 +0000
committerTarmac <>2011-02-23 21:25:36 +0000
commited9bdfc8b61470bbe3f61ef7bf3f3044f8483b8a (patch)
tree96853b32eb4860da17bd2c7a1894e52014a5bceb
parentf066b83f89f0fb633b2a23108b3efd2d27f3d710 (diff)
parent21ebea24b4b77f8bd1fd42152454f1b0189843d4 (diff)
downloadnova-ed9bdfc8b61470bbe3f61ef7bf3f3044f8483b8a.tar.gz
nova-ed9bdfc8b61470bbe3f61ef7bf3f3044f8483b8a.tar.xz
nova-ed9bdfc8b61470bbe3f61ef7bf3f3044f8483b8a.zip
Fixes the describe_availability_zones to use an elevated context when getting services and the db calls to pass parameters correctly so is_admin check works.
-rw-r--r--nova/api/ec2/cloud.py5
-rw-r--r--nova/db/api.py4
-rw-r--r--nova/db/sqlalchemy/api.py9
3 files changed, 8 insertions, 10 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index e219fb30c..7458d307a 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -198,8 +198,9 @@ class CloudController(object):
return self._describe_availability_zones(context, **kwargs)
def _describe_availability_zones(self, context, **kwargs):
- enabled_services = db.service_get_all(context)
- disabled_services = db.service_get_all(context, True)
+ ctxt = context.elevated()
+ enabled_services = db.service_get_all(ctxt)
+ disabled_services = db.service_get_all(ctxt, True)
available_zones = []
for zone in [service.availability_zone for service
in enabled_services]:
diff --git a/nova/db/api.py b/nova/db/api.py
index d7f3746d2..0a010e727 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -85,8 +85,8 @@ def service_get(context, service_id):
def service_get_all(context, disabled=False):
- """Get all service."""
- return IMPL.service_get_all(context, None, disabled)
+ """Get all services."""
+ return IMPL.service_get_all(context, disabled)
def service_get_all_by_topic(context, topic):
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index be29fe2a0..d8751bef4 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -136,15 +136,12 @@ def service_get(context, service_id, session=None):
@require_admin_context
-def service_get_all(context, session=None, disabled=False):
- if not session:
- session = get_session()
-
- result = session.query(models.Service).\
+def service_get_all(context, disabled=False):
+ session = get_session()
+ return session.query(models.Service).\
filter_by(deleted=can_read_deleted(context)).\
filter_by(disabled=disabled).\
all()
- return result
@require_admin_context