Migrating network from AnsibleModule to OpenStackModule
1. Created class NetworkModule with run method 2. Changed argument_spec from openstack_full_argument_spec to dict 3. Removed checking min_version for individual parameters and instead used check_versioned method for all together. 4. Since create_network method uses "mtu_size" as a parameter and not "mtu", changed the key "mtu" to "mtu_size" in argument spec and added alias as "mtu" to still support mtu keyword in playbook. 5. Changed "mtu" to "mtu_size" to match in the doc Change-Id: Ic4ddedb43044434df0a18f8aacacd21149e6f0b0
This commit is contained in:
parent
981d268039
commit
0ac75add62
@ -63,12 +63,13 @@ options:
|
|||||||
Network will use OpenStack defaults if this option is
|
Network will use OpenStack defaults if this option is
|
||||||
not utilised. Requires openstacksdk>=0.18.
|
not utilised. Requires openstacksdk>=0.18.
|
||||||
type: bool
|
type: bool
|
||||||
mtu:
|
mtu_size:
|
||||||
description:
|
description:
|
||||||
- The maximum transmission unit (MTU) value to address fragmentation.
|
- The maximum transmission unit (MTU) value to address fragmentation.
|
||||||
Network will use OpenStack defaults if this option is
|
Network will use OpenStack defaults if this option is
|
||||||
not provided. Requires openstacksdk>=0.18.
|
not provided. Requires openstacksdk>=0.18.
|
||||||
type: int
|
type: int
|
||||||
|
aliases: ['mtu']
|
||||||
dns_domain:
|
dns_domain:
|
||||||
description:
|
description:
|
||||||
- The DNS domain value to set. Requires openstacksdk>=0.29.
|
- The DNS domain value to set. Requires openstacksdk>=0.29.
|
||||||
@ -156,14 +157,12 @@ network:
|
|||||||
sample: 101
|
sample: 101
|
||||||
'''
|
'''
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible_collections.openstack.cloud.plugins.module_utils.openstack import OpenStackModule
|
||||||
from ansible_collections.openstack.cloud.plugins.module_utils.openstack import (openstack_full_argument_spec,
|
|
||||||
openstack_module_kwargs,
|
|
||||||
openstack_cloud_from_module)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
class NetworkModule(OpenStackModule):
|
||||||
argument_spec = openstack_full_argument_spec(
|
|
||||||
|
argument_spec = dict(
|
||||||
name=dict(required=True),
|
name=dict(required=True),
|
||||||
shared=dict(default=False, type='bool'),
|
shared=dict(default=False, type='bool'),
|
||||||
admin_state_up=dict(default=True, type='bool'),
|
admin_state_up=dict(default=True, type='bool'),
|
||||||
@ -173,51 +172,38 @@ def main():
|
|||||||
provider_segmentation_id=dict(required=False, type='int'),
|
provider_segmentation_id=dict(required=False, type='int'),
|
||||||
state=dict(default='present', choices=['absent', 'present']),
|
state=dict(default='present', choices=['absent', 'present']),
|
||||||
project=dict(default=None),
|
project=dict(default=None),
|
||||||
port_security_enabled=dict(type='bool'),
|
port_security_enabled=dict(type='bool', min_ver='0.18.0'),
|
||||||
mtu=dict(required=False, type='int'),
|
mtu_size=dict(required=False, type='int', min_ver='0.18.0', aliases=['mtu']),
|
||||||
dns_domain=dict(required=False)
|
dns_domain=dict(required=False, min_ver='0.29.0')
|
||||||
)
|
)
|
||||||
|
|
||||||
module_kwargs = openstack_module_kwargs()
|
def run(self):
|
||||||
module = AnsibleModule(argument_spec, **module_kwargs)
|
|
||||||
|
|
||||||
state = module.params['state']
|
state = self.params['state']
|
||||||
name = module.params['name']
|
name = self.params['name']
|
||||||
shared = module.params['shared']
|
shared = self.params['shared']
|
||||||
admin_state_up = module.params['admin_state_up']
|
admin_state_up = self.params['admin_state_up']
|
||||||
external = module.params['external']
|
external = self.params['external']
|
||||||
provider_physical_network = module.params['provider_physical_network']
|
provider_physical_network = self.params['provider_physical_network']
|
||||||
provider_network_type = module.params['provider_network_type']
|
provider_network_type = self.params['provider_network_type']
|
||||||
provider_segmentation_id = module.params['provider_segmentation_id']
|
provider_segmentation_id = self.params['provider_segmentation_id']
|
||||||
project = module.params['project']
|
project = self.params['project']
|
||||||
|
|
||||||
net_create_kwargs = {}
|
kwargs = self.check_versioned(
|
||||||
min_version = None
|
mtu_size=self.params['mtu_size'], port_security_enabled=self.params['port_security_enabled'],
|
||||||
|
dns_domain=self.params['dns_domain']
|
||||||
|
)
|
||||||
|
|
||||||
if module.params['mtu'] is not None:
|
|
||||||
min_version = '0.18.0'
|
|
||||||
net_create_kwargs['mtu_size'] = module.params['mtu']
|
|
||||||
|
|
||||||
if module.params['port_security_enabled'] is not None:
|
|
||||||
min_version = '0.18.0'
|
|
||||||
net_create_kwargs['port_security_enabled'] = module.params['port_security_enabled']
|
|
||||||
|
|
||||||
if module.params['dns_domain'] is not None:
|
|
||||||
min_version = '0.29.0'
|
|
||||||
net_create_kwargs['dns_domain'] = module.params['dns_domain']
|
|
||||||
|
|
||||||
sdk, cloud = openstack_cloud_from_module(module, min_version)
|
|
||||||
try:
|
|
||||||
if project is not None:
|
if project is not None:
|
||||||
proj = cloud.get_project(project)
|
proj = self.conn.get_project(project)
|
||||||
if proj is None:
|
if proj is None:
|
||||||
module.fail_json(msg='Project %s could not be found' % project)
|
self.fail_json(msg='Project %s could not be found' % project)
|
||||||
project_id = proj['id']
|
project_id = proj['id']
|
||||||
filters = {'tenant_id': project_id}
|
filters = {'tenant_id': project_id}
|
||||||
else:
|
else:
|
||||||
project_id = None
|
project_id = None
|
||||||
filters = None
|
filters = None
|
||||||
net = cloud.get_network(name, filters=filters)
|
net = self.conn.get_network(name, filters=filters)
|
||||||
|
|
||||||
if state == 'present':
|
if state == 'present':
|
||||||
if not net:
|
if not net:
|
||||||
@ -230,28 +216,30 @@ def main():
|
|||||||
provider['segmentation_id'] = provider_segmentation_id
|
provider['segmentation_id'] = provider_segmentation_id
|
||||||
|
|
||||||
if project_id is not None:
|
if project_id is not None:
|
||||||
net = cloud.create_network(name, shared, admin_state_up,
|
net = self.conn.create_network(name, shared, admin_state_up,
|
||||||
external, provider, project_id,
|
external, provider, project_id,
|
||||||
**net_create_kwargs)
|
**kwargs)
|
||||||
else:
|
else:
|
||||||
net = cloud.create_network(name, shared, admin_state_up,
|
net = self.conn.create_network(name, shared, admin_state_up,
|
||||||
external, provider,
|
external, provider,
|
||||||
**net_create_kwargs)
|
**kwargs)
|
||||||
changed = True
|
changed = True
|
||||||
else:
|
else:
|
||||||
changed = False
|
changed = False
|
||||||
module.exit_json(changed=changed, network=net, id=net['id'])
|
self.exit(changed=changed, network=net, id=net['id'])
|
||||||
|
|
||||||
elif state == 'absent':
|
elif state == 'absent':
|
||||||
if not net:
|
if not net:
|
||||||
module.exit_json(changed=False)
|
self.exit(changed=False)
|
||||||
else:
|
else:
|
||||||
cloud.delete_network(name)
|
self.conn.delete_network(name)
|
||||||
module.exit_json(changed=True)
|
self.exit(changed=True)
|
||||||
|
|
||||||
except sdk.exceptions.OpenStackCloudException as e:
|
|
||||||
module.fail_json(msg=str(e))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
def main():
|
||||||
|
module = NetworkModule()
|
||||||
|
module()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user