meraki_network - Add support for disableMyMerakiCom (#42418)

* Add support for disable_my_meraki parameter

- Meraki added support for the disabling access to Meraki websites on
devices. This module now supports this.
- I haven't tested this as it was developed on an iPad. It will work
before submitting PR.
- Rework of payload generation code is required or at least
recommended.
- Integration tests need to be developed.

* Added support for disableMyMerakiCom parameter

* - Remove proposed functions as it isn't required for updates
- Add integration tests
- Still pending a case response from Meraki since I can't seem to
set disableMyMerakiCom to false after it's true

* Fixed word wrap problem

* Add version_added to disable_my_meraki
pull/42439/merge
Kevin Breit 6 years ago committed by Dag Wieers
parent c644e3da79
commit 7b07c9b220

@ -56,6 +56,12 @@ options:
description: description:
- Timezone associated to network. - Timezone associated to network.
- See U(https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) for a list of valid timezones. - See U(https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) for a list of valid timezones.
disable_my_meraki:
description: >
- Disables the local device status pages (U[my.meraki.com](my.meraki.com), U[ap.meraki.com](ap.meraki.com), U[switch.meraki.com](switch.meraki.com),
U[wired.meraki.com](wired.meraki.com))
type: bool
version_added: '2.7'
author: author:
- Kevin Breit (@kbreit) - Kevin Breit (@kbreit)
@ -85,6 +91,7 @@ EXAMPLES = r'''
type: switch type: switch
timezone: America/Chicago timezone: America/Chicago
tags: production, chicago tags: production, chicago
delegate_to: localhost
''' '''
RETURN = r''' RETURN = r'''
@ -170,6 +177,7 @@ def main():
timezone=dict(type='str'), timezone=dict(type='str'),
net_name=dict(type='str', aliases=['name', 'network']), net_name=dict(type='str', aliases=['name', 'network']),
state=dict(type='str', choices=['present', 'query', 'absent'], default='present'), state=dict(type='str', choices=['present', 'query', 'absent'], default='present'),
disable_my_meraki=dict(type='bool'),
) )
# the AnsibleModule object will be our abstraction working with Ansible # the AnsibleModule object will be our abstraction working with Ansible
@ -207,15 +215,19 @@ def main():
# Construct payload # Construct payload
if meraki.params['state'] == 'present': if meraki.params['state'] == 'present':
payload = {'name': meraki.params['net_name'], payload = dict()
'type': meraki.params['type'], if meraki.params['net_name']:
} payload['name'] = meraki.params['net_name']
if meraki.params['type']:
payload['type'] = meraki.params['type']
if meraki.params['type'] == 'combined':
payload['type'] = 'switch wireless appliance'
if meraki.params['tags']: if meraki.params['tags']:
payload['tags'] = construct_tags(meraki.params['tags']) payload['tags'] = construct_tags(meraki.params['tags'])
if meraki.params['timezone']: if meraki.params['timezone']:
payload['timeZone'] = meraki.params['timezone'] payload['timeZone'] = meraki.params['timezone']
if meraki.params['type'] == 'combined': if meraki.params['disable_my_meraki']:
payload['type'] = 'switch wireless appliance' payload['disableMyMerakiCom'] = meraki.params['disable_my_meraki']
# manipulate or modify the state as needed (this is going to be the # manipulate or modify the state as needed (this is going to be the
# part where your module will do what it needs to do) # part where your module will do what it needs to do)
@ -248,16 +260,6 @@ def main():
meraki.result['changed'] = True meraki.result['changed'] = True
else: else:
net = meraki.get_net(meraki.params['org_name'], meraki.params['net_name'], data=nets) 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): if meraki.is_update_required(net, payload):
path = meraki.construct_path('update', path = meraki.construct_path('update',
net_id=meraki.get_net_id(net_name=meraki.params['net_name'], data=nets) net_id=meraki.get_net_id(net_name=meraki.params['net_name'], data=nets)

@ -79,7 +79,7 @@
delegate_to: localhost delegate_to: localhost
register: create_net_wireless_idempotent register: create_net_wireless_idempotent
- name: Create network with type combined - name: Create network with type combined and disable my.meraki.com
meraki_network: meraki_network:
auth_key: '{{ auth_key }}' auth_key: '{{ auth_key }}'
state: present state: present
@ -87,9 +87,20 @@
net_name: IntTestNetworkCombined net_name: IntTestNetworkCombined
type: combined type: combined
timezone: America/Chicago timezone: America/Chicago
disable_my_meraki: yes
delegate_to: localhost delegate_to: localhost
register: create_net_combined register: create_net_combined
- name: Reenable my.meraki.com
meraki_network:
auth_key: '{{ auth_key }}'
state: present
org_name: '{{test_org_name}}'
net_name: IntTestNetworkCombined
disable_my_meraki: no
delegate_to: localhost
register: enable_meraki_com
- name: Create network with one tag - name: Create network with one tag
meraki_network: meraki_network:
auth_key: '{{ auth_key }}' auth_key: '{{ auth_key }}'
@ -148,6 +159,9 @@
assert: assert:
that: that:
- create_net_no_type.status == 500 - create_net_no_type.status == 500
- create_net_combined.data.type == 'combined'
- create_net_combined.data.disableMyMerakiCom == True
- enable_meraki_com.data.disableMyMerakiCom == False
- '"org_name or org_id parameters are required" in create_net_no_org.msg' - '"org_name or org_id parameters are required" in create_net_no_org.msg'
- '"IntTestNetworkAppliance" in create_net_appliance_no_tz.data.name' - '"IntTestNetworkAppliance" in create_net_appliance_no_tz.data.name'
- create_net_appliance_no_tz.changed == True - create_net_appliance_no_tz.changed == True

Loading…
Cancel
Save