From 3b1f2aeb16216b1d0653ddfa955000f57e53252a Mon Sep 17 00:00:00 2001 From: David Newswanger Date: Fri, 28 Jul 2017 10:37:34 -0400 Subject: [PATCH] Iosxr attribute error #27122 (#27425) * WIP fixing iosxr_logging idempotency * remove debug stuff from module, add teardown section to start of test --- .../modules/network/iosxr/iosxr_logging.py | 24 ++++++------- .../targets/ios_logging/tests/cli/basic.yaml | 2 +- .../iosxr_logging/tests/cli/basic.yaml | 35 ++++++++++++++++--- 3 files changed, 42 insertions(+), 19 deletions(-) diff --git a/lib/ansible/modules/network/iosxr/iosxr_logging.py b/lib/ansible/modules/network/iosxr/iosxr_logging.py index 048dcbd0ec..54e3608928 100644 --- a/lib/ansible/modules/network/iosxr/iosxr_logging.py +++ b/lib/ansible/modules/network/iosxr/iosxr_logging.py @@ -122,7 +122,6 @@ def validate_size(value, module): def map_obj_to_commands(updates, module): commands = list() want, have = updates - for w in want: dest = w['dest'] name = w['name'] @@ -162,7 +161,6 @@ def map_obj_to_commands(updates, module): dest_cmd += ' {}'.format(level) commands.append(dest_cmd) - return commands @@ -208,7 +206,7 @@ def parse_name(line, dest): def parse_level(line, dest): - level_group = ('emergencies', 'alerts', 'critical', 'errors', 'warnings', + level_group = ('emergencies', 'alerts', 'critical', 'errors', 'warning', 'notifications', 'informational', 'debugging') if dest == 'hostnameprefix': @@ -228,25 +226,25 @@ def parse_level(line, dest): def map_config_to_obj(module): + obj = [] dest_group = ('console', 'hostnameprefix', 'monitor', 'buffered', 'on') data = get_config(module, flags=['logging']) + lines = data.split("\n") - for line in data.split('\n'): - + for line in lines: match = re.search(r'logging (\S+)', line, re.M) - - if match.group(1) in dest_group: - dest = match.group(1) - else: - pass - - obj.append({'dest': dest, + if match: + if match.group(1) in dest_group: + dest = match.group(1) + obj.append({ + 'dest': dest, 'name': parse_name(line, dest), 'size': parse_size(line, dest), 'facility': parse_facility(line), - 'level': parse_level(line, dest)}) + 'level': parse_level(line, dest) + }) return obj diff --git a/test/integration/targets/ios_logging/tests/cli/basic.yaml b/test/integration/targets/ios_logging/tests/cli/basic.yaml index 23d10e3399..468d3611dd 100644 --- a/test/integration/targets/ios_logging/tests/cli/basic.yaml +++ b/test/integration/targets/ios_logging/tests/cli/basic.yaml @@ -10,7 +10,7 @@ - assert: that: - - 'result.chaned == true' + - 'result.changed == true' - '"logging host 172.16.0.1" in result.commands' - '"logging facility local7" in result.commands' diff --git a/test/integration/targets/iosxr_logging/tests/cli/basic.yaml b/test/integration/targets/iosxr_logging/tests/cli/basic.yaml index 1527e3c936..b5aa083d53 100644 --- a/test/integration/targets/iosxr_logging/tests/cli/basic.yaml +++ b/test/integration/targets/iosxr_logging/tests/cli/basic.yaml @@ -1,4 +1,29 @@ --- +# Remove old logging entries so that they don't conflict with tests +- name: Remove host logging + iosxr_logging: + dest: hostnameprefix + name: 172.16.0.1 + state: absent + provider: "{{ cli }}" + +- name: Remove console logging + iosxr_logging: + dest: console + level: warning + state: absent + provider: "{{ cli }}" + register: result + +- name: Remove buffer + iosxr_logging: + dest: buffered + size: 4800000 + state: absent + provider: "{{ cli }}" + register: result + +# Start tests - name: Set up host logging iosxr_logging: dest: hostnameprefix @@ -9,7 +34,7 @@ - assert: that: - - 'result.chaned == true' + - 'result.changed == true' - '"logging hostnameprefix 172.16.0.1" in result.commands' - '"logging facility local7" in result.commands' @@ -50,10 +75,10 @@ that: - 'result.changed == false' -- name: Console logging with level warnings +- name: Console logging with level warning iosxr_logging: dest: console - level: warnings + level: warning state: present provider: "{{ cli }}" register: result @@ -61,7 +86,7 @@ - assert: that: - 'result.changed == true' - - '"logging console warnings" in result.commands' + - '"logging console warning" in result.commands' - name: Configure Buffer size iosxr_logging: @@ -78,7 +103,7 @@ - name: remove logging as collection tearDown iosxr_logging: aggregate: - - { dest: console, level: warnings, state: absent } + - { dest: console, level: warning, state: absent } - { dest: buffered, size: 4800000, state: absent } provider: "{{ cli }}" register: result