2018-05-15 22:42:09 +02:00
|
|
|
# Test code for the Meraki modules
|
|
|
|
# Copyright: (c) 2018, Kevin Breit (@kbreit)
|
|
|
|
|
|
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
---
|
2018-07-03 10:42:04 +02:00
|
|
|
- block:
|
|
|
|
- name: Create network without type
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetwork
|
|
|
|
timezone: America/Chicago
|
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_no_type
|
|
|
|
ignore_errors: yes
|
|
|
|
|
2019-06-05 16:33:55 +02:00
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- create_net_no_type.msg == 'type parameter is required when creating a network.'
|
|
|
|
|
2018-07-03 10:42:04 +02:00
|
|
|
- name: Create network without organization
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
net_name: IntTestNetwork
|
|
|
|
timezone: America/Chicago
|
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_no_org
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: Create network with type switch
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkSwitch
|
|
|
|
type: switch
|
|
|
|
timezone: America/Chicago
|
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_switch
|
2018-05-15 22:42:09 +02:00
|
|
|
|
2018-07-03 10:42:04 +02:00
|
|
|
- name: Create network with type switch by org ID
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_id: '{{test_org_id}}'
|
|
|
|
net_name: IntTestNetworkSwitchOrgID
|
|
|
|
type: switch
|
|
|
|
timezone: America/Chicago
|
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_switch_org_id
|
|
|
|
|
|
|
|
- name: Create network with type appliance and no timezone
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkAppliance
|
|
|
|
type: appliance
|
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_appliance_no_tz
|
2019-05-01 18:24:39 +02:00
|
|
|
|
|
|
|
- name: Enable VLAN support on appliance network
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{ test_org_name }}'
|
|
|
|
net_name: IntTestNetworkAppliance
|
|
|
|
enable_vlans: yes
|
|
|
|
delegate_to: localhost
|
|
|
|
register: enable_vlan
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- enable_vlan.data.enabled == True
|
|
|
|
|
|
|
|
- name: Enable VLAN support on appliance network with idempotency
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{ test_org_name }}'
|
|
|
|
net_name: IntTestNetworkAppliance
|
|
|
|
enable_vlans: yes
|
|
|
|
delegate_to: localhost
|
|
|
|
register: enable_vlan_idempotent
|
|
|
|
|
2019-05-17 05:04:16 +02:00
|
|
|
- debug:
|
|
|
|
var: enable_vlan_idempotent
|
|
|
|
|
2019-05-01 18:24:39 +02:00
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- enable_vlan_idempotent is not changed
|
2019-05-17 05:04:16 +02:00
|
|
|
- enable_vlan_idempotent.data is defined
|
2019-05-01 18:24:39 +02:00
|
|
|
|
|
|
|
- name: Disable VLAN support on appliance network
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{ test_org_name }}'
|
|
|
|
net_name: IntTestNetworkAppliance
|
|
|
|
enable_vlans: no
|
|
|
|
delegate_to: localhost
|
|
|
|
register: disable_vlan
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- disable_vlan.data.enabled == False
|
|
|
|
|
|
|
|
- name: Disable VLAN support on appliance network with idempotency
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{ test_org_name }}'
|
|
|
|
net_name: IntTestNetworkAppliance
|
|
|
|
enable_vlans: no
|
|
|
|
delegate_to: localhost
|
|
|
|
register: disable_vlan_idempotent
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- disable_vlan_idempotent is not changed
|
2019-05-17 05:04:16 +02:00
|
|
|
- disable_vlan_idempotent.data is defined
|
2019-05-01 18:24:39 +02:00
|
|
|
|
2019-05-29 22:29:40 +02:00
|
|
|
- name: Create network with type wireless and disable my.meraki.com
|
2018-07-03 10:42:04 +02:00
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkWireless
|
|
|
|
type: wireless
|
|
|
|
timezone: America/Chicago
|
2019-05-29 22:29:40 +02:00
|
|
|
disable_my_meraki: yes
|
2018-07-03 10:42:04 +02:00
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_wireless
|
|
|
|
|
2019-05-29 22:29:40 +02:00
|
|
|
- name: Create network with type wireless, disable my.meraki.com, and check for idempotency
|
2018-07-03 10:42:04 +02:00
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkWireless
|
|
|
|
type: wireless
|
|
|
|
timezone: America/Chicago
|
2019-05-29 22:29:40 +02:00
|
|
|
disable_my_meraki: yes
|
2018-07-03 10:42:04 +02:00
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_wireless_idempotent
|
|
|
|
|
2019-05-17 05:04:16 +02:00
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- create_net_wireless_idempotent.data is defined
|
|
|
|
|
2018-07-09 11:21:34 +02:00
|
|
|
- name: Create network with type combined and disable my.meraki.com
|
2018-07-03 10:42:04 +02:00
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
2019-03-27 16:10:15 +01:00
|
|
|
org_name: '{{ test_org_name }}'
|
2018-07-03 10:42:04 +02:00
|
|
|
net_name: IntTestNetworkCombined
|
2019-03-27 16:10:15 +01:00
|
|
|
type:
|
|
|
|
- appliance
|
|
|
|
- switch
|
2018-07-03 10:42:04 +02:00
|
|
|
timezone: America/Chicago
|
2019-05-29 22:29:40 +02:00
|
|
|
enable_my_meraki: no
|
2018-07-03 10:42:04 +02:00
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_combined
|
2018-07-09 11:21:34 +02:00
|
|
|
|
|
|
|
- name: Reenable my.meraki.com
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkCombined
|
2019-05-29 22:29:40 +02:00
|
|
|
enable_my_meraki: yes
|
2018-07-09 11:21:34 +02:00
|
|
|
delegate_to: localhost
|
|
|
|
register: enable_meraki_com
|
2019-05-29 22:29:40 +02:00
|
|
|
|
|
|
|
- name: Disable my.meraki.com for next test
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkCombined
|
|
|
|
enable_my_meraki: no
|
|
|
|
delegate_to: localhost
|
|
|
|
|
|
|
|
- name: Enable remote status page
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkCombined
|
|
|
|
enable_remote_status_page: yes
|
|
|
|
delegate_to: localhost
|
|
|
|
register: disable_remote_status
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: '{{disable_remote_status}}'
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
2019-06-13 21:07:30 +02:00
|
|
|
- disable_remote_status.data.disable_remote_status_page == False
|
2019-05-29 22:29:40 +02:00
|
|
|
|
|
|
|
- name: Disable remote status page
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkCombined
|
|
|
|
enable_remote_status_page: no
|
|
|
|
delegate_to: localhost
|
|
|
|
register: enable_remote_status
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: '{{enable_remote_status}}'
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
2019-06-13 21:07:30 +02:00
|
|
|
- enable_remote_status.data.disable_remote_status_page == True
|
2019-05-29 22:29:40 +02:00
|
|
|
|
|
|
|
- name: Test status pages are mutually exclusive when on
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkCombined
|
|
|
|
enable_my_meraki: yes
|
|
|
|
enable_remote_status_page: no
|
|
|
|
delegate_to: localhost
|
|
|
|
register: status_exclusivity
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- '"must be true when setting" in status_exclusivity.msg'
|
|
|
|
|
2018-07-03 10:42:04 +02:00
|
|
|
- name: Create network with one tag
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkTag
|
|
|
|
type: switch
|
|
|
|
timezone: America/Chicago
|
|
|
|
tags: first_tag
|
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_tag
|
2018-05-15 22:42:09 +02:00
|
|
|
|
2018-07-03 10:42:04 +02:00
|
|
|
- name: Create network with two tags
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkTags
|
|
|
|
type: switch
|
|
|
|
timezone: America/Chicago
|
2019-03-27 16:10:15 +01:00
|
|
|
tags:
|
|
|
|
- first_tag
|
|
|
|
- second_tag
|
2018-07-03 10:42:04 +02:00
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_tags
|
|
|
|
|
2019-06-05 16:33:55 +02:00
|
|
|
- set_fact:
|
|
|
|
tag_net_id: '{{create_net_tags.data.id}}'
|
|
|
|
|
|
|
|
- name: Modify network by net_id
|
2018-07-03 10:42:04 +02:00
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
2019-06-05 16:33:55 +02:00
|
|
|
net_id: '{{tag_net_id}}'
|
2018-07-03 10:42:04 +02:00
|
|
|
type: switch
|
|
|
|
timezone: America/Chicago
|
2019-03-27 16:10:15 +01:00
|
|
|
tags:
|
|
|
|
- first_tag
|
|
|
|
- second_tag
|
|
|
|
- third_tag
|
2018-07-03 10:42:04 +02:00
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_modified
|
|
|
|
|
|
|
|
- name: Modify network with idempotency
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: present
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkTags
|
|
|
|
type: switch
|
|
|
|
timezone: America/Chicago
|
2019-03-27 16:10:15 +01:00
|
|
|
tags:
|
|
|
|
- first_tag
|
|
|
|
- second_tag
|
|
|
|
- third_tag
|
2018-07-03 10:42:04 +02:00
|
|
|
delegate_to: localhost
|
|
|
|
register: create_net_modified_idempotent
|
|
|
|
|
2019-05-17 05:04:16 +02:00
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- create_net_modified_idempotent.data is defined
|
|
|
|
|
2018-07-03 10:42:04 +02:00
|
|
|
- name: Present assertions
|
|
|
|
assert:
|
|
|
|
that:
|
2018-07-09 11:21:34 +02:00
|
|
|
- create_net_combined.data.type == 'combined'
|
2019-06-13 21:07:30 +02:00
|
|
|
- create_net_combined.data.disable_my_meraki_com == True
|
|
|
|
- enable_meraki_com.data.disable_my_meraki_com == False
|
2018-07-03 10:42:04 +02:00
|
|
|
- '"org_name or org_id parameters are required" in create_net_no_org.msg'
|
|
|
|
- '"IntTestNetworkAppliance" in create_net_appliance_no_tz.data.name'
|
|
|
|
- create_net_appliance_no_tz.changed == True
|
|
|
|
- '"IntTestNetworkSwitch" in create_net_switch.data.name'
|
|
|
|
- '"IntTestNetworkSwitchOrgID" in create_net_switch_org_id.data.name'
|
|
|
|
- '"IntTestNetworkWireless" in create_net_wireless.data.name'
|
2019-06-13 21:07:30 +02:00
|
|
|
- create_net_wireless.data.disable_my_meraki_com == True
|
2018-07-03 10:42:04 +02:00
|
|
|
- create_net_wireless_idempotent.changed == False
|
2019-05-17 05:04:16 +02:00
|
|
|
- create_net_wireless_idempotent.data is defined
|
2018-07-03 10:42:04 +02:00
|
|
|
- '"first_tag" in create_net_tag.data.tags'
|
|
|
|
- '"second_tag" in create_net_tags.data.tags'
|
|
|
|
- '"third_tag" in create_net_modified.data.tags'
|
|
|
|
- create_net_modified.changed == True
|
|
|
|
- create_net_modified_idempotent.changed == False
|
2019-05-17 05:04:16 +02:00
|
|
|
- create_net_modified_idempotent.data is defined
|
2018-07-03 10:42:04 +02:00
|
|
|
|
|
|
|
- name: Query all networks
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: query
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
delegate_to: localhost
|
|
|
|
register: net_query_all
|
|
|
|
|
2018-07-09 11:10:27 +02:00
|
|
|
- name: Query a configuration template
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{auth_key}}'
|
|
|
|
state: query
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: '{{test_template_name}}'
|
|
|
|
delegate_to: localhost
|
|
|
|
register: query_config_template
|
|
|
|
|
2018-07-03 10:42:04 +02:00
|
|
|
- name: Query one network
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: query
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: IntTestNetworkSwitch
|
|
|
|
delegate_to: localhost
|
|
|
|
register: net_query_one
|
|
|
|
|
|
|
|
- name: Query assertions
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- 'net_query_one.data.name == "IntTestNetworkSwitch"'
|
2019-02-22 21:52:59 +01:00
|
|
|
- 'query_config_template.data.name == "{{ test_template_name }}"'
|
2018-07-03 10:42:04 +02:00
|
|
|
|
|
|
|
#############################################################################
|
|
|
|
# Tear down starts here
|
|
|
|
#############################################################################
|
|
|
|
always:
|
|
|
|
- name: Delete network without org
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: absent
|
|
|
|
net_name: IntTestNetworkSwitch
|
|
|
|
delegate_to: localhost
|
|
|
|
register: delete_all_no_org
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: Delete network by org ID
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: absent
|
|
|
|
org_id: '{{test_org_id}}'
|
|
|
|
net_name: IntTestNetworkSwitchOrgID
|
|
|
|
delegate_to: localhost
|
|
|
|
register: delete_net_org_id
|
|
|
|
|
|
|
|
- name: Query after delete with org ID
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: query
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
delegate_to: localhost
|
|
|
|
register: query_deleted_org_id
|
|
|
|
|
|
|
|
- name: Delete all networks
|
|
|
|
meraki_network:
|
|
|
|
auth_key: '{{ auth_key }}'
|
|
|
|
state: absent
|
|
|
|
org_name: '{{test_org_name}}'
|
|
|
|
net_name: '{{ item }}'
|
|
|
|
delegate_to: localhost
|
|
|
|
register: delete_all
|
|
|
|
ignore_errors: yes
|
|
|
|
loop:
|
|
|
|
- IntTestNetworkSwitch
|
|
|
|
- IntTestNetworkWireless
|
|
|
|
- IntTestNetworkAppliance
|
|
|
|
- IntTestNetworkCombined
|
|
|
|
- IntTestNetworkTag
|
|
|
|
- IntTestNetworkTags
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
2019-03-27 16:10:15 +01:00
|
|
|
- 'delete_all_no_org.msg == "org_name or org_id parameters are required"'
|