Files
Antonio Torres Míguez 8456ae9c2a ultimos cambios
2021-01-11 11:19:10 +01:00

62 lines
1.4 KiB
Python

import json
from flask import Flask, request
from m02_files.l_00_inventory import get_inventory
import napalm
app = Flask(__name__)
@app.route("/inventory")
def inventory():
return json.dumps(get_inventory())
@app.route("/interface_counters")
def interface_counters():
device_name = request.args.get("device")
device_type = request.args.get("type")
port = request.args.get("port")
username = request.args.get("username")
password = request.args.get("password")
result, data = get_intf_counters(
device_name=device_name,
device_type=device_type,
credentials={"username": username, "password": password},
port=int(port),
)
if result != "success":
return data, 406
else:
return data, 200
@app.route("/device_status")
def device_status():
return "Hello, Device Status!"
def get_intf_counters(device_name, device_type, port, credentials):
if device_type == "csr":
driver = napalm.get_network_driver("ios")
else:
return "error", "getting counters supported only for CSR devices"
device = driver(
hostname=device_name,
username=credentials["username"],
password=credentials["password"],
optional_args={"port": port},
)
device.open()
counters = device.get_interfaces_counters()
return "success", json.dumps(counters)
if __name__ == "__main__":
app.run()