From 08ddd202fb7f9b5e2ff1dbef1d6b0b8c8762b046 Mon Sep 17 00:00:00 2001 From: Kevin Breit Date: Mon, 2 Jul 2018 21:26:56 -0500 Subject: [PATCH] meraki_config_template - Check for HTTP status code (#42145) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Check for HTTP status code - All requests now check returned status code - Fail if status code isn’t what is expected * Fix blank line error * Change HTTP check logic and improve integration tests - Set HTTP status code check so default path is accept - Added create and delete network for integration test - Remove a few comments to clean up code --- .../network/meraki/meraki_config_template.py | 19 ++++++++++++------- .../meraki_config_template/tasks/main.yml | 17 +++++++++++++++++ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/lib/ansible/modules/network/meraki/meraki_config_template.py b/lib/ansible/modules/network/meraki/meraki_config_template.py index cc47dc74e0..8d4a58abe8 100644 --- a/lib/ansible/modules/network/meraki/meraki_config_template.py +++ b/lib/ansible/modules/network/meraki/meraki_config_template.py @@ -83,6 +83,8 @@ from ansible.module_utils.network.meraki.meraki import MerakiModule, meraki_argu def get_config_templates(meraki, org_id): path = meraki.construct_path('get_all', org_id=org_id) response = meraki.request(path, 'GET') + if meraki.status != 200: + meraki.fail_json(msg='Unable to get configuration templates') return response @@ -96,10 +98,8 @@ def get_template_id(meraki, name, data): def is_network_bound(meraki, nets, net_name, template_id): for net in nets: if net['name'] == net_name: - # meraki.fail_json(msg=net['name']) try: if net['configTemplateId'] == template_id: - # meraki.fail_json(msg='Network is already bound.') return True except KeyError: pass @@ -111,6 +111,8 @@ def delete_template(meraki, org_id, name, data): path = meraki.construct_path('delete', org_id=org_id) path = path + '/' + template_id response = meraki.request(path, 'DELETE') + if meraki.status != 200: + meraki.fail_json(msg='Unable to remove configuration template') return response @@ -126,7 +128,10 @@ def bind(meraki, org_name, net_name, name, data): if meraki.params['auto_bind']: payload['autoBind'] = meraki.params['auto_bind'] meraki.result['changed'] = True - return meraki.request(path, method='POST', payload=json.dumps(payload)) + r = meraki.request(path, method='POST', payload=json.dumps(payload)) + if meraki.status != 200: + meraki.fail_json(msg='Unable to bind configuration template to network') + return r def unbind(meraki, org_name, net_name, name, data): @@ -136,7 +141,10 @@ def unbind(meraki, org_name, net_name, name, data): if is_network_bound(meraki, nets, net_name, template_id) is True: path = meraki.construct_path('unbind', function='config_template', net_id=net_id) meraki.result['changed'] = True - return meraki.request(path, method='POST') + r = meraki.request(path, method='POST') + if meraki.status != 200: + meraki.fail_json(msg='Unable to unbind configuration template from network') + return r def main(): @@ -215,8 +223,6 @@ def main(): meraki.params['net_name'], meraki.params['config_template'], get_config_templates(meraki, org_id)) - # meraki.fail_json(msg='Output', bind_output=template_bind) - # meraki.result['data'] = json.loads(template_bind) elif meraki.params['state'] == 'absent': if not meraki.params['net_name']: meraki.result['data'] = delete_template(meraki, @@ -229,7 +235,6 @@ def main(): meraki.params['net_name'], meraki.params['config_template'], get_config_templates(meraki, org_id)) - # meraki.result['data'] = json.loads(config_unbind) # in the event of a successful module execution, you will want to # simple AnsibleModule.exit_json(), passing the key/value results diff --git a/test/integration/targets/meraki_config_template/tasks/main.yml b/test/integration/targets/meraki_config_template/tasks/main.yml index 9dc410f9b0..84e84d07fd 100644 --- a/test/integration/targets/meraki_config_template/tasks/main.yml +++ b/test/integration/targets/meraki_config_template/tasks/main.yml @@ -47,6 +47,15 @@ that: - '"No configuration template named" in deleted.msg' +- name: Create a network + meraki_network: + auth_key: '{{auth_key}}' + state: present + org_name: '{{ test_org_name }}' + net_name: '{{ test_net_name }}' + type: appliance + delegate_to: localhost + - name: Bind a template to a network meraki_config_template: auth_key: '{{auth_key}}' @@ -102,3 +111,11 @@ - assert: that: unbind_invalid.changed == False + +- name: Delete network + meraki_network: + auth_key: '{{auth_key}}' + state: absent + org_name: '{{ test_org_name }}' + net_name: '{{ test_net_name }}' + delegate_to: localhost \ No newline at end of file