Files
CursoPythonDavidBombal/m01_basics/l_02_devices.py
Antonio Torres Míguez 8456ae9c2a ultimos cambios
2021-01-11 11:19:10 +01:00

50 lines
1.6 KiB
Python

from random import choice
import string
from tabulate import tabulate
from operator import itemgetter
from pprint import pprint
devices = list() # CREATE EMPTY LIST FOR HOLDING DEVICES
# FOR LOOP TO CREATE LARGE NUMBER OF DEVICES
for index in range(1, 10):
# CREATE DEVICE DICTIONARY
device = dict()
# RANDOM DEVICE NAME
device["name"] = (
choice(["r2", "r3", "r4", "r6", "r10"])
+ choice(["L", "U"])
+ choice(string.ascii_letters)
)
# RANDOM VENDOR FROM CHOICE OF CISCO, JUNIPER, ARISTA
device["vendor"] = choice(["cisco", "juniper", "arista"])
if device["vendor"] == "cisco":
device["os"] = choice(["ios", "iosxe", "iosxr", "nexus"])
device["version"] = choice(["12.1(T).04", "14.07X", "8.12(S).010", "20.45"])
elif device["vendor"] == "juniper":
device["os"] = "junos"
device["version"] = choice(["J6.23.1", "8.43.12", "6.45", "6.03"])
elif device["vendor"] == "arista":
device["os"] = "eos"
device["version"] = choice(["2.45", "2.55", "2.92.145", "3.01"])
device["ip"] = "10.0.0." + str(index)
# NICELY FORMATTED PRINT OF THIS ONE DEVICE
print()
for key, value in device.items():
print(f"{key:>16s} : {value}")
# ADD THIS DEVICE TO THE LIST OF DEVICES
devices.append(device)
# USE PPRINT TO PRINT DATA AS-IS
print("\n----- DEViCES AS LIST OF DICTS --------------------")
pprint(devices)
# USE 'TABULATE' TO PRINT TABLE OF DEVICES
print("\n----- SORTED DEVICES IN TABULAR FORMAT --------------------")
print(tabulate(sorted(devices, key=itemgetter("vendor", "os", "version")), headers="keys"))