49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
|
# Copyright (c) 2021 Arista Networks, Inc.
|
||
|
# Use of this source code is governed by the Apache License 2.0
|
||
|
# that can be found in the COPYING file.
|
||
|
#
|
||
|
# Get configlets and save them to individual files using multi threading
|
||
|
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()
|
||
|
from concurrent.futures import ThreadPoolExecutor
|
||
|
from functools import wraps
|
||
|
|
||
|
# Create connection to CloudVision
|
||
|
clnt = CvpClient()
|
||
|
clnt.connect(['cvp1'],'username', 'password')
|
||
|
|
||
|
total = clnt.api.get_configlets(start=0,end=1)['total']
|
||
|
|
||
|
def get_list_of_configlets():
|
||
|
"""
|
||
|
Create a thread pool and download specified urls
|
||
|
"""
|
||
|
|
||
|
futures_list = []
|
||
|
results = []
|
||
|
|
||
|
with ThreadPoolExecutor(max_workers=40) as executor:
|
||
|
for i in range(0,total+1,10):
|
||
|
futures = executor.submit(clnt.api.get_configlets, start=i,end=i+10)
|
||
|
futures_list.append(futures)
|
||
|
|
||
|
for future in futures_list:
|
||
|
try:
|
||
|
result = future.result(timeout=60)
|
||
|
results.append(result)
|
||
|
except Exception:
|
||
|
results.append(None)
|
||
|
print(future.result())
|
||
|
return results
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
|
||
|
results = get_list_of_configlets()
|
||
|
for future in results:
|
||
|
for configlet in future['data']:
|
||
|
with open(configlet['name'],'w') as f:
|
||
|
f.write(configlet['config'])
|