|
|
|
@ -82,6 +82,11 @@ options:
|
|
|
|
|
required: false
|
|
|
|
|
default: None
|
|
|
|
|
version_added: "2.1"
|
|
|
|
|
project:
|
|
|
|
|
description:
|
|
|
|
|
- Project name or ID containing the network (name admin-only)
|
|
|
|
|
required: false
|
|
|
|
|
default: None
|
|
|
|
|
requirements: ["shade"]
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
@ -166,6 +171,7 @@ def main():
|
|
|
|
|
choices=['flat', 'vlan', 'vxlan', 'gre']),
|
|
|
|
|
provider_segmentation_id=dict(required=False),
|
|
|
|
|
state=dict(default='present', choices=['absent', 'present']),
|
|
|
|
|
project=dict(default=None)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
module_kwargs = openstack_module_kwargs()
|
|
|
|
@ -174,6 +180,11 @@ def main():
|
|
|
|
|
if not HAS_SHADE:
|
|
|
|
|
module.fail_json(msg='shade is required for this module')
|
|
|
|
|
|
|
|
|
|
if (module.params['project'] and
|
|
|
|
|
StrictVersion(shade.__version__) < StrictVersion('1.6.0')):
|
|
|
|
|
module.fail_json(msg="To utilize project, the installed version of"
|
|
|
|
|
"the shade library MUST be >=1.6.0")
|
|
|
|
|
|
|
|
|
|
state = module.params['state']
|
|
|
|
|
name = module.params['name']
|
|
|
|
|
shared = module.params['shared']
|
|
|
|
@ -182,10 +193,20 @@ def main():
|
|
|
|
|
provider_physical_network = module.params['provider_physical_network']
|
|
|
|
|
provider_network_type = module.params['provider_network_type']
|
|
|
|
|
provider_segmentation_id = module.params['provider_segmentation_id']
|
|
|
|
|
project = module.params.pop('project')
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
cloud = shade.openstack_cloud(**module.params)
|
|
|
|
|
net = cloud.get_network(name)
|
|
|
|
|
if project is not None:
|
|
|
|
|
proj = cloud.get_project(project)
|
|
|
|
|
if proj is None:
|
|
|
|
|
module.fail_json(msg='Project %s could not be found' % project)
|
|
|
|
|
project_id = proj['id']
|
|
|
|
|
filters = {'tenant_id': project_id}
|
|
|
|
|
else:
|
|
|
|
|
project_id = None
|
|
|
|
|
filters = None
|
|
|
|
|
net = cloud.get_network(name, filters=filters)
|
|
|
|
|
|
|
|
|
|
if state == 'present':
|
|
|
|
|
if not net:
|
|
|
|
@ -201,7 +222,7 @@ def main():
|
|
|
|
|
module.fail_json(msg="Shade >= 1.5.0 required to use provider options")
|
|
|
|
|
|
|
|
|
|
net = cloud.create_network(name, shared, admin_state_up,
|
|
|
|
|
external, provider)
|
|
|
|
|
external, provider, project_id)
|
|
|
|
|
changed = True
|
|
|
|
|
else:
|
|
|
|
|
changed = False
|
|
|
|
|