Spaces:
Running
Running
File size: 2,052 Bytes
765065a c7576e1 765065a c7576e1 765065a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
#!/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")
|