From 76e85b552a5b7e6479f3ba11cc699e4f089691dd Mon Sep 17 00:00:00 2001 From: grossmj Date: Sun, 27 Sep 2026 18:51:14 +0200 Subject: [PATCH 1/3] chore(deps): update dependencies --- requirements.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/requirements.txt b/requirements.txt index b41c599ee..5b89bf4a1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,23 +1,23 @@ # GNS3 Server Core Dependencies -uvicorn==0.52.4 -pydantic==2.13.4 +uvicorn==0.54.0 +pydantic==2.13.5 fastapi==0.141.1 python-multipart==0.0.32 websockets==16.1.1 # version 16.1.1 is the last version that supports Python 3.10 aiohttp>=3.14.3,<3.15 aiofiles>=25.1.0,<26.0 Jinja2>=3.1.6,<3.2 -sentry-sdk>=2.68.0,<3 # optional dependency +sentry-sdk>=2.70.0,<3 # optional dependency psutil>=7.2.2 async-timeout>=5.0.1,<5.1; python_version < '3.11' # this library has effectively been upstreamed into Python 3.11+ distro>=1.9.0 py-cpuinfo>=9.0.0,<10.0 greenlet==3.5.3; python_version >= '3.13' # necessary to run sqlalchemy on Python >= 3.13 -sqlalchemy==2.0.52 +sqlalchemy==2.1.1 aiosqlite==0.22.1 -alembic==1.19.1 +alembic==1.20 bcrypt==5.0.0 -joserfc==1.7.4 +joserfc==1.7.5 email-validator==2.3.0 watchdog==6.0.0 zstandard==0.25.0 @@ -25,11 +25,11 @@ platformdirs>=2.4.0 # fastmcp-slim >=3.4 requires >=4.0.0; upper bound removed truststore>=0.10.4; python_version >= '3.10' # Shared dependencies (also used by AI Copilot) -telnetlib3==5.0.0 +telnetlib3==5.0.1,<6 asyncssh>=2.24.0,<3 typing-extensions>=4.16.0 requests>=2.34.2 -urllib3>=2.7.0 +urllib3>=2.8.0 # ============================================================================== # File type detection From 52f2774c053fe2d81a1e3708e06c7525193bb1d9 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sun, 27 Sep 2026 18:55:33 +0200 Subject: [PATCH 2/3] sqlalchemy v2.0.54 is the last version that supports Python 3.10 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5b89bf4a1..15330d785 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ async-timeout>=5.0.1,<5.1; python_version < '3.11' # this library has effective distro>=1.9.0 py-cpuinfo>=9.0.0,<10.0 greenlet==3.5.3; python_version >= '3.13' # necessary to run sqlalchemy on Python >= 3.13 -sqlalchemy==2.1.1 +sqlalchemy==2.0.54 # version 2.0.54 is the last version that supports Python 3.10 aiosqlite==0.22.1 alembic==1.20 bcrypt==5.0.0 From b96774d1f70faa4d64ac4d365e6b2aaa12509b1e Mon Sep 17 00:00:00 2001 From: grossmj Date: Sun, 27 Sep 2026 18:59:42 +0200 Subject: [PATCH 3/3] Sync appliances --- .../asterfusion-vAsterNOS-VPP.gns3a | 18 +- gns3server/appliances/cisco-iol-l2.gns3a | 35 ++++ gns3server/appliances/cisco-iol-xe.gns3a | 35 ++++ gns3server/appliances/cisco-iosv.gns3a | 14 ++ gns3server/appliances/cisco-nxosv9k.gns3a | 14 ++ .../appliances/cisco-xrd-control-plane.gns3a | 140 ++++++++++++++ gns3server/appliances/freebsd.gns3a | 17 +- gns3server/appliances/infix.gns3a | 18 +- gns3server/appliances/ostinato.gns3a | 26 +++ gns3server/appliances/srlinux.gns3a | 180 ++++++++++++++++++ gns3server/appliances/westermo-weos.gns3a | 15 +- 11 files changed, 506 insertions(+), 6 deletions(-) create mode 100644 gns3server/appliances/cisco-iol-l2.gns3a create mode 100644 gns3server/appliances/cisco-iol-xe.gns3a create mode 100644 gns3server/appliances/cisco-xrd-control-plane.gns3a create mode 100644 gns3server/appliances/srlinux.gns3a diff --git a/gns3server/appliances/asterfusion-vAsterNOS-VPP.gns3a b/gns3server/appliances/asterfusion-vAsterNOS-VPP.gns3a index 86016b329..62037f4bf 100644 --- a/gns3server/appliances/asterfusion-vAsterNOS-VPP.gns3a +++ b/gns3server/appliances/asterfusion-vAsterNOS-VPP.gns3a @@ -13,9 +13,17 @@ "maintainer_email": "bd@cloudswit.ch", "availability": "with-registration", "images": [ + { + "filename": "AsterNOS-VPP_V6.1-R0104P02_x86.img", + "version": "6.1_R0104P02", + "md5sum": "a02926586176559b9ead106baa934ce0", + "filesize": 2584018944, + "download_url": "https://asternos.dev/api/file/db840750-01fd-4d1f-9e35-efa3ce30193f", + "compression": "gzip" + }, { "filename": "AsterNOS-VPP_V6.1-R0101P02_x86.img", - "version": "6.1", + "version": "6.1_R0101P02", "md5sum": "55834c3e8849ab226144d79ef76acf81", "filesize": 1318201015, "download_url": "https://asternos.dev/api/file/b2c9fd83-a9d3-46f3-9676-6b49dd481d6c", @@ -33,7 +41,13 @@ }, "versions": [ { - "name": "6.1", + "name": "6.1_R0104P02", + "images": { + "hda_disk_image": "AsterNOS-VPP_V6.1-R0104P02_x86.img" + } + }, + { + "name": "6.1_R0101P02", "images": { "hda_disk_image": "AsterNOS-VPP_V6.1-R0101P02_x86.img" } diff --git a/gns3server/appliances/cisco-iol-l2.gns3a b/gns3server/appliances/cisco-iol-l2.gns3a new file mode 100644 index 000000000..08b6001d7 --- /dev/null +++ b/gns3server/appliances/cisco-iol-l2.gns3a @@ -0,0 +1,35 @@ +{ + "appliance_id": "329a24ea-9476-470a-bedd-6a79c1dd9867", + "name": "Cisco IOL-L2", + "category": "multilayer_switch", + "description": "Cisco IOL-L2 is the containerized Layer-2 switch image from Cisco Modeling Labs: the real IOS code in a scratch image driven by CML's iol-runner. This appliance runs the unmodified image inside a GNS3 Docker node — the console opens directly in the IOS CLI and links are wired through unix-socket NIO instead of a TAP interface.", + "vendor_name": "Cisco", + "vendor_url": "https://www.cisco.com/", + "documentation_url": "https://developer.cisco.com/docs/modeling-labs/", + "product_name": "Cisco IOL-L2", + "product_url": "https://developer.cisco.com/modeling-labs/", + "registry_version": 8, + "status": "experimental", + "availability": "service-contract", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "**Server requirement:** a GNS3 server with IOL Docker (iol-runner) support — selected by the `GNS3_IOL_RUNNER` environment marker. This is not in stock gns3-server releases yet.\n\nThe image is not on Docker Hub: it ships with Cisco Modeling Labs and requires a CML account. Load it on the GNS3 server and make sure the tag matches (`iol-xe/ioll2-xe:17-18-02`), or edit the template image afterwards:\n\n```bash\ndocker load -i # or pull from Cisco's registry with your CML account\ndocker tag iol-xe/ioll2-xe:17-18-02\n```\n\n**Other versions:** Docker appliances have no per-version selector in the `.gns3a` format — load the version you want and change the template's image field (templates are version-agnostic: same env vars and volumes).\n\nNodes boot straight into a minimal base config (hostname = node name, `no ip domain lookup`, console timeouts off — from `iol-xe-base.txt`, installed by the server) with no initial setup dialog. `write memory` persists across stop/start; to re-seed a node from the base config, delete its NVRAM or recreate the node.\n\nThe console is the IOS CLI (telnet, PID 1 stdio). Keystroke echo follows the IOS console poll cadence (~50 ms) — paste long commands instead of typing them. Interface names are IOL-style `Ethernet0/0`; one adapter is a 4-port unit (8 units max), change the count while the node is stopped. MAC addresses are derived from the node's application ID (`aabb.cc…`) and cannot be set. If you cap `memory`, keep it at IOL memory + ~512 MB headroom (default 2048 MB + no cap).", + "netmiko_device_type": "cisco_ios_telnet", + "symbol": ":/symbols/multilayer_switch.svg", + "settings": [ + { + "name": "Default template settings", + "default": true, + "template_type": "docker", + "template_properties": { + "adapters": 4, + "image": "iol-xe/ioll2-xe:17-18-02", + "console_type": "telnet", + "environment": "GNS3_IOL_RUNNER=1\nGNS3_IOL_STARTUP_CONFIG=iol-xe-base.txt", + "extra_volumes": [ + "/config" + ] + } + } + ] +} diff --git a/gns3server/appliances/cisco-iol-xe.gns3a b/gns3server/appliances/cisco-iol-xe.gns3a new file mode 100644 index 000000000..02a4316d2 --- /dev/null +++ b/gns3server/appliances/cisco-iol-xe.gns3a @@ -0,0 +1,35 @@ +{ + "appliance_id": "8890703c-4a26-42aa-a755-7a096e879866", + "name": "Cisco IOL-XE", + "category": "router", + "description": "Cisco IOS-XE IOL is the containerized IOS-XE router image from Cisco Modeling Labs: the real IOS-XE code (a scratch image driven by CML's iol-runner). This appliance runs the unmodified image inside a GNS3 Docker node — the console opens directly in the IOS-XE CLI and links are wired through unix-socket NIO instead of a TAP interface.", + "vendor_name": "Cisco", + "vendor_url": "https://www.cisco.com/", + "documentation_url": "https://developer.cisco.com/docs/modeling-labs/", + "product_name": "Cisco IOL-XE", + "product_url": "https://developer.cisco.com/modeling-labs/", + "registry_version": 8, + "status": "experimental", + "availability": "service-contract", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "**Server requirement:** a GNS3 server with IOL Docker (iol-runner) support — selected by the `GNS3_IOL_RUNNER` environment marker. This is not in stock gns3-server releases yet.\n\nThe image is not on Docker Hub: it ships with Cisco Modeling Labs and requires a CML account. Load it on the GNS3 server and make sure the tag matches (`iol-xe/iol-xe:17-18-02`), or edit the template image afterwards:\n\n```bash\ndocker load -i # or pull from Cisco's registry with your CML account\ndocker tag iol-xe/iol-xe:17-18-02\n```\n\n**Other versions:** Docker appliances have no per-version selector in the `.gns3a` format — load the version you want and change the template's image field (templates are version-agnostic: same env vars and volumes).\n\nNodes boot straight into a minimal base config (hostname = node name, `no ip domain lookup`, console timeouts off — from `iol-xe-base.txt`, installed by the server) with no initial setup dialog. `write memory` persists across stop/start; to re-seed a node from the base config, delete its NVRAM or recreate the node.\n\nThe console is the IOS-XE CLI (telnet, PID 1 stdio). Keystroke echo follows the IOS console poll cadence (~50 ms) — paste long commands instead of typing them. Interface names are IOL-style `Ethernet0/0`, not `GigabitEthernet0/0`; one adapter is a 4-port unit (8 units max), change the count while the node is stopped. MAC addresses are derived from the node's application ID (`aabb.cc…`) and cannot be set. If you cap `memory`, keep it at IOL memory + ~512 MB headroom (default 2048 MB + no cap).", + "netmiko_device_type": "cisco_ios_telnet", + "symbol": ":/symbols/router.svg", + "settings": [ + { + "name": "Default template settings", + "default": true, + "template_type": "docker", + "template_properties": { + "adapters": 2, + "image": "iol-xe/iol-xe:17-18-02", + "console_type": "telnet", + "environment": "GNS3_IOL_RUNNER=1\nGNS3_IOL_STARTUP_CONFIG=iol-xe-base.txt", + "extra_volumes": [ + "/config" + ] + } + } + ] +} diff --git a/gns3server/appliances/cisco-iosv.gns3a b/gns3server/appliances/cisco-iosv.gns3a index 4ddc6cbc5..7c56b19c7 100644 --- a/gns3server/appliances/cisco-iosv.gns3a +++ b/gns3server/appliances/cisco-iosv.gns3a @@ -26,6 +26,13 @@ "kvm": "require" }, "images": [ + { + "filename": "vios-adventerprisek9-m.spa.159-3.m12.qcow2", + "version": "15.9(3)M12", + "md5sum": "61d2d7cf16c8a3efa01db6545dcecdfd", + "filesize": 57326080, + "download_url": "https://u.cisco.com/my-learning/my-account" + }, { "filename": "vios-adventerprisek9-m.spa.159-3.m10.qcow2", "version": "15.9(3)M10", @@ -120,6 +127,13 @@ } ], "versions": [ + { + "name": "15.9(3)M12", + "images": { + "hda_disk_image": "vios-adventerprisek9-m.spa.159-3.m12.qcow2", + "hdb_disk_image": "IOSv_startup_config.img" + } + }, { "name": "15.9(3)M10", "images": { diff --git a/gns3server/appliances/cisco-nxosv9k.gns3a b/gns3server/appliances/cisco-nxosv9k.gns3a index 20d96baef..1302d184b 100644 --- a/gns3server/appliances/cisco-nxosv9k.gns3a +++ b/gns3server/appliances/cisco-nxosv9k.gns3a @@ -27,6 +27,13 @@ "kvm": "require" }, "images": [ + { + "filename": "nexus9300v64.10.6.2.F.qcow2", + "version": "9300v 10.6.2.F", + "md5sum": "f11113080fea3dc87ab498436c4e5199", + "filesize": 2976382976, + "download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/10.6(2)" + }, { "filename": "nexus9500v64.10.5.5.M.qcow2", "version": "9500v 10.5.5.M", @@ -94,6 +101,13 @@ } ], "versions": [ + { + "name": "9300v 10.6.2.F", + "images": { + "bios_image": "OVMF-edk2-stable202305.fd", + "hda_disk_image": "nexus9300v64.10.6.2.F.qcow2" + } + }, { "name": "9500v 10.5.5.M", "images": { diff --git a/gns3server/appliances/cisco-xrd-control-plane.gns3a b/gns3server/appliances/cisco-xrd-control-plane.gns3a new file mode 100644 index 000000000..b7dc79349 --- /dev/null +++ b/gns3server/appliances/cisco-xrd-control-plane.gns3a @@ -0,0 +1,140 @@ +{ + "appliance_id": "e4a3a5fe-3a13-521b-abd1-ab9483e83aa2", + "name": "XRd Control Plane", + "category": "router", + "description": "Cisco IOS XRd Control Plane runs the full IOS XR control plane (BGP, OSPF, IS-IS, MPLS, segment routing, NETCONF/YANG, gNMI) as a Docker container with a Linux-kernel data plane — designed for control-plane labs and automation, not forwarding performance.\n\nThis appliance runs the unmodified Cisco image inside a GNS3 Docker node. The Web console opens directly in the IOS XR CLI (xr_cli via the docker_exec console).", + "vendor_name": "Cisco", + "vendor_url": "https://www.cisco.com/", + "documentation_url": "https://xrdocs.io/virtual-routing/", + "product_name": "XRd Control Plane", + "product_url": "https://www.cisco.com/c/en/us/products/collateral/routers/ios-xrd/datasheet-c78-744298.html", + "registry_version": 8, + "status": "experimental", + "availability": "service-contract", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "The official image must be loaded on the GNS3 server first (it is not on Docker Hub). The tag must be `ios-xr/xrd-control-plane:`, or edit the template image afterwards:\n\n```bash\ndocker load -i xrd-control-plane-.tar.gz # from Cisco with a valid account\n```\n\n**Other versions (25.x, 26.x, ...):** the appliance pins one tested image tag, and Docker appliances have no per-version selector in the `.gns3a` format — just load the tarball you want and change the template's image field to `ios-xr/xrd-control-plane:` (templates are version-agnostic here: same env vars, volumes and interface mapping).\n\n**Host preparation** (once, XRd requirements — GNS3 warns about these at Docker connect):\n\n```bash\nsudo sysctl -w fs.inotify.max_user_instances=64000 fs.inotify.max_user_watches=524288 fs.file-max=1000000\nsudo modprobe fuse\n# persist them under /etc/sysctl.d/\n```\n\nEach node uses about **4 GB RAM** and takes 2-3 minutes to boot.\n\n**Default login:** `admin` / `cisco` (created by the injected first-boot config).\n\nThe first-boot config only applies while the XR config storage is empty; to re-seed it, delete and recreate the node. Committed configuration persists across stop/start (via `/xr-storage`).\n\nData interfaces need an address and `no shutdown` before they pass traffic.", + "netmiko_device_type": "cisco_xr_telnet", + "symbol": ":/symbols/router.svg", + "settings": [ + { + "name": "Default template settings", + "default": true, + "template_type": "docker", + "template_properties": { + "adapters": 24, + "image": "ios-xr/xrd-control-plane:24.4.1", + "console_type": "docker_exec", + "environment": "GNS3_SKIP_INIT=1\nGNS3_CONSOLE_CMD=/pkg/bin/xr_cli.sh\nGNS3_CONSOLE_RESIZE=0\nGNS3_MASK_UDEV=1\nGNS3_SHM_SIZE=1024\nGNS3_DEVICES=/dev/fuse\nGNS3_STOP_TIMEOUT=40\nXR_FIRST_BOOT_CONFIG=/firstboot.cfg\nXR_MGMT_INTERFACES=linux:eth0,xr_name=Mg0/RP0/CPU0/0,chksum,snoop_v4,snoop_v6\nXR_INTERFACES=linux:eth1,xr_name=Gi0/0/0/0;linux:eth2,xr_name=Gi0/0/0/1;linux:eth3,xr_name=Gi0/0/0/2;linux:eth4,xr_name=Gi0/0/0/3;linux:eth5,xr_name=Gi0/0/0/4;linux:eth6,xr_name=Gi0/0/0/5;linux:eth7,xr_name=Gi0/0/0/6;linux:eth8,xr_name=Gi0/0/0/7;linux:eth9,xr_name=Gi0/0/0/8;linux:eth10,xr_name=Gi0/0/0/9;linux:eth11,xr_name=Gi0/0/0/10;linux:eth12,xr_name=Gi0/0/0/11;linux:eth13,xr_name=Gi0/0/0/12;linux:eth14,xr_name=Gi0/0/0/13;linux:eth15,xr_name=Gi0/0/0/14;linux:eth16,xr_name=Gi0/0/0/15;linux:eth17,xr_name=Gi0/0/0/16;linux:eth18,xr_name=Gi0/0/0/17;linux:eth19,xr_name=Gi0/0/0/18;linux:eth20,xr_name=Gi0/0/0/19;linux:eth21,xr_name=Gi0/0/0/20;linux:eth22,xr_name=Gi0/0/0/21;linux:eth23,xr_name=Gi0/0/0/22", + "extra_volumes": [ + "/xr-storage", + "/xr-storage-shadow" + ], + "extra_configs": [ + { + "target": "/firstboot.cfg", + "content": "!\nusername admin\n group root-lr\n secret cisco\n!\nend\n" + } + ], + "custom_adapters": [ + { + "adapter_number": 0, + "port_name": "MgmtEth0/RP0/CPU0/0" + }, + { + "adapter_number": 1, + "port_name": "Gi0/0/0/0" + }, + { + "adapter_number": 2, + "port_name": "Gi0/0/0/1" + }, + { + "adapter_number": 3, + "port_name": "Gi0/0/0/2" + }, + { + "adapter_number": 4, + "port_name": "Gi0/0/0/3" + }, + { + "adapter_number": 5, + "port_name": "Gi0/0/0/4" + }, + { + "adapter_number": 6, + "port_name": "Gi0/0/0/5" + }, + { + "adapter_number": 7, + "port_name": "Gi0/0/0/6" + }, + { + "adapter_number": 8, + "port_name": "Gi0/0/0/7" + }, + { + "adapter_number": 9, + "port_name": "Gi0/0/0/8" + }, + { + "adapter_number": 10, + "port_name": "Gi0/0/0/9" + }, + { + "adapter_number": 11, + "port_name": "Gi0/0/0/10" + }, + { + "adapter_number": 12, + "port_name": "Gi0/0/0/11" + }, + { + "adapter_number": 13, + "port_name": "Gi0/0/0/12" + }, + { + "adapter_number": 14, + "port_name": "Gi0/0/0/13" + }, + { + "adapter_number": 15, + "port_name": "Gi0/0/0/14" + }, + { + "adapter_number": 16, + "port_name": "Gi0/0/0/15" + }, + { + "adapter_number": 17, + "port_name": "Gi0/0/0/16" + }, + { + "adapter_number": 18, + "port_name": "Gi0/0/0/17" + }, + { + "adapter_number": 19, + "port_name": "Gi0/0/0/18" + }, + { + "adapter_number": 20, + "port_name": "Gi0/0/0/19" + }, + { + "adapter_number": 21, + "port_name": "Gi0/0/0/20" + }, + { + "adapter_number": 22, + "port_name": "Gi0/0/0/21" + }, + { + "adapter_number": 23, + "port_name": "Gi0/0/0/22" + } + ] + } + } + ] +} diff --git a/gns3server/appliances/freebsd.gns3a b/gns3server/appliances/freebsd.gns3a index 2f937568d..608e5e741 100644 --- a/gns3server/appliances/freebsd.gns3a +++ b/gns3server/appliances/freebsd.gns3a @@ -24,13 +24,22 @@ "kvm": "require" }, "images": [ + { + "filename": "FreeBSD-15.0-RELEASE-amd64-zfs.qcow2", + "version": "15.0-zfs", + "md5sum": "d3109107e34336081eb88665674cbca4", + "filesize": 2854944768, + "download_url": "https://www.freebsd.org/where.html", + "direct_download_url": "https://download.freebsd.org/releases/VM-IMAGES/15.0-RELEASE/amd64/Latest/FreeBSD-15.0-RELEASE-amd64-ufs.qcow2.xz", + "compression": "xz" + }, { "filename": "FreeBSD-14.0-RELEASE-amd64.qcow2", "version": "14.0", "md5sum": "87b988eaa4a8aaabea1c10649c98b3f0", "filesize": 3506569216, "download_url": "https://www.freebsd.org/where.html", - "direct_download_url": "https://download.freebsd.org/releases/VM-IMAGES/14.0-RELEASE/amd64/Latest/FreeBSD-14.0-RELEASE-amd64.qcow2.xz", + "direct_download_url": "https://archive.freebsd.org/old-releases/VM-IMAGES/14.0-RELEASE/amd64/Latest/FreeBSD-14.0-RELEASE-amd64.qcow2.xz", "compression": "xz" }, { @@ -53,6 +62,12 @@ } ], "versions": [ + { + "name": "15.0-zfs", + "images": { + "hda_disk_image": "FreeBSD-15.0-RELEASE-amd64-zfs.qcow2" + } + }, { "name": "14.0", "images": { diff --git a/gns3server/appliances/infix.gns3a b/gns3server/appliances/infix.gns3a index 481cba0fd..54bed43f6 100644 --- a/gns3server/appliances/infix.gns3a +++ b/gns3server/appliances/infix.gns3a @@ -2,7 +2,7 @@ "appliance_id": "4d351078-c6f5-444c-ab30-0ef20e3d8c53", "name": "Infix", "category": "router", - "description": "Infix OS is a free Linux-based operating system with made-easy management using NETCONF, RESTCONF, or the built-in command line interface (CLI). It is suitable for both end-devices with a single Ethernet port and switches/routers with multiple ports. Immutable by design, extensions are possible using Docker containers.", + "description": "Infix OS is a free Linux-based operating system with made-easy management using the built-in web interface, NETCONF, RESTCONF, or the command line interface (CLI). It is suitable for both end-devices with a single Ethernet port and switches/routers with multiple ports. Immutable by design, extensions are possible using Docker containers.", "vendor_name": "KernelKit", "vendor_url": "https://github.com/kernelkit", "vendor_logo_url": "https://kernelkit.org/assets/img/jack.png", @@ -146,9 +146,23 @@ "md5sum": "79ca8bd8534bbaa1af0ab874a49d6f4c", "version": "26.06.0", "direct_download_url": "https://github.com/kernelkit/infix/releases/download/v26.06.0/infix-x86_64-v26.06.0.qcow2" + }, + { + "filename": "infix-x86_64-v26.08.0.qcow2", + "filesize": 364118016, + "md5sum": "0bcf79a0dc88df0e340e43bcf62e8d40", + "version": "26.08.0", + "direct_download_url": "https://github.com/kernelkit/infix/releases/download/v26.08.0/infix-x86_64-v26.08.0.qcow2" } ], "versions": [ + { + "name": "26.08.0", + "images": { + "bios_image": "OVMF-edk2-stable202305.fd", + "hda_disk_image": "infix-x86_64-v26.08.0.qcow2" + } + }, { "name": "26.06.0", "images": { @@ -255,4 +269,4 @@ } } ] -} \ No newline at end of file +} diff --git a/gns3server/appliances/ostinato.gns3a b/gns3server/appliances/ostinato.gns3a index 190c68617..b1d00759f 100644 --- a/gns3server/appliances/ostinato.gns3a +++ b/gns3server/appliances/ostinato.gns3a @@ -30,6 +30,20 @@ "options": "-vga std -usbdevice tablet" }, "images": [ + { + "version": "2.1.0", + "filename": "ostinato-lab-2.1.0-1.qcow2", + "filesize": 177537024, + "md5sum": "ec1e3d202a3a110bf669b551dc9b5af3", + "download_url": "https://ostinato.org/pricing/gns3" + }, + { + "version": "2.0.0", + "filename": "ostinato-lab-2.0.0-1.qcow2", + "filesize": 176816128, + "md5sum": "a9bd35b3a61560abface695d7952d335", + "download_url": "https://ostinato.org/pricing/gns3" + }, { "version": "1.3.0", "filename": "ostinatostd-1.3.0-1.qcow2", @@ -53,6 +67,18 @@ } ], "versions": [ + { + "name": "2.1.0", + "images": { + "hda_disk_image": "ostinato-lab-2.1.0-1.qcow2" + } + }, + { + "name": "2.0.0", + "images": { + "hda_disk_image": "ostinato-lab-2.0.0-1.qcow2" + } + }, { "name": "1.3.0", "images": { diff --git a/gns3server/appliances/srlinux.gns3a b/gns3server/appliances/srlinux.gns3a new file mode 100644 index 000000000..05025786d --- /dev/null +++ b/gns3server/appliances/srlinux.gns3a @@ -0,0 +1,180 @@ +{ + "appliance_id": "ffa79bec-d4fd-5842-89b4-e08f8fe21bf9", + "name": "SRLinux", + "category": "router", + "description": "Nokia SR Linux is the open, modular, and deeply programmable network operating system running on Nokia data center routers. It exposes a full TUI CLI, a gNMI/json-rpc management plane, and supports BGP, OSPF, IS-IS, MPLS, EVPN, segment routing and more.\n\nThis Docker image runs SR Linux unmodified inside a GNS3 Docker node. The Web console opens directly in the native sr_cli TUI (via the docker_exec console).", + "vendor_name": "Nokia", + "vendor_url": "https://www.nokia.com/ip-networks/service-router-linux-NOS/", + "documentation_url": "https://documentation.nokia.com/srlinux/", + "product_name": "SR Linux", + "product_url": "https://www.nokia.com/ip-networks/service-router-linux-NOS/", + "registry_version": 8, + "status": "experimental", + "availability": "free", + "maintainer": "GNS3 Team", + "maintainer_email": "developers@gns3.net", + "usage": "The Web console opens directly in the SR Linux CLI (`sr_cli`).\n\nData interfaces default to `admin-state disable`; enable them before use:\n\n```\nenter candidate\ninterface ethernet-1/1\n admin-state enable\ncommit now\n```\n\nTo make a data interface carry traffic, also bind it to a network-instance (default VRF `default`). The first port (mgmt0) is the management interface.\n\nSave the running config with `save config` (persisted across node stop/start via `/etc/opt/srlinux`).\n\nThe CLI auto-logs out after 300s idle; just reopen the console, or disable it:\n\n```\nenter candidate\n/system cli idle-timeout disable\ncommit now\n```", + "netmiko_device_type": "nokia_sros_telnet", + "symbol": ":/symbols/affinity/circle/blue/router_cloud.svg", + "settings": [ + { + "name": "Default template settings", + "default": true, + "template_type": "docker", + "template_properties": { + "adapters": 35, + "image": "ghcr.io/nokia/srlinux:latest", + "console_type": "docker_exec", + "start_command": "sudo -E bash -c 'touch /.dockerenv && /opt/srlinux/bin/sr_linux'", + "environment": "GNS3_SKIP_INIT=1\nGNS3_INTERFACE_NAMES=mgmt0,e1-1,e1-2,e1-3,e1-4,e1-5,e1-6,e1-7,e1-8,e1-9,e1-10,e1-11,e1-12,e1-13,e1-14,e1-15,e1-16,e1-17,e1-18,e1-19,e1-20,e1-21,e1-22,e1-23,e1-24,e1-25,e1-26,e1-27,e1-28,e1-29,e1-30,e1-31,e1-32,e1-33,e1-34\nGNS3_CONSOLE_CMD=/opt/srlinux/bin/sr_cli", + "extra_volumes": [ + "/etc/opt/srlinux", + "/var/log/srlinux", + "/opt/srlinux/appmgr" + ], + "custom_adapters": [ + { + "adapter_number": 0, + "port_name": "mgmt0" + }, + { + "adapter_number": 1, + "port_name": "e1-1" + }, + { + "adapter_number": 2, + "port_name": "e1-2" + }, + { + "adapter_number": 3, + "port_name": "e1-3" + }, + { + "adapter_number": 4, + "port_name": "e1-4" + }, + { + "adapter_number": 5, + "port_name": "e1-5" + }, + { + "adapter_number": 6, + "port_name": "e1-6" + }, + { + "adapter_number": 7, + "port_name": "e1-7" + }, + { + "adapter_number": 8, + "port_name": "e1-8" + }, + { + "adapter_number": 9, + "port_name": "e1-9" + }, + { + "adapter_number": 10, + "port_name": "e1-10" + }, + { + "adapter_number": 11, + "port_name": "e1-11" + }, + { + "adapter_number": 12, + "port_name": "e1-12" + }, + { + "adapter_number": 13, + "port_name": "e1-13" + }, + { + "adapter_number": 14, + "port_name": "e1-14" + }, + { + "adapter_number": 15, + "port_name": "e1-15" + }, + { + "adapter_number": 16, + "port_name": "e1-16" + }, + { + "adapter_number": 17, + "port_name": "e1-17" + }, + { + "adapter_number": 18, + "port_name": "e1-18" + }, + { + "adapter_number": 19, + "port_name": "e1-19" + }, + { + "adapter_number": 20, + "port_name": "e1-20" + }, + { + "adapter_number": 21, + "port_name": "e1-21" + }, + { + "adapter_number": 22, + "port_name": "e1-22" + }, + { + "adapter_number": 23, + "port_name": "e1-23" + }, + { + "adapter_number": 24, + "port_name": "e1-24" + }, + { + "adapter_number": 25, + "port_name": "e1-25" + }, + { + "adapter_number": 26, + "port_name": "e1-26" + }, + { + "adapter_number": 27, + "port_name": "e1-27" + }, + { + "adapter_number": 28, + "port_name": "e1-28" + }, + { + "adapter_number": 29, + "port_name": "e1-29" + }, + { + "adapter_number": 30, + "port_name": "e1-30" + }, + { + "adapter_number": 31, + "port_name": "e1-31" + }, + { + "adapter_number": 32, + "port_name": "e1-32" + }, + { + "adapter_number": 33, + "port_name": "e1-33" + }, + { + "adapter_number": 34, + "port_name": "e1-34" + } + ] + } + } + ] +} diff --git a/gns3server/appliances/westermo-weos.gns3a b/gns3server/appliances/westermo-weos.gns3a index dbcf3a7eb..ee6244267 100644 --- a/gns3server/appliances/westermo-weos.gns3a +++ b/gns3server/appliances/westermo-weos.gns3a @@ -14,7 +14,7 @@ "availability": "free", "maintainer": "Westermo", "maintainer_email": "info@westermo.com", - "usage": "\nFactory Configuration\n=====================\nAll ports are in VLAN1 untagged. The system will acquire a link-local\nIPv4 address (169.254.0.0/16) and will also request an address using\nDHCP. mDNS is enabled and the device is reachable under these names\n(where XX-XX-XX corresponds to the last three octets in the device's\nMAC address): zero-XX-XX-XX.local, zero.local, and weos.local.\n\nManagement\n==========\nAccessible via console, ssh, and http/https.\n\nUsername: admin\nPassword: admin\n\nUpgrade\n=======\nTo upgrade a device, simply download the new version and replace the\nHDA (Primary Master) image under the HDD tab in the configuration pane\nof the device.\n", + "usage": "All ports are in VLAN1 and untagged. The system will acquire a link-local IPv4 address (169.254.0.0/16) and will also request an address using DHCP. mDNS is enabled and the device is reachable under these names (where XX-XX-XX corresponds to the last three octets in the device's MAC address): zero-XX-XX-XX.local, zero.local, and weos.local. Management: Accessible via console, ssh, and http/https. Username: admin Password: admin.", "symbol": ":/symbols/classic/router.svg", "port_name_format": "eth{0}", "linked_clone": true, @@ -38,6 +38,13 @@ "filesize": 17825792, "direct_download_url": "https://dropzone.westermo.com/file.aspx?id=e6a7676d-85a7-4374-8961-c68aacb74921" }, + { + "filename": "WeOS-zero-5.30.0.disk", + "version": "5.30.0", + "filesize": 81788928, + "md5sum": "a0eb21084bfa2b39ea42c2e5b59a3eb1", + "direct_download_url": "https://dropzone.westermo.com/file.aspx?id=ee83b507-927d-4421-a1d5-fa60f7b00328" + }, { "filename": "WeOS-zero-5.29.0.disk", "version": "5.29.0", @@ -62,6 +69,12 @@ ], "versions": [ { + "name": "5.30.0", + "images": { + "hda_disk_image": "WeOS-zero-5.30.0.disk", + "hdb_disk_image": "Config-zero-1.0.0.disk" + } + }, { "name": "5.29.0", "images": { "hda_disk_image": "WeOS-zero-5.29.0.disk",