Router-tools/modules/parse.py

116 lines
No EOL
4.1 KiB
Python

import subprocess
import json
import os
from dotenv import load_dotenv
load_dotenv()
VYOS_API_URL = os.getenv("VYOS_API_URL")
VYOS_API_KEY = os.getenv("VYOS_API_KEY")
def run_bgp_curl_command():
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", "data={\"op\": \"show\", \"path\": [\"bgp\", \"vrf\", \"bgp\", \"summ\"]}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_arp_curl_command():
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", "data={\"op\": \"show\", \"path\": [\"arp\"]}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_neighbors_curl_command():
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", "data={\"op\": \"show\", \"path\": [\"ipv6\", \"neighbors\"]}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_interfaces_curl_command():
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", "data={\"op\": \"show\", \"path\": [\"interfaces\"]}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_bgp_route_curl_command(ip_version, bgprouteprefix):
data_json = {
"op": "show",
"path": ["bgp", "vrf", "bgp", ip_version, bgprouteprefix]
}
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", f"data={json.dumps(data_json)}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_rpki_cache_connection_curl_command():
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", "data={\"op\": \"show\", \"path\": [\"rpki\", \"cache-connection\"]}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_rpki_lookup_curl_command(lookup_type, query):
data_json = {
"op": "show",
"path": ["rpki", lookup_type, query]
}
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", f"data={json.dumps(data_json)}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_bgp_neighbor_detail_curl_command(ip_version, neighbor_ip):
path_ip_version = "ipv4" if ip_version == "ipv4" else "ipv6"
data_json = {
"op": "show",
"path": ["bgp", "vrf", "bgp", path_ip_version, "neighbors", neighbor_ip]
}
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", f"data={json.dumps(data_json)}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_bfd_peers_curl_command():
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", "data={\"op\": \"show\", \"path\": [\"bfd\", \"peers\"]}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)
def run_bfd_peer_detail_curl_command(peer_ip):
data_json = {
"op": "show",
"path": ["bfd", "peer", peer_ip]
}
curl_command = [
"curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show",
"--form", f"data={json.dumps(data_json)}",
"--form", f"key={VYOS_API_KEY}"
]
response = subprocess.check_output(curl_command, text=True)
return json.loads(response)