mirror of
https://github.com/ansible-collections/community.routeros.git
synced 2025-06-26 19:58:45 +02:00
Verbose config extra fact (#23)
* allow nonverbose idempotent config * nonverbose config output * typpo * typpo * release fragment * config extra fact * add fact ansible_net_config_nonverbose * unit tests * changelog fragments * remove version fragment * remove extra debug printf() * update chlog fragment * corrections for upstream pull request * corrections for upstream pull request * typo in changelog fragment Co-authored-by: Felix Fontein <felix@fontein.de> * typo in filename Co-authored-by: Petr Klima <petr.klima@madeta.cz> Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
7bab58eae9
commit
1c18d34536
4 changed files with 53 additions and 1 deletions
2
changelogs/fragments/23-idempotent_config.yml
Normal file
2
changelogs/fragments/23-idempotent_config.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- fact - add fact ``ansible_net_config_nonverbose`` to get idempotent config (no date, no verbose) (https://github.com/ansible-collections/community.routeros/pull/23).
|
|
@ -110,6 +110,16 @@ ansible_facts:
|
||||||
returned: when config is configured
|
returned: when config is configured
|
||||||
type: str
|
type: str
|
||||||
|
|
||||||
|
ansible_net_config_nonverbose:
|
||||||
|
description:
|
||||||
|
- The current active config from the device in minimal form.
|
||||||
|
- This value is idempotent in the sense that if the facts module is run twice and the device's config
|
||||||
|
was not changed between the runs, the value is identical. This is achieved by running C(/export)
|
||||||
|
and stripping the timestamp from the comment in the first line.
|
||||||
|
returned: when config is configured
|
||||||
|
type: str
|
||||||
|
version_added: 1.2.0
|
||||||
|
|
||||||
# interfaces
|
# interfaces
|
||||||
ansible_net_all_ipv4_addresses:
|
ansible_net_all_ipv4_addresses:
|
||||||
description: All IPv4 addresses configured on the device
|
description: All IPv4 addresses configured on the device
|
||||||
|
@ -280,14 +290,26 @@ class Hardware(FactsBase):
|
||||||
|
|
||||||
class Config(FactsBase):
|
class Config(FactsBase):
|
||||||
|
|
||||||
COMMANDS = ['/export verbose']
|
COMMANDS = [
|
||||||
|
'/export verbose',
|
||||||
|
'/export',
|
||||||
|
]
|
||||||
|
|
||||||
|
RM_DATE_RE = re.compile(r'^# [a-z0-9/][a-z0-9/]* [0-9:]* by RouterOS')
|
||||||
|
|
||||||
def populate(self):
|
def populate(self):
|
||||||
super(Config, self).populate()
|
super(Config, self).populate()
|
||||||
|
|
||||||
data = self.responses[0]
|
data = self.responses[0]
|
||||||
if data:
|
if data:
|
||||||
self.facts['config'] = data
|
self.facts['config'] = data
|
||||||
|
|
||||||
|
data = self.responses[1]
|
||||||
|
if data:
|
||||||
|
# remove datetime
|
||||||
|
data = re.sub(self.RM_DATE_RE, r'# RouterOS', data)
|
||||||
|
self.facts['config_nonverbose'] = data
|
||||||
|
|
||||||
|
|
||||||
class Interfaces(FactsBase):
|
class Interfaces(FactsBase):
|
||||||
|
|
||||||
|
|
24
tests/unit/plugins/modules/fixtures/facts/export
Normal file
24
tests/unit/plugins/modules/fixtures/facts/export
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# sep/25/2018 10:10:52 by RouterOS 6.42.5
|
||||||
|
# software id = 9EER-511K
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
/interface wireless security-profiles
|
||||||
|
set [ find default=yes ] supplicant-identity=MikroTik
|
||||||
|
/tool user-manager customer
|
||||||
|
set admin access=own-routers,own-users,own-profiles,own-limits,config-payment-gw
|
||||||
|
/ip address
|
||||||
|
add address=192.168.88.1/24 comment=defconf interface=ether1 network=192.168.88.0
|
||||||
|
/ip dhcp-client
|
||||||
|
add dhcp-options=hostname,clientid disabled=no interface=ether1
|
||||||
|
/system lcd page
|
||||||
|
set time disabled=yes display-time=5s
|
||||||
|
set resources disabled=yes display-time=5s
|
||||||
|
set uptime disabled=yes display-time=5s
|
||||||
|
set packets disabled=yes display-time=5s
|
||||||
|
set bits disabled=yes display-time=5s
|
||||||
|
set version disabled=yes display-time=5s
|
||||||
|
set identity disabled=yes display-time=5s
|
||||||
|
set ether1 disabled=yes display-time=5s
|
||||||
|
/tool user-manager database
|
||||||
|
set db-path=user-manager
|
|
@ -94,6 +94,10 @@ class TestRouterosFactsModule(TestRouterosModule):
|
||||||
result['ansible_facts']['ansible_net_config'], str
|
result['ansible_facts']['ansible_net_config'], str
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.assertIsInstance(
|
||||||
|
result['ansible_facts']['ansible_net_config_nonverbose'], str
|
||||||
|
)
|
||||||
|
|
||||||
def test_facts_interfaces(self):
|
def test_facts_interfaces(self):
|
||||||
set_module_args(dict(gather_subset='interfaces'))
|
set_module_args(dict(gather_subset='interfaces'))
|
||||||
result = self.execute_module()
|
result = self.execute_module()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue