diff --git a/nova/context.py b/nova/context.py index 6e8b75362e..f66fcfd1e4 100644 --- a/nova/context.py +++ b/nova/context.py @@ -277,6 +277,11 @@ class RequestContext(context.RequestContext): raise return False + def to_policy_values(self): + policy = super(RequestContext, self).to_policy_values() + policy['is_admin'] = self.is_admin + return policy + def __str__(self): return "" % self.to_dict() diff --git a/nova/policy.py b/nova/policy.py index 26e0f05a60..c77865ddf1 100644 --- a/nova/policy.py +++ b/nova/policy.py @@ -152,7 +152,7 @@ def authorize(context, action, target, do_raise=True, exc=None): do_raise is False. """ init() - credentials = context.to_dict() + credentials = context.to_policy_values() if not exc: exc = exception.PolicyNotAuthorized try: @@ -177,7 +177,7 @@ def check_is_admin(context): init() # the target is user-self - credentials = context.to_dict() + credentials = context.to_policy_values() target = credentials return _ENFORCER.authorize('context_is_admin', target, credentials)