|
|
|
@ -92,6 +92,18 @@ options:
|
|
|
|
|
- A list of host route dictionaries for the subnet.
|
|
|
|
|
required: false
|
|
|
|
|
default: None
|
|
|
|
|
ipv6_ra_mode:
|
|
|
|
|
description:
|
|
|
|
|
- IPv6 router advertisement mode
|
|
|
|
|
choices: ['dhcpv6-stateful', 'dhcpv6-stateless', 'slaac']
|
|
|
|
|
required: false
|
|
|
|
|
default: None
|
|
|
|
|
ipv6_address_mode:
|
|
|
|
|
description:
|
|
|
|
|
- IPv6 address mode
|
|
|
|
|
choices: ['dhcpv6-stateful', 'dhcpv6-stateless', 'slaac']
|
|
|
|
|
required: false
|
|
|
|
|
default: None
|
|
|
|
|
requirements:
|
|
|
|
|
- "python >= 2.6"
|
|
|
|
|
- "shade"
|
|
|
|
@ -117,6 +129,19 @@ EXAMPLES = '''
|
|
|
|
|
- os_subnet:
|
|
|
|
|
state=absent
|
|
|
|
|
name=net1subnet
|
|
|
|
|
|
|
|
|
|
# Create an ipv6 stateless subnet
|
|
|
|
|
- os_subnet:
|
|
|
|
|
state: present
|
|
|
|
|
name: intv6
|
|
|
|
|
network_name: internal
|
|
|
|
|
ip_version: 6
|
|
|
|
|
cidr: 2db8:1::/64
|
|
|
|
|
dns_nameservers:
|
|
|
|
|
- 2001:4860:4860::8888
|
|
|
|
|
- 2001:4860:4860::8844
|
|
|
|
|
ipv6_ra_mode: dhcpv6-stateless
|
|
|
|
|
ipv6_address_mode: dhcpv6-stateless
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -163,6 +188,7 @@ def _system_state_change(module, subnet):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
ipv6_mode_choices = ['dhcpv6-stateful', 'dhcpv6-stateless', 'slaac']
|
|
|
|
|
argument_spec = openstack_full_argument_spec(
|
|
|
|
|
name=dict(required=True),
|
|
|
|
|
network_name=dict(default=None),
|
|
|
|
@ -174,6 +200,8 @@ def main():
|
|
|
|
|
allocation_pool_start=dict(default=None),
|
|
|
|
|
allocation_pool_end=dict(default=None),
|
|
|
|
|
host_routes=dict(default=None, type='list'),
|
|
|
|
|
ipv6_ra_mode=dict(default=None, choice=ipv6_mode_choices),
|
|
|
|
|
ipv6_address_mode=dict(default=None, choice=ipv6_mode_choices),
|
|
|
|
|
state=dict(default='present', choices=['absent', 'present']),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
@ -196,6 +224,8 @@ def main():
|
|
|
|
|
pool_start = module.params['allocation_pool_start']
|
|
|
|
|
pool_end = module.params['allocation_pool_end']
|
|
|
|
|
host_routes = module.params['host_routes']
|
|
|
|
|
ipv6_ra_mode = module.params['ipv6_ra_mode']
|
|
|
|
|
ipv6_a_mode = module.params['ipv6_address_mode']
|
|
|
|
|
|
|
|
|
|
# Check for required parameters when state == 'present'
|
|
|
|
|
if state == 'present':
|
|
|
|
@ -226,7 +256,9 @@ def main():
|
|
|
|
|
gateway_ip=gateway_ip,
|
|
|
|
|
dns_nameservers=dns,
|
|
|
|
|
allocation_pools=pool,
|
|
|
|
|
host_routes=host_routes)
|
|
|
|
|
host_routes=host_routes,
|
|
|
|
|
ipv6_ra_mode=ipv6_ra_mode,
|
|
|
|
|
ipv6_address_mode=ipv6_a_mode)
|
|
|
|
|
changed = True
|
|
|
|
|
else:
|
|
|
|
|
if _needs_update(subnet, module):
|
|
|
|
@ -236,7 +268,9 @@ def main():
|
|
|
|
|
gateway_ip=gateway_ip,
|
|
|
|
|
dns_nameservers=dns,
|
|
|
|
|
allocation_pools=pool,
|
|
|
|
|
host_routes=host_routes)
|
|
|
|
|
host_routes=host_routes,
|
|
|
|
|
ipv6_ra_mode=ipv6_ra_mode,
|
|
|
|
|
ipv6_address_mode=ipv6_a_mode)
|
|
|
|
|
changed = True
|
|
|
|
|
else:
|
|
|
|
|
changed = False
|
|
|
|
|