Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| """Add the final 2 missing links""" | |
| 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") | |
| all_nodes = resp.json() | |
| return {n['name']: n for n in all_nodes} | |
| 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}: {resp.text[:150]}") | |
| return False | |
| project_id = get_project_id(PROJECT_NAME) | |
| nodes = get_nodes(project_id) | |
| print("Adding final 2 links...\n") | |
| # PC2 -> SW1 (find available port on SW1) | |
| pc2 = nodes.get('PC2-Sales') | |
| sw1 = nodes.get('SW1-Access2') | |
| if pc2 and sw1: | |
| # Try different ports on SW1 (0 and 2 are used, try 1, 3, 4, 5...) | |
| for port_num in [1, 3, 4, 5, 6, 7]: | |
| if create_link(project_id, pc2['node_id'], 0, 0, sw1['node_id'], port_num, 0, | |
| f"PC2-Sales β SW1 e{port_num}"): | |
| break | |
| # PC3 -> SW2 (find available port on SW2) | |
| pc3 = nodes.get('PC3-Engineering') | |
| sw2 = nodes.get('SW2-Core2') | |
| if pc3 and sw2: | |
| # Try different ports on SW2 (1, 2, 3, 4 are used, try 0, 5, 6, 7...) | |
| for port_num in [0, 5, 6, 7, 8, 9]: | |
| if create_link(project_id, pc3['node_id'], 0, 0, sw2['node_id'], port_num, 0, | |
| f"PC3-Engineering β SW2 e{port_num}"): | |
| break | |
| print("\nβ Done! Run verify_ccna_status.py to confirm.") | |