summaryrefslogtreecommitdiffstats
path: root/docs/labs/lab03-configlet-management/get_configlets.py
blob: fc3dc2ddb621c1abc70139d6b55817a03d74513d (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
# 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 list of configlets in parallel

from cvprac.cvp_client import CvpClient
import ssl
from concurrent.futures import ThreadPoolExecutor
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")

import time
from functools import wraps

def get_list_of_configlets(configlets):
    """
    Create a thread pool and download specified urls
    """

    futures_list = []
    results = []

    with ThreadPoolExecutor(max_workers=40) as executor:
        for configlet in configlets:
            futures = executor.submit(clnt.api.get_configlet_by_name, configlet)
            futures_list.append(futures)

        for future in futures_list:
            try:
                result = future.result(timeout=60)
                results.append(result)
            except Exception:
                results.append(None)
    return results

if __name__ == "__main__":
    # Example with pre-defined list
    configlets = ["tp-avd_tp-avd-leaf1","tp-avd_tp-avd-leaf2","tp-avd_tp-avd-leaf3","tp-avd_tp-avd-leaf4"]

    # Example with loading list of configlets from a file
    # with open("configlet_list.txt") as f:
    #     configlets = f.read().splitlines()

    results = get_list_of_configlets(configlets)
    for result in results:
        print(result)