diff --git a/lib/ansible/modules/network/meraki/meraki_mx_l3_firewall.py b/lib/ansible/modules/network/meraki/meraki_mx_l3_firewall.py index b45badac918..0ebda7a16d1 100644 --- a/lib/ansible/modules/network/meraki/meraki_mx_l3_firewall.py +++ b/lib/ansible/modules/network/meraki/meraki_mx_l3_firewall.py @@ -301,20 +301,24 @@ def main(): else: payload = dict() update = False - if meraki.params['syslog_default_rule']: + if meraki.params['syslog_default_rule'] is not None: payload['syslogDefaultRule'] = meraki.params['syslog_default_rule'] + # meraki.fail_json(msg='Payload', payload=payload) try: if len(rules) - 1 != len(payload['rules']): # Quick and simple check to avoid more processing update = True - if meraki.params['syslog_default_rule']: + if meraki.params['syslog_default_rule'] is not None: if rules[len(rules) - 1]['syslogEnabled'] != meraki.params['syslog_default_rule']: update = True if update is False: + del rules[len(rules) - 1] # Remove default rule for comparison for r in range(len(rules) - 1): - if meraki.is_update_required(rules[r], payload[r]) is True: + if meraki.is_update_required(rules[r], payload['rules'][r]) is True: update = True except KeyError: pass + # if meraki.params['syslog_default_rule']: + # meraki.fail_json(msg='Compare', original=rules, proposed=payload) if update is True: response = meraki.request(path, method='PUT', payload=json.dumps(payload)) if meraki.status == 200: diff --git a/test/integration/targets/meraki_mx_l3_firewall/tasks/main.yml b/test/integration/targets/meraki_mx_l3_firewall/tasks/main.yml index 731ecca47db..8739c0f5081 100644 --- a/test/integration/targets/meraki_mx_l3_firewall/tasks/main.yml +++ b/test/integration/targets/meraki_mx_l3_firewall/tasks/main.yml @@ -4,37 +4,37 @@ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) --- - block: - - name: Test an API key is provided - fail: - msg: Please define an API key - when: auth_key is not defined + # - name: Test an API key is provided + # fail: + # msg: Please define an API key + # when: auth_key is not defined - - name: Use an invalid domain - meraki_organization: - auth_key: '{{ auth_key }}' - host: marrrraki.com - state: present - org_name: IntTestOrg - output_level: debug - delegate_to: localhost - register: invalid_domain - ignore_errors: yes + # - name: Use an invalid domain + # meraki_organization: + # auth_key: '{{ auth_key }}' + # host: marrrraki.com + # state: present + # org_name: IntTestOrg + # output_level: debug + # delegate_to: localhost + # register: invalid_domain + # ignore_errors: yes - - name: Disable HTTP - meraki_organization: - auth_key: '{{ auth_key }}' - use_https: false - state: query - output_level: debug - delegate_to: localhost - register: http - ignore_errors: yes - - - name: Connection assertions - assert: - that: - - '"Failed to connect to" in invalid_domain.msg' - - '"http" in http.url' + # - name: Disable HTTP + # meraki_organization: + # auth_key: '{{ auth_key }}' + # use_https: false + # state: query + # output_level: debug + # delegate_to: localhost + # register: http + # ignore_errors: yes + + # - name: Connection assertions + # assert: + # that: + # - '"Failed to connect to" in invalid_domain.msg' + # - '"http" in http.url' - name: Create network meraki_network: @@ -146,6 +146,45 @@ - assert: that: - query.data.1.syslogEnabled == True + - default_syslog.changed == True + + - name: Disable syslog for default rule + meraki_mx_l3_firewall: + auth_key: '{{ auth_key }}' + org_name: '{{test_org_name}}' + net_name: TestNetAppliance + state: present + rules: + - comment: Deny to documentation address + src_port: any + src_cidr: any + dest_port: 80,443 + dest_cidr: 192.0.1.1/32 + protocol: tcp + policy: deny + syslog_default_rule: no + delegate_to: localhost + register: disable_syslog + + - debug: + msg: '{{disable_syslog}}' + + - name: Query firewall rules + meraki_mx_l3_firewall: + auth_key: '{{ auth_key }}' + org_name: '{{test_org_name}}' + net_name: TestNetAppliance + state: query + delegate_to: localhost + register: query + + - debug: + msg: '{{query.data.1}}' + + - assert: + that: + - query.data.1.syslogEnabled == False + - disable_syslog.changed == True always: - name: Delete all firewall rules