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:
parent
779f3c0c1a
commit
9036f846a3
4 changed files with 66 additions and 2 deletions
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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"'
|
||||||
|
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
|
@ -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}}'
|
||||||
|
|
Loading…
Reference in a new issue