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
This commit is contained in:
Kevin Breit 2018-07-09 04:10:27 -05:00 committed by Dag Wieers
parent 779f3c0c1a
commit 9036f846a3
4 changed files with 66 additions and 2 deletions

View file

@ -206,6 +206,9 @@ class MerakiModule(object):
if self.status != 200: if self.status != 200:
self.fail_json(msg='Network lookup failed') self.fail_json(msg='Network lookup failed')
self.nets = self.request(path, method='GET') 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 return self.nets
def get_net(self, org_name, net_name, data=None): def get_net(self, org_name, net_name, data=None):
@ -236,6 +239,19 @@ class MerakiModule(object):
return n['id'] return n['id']
self.fail_json(msg='No network found with the name {0}'.format(net_name)) 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): def construct_path(self, action, function=None, org_id=None, net_id=None, org_name=None):
"""Build a path from the URL catalog. """Build a path from the URL catalog.

View file

@ -31,8 +31,11 @@ options:
default: query default: query
net_name: net_name:
description: description:
- Name of network which VLAN is or should be in. - Name of network which VLAN is in or should be in.
aliases: [network] aliases: [network]
net_id:
description:
- ID of network which VLAN is in or should be in.
vlan_id: vlan_id:
description: description:
- ID number of VLAN. - ID number of VLAN.
@ -200,6 +203,7 @@ def main():
argument_spec = meraki_argument_spec() argument_spec = meraki_argument_spec()
argument_spec.update(state=dict(type='str', choices=['absent', 'present', 'query'], default='query'), argument_spec.update(state=dict(type='str', choices=['absent', 'present', 'query'], default='query'),
net_name=dict(type='str', aliases=['network']), net_name=dict(type='str', aliases=['network']),
net_id=dict(type='str'),
vlan_id=dict(type='int'), vlan_id=dict(type='int'),
name=dict(type='str', aliases=['vlan_name']), name=dict(type='str', aliases=['vlan_name']),
subnet=dict(type='str'), subnet=dict(type='str'),
@ -243,7 +247,10 @@ def main():
payload = None 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 net_id = None
if meraki.params['net_name']: if meraki.params['net_name']:
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)

View file

@ -169,6 +169,15 @@
delegate_to: localhost delegate_to: localhost
register: net_query_all 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 - name: Query one network
meraki_network: meraki_network:
auth_key: '{{ auth_key }}' auth_key: '{{ auth_key }}'
@ -182,6 +191,7 @@
assert: assert:
that: that:
- 'net_query_one.data.name == "IntTestNetworkSwitch"' - 'net_query_one.data.name == "IntTestNetworkSwitch"'
- 'query_config_template.data.name == "DevConfigTemplate"'
############################################################################# #############################################################################

View file

@ -66,6 +66,24 @@
- create_vlan.data.id == 2 - create_vlan.data.id == 2
- create_vlan.changed == True - 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 - name: Update VLAN
meraki_vlan: meraki_vlan:
auth_key: '{{auth_key}}' auth_key: '{{auth_key}}'
@ -305,3 +323,16 @@
- debug: - debug:
msg: '{{delete_vlan}}' 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}}'