From 0c1e4c009c19fbdf02db2c32a353157fa287ab61 Mon Sep 17 00:00:00 2001 From: Davide Guerri Date: Tue, 21 Apr 2015 14:51:51 +0100 Subject: Allow non-admin users to create router and router interfaces --- neutron_router | 20 +++++++++++--------- neutron_router_interface | 17 ++++++++++------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/neutron_router b/neutron_router index 56d384d..a724c45 100644 --- a/neutron_router +++ b/neutron_router @@ -126,18 +126,20 @@ def _get_neutron_client(module, kwargs): def _set_tenant_id(module): global _os_tenant_id - if not module.params['tenant_name']: - login_tenant_name = module.params['login_tenant_name'] + if module.params['tenant_name']: + # We need admin power in order retrieve the tenant_id of a given + # tenant name and to create/delete networks for a tenant that is not + # the one used to authenticate the user. + tenant_name = module.params['tenant_name'] + for tenant in _os_keystone.tenants.list(): + if tenant.name == tenant_name: + _os_tenant_id = tenant.id + break else: - login_tenant_name = module.params['tenant_name'] + _os_tenant_id = _os_keystone.tenant_id - for tenant in _os_keystone.tenants.list(): - if tenant.name == login_tenant_name: - _os_tenant_id = tenant.id - break if not _os_tenant_id: - module.fail_json(msg = "The tenant id cannot be found, please check the paramters") - + module.fail_json(msg = "The tenant id cannot be found, please check the paramters") def _get_router_id(module, neutron): kwargs = { diff --git a/neutron_router_interface b/neutron_router_interface index 8d57725..1d6648a 100644 --- a/neutron_router_interface +++ b/neutron_router_interface @@ -127,15 +127,18 @@ def _get_neutron_client(module, kwargs): def _set_tenant_id(module): global _os_tenant_id - if not module.params['tenant_name']: - login_tenant_name = module.params['login_tenant_name'] + if module.params['tenant_name']: + # We need admin power in order retrieve the tenant_id of a given + # tenant name and to create/delete networks for a tenant that is not + # the one used to authenticate the user. + tenant_name = module.params['tenant_name'] + for tenant in _os_keystone.tenants.list(): + if tenant.name == tenant_name: + _os_tenant_id = tenant.id + break else: - login_tenant_name = module.params['tenant_name'] + _os_tenant_id = _os_keystone.tenant_id - for tenant in _os_keystone.tenants.list(): - if tenant.name == login_tenant_name: - _os_tenant_id = tenant.id - break if not _os_tenant_id: module.fail_json(msg = "The tenant id cannot be found, please check the paramters") -- cgit v1.2.1