Includes support for Reverse-Mapping zone in nios_zone module (#44525)
* support reverse mapping * support reverse mapping * support reverse mapping * fix shippable errors * fix shippable errors * fix shippable errors
This commit is contained in:
parent
d7e66f16a6
commit
1d2bb34992
3 changed files with 201 additions and 2 deletions
|
@ -65,6 +65,14 @@ options:
|
||||||
- If set to true, causes the NIOS DNS service to restart and load the
|
- If set to true, causes the NIOS DNS service to restart and load the
|
||||||
new zone configuration
|
new zone configuration
|
||||||
type: bool
|
type: bool
|
||||||
|
zone_format:
|
||||||
|
version_added: "2.7"
|
||||||
|
description:
|
||||||
|
- Create an authorative Reverse-Mapping Zone which is an area of network
|
||||||
|
space for which one or more name servers-primary and secondary-have the
|
||||||
|
responsibility to respond to address-to-name queries. It supports
|
||||||
|
reverse-mapping zones for both IPv4 and IPv6 addresses.
|
||||||
|
default: FORWARD
|
||||||
extattrs:
|
extattrs:
|
||||||
description:
|
description:
|
||||||
- Allows for the configuration of Extensible Attributes on the
|
- Allows for the configuration of Extensible Attributes on the
|
||||||
|
@ -103,7 +111,6 @@ EXAMPLES = '''
|
||||||
username: admin
|
username: admin
|
||||||
password: admin
|
password: admin
|
||||||
connection: local
|
connection: local
|
||||||
|
|
||||||
- name: configure a zone on the system using a name server group
|
- name: configure a zone on the system using a name server group
|
||||||
nios_zone:
|
nios_zone:
|
||||||
name: ansible.com
|
name: ansible.com
|
||||||
|
@ -115,6 +122,26 @@ EXAMPLES = '''
|
||||||
username: admin
|
username: admin
|
||||||
password: admin
|
password: admin
|
||||||
connection: local
|
connection: local
|
||||||
|
- name: configure a reverse mapping zone on the system using IPV4 zone format
|
||||||
|
nios_zone:
|
||||||
|
name: 10.10.10.0/24
|
||||||
|
zone_format: IPV4
|
||||||
|
state: present
|
||||||
|
provider:
|
||||||
|
host: "{{ inventory_hostname_short }}"
|
||||||
|
username: admin
|
||||||
|
password: admin
|
||||||
|
connection: local
|
||||||
|
- name: configure a reverse mapping zone on the system using IPV6 zone format
|
||||||
|
nios_zone:
|
||||||
|
name: 100::1/128
|
||||||
|
zone_format: IPV6
|
||||||
|
state: present
|
||||||
|
provider:
|
||||||
|
host: "{{ inventory_hostname_short }}"
|
||||||
|
username: admin
|
||||||
|
password: admin
|
||||||
|
connection: local
|
||||||
- name: update the comment and ext attributes for an existing zone
|
- name: update the comment and ext attributes for an existing zone
|
||||||
nios_zone:
|
nios_zone:
|
||||||
name: ansible.com
|
name: ansible.com
|
||||||
|
@ -136,6 +163,16 @@ EXAMPLES = '''
|
||||||
username: admin
|
username: admin
|
||||||
password: admin
|
password: admin
|
||||||
connection: local
|
connection: local
|
||||||
|
- name: remove the reverse mapping dns zone from the system with IPV4 zone format
|
||||||
|
nios_zone:
|
||||||
|
name: 10.10.10.0/24
|
||||||
|
zone_format: IPV4
|
||||||
|
state: absent
|
||||||
|
provider:
|
||||||
|
host: "{{ inventory_hostname_short }}"
|
||||||
|
username: admin
|
||||||
|
password: admin
|
||||||
|
connection: local
|
||||||
'''
|
'''
|
||||||
|
|
||||||
RETURN = ''' # '''
|
RETURN = ''' # '''
|
||||||
|
@ -154,6 +191,7 @@ def main():
|
||||||
|
|
||||||
ib_spec = dict(
|
ib_spec = dict(
|
||||||
fqdn=dict(required=True, aliases=['name'], ib_req=True, update=False),
|
fqdn=dict(required=True, aliases=['name'], ib_req=True, update=False),
|
||||||
|
zone_format=dict(default='FORWARD', aliases=['zone_format'], ib_req=False),
|
||||||
view=dict(default='default', aliases=['dns_view'], ib_req=True),
|
view=dict(default='default', aliases=['dns_view'], ib_req=True),
|
||||||
|
|
||||||
grid_primary=dict(type='list', elements='dict', options=grid_spec),
|
grid_primary=dict(type='list', elements='dict', options=grid_spec),
|
||||||
|
|
|
@ -31,7 +31,7 @@ class NiosProvider(CloudProvider):
|
||||||
|
|
||||||
DOCKER_SIMULATOR_NAME = 'nios-simulator'
|
DOCKER_SIMULATOR_NAME = 'nios-simulator'
|
||||||
|
|
||||||
DOCKER_IMAGE = 'quay.io/ansible/nios-test-container:1.2.0'
|
DOCKER_IMAGE = 'quay.io/ansible/nios-test-container:1.3.0'
|
||||||
"""Default image to run the nios simulator.
|
"""Default image to run the nios simulator.
|
||||||
|
|
||||||
The simulator must be pinned to a specific version
|
The simulator must be pinned to a specific version
|
||||||
|
|
|
@ -124,3 +124,164 @@ class TestNiosZoneModule(TestNiosModule):
|
||||||
res = wapi.run('testobject', test_spec)
|
res = wapi.run('testobject', test_spec)
|
||||||
|
|
||||||
self.assertTrue(res['changed'])
|
self.assertTrue(res['changed'])
|
||||||
|
|
||||||
|
def test_nios_zone_create_using_grid_primary_secondaries(self):
|
||||||
|
self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com',
|
||||||
|
'grid_primary': [{"name": "gridprimary.grid.com"}],
|
||||||
|
'grid_secondaries': [{"name": "gridsecondary1.grid.com"},
|
||||||
|
{"name": "gridsecondary2.grid.com"}],
|
||||||
|
'restart_if_needed': True,
|
||||||
|
'comment': None, 'extattrs': None}
|
||||||
|
|
||||||
|
test_object = None
|
||||||
|
grid_spec = dict(
|
||||||
|
name=dict(required=True),
|
||||||
|
)
|
||||||
|
test_spec = {
|
||||||
|
"fqdn": {"ib_req": True},
|
||||||
|
"grid_primary": {},
|
||||||
|
"grid_secondaries": {},
|
||||||
|
"restart_if_needed": {},
|
||||||
|
"comment": {},
|
||||||
|
"extattrs": {}
|
||||||
|
}
|
||||||
|
|
||||||
|
wapi = self._get_wapi(test_object)
|
||||||
|
print("WAPI: ", wapi)
|
||||||
|
res = wapi.run('testobject', test_spec)
|
||||||
|
|
||||||
|
self.assertTrue(res['changed'])
|
||||||
|
wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com',
|
||||||
|
"grid_primary": [{"name": "gridprimary.grid.com"}],
|
||||||
|
"grid_secondaries": [{"name": "gridsecondary1.grid.com"},
|
||||||
|
{"name": "gridsecondary2.grid.com"}],
|
||||||
|
"restart_if_needed": True
|
||||||
|
})
|
||||||
|
|
||||||
|
def test_nios_zone_remove_using_grid_primary_secondaries(self):
|
||||||
|
self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com',
|
||||||
|
'grid_primary': [{"name": "gridprimary.grid.com"}],
|
||||||
|
'grid_secondaries': [{"name": "gridsecondary1.grid.com"},
|
||||||
|
{"name": "gridsecondary2.grid.com"}],
|
||||||
|
'restart_if_needed': True,
|
||||||
|
'comment': None, 'extattrs': None}
|
||||||
|
|
||||||
|
ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
|
||||||
|
|
||||||
|
test_object = [{
|
||||||
|
"comment": "test comment",
|
||||||
|
"_ref": ref,
|
||||||
|
"fqdn": "ansible.com",
|
||||||
|
"grid_primary": [{"name": "gridprimary.grid.com"}],
|
||||||
|
"grid_secondaries": [{"name": "gridsecondary1.grid.com"}, {"name": "gridsecondary2.grid.com"}],
|
||||||
|
"restart_if_needed": True,
|
||||||
|
"extattrs": {'Site': {'value': 'test'}}
|
||||||
|
}]
|
||||||
|
|
||||||
|
test_spec = {
|
||||||
|
"fqdn": {"ib_req": True},
|
||||||
|
"grid_primary": {},
|
||||||
|
"grid_secondaries": {},
|
||||||
|
"restart_if_needed": {},
|
||||||
|
"comment": {},
|
||||||
|
"extattrs": {}
|
||||||
|
}
|
||||||
|
wapi = self._get_wapi(test_object)
|
||||||
|
res = wapi.run('testobject', test_spec)
|
||||||
|
|
||||||
|
self.assertTrue(res['changed'])
|
||||||
|
wapi.delete_object.assert_called_once_with(ref)
|
||||||
|
|
||||||
|
def test_nios_zone_create_using_name_server_group(self):
|
||||||
|
self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com',
|
||||||
|
'ns_group': 'examplensg', 'comment': None, 'extattrs': None}
|
||||||
|
|
||||||
|
test_object = None
|
||||||
|
|
||||||
|
test_spec = {
|
||||||
|
"fqdn": {"ib_req": True},
|
||||||
|
"ns_group": {},
|
||||||
|
"comment": {},
|
||||||
|
"extattrs": {}
|
||||||
|
}
|
||||||
|
|
||||||
|
wapi = self._get_wapi(test_object)
|
||||||
|
print("WAPI: ", wapi)
|
||||||
|
res = wapi.run('testobject', test_spec)
|
||||||
|
|
||||||
|
self.assertTrue(res['changed'])
|
||||||
|
wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com',
|
||||||
|
'ns_group': 'examplensg'})
|
||||||
|
|
||||||
|
def test_nios_zone_remove_using_name_server_group(self):
|
||||||
|
self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com',
|
||||||
|
'ns_group': 'examplensg', 'comment': None, 'extattrs': None}
|
||||||
|
|
||||||
|
ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
|
||||||
|
|
||||||
|
test_object = [{
|
||||||
|
"comment": "test comment",
|
||||||
|
"_ref": ref,
|
||||||
|
"fqdn": "ansible.com",
|
||||||
|
"ns_group": "examplensg",
|
||||||
|
"extattrs": {'Site': {'value': 'test'}}
|
||||||
|
}]
|
||||||
|
|
||||||
|
test_spec = {
|
||||||
|
"fqdn": {"ib_req": True},
|
||||||
|
"ns_group": {},
|
||||||
|
"comment": {},
|
||||||
|
"extattrs": {}
|
||||||
|
}
|
||||||
|
wapi = self._get_wapi(test_object)
|
||||||
|
res = wapi.run('testobject', test_spec)
|
||||||
|
|
||||||
|
self.assertTrue(res['changed'])
|
||||||
|
wapi.delete_object.assert_called_once_with(ref)
|
||||||
|
|
||||||
|
def test_nios_zone_create_using_zone_format(self):
|
||||||
|
self.module.params = {'provider': None, 'state': 'present', 'fqdn': '10.10.10.in-addr.arpa',
|
||||||
|
'zone_format': 'IPV4', 'comment': None, 'extattrs': None}
|
||||||
|
|
||||||
|
test_object = None
|
||||||
|
|
||||||
|
test_spec = {
|
||||||
|
"fqdn": {"ib_req": True},
|
||||||
|
"zone_format": {},
|
||||||
|
"comment": {},
|
||||||
|
"extattrs": {}
|
||||||
|
}
|
||||||
|
|
||||||
|
wapi = self._get_wapi(test_object)
|
||||||
|
print("WAPI: ", wapi)
|
||||||
|
res = wapi.run('testobject', test_spec)
|
||||||
|
|
||||||
|
self.assertTrue(res['changed'])
|
||||||
|
wapi.create_object.assert_called_once_with('testobject', {'fqdn': '10.10.10.in-addr.arpa',
|
||||||
|
'zone_format': 'IPV4'})
|
||||||
|
|
||||||
|
def test_nios_zone_remove_using_using_zone_format(self):
|
||||||
|
self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com',
|
||||||
|
'zone_format': 'IPV4', 'comment': None, 'extattrs': None}
|
||||||
|
|
||||||
|
ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
|
||||||
|
|
||||||
|
test_object = [{
|
||||||
|
"comment": "test comment",
|
||||||
|
"_ref": ref,
|
||||||
|
"fqdn": "ansible.com",
|
||||||
|
"zone_format": "IPV4",
|
||||||
|
"extattrs": {'Site': {'value': 'test'}}
|
||||||
|
}]
|
||||||
|
|
||||||
|
test_spec = {
|
||||||
|
"fqdn": {"ib_req": True},
|
||||||
|
"zone_format": {},
|
||||||
|
"comment": {},
|
||||||
|
"extattrs": {}
|
||||||
|
}
|
||||||
|
wapi = self._get_wapi(test_object)
|
||||||
|
res = wapi.run('testobject', test_spec)
|
||||||
|
|
||||||
|
self.assertTrue(res['changed'])
|
||||||
|
wapi.delete_object.assert_called_once_with(ref)
|
||||||
|
|
Loading…
Reference in a new issue