summaryrefslogtreecommitdiff
path: root/neutron_network
diff options
context:
space:
mode:
Diffstat (limited to 'neutron_network')
-rw-r--r--neutron_network41
1 files changed, 25 insertions, 16 deletions
diff --git a/neutron_network b/neutron_network
index 6dee045..a9640d2 100644
--- a/neutron_network
+++ b/neutron_network
@@ -121,16 +121,18 @@ _os_tenant_id = None
def _get_ksclient(module, kwargs):
try:
- kclient = ksclient.Client(username=kwargs.get('login_username'),
- password=kwargs.get('login_password'),
- tenant_name=kwargs.get('login_tenant_name'),
- auth_url=kwargs.get('auth_url'))
+ kclient = ksclient.Client(
+ username=module.params.get('login_username'),
+ password=module.params.get('login_password'),
+ tenant_name=module.params.get('login_tenant_name'),
+ auth_url=module.params.get('auth_url'),
+ region_name=module.params.get('region_name'))
except Exception as e:
module.fail_json(msg = "Error authenticating to the keystone: %s" %e.message)
global _os_keystone
_os_keystone = kclient
return kclient
-
+
def _get_endpoint(module, ksclient):
try:
@@ -155,15 +157,18 @@ def _get_neutron_client(module, kwargs):
def _set_tenant_id(module):
global _os_tenant_id
- if not module.params['tenant_name']:
- tenant_name = module.params['login_tenant_name']
- else:
+ 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
+ for tenant in _os_keystone.tenants.list():
+ if tenant.name == tenant_name:
+ _os_tenant_id = tenant.id
+ break
+ else:
+ _os_tenant_id = _os_keystone.tenant_id
+
if not _os_tenant_id:
module.fail_json(msg = "The tenant id cannot be found, please check the paramters")
@@ -191,11 +196,15 @@ def _create_network(module, neutron):
'provider:network_type': module.params.get('provider_network_type'),
'provider:physical_network': module.params.get('provider_physical_network'),
'provider:segmentation_id': module.params.get('provider_segmentation_id'),
- 'router:external': module.params.get('router_external'),
'shared': module.params.get('shared'),
'admin_state_up': module.params.get('admin_state_up'),
}
+ # Older neutron versions wil reject explicitly router:external set
+ # to false
+ if module.params.get('router_external'):
+ network['router:external'] = True
+
if module.params['provider_network_type'] == 'local':
network.pop('provider:physical_network', None)
network.pop('provider:segmentation_id', None)
@@ -219,7 +228,7 @@ def _create_network(module, neutron):
except Exception as e:
module.fail_json(msg = "Error in creating network: %s" % e.message)
return net['network']['id']
-
+
def _delete_network(module, net_id, neutron):
try:
@@ -229,7 +238,7 @@ def _delete_network(module, net_id, neutron):
return True
def main():
-
+
module = AnsibleModule(
argument_spec = dict(
login_username = dict(default='admin'),