summaryrefslogtreecommitdiffstats
path: root/docs/labs/lab03-configlet-management/config_search.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-05-11 09:04:53 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-05-13 09:34:21 +0000
commit47553c43d71b7b1144f912ab9679f5b60e858fa2 (patch)
tree08378beaeeea8f9bb2686d3037c7b6f5062bb948 /docs/labs/lab03-configlet-management/config_search.py
parentInitial commit. (diff)
downloadcvprac-a65feb76b09ace829c4c389df1bb986491d035ae.tar.xz
cvprac-a65feb76b09ace829c4c389df1bb986491d035ae.zip
Adding upstream version 1.3.1+dfsg.upstream/1.3.1+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'docs/labs/lab03-configlet-management/config_search.py')
-rw-r--r--docs/labs/lab03-configlet-management/config_search.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/docs/labs/lab03-configlet-management/config_search.py b/docs/labs/lab03-configlet-management/config_search.py
new file mode 100644
index 0000000..4c3ad27
--- /dev/null
+++ b/docs/labs/lab03-configlet-management/config_search.py
@@ -0,0 +1,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()
+