From 7ab3f755cee46a5b4eeebb9a9fba1a367d20b32e Mon Sep 17 00:00:00 2001 From: Kevin Breit Date: Tue, 26 Jun 2018 05:14:01 -0500 Subject: [PATCH] Fixes idempotency check for partial configurations (#41941) - Previous PR would overwrite new and existing values improperly --- .../modules/network/meraki/meraki_network.py | 13 ++++++++++--- .../targets/meraki_network/tasks/main.yml | 14 +++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/network/meraki/meraki_network.py b/lib/ansible/modules/network/meraki/meraki_network.py index 60f69dcbf0..20dd8aaf22 100644 --- a/lib/ansible/modules/network/meraki/meraki_network.py +++ b/lib/ansible/modules/network/meraki/meraki_network.py @@ -184,14 +184,11 @@ def main(): if meraki.params['state'] == 'present': payload = {'name': meraki.params['net_name'], 'type': meraki.params['type'], - 'tags': meraki.params['tags'], } if meraki.params['tags']: payload['tags'] = construct_tags(meraki.params['tags']) if meraki.params['timezone']: payload['timeZone'] = meraki.params['timezone'] - else: - payload['timeZone'] = 'America/Los_Angeles' if meraki.params['type'] == 'combined': payload['type'] = 'switch wireless appliance' @@ -225,6 +222,16 @@ def main(): meraki.result['changed'] = True else: net = meraki.get_net(meraki.params['org_name'], meraki.params['net_name'], data=nets) + proposed = payload + if meraki.params['timezone']: + proposed['timeZone'] = meraki.params['timezone'] + else: + proposed['timeZone'] = 'America/Los_Angeles' + if not meraki.params['tags']: + proposed['tags'] = None + if not proposed['type']: + proposed['type'] = net['type'] + if meraki.is_update_required(net, payload): path = meraki.construct_path('update', net_id=meraki.get_net_id(net_name=meraki.params['net_name'], data=nets) diff --git a/test/integration/targets/meraki_network/tasks/main.yml b/test/integration/targets/meraki_network/tasks/main.yml index 66550e16c5..68d79b7afb 100644 --- a/test/integration/targets/meraki_network/tasks/main.yml +++ b/test/integration/targets/meraki_network/tasks/main.yml @@ -66,7 +66,18 @@ timezone: America/Chicago delegate_to: localhost register: create_net_wireless - + +- name: Create network with type wireless and check for idempotency + meraki_network: + auth_key: '{{ auth_key }}' + state: present + org_name: '{{test_org_name}}' + net_name: IntTestNetworkWireless + type: wireless + timezone: America/Chicago + delegate_to: localhost + register: create_net_wireless_idempotent + - name: Create network with type combined meraki_network: auth_key: '{{ auth_key }}' @@ -142,6 +153,7 @@ - '"IntTestNetworkSwitch" in create_net_switch.data.name' - '"IntTestNetworkSwitchOrgID" in create_net_switch_org_id.data.name' - '"IntTestNetworkWireless" in create_net_wireless.data.name' + - create_net_wireless_idempotent.changed == False - '"first_tag" in create_net_tag.data.tags' - '"second_tag" in create_net_tags.data.tags' - '"third_tag" in create_net_modified.data.tags'