Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| """Add the missing WAN links - connect stores to HQ""" | |
| import requests | |
| import os | |
| GNS3_SERVER = os.getenv("GNS3_SERVER", "http://localhost:3080") | |
| GNS3_API = f"{GNS3_SERVER}/v2" | |
| PROJECT_NAME = os.getenv("GNS3_PROJECT_NAME", "overgrowth") | |
| def get_project_id(name): | |
| resp = requests.get(f"{GNS3_API}/projects") | |
| projects = resp.json() | |
| project = next((p for p in projects if p['name'] == name), None) | |
| return project['project_id'] if project else None | |
| def get_nodes(project_id): | |
| resp = requests.get(f"{GNS3_API}/projects/{project_id}/nodes") | |
| return {n['name']: n for n in resp.json()} | |
| def create_link(project_id, node1_id, adapter1, port1, node2_id, adapter2, port2, desc=""): | |
| data = { | |
| "nodes": [ | |
| {"node_id": node1_id, "adapter_number": adapter1, "port_number": port1}, | |
| {"node_id": node2_id, "adapter_number": adapter2, "port_number": port2} | |
| ] | |
| } | |
| resp = requests.post(f"{GNS3_API}/projects/{project_id}/links", json=data) | |
| if resp.status_code in [200, 201]: | |
| print(f" β {desc}") | |
| return True | |
| else: | |
| print(f" β {desc} - {resp.status_code}") | |
| return False | |
| project_id = get_project_id(PROJECT_NAME) | |
| nodes = get_nodes(project_id) | |
| print("π Adding WAN links (HQ β Stores)...\n") | |
| # Instead of using cloud, connect HQ directly to stores (simulates WAN) | |
| hq = nodes.get('SW-HQ-Core') | |
| west = nodes.get('SW-West') | |
| east = nodes.get('SW-East') | |
| # HQ β Store-West (WAN link) | |
| if hq and west: | |
| create_link(project_id, hq['node_id'], 14, 0, west['node_id'], 14, 0, | |
| "HQ-Core e14 β SW-West e14 (WAN: HQ-to-Downtown)") | |
| # HQ β Store-East (WAN link) | |
| if hq and east: | |
| create_link(project_id, hq['node_id'], 13, 0, east['node_id'], 14, 0, | |
| "HQ-Core e13 β SW-East e14 (WAN: HQ-to-Suburb)") | |
| print("\nβ WAN topology complete!") | |
| print(" All stores now connected to HQ for:") | |
| print(" β’ Real-time sales data sync") | |
| print(" β’ Inventory management") | |
| print(" β’ Remote monitoring") | |