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")