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) def run_bgp_dampeningv4_curl_command(): curl_command = [ "curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show", "--form", "data={\"op\": \"show\", \"path\": [\"bgp\", \"vrf\", \"bgp\", \"ipv4\", \"dampening\", \"dampened-paths\"]}", "--form", f"key={VYOS_API_KEY}" ] response = subprocess.check_output(curl_command, text=True) return json.loads(response) def run_bgp_dampeningv6_curl_command(): curl_command = [ "curl", "-k", "--location", "--request", "POST", f"{VYOS_API_URL}/show", "--form", "data={\"op\": \"show\", \"path\": [\"bgp\", \"vrf\", \"bgp\", \"ipv6\", \"dampening\", \"dampened-paths\"]}", "--form", f"key={VYOS_API_KEY}" ] response = subprocess.check_output(curl_command, text=True) return json.loads(response)