blob: 4c3ad2762bed8f345e8776989812a63b163e0b36 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# Copyright (c) 2022 Arista Networks, Inc.
# Use of this source code is governed by the Apache License 2.0
# that can be found in the COPYING file.
from cvprac.cvp_client import CvpClient
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()
# Create connection to CloudVision
clnt = CvpClient()
clnt.connect(nodes=['cvp1'], username="username",password="password")
def main():
print('Retrieving configlets ...')
inventory = clnt.api.get_inventory()
data = clnt.api.get_configlets_and_mappers()['data']
print(data)
print('Number of configlets:', len(data['configlets']))
searchAgain = True
while searchAgain:
try:
search = input( "\nEnter Config Line: " )
print(f"\n\n\'{search}\' has been found in following configlets:\n\n")
print(f"{'Hostname':<30}{'Serial number':<50}{'MAC address':<30}{'Configlets':<40}")
print("=" * 150)
for i in inventory:
device = i['hostname']
device_sn = i['serialNumber']
device_mac = i['systemMacAddress']
configlet_list = []
for c in data['configlets']:
for g in data['generatedConfigletMappers']:
if device_mac == g['netElementId'] and c['key'] == g['configletBuilderId'] and search in c['config']:
configlet_list.append(c['name'])
for k in data['configletMappers']:
if device_mac == k['objectId'] and c['key'] == k['configletId'] and search in c['config']:
configlet_list.append(c['name'])
configlet_list_final = ",".join(configlet_list)
if len(configlet_list) > 0:
print(f"{device:<30}{device_sn:<50}{device_mac:<30}{configlet_list_final:<30}")
except KeyboardInterrupt:
print('\nExiting... \n')
return
if __name__ == '__main__':
main()
|