From 3a58b4dd7d6f4cf76c6f257fd0bf3ef9f7ee2bc6 Mon Sep 17 00:00:00 2001 From: Kevin Breit Date: Sat, 1 Jun 2019 20:47:15 -0500 Subject: [PATCH 1/4] Added querying functionality --- .../meraki/meraki_content_filtering.py | 19 ++++++- .../meraki_content_filtering/tasks/main.yml | 54 +++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/lib/ansible/modules/network/meraki/meraki_content_filtering.py b/lib/ansible/modules/network/meraki/meraki_content_filtering.py index cdab752bf70887..e2b59453794789 100644 --- a/lib/ansible/modules/network/meraki/meraki_content_filtering.py +++ b/lib/ansible/modules/network/meraki/meraki_content_filtering.py @@ -139,11 +139,12 @@ def main(): argument_spec.update( net_id=dict(type='str'), net_name=dict(type='str', aliases=['network']), - state=dict(type='str', default='present', choices=['present']), + state=dict(type='str', default='present', choices=['present', 'query']), allowed_urls=dict(type='list'), blocked_urls=dict(type='list'), blocked_categories=dict(type='list'), category_list_size=dict(type='str', choices=['top sites', 'full list']), + subset=dict(type='str', choices=['categories', 'policy']), ) # the AnsibleModule object will be our abstraction working with Ansible @@ -177,6 +178,22 @@ def main(): nets = meraki.get_nets(org_id=org_id) net_id = meraki.get_net_id(org_id, meraki.params['net_name'], data=nets) + if meraki.params['state'] == 'query': + if meraki.params['subset']: + if meraki.params['subset'] == 'categories': + path = meraki.construct_path('categories', net_id=net_id) + elif meraki.params['subset'] == 'policy': + path = meraki.construct_path('policy', net_id=net_id) + meraki.result['data'] = meraki.request(path, method='GET') + else: + response_data = {'categories': None, + 'policy': None, + } + path = meraki.construct_path('categories', net_id=net_id) + response_data['categories'] = meraki.request(path, method='GET') + path = meraki.construct_path('policy', net_id=net_id) + response_data['policy'] = meraki.request(path, method='GET') + meraki.result['data'] = response_data if module.params['state'] == 'present': payload = dict() if meraki.params['allowed_urls']: diff --git a/test/integration/targets/meraki_content_filtering/tasks/main.yml b/test/integration/targets/meraki_content_filtering/tasks/main.yml index 6ff83fd397cc44..db360e1e4f163f 100644 --- a/test/integration/targets/meraki_content_filtering/tasks/main.yml +++ b/test/integration/targets/meraki_content_filtering/tasks/main.yml @@ -127,6 +127,60 @@ - blocked_cateogry.data.blockedUrlCategories | length == 1 - blocked_cateogry.data.urlCategoryListSize == "fullList" + - name: Query all content filtering information + meraki_content_filtering: + auth_key: '{{auth_key}}' + org_name: '{{test_org_name}}' + net_name: '{{test_net_name}}' + state: query + delegate_to: localhost + register: query_all + + - debug: + var: query_all + + - name: Query all content filtering assertion + assert: + that: + - query_all.data.categories is defined + - query_all.data.policy is defined + + - name: Query categories + meraki_content_filtering: + auth_key: '{{auth_key}}' + org_name: '{{test_org_name}}' + net_name: '{{test_net_name}}' + state: query + subset: categories + delegate_to: localhost + register: query_categories + + - debug: + var: query_categories + + - name: Query categories assertion + assert: + that: + - query_categories.data is defined + + - name: Query content filtering policies + meraki_content_filtering: + auth_key: '{{auth_key}}' + org_name: '{{test_org_name}}' + net_name: '{{test_net_name}}' + subset: policy + state: query + delegate_to: localhost + register: query_policy + + - debug: + var: query_policy + + - name: Query contnet filtering policy assertion + assert: + that: + - query_policy.data is defined + always: - name: Reset policies meraki_content_filtering: From 5b8505507f34b4ad516b9783451a6644efb706c0 Mon Sep 17 00:00:00 2001 From: Kevin Breit Date: Sat, 1 Jun 2019 20:58:09 -0500 Subject: [PATCH 2/4] Fix PEP8 and documentation --- .../network/meraki/meraki_content_filtering.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/network/meraki/meraki_content_filtering.py b/lib/ansible/modules/network/meraki/meraki_content_filtering.py index e2b59453794789..3594f4b973f130 100644 --- a/lib/ansible/modules/network/meraki/meraki_content_filtering.py +++ b/lib/ansible/modules/network/meraki/meraki_content_filtering.py @@ -46,7 +46,7 @@ state: description: - States that a policy should be created or modified. - choices: [present] + choices: [present, query] default: present type: str allowed_urls: @@ -67,7 +67,11 @@ - Determines whether a network filters fo rall URLs in a category or only the list of top blocked sites. choices: [ top sites, full list ] type: str - + subset: + description: + - Display only certain facts. + choices: [categories, policy] + type: str author: - Kevin Breit (@kbreit) extends_documentation_fragment: meraki @@ -192,8 +196,8 @@ def main(): path = meraki.construct_path('categories', net_id=net_id) response_data['categories'] = meraki.request(path, method='GET') path = meraki.construct_path('policy', net_id=net_id) - response_data['policy'] = meraki.request(path, method='GET') - meraki.result['data'] = response_data + response_data['policy'] = meraki.request(path, method='GET') + meraki.result['data'] = response_data if module.params['state'] == 'present': payload = dict() if meraki.params['allowed_urls']: From 24e7dcf57e3972ed5a4da28787469d36b2746b35 Mon Sep 17 00:00:00 2001 From: Kevin Breit Date: Sat, 1 Jun 2019 21:23:39 -0500 Subject: [PATCH 3/4] Increment version added --- lib/ansible/modules/network/meraki/meraki_content_filtering.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ansible/modules/network/meraki/meraki_content_filtering.py b/lib/ansible/modules/network/meraki/meraki_content_filtering.py index 3594f4b973f130..1c35512b627fc0 100644 --- a/lib/ansible/modules/network/meraki/meraki_content_filtering.py +++ b/lib/ansible/modules/network/meraki/meraki_content_filtering.py @@ -17,7 +17,7 @@ --- module: meraki_content_filtering short_description: Edit Meraki MX content filtering policies -version_added: "2.8" +version_added: "2.9" description: - Allows for setting policy on content filtering. From dbd96071feb225e2bb2dc4ee3f5ba3f0c6560811 Mon Sep 17 00:00:00 2001 From: Kevin Breit Date: Sat, 1 Jun 2019 21:38:01 -0500 Subject: [PATCH 4/4] Fix version info --- lib/ansible/modules/network/meraki/meraki_content_filtering.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ansible/modules/network/meraki/meraki_content_filtering.py b/lib/ansible/modules/network/meraki/meraki_content_filtering.py index 1c35512b627fc0..be16f00368477d 100644 --- a/lib/ansible/modules/network/meraki/meraki_content_filtering.py +++ b/lib/ansible/modules/network/meraki/meraki_content_filtering.py @@ -17,7 +17,7 @@ --- module: meraki_content_filtering short_description: Edit Meraki MX content filtering policies -version_added: "2.9" +version_added: "2.8" description: - Allows for setting policy on content filtering. @@ -72,6 +72,7 @@ - Display only certain facts. choices: [categories, policy] type: str + version_added: '2.9' author: - Kevin Breit (@kbreit) extends_documentation_fragment: meraki