nxos_snmp_* fixes : Fixes #30997, #30999 (#31000)

* add codeblock to handle 5K platform for nxos_snmp_host

* fix get_snmp_traps for 5K platform

* Make shippable happy
pull/31340/merge
rahushen 7 years ago committed by Trishna Guha
parent 0218fdcd80
commit 48f4643a66

@ -150,6 +150,14 @@ def get_snmp_host(host, module):
'secname': 'community' 'secname': 'community'
} }
host_map_5k = {
'port': 'udp',
'version': 'version',
'sec_level': 'v3',
'notif_type': 'snmp_type',
'commun_or_user': 'community'
}
resource = {} resource = {}
if body: if body:
@ -177,9 +185,36 @@ def get_snmp_host(host, module):
if vrf: if vrf:
host_resource['vrf'] = vrf.split(':')[1].strip() host_resource['vrf'] = vrf.split(':')[1].strip()
resource[key] = host_resource resource[key] = host_resource
except KeyError:
# Handle the 5K case
try:
resource_table = body[0]['TABLE_hosts']['ROW_hosts']
if isinstance(resource_table, dict):
resource_table = [resource_table]
for each in resource_table:
key = str(each['address'])
src = each.get('src_intf')
host_resource = apply_key_map(host_map_5k, each)
if src:
host_resource['src_intf'] = src.split(':')[1].strip()
vrf_filt = each.get('TABLE_filter_vrf')
if vrf_filt:
vrf_filter = vrf_filt['ROW_filter_vrf']['filter_vrf_name'].split(',')
filters = [vrf.strip() for vrf in vrf_filter]
host_resource['vrf_filter'] = filters
vrf = each.get('use_vrf_name')
if vrf:
host_resource['vrf'] = vrf.strip()
resource[key] = host_resource
except (KeyError, AttributeError, TypeError): except (KeyError, AttributeError, TypeError):
return resource return resource
except (AttributeError, TypeError):
return resource
find = resource.get(host) find = resource.get(host)

@ -120,17 +120,21 @@ def get_snmp_traps(group, module):
'isEnabled': 'enabled' 'isEnabled': 'enabled'
} }
resource = {} trap_key_5k = {
'trap': 'trap',
try: 'enabled': 'enabled'
resource_table = body[0]['TABLE_snmp_trap']['ROW_snmp_trap'] }
for each_feature in ['aaa', 'bridge', 'callhome', 'cfs', 'config', resource = {}
feature_list = ['aaa', 'bridge', 'callhome', 'cfs', 'config',
'entity', 'feature-control', 'hsrp', 'license', 'entity', 'feature-control', 'hsrp', 'license',
'link', 'lldp', 'ospf', 'pim', 'rf', 'rmon', 'link', 'lldp', 'ospf', 'pim', 'rf', 'rmon',
'snmp', 'storm-control', 'stpx', 'sysmgr', 'snmp', 'storm-control', 'stpx', 'sysmgr',
'system', 'upgrade', 'vtp']: 'system', 'upgrade', 'vtp']
try:
resource_table = body[0]['TABLE_snmp_trap']['ROW_snmp_trap']
for each_feature in feature_list:
resource[each_feature] = [] resource[each_feature] = []
for each_resource in resource_table: for each_resource in resource_table:
@ -139,9 +143,24 @@ def get_snmp_traps(group, module):
if key != 'Generic': if key != 'Generic':
resource[key].append(mapped_trap) resource[key].append(mapped_trap)
except KeyError:
try:
resource_table = body[0]['TABLE_mib']['ROW_mib']
for each_feature in feature_list:
resource[each_feature] = []
for each_resource in resource_table:
key = str(each_resource['mib'])
each_resource = each_resource['TABLE_trap']['ROW_trap']
mapped_trap = apply_key_map(trap_key_5k, each_resource)
if key != 'Generic':
resource[key].append(mapped_trap)
except (KeyError, AttributeError): except (KeyError, AttributeError):
return resource return resource
except AttributeError:
return resource
find = resource.get(group, None) find = resource.get(group, None)
@ -221,7 +240,6 @@ def main():
existing = get_snmp_traps(group, module) existing = get_snmp_traps(group, module)
commands = get_trap_commands(group, state, existing, module) commands = get_trap_commands(group, state, existing, module)
cmds = flatten_list(commands) cmds = flatten_list(commands)
if cmds: if cmds:
results['changed'] = True results['changed'] = True

Loading…
Cancel
Save