diff options
-rw-r--r-- | nova/api/openstack/extensions.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py index a94065ab0..94ce76ec7 100644 --- a/nova/api/openstack/extensions.py +++ b/nova/api/openstack/extensions.py @@ -386,12 +386,15 @@ def load_standard_extensions(ext_mgr, logger, path, package, ext_list=None): def extension_authorizer(api_name, extension_name): - def authorize(context, target=None): + def authorize(context, target=None, action=None): if target is None: target = {'project_id': context.project_id, 'user_id': context.user_id} - action = '%s_extension:%s' % (api_name, extension_name) - nova.policy.enforce(context, action, target) + if action is None: + act = '%s_extension:%s' % (api_name, extension_name) + else: + act = '%s_extension:%s:%s' % (api_name, extension_name, action) + nova.policy.enforce(context, act, target) return authorize |