summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Breit <kevin.breit@kevinbreit.net>2018-07-09 11:10:27 +0200
committerDag Wieers <dag@wieers.com>2018-07-09 11:10:27 +0200
commit9036f846a3972a16d453496ef88bb6461097147e (patch)
treef67b3f7ebb711fb65887fafe7947a73148374bdc
parentAllow module to claim devices into an organization (#42448) (diff)
downloadansible-9036f846a3972a16d453496ef88bb6461097147e.tar.xz
ansible-9036f846a3972a16d453496ef88bb6461097147e.zip
meraki - Enabled support for configuration template configuration (#42392)
* Enabled support for configuration template configuration - get_nets() now pulls down templates and networks - A few changes in VLAN and network to operate as a POC * Ansibot changes - Fix undefined variable - Document net_id in meraki_vlan * Fix indentation
-rw-r--r--lib/ansible/module_utils/network/meraki/meraki.py16
-rw-r--r--lib/ansible/modules/network/meraki/meraki_vlan.py11
-rw-r--r--test/integration/targets/meraki_network/tasks/main.yml10
-rw-r--r--test/integration/targets/meraki_vlan/tasks/main.yml31
4 files changed, 66 insertions, 2 deletions
diff --git a/lib/ansible/module_utils/network/meraki/meraki.py b/lib/ansible/module_utils/network/meraki/meraki.py
index c395de9d5f..7499f64da2 100644
--- a/lib/ansible/module_utils/network/meraki/meraki.py
+++ b/lib/ansible/module_utils/network/meraki/meraki.py
@@ -206,6 +206,9 @@ class MerakiModule(object):
if self.status != 200:
self.fail_json(msg='Network lookup failed')
self.nets = self.request(path, method='GET')
+ templates = self.get_config_templates(org_id)
+ for t in templates:
+ self.nets.append(t)
return self.nets
def get_net(self, org_name, net_name, data=None):
@@ -236,6 +239,19 @@ class MerakiModule(object):
return n['id']
self.fail_json(msg='No network found with the name {0}'.format(net_name))
+ def get_config_templates(self, org_id):
+ path = self.construct_path('get_all', function='configTemplates', org_id=org_id)
+ response = self.request(path, 'GET')
+ if self.status != 200:
+ self.fail_json(msg='Unable to get configuration templates')
+ return response
+
+ def get_template_id(self, name, data):
+ for template in data:
+ if name == template['name']:
+ return template['id']
+ self.fail_json(msg='No configuration template named {0} found'.format(name))
+
def construct_path(self, action, function=None, org_id=None, net_id=None, org_name=None):
"""Build a path from the URL catalog.
diff --git a/lib/ansible/modules/network/meraki/meraki_vlan.py b/lib/ansible/modules/network/meraki/meraki_vlan.py
index 07e264fdfe..02e0dfb8dc 100644
--- a/lib/ansible/modules/network/meraki/meraki_vlan.py
+++ b/lib/ansible/modules/network/meraki/meraki_vlan.py
@@ -31,8 +31,11 @@ options:
default: query
net_name:
description:
- - Name of network which VLAN is or should be in.
+ - Name of network which VLAN is in or should be in.
aliases: [network]
+ net_id:
+ description:
+ - ID of network which VLAN is in or should be in.
vlan_id:
description:
- ID number of VLAN.
@@ -200,6 +203,7 @@ def main():
argument_spec = meraki_argument_spec()
argument_spec.update(state=dict(type='str', choices=['absent', 'present', 'query'], default='query'),
net_name=dict(type='str', aliases=['network']),
+ net_id=dict(type='str'),
vlan_id=dict(type='int'),
name=dict(type='str', aliases=['vlan_name']),
subnet=dict(type='str'),
@@ -243,7 +247,10 @@ def main():
payload = None
- nets = temp_get_nets(meraki, meraki.params['org_name'])
+ org_id = meraki.params['org_id']
+ if org_id is None:
+ org_id = meraki.get_org_id(meraki.params['org_name'])
+ nets = meraki.get_nets(org_id=org_id)
net_id = None
if meraki.params['net_name']:
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 942302a6eb..0ece172e13 100644
--- a/test/integration/targets/meraki_network/tasks/main.yml
+++ b/test/integration/targets/meraki_network/tasks/main.yml
@@ -169,6 +169,15 @@
delegate_to: localhost
register: net_query_all
+ - 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
+
- name: Query one network
meraki_network:
auth_key: '{{ auth_key }}'
@@ -182,6 +191,7 @@
assert:
that:
- 'net_query_one.data.name == "IntTestNetworkSwitch"'
+ - 'query_config_template.data.name == "DevConfigTemplate"'
#############################################################################
diff --git a/test/integration/targets/meraki_vlan/tasks/main.yml b/test/integration/targets/meraki_vlan/tasks/main.yml
index 1edad71b19..bd082b5cdf 100644
--- a/test/integration/targets/meraki_vlan/tasks/main.yml
+++ b/test/integration/targets/meraki_vlan/tasks/main.yml
@@ -66,6 +66,24 @@
- create_vlan.data.id == 2
- create_vlan.changed == True
+ - name: Create VLAN in template configuration
+ meraki_vlan:
+ auth_key: '{{auth_key}}'
+ state: present
+ org_name: '{{test_org_name}}'
+ net_name: '{{test_template_name}}'
+ vlan_id: 2
+ name: TestVLAN
+ subnet: 192.168.250.0/24
+ appliance_ip: 192.168.250.1
+ delegate_to: localhost
+ register: create_vlan_template
+
+ - assert:
+ that:
+ - create_vlan_template.data.id == 2
+ - create_vlan_template.changed == True
+
- name: Update VLAN
meraki_vlan:
auth_key: '{{auth_key}}'
@@ -305,3 +323,16 @@
- debug:
msg: '{{delete_vlan}}'
+
+ - name: Delete VLAN using template ID
+ meraki_vlan:
+ auth_key: '{{auth_key}}'
+ state: absent
+ org_name: '{{test_org_name}}'
+ net_id: '{{test_template_id}}'
+ vlan_id: 2
+ delegate_to: localhost
+ register: delete_vlan_template
+
+ - debug:
+ msg: '{{delete_vlan_template}}'