6302 Commits

Author SHA1 Message Date
grossmj
a9525503c6
Set up database schema migration 2026-02-23 23:27:10 +08:00
grossmj
bdcb6445c7
Use lists for tags instead of dicts 2026-02-23 23:26:42 +08:00
Guobin Yue
66f32cecf2
Merge branch 'GNS3:3.0' into 3.0 2026-02-23 01:37:05 +08:00
YueGuobin
c05f667f3d feat(templates): safely access settings dict keys
Use dict.get() method to safely access 'image' and 'path' keys in settings dictionary to avoid KeyError exceptions when these keys are missing. This improves error handling and prevents server crashes when creating templates with incomplete settings.
2026-02-23 01:02:32 +08:00
YueGuobin
e27ddf2cdf feat(api): fix ETag handling and JSON serialization in template endpoint
- Use `default=str` in `json.dumps` to handle non-serializable objects
- Return proper HTTP 304 response with ETag header instead of raising exception
- Ensure consistent ETag generation for template caching
2026-02-22 23:43:47 +08:00
YueGuobin
a3616e6d33 feat(api): add tag filtering to nodes and templates endpoints
- Add optional `tags` query parameter to `/nodes` and `/templates` endpoints
- Support filtering by tags in format "key:value" with multiple tags ANDed together
- Example: `?tags=vendor:cisco&tags=model:7200` filters nodes/templates with both tags
- Maintain backward compatibility for existing API usage without tags parameter
2026-02-22 22:52:28 +08:00
Jeremy Grossmann
22c6b4b961
Merge pull request #2616 from StupidTreee/feature/project-created-by
Add 'created_by' field to track project creator
2026-02-22 18:33:54 +08:00
grossmj
be4b87e8cd
Update project schema and fix tests 2026-02-22 18:13:08 +08:00
Felix Schulz
8ab34924b5 Add 'created_by' field to track project creator 2026-02-21 22:15:21 +01:00
Jeremy Grossmann
1958deff09
Merge pull request #2615 from GNS3/bugfix/2532
Fix updating packet filters
2026-02-21 21:45:12 +08:00
grossmj
5e3ca29c58
Fix updating packet filters 2026-02-21 21:42:22 +08:00
grossmj
60abbade27
Revert merged changes from 2.2 introduced by PR #2607 2026-02-21 21:35:12 +08:00
YueGuobin
56ece7ce88 Add vendor, model and netmiko_device_type fields to templates
Add three new optional fields to the template schema:
- vendor: Device vendor (e.g., Cisco, Juniper, Huawei)
- model: Device model (e.g., ISR4451-X, MX204, NE40E)
- netmiko_device_type: Netmiko device type for automation (e.g., cisco_ios, juniper_junos, huawei)

These fields enable AI/LLM integration to determine the appropriate
Netmiko device type when automating network device configuration.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-20 23:38:00 +08:00
grossmj
c5b9f379fe
Merge remote-tracking branch 'origin/2.2' into 3.0
# Conflicts:
#	Dockerfile
#	dev-requirements.txt
#	gns3server/compute/qemu/qemu_vm.py
#	gns3server/version.py
#	requirements.txt
2026-02-20 16:28:53 +08:00
Jeremy Grossmann
3b95859b79
Merge pull request #2612 from dalearbo/fix/busybox-musl-ldd-check
fix: busybox static link detection on Alpine/musl
2026-02-20 16:01:01 +08:00
Jeremy Grossmann
126a4099e6
Merge pull request #2613 from dalearbo/fix/emit-threadpool-runtime-error
fix: handle RuntimeError in notification_manager emit()
2026-02-20 15:59:01 +08:00
grossmj
47cc827c1f
Remove some files not related to PR 2026-02-20 15:56:08 +08:00
grossmj
715b7032bc
Fix tests 2026-02-20 15:51:49 +08:00
Jeremy Grossmann
bc1729b255
Merge branch '2.2' into fix/busybox-musl-ldd-check 2026-02-20 15:24:54 +08:00
Dale Arbogast
279f05a14a fix: handle RuntimeError in notification_manager emit()
asyncio.get_running_loop() raises RuntimeError when emit() is called
from a thread without an active event loop (e.g. when the disk space
check in project_manager triggers a log.warning notification from a
threadpool worker).

This causes a 500 Internal Server Error on project creation/open when
disk usage is high, instead of the intended warning notification.

Wrap the emit loop in try/except RuntimeError so that notifications
are silently dropped when no event loop is available, rather than
crashing the request.

Fixes #2502
Fixes #2505
2026-02-19 16:49:50 -05:00
Dale Arbogast
3dd4184193 fix: busybox static link detection on Alpine/musl
On musl-based systems (Alpine), ldd returns exit code 0 for static
binaries, unlike glibc which returns 1. This causes install_busybox()
to reject all busybox binaries as "dynamically linked" on Alpine.

Fix by also accepting binaries whose executable name contains "static"
(i.e. busybox-static, busybox.static), which are the first two
candidates checked by the function. The generic "busybox" fallback
still relies on the ldd return code check.
2026-02-19 16:44:01 -05:00
grossmj
013ec341b3
Fix tests 2026-02-16 19:32:47 +08:00
grossmj
bfed330ec2
Fix bug when updating compute password to be empty 2026-02-16 19:23:46 +08:00
grossmj
0a118dc9e7
Cancel tasks if controller cannot be started 2026-02-16 19:16:06 +08:00
grossmj
28e7c014c8
Enable parallel compression with zstandard. Fixes #2324 2026-02-16 18:28:11 +08:00
Jeremy Grossmann
2b4a05eedd
Merge pull request #2608 from RishikesavanRamesh/patch-1
Add dynamips to Dockerfile dependencies
2026-02-12 21:13:51 +08:00
Jeremy Grossmann
898a9ce208
Merge branch 'master' into patch-1 2026-02-12 21:13:38 +08:00
grossmj
74bc3b5144
Upgrade dependencies 2026-02-11 18:11:16 +08:00
grossmj
aabfd08524
Merge remote-tracking branch 'origin/2.2' into 3.0
# Conflicts:
#	CHANGELOG
#	dev-requirements.txt
#	gns3server/crash_report.py
#	gns3server/version.py
#	requirements.txt
2026-02-11 17:52:14 +08:00
grossmj
dd87ccff4d
Upgrade pytest and jsonschema dependencies 2026-02-11 17:38:49 +08:00
grossmj
c1f8202d7c
Revert "Upgrade python-multipart to v0.0.22. Fixes #2610"
This reverts commit fdcdce7d0d17e9516448aa46e146f738ad746869.
2026-02-11 17:14:03 +08:00
grossmj
fdcdce7d0d
Upgrade python-multipart to v0.0.22. Fixes #2610 2026-02-11 17:07:28 +08:00
Jeremy Grossmann
78c7d36b1c
Merge pull request #2606 from GNS3/release/v2.2.56.1
Release v2.2.56.1
2026-02-11 16:52:43 +08:00
grossmj
44d4a426b5
Upgrade sentry-sdk and psutil dependencies 2026-02-11 16:46:21 +08:00
RishikesavanRamesh
3273f7e992
Add dynamips to Dockerfile dependencies 2026-02-06 20:34:44 +05:30
Jeremy Grossmann
d2d19b43c2
Merge pull request #2607 from polsson86/update-pci-device-id-computation
Take populated disks into consideration when calculating PCI device ID
2026-02-06 12:45:30 +08:00
Patrik Olsson
fe2014854e Take populated disks into consideration when calculating PCI device ID 2026-02-05 15:10:57 +01:00
grossmj
3915918c41
Release v3.0.6 v3.0.6 2026-01-28 22:30:36 +08:00
grossmj
a72980b2d9
Sync appliances 2026-01-28 22:24:10 +08:00
grossmj
600d3d38da
Fix creating Qemu disk image. Fixes #2542 2026-01-28 19:36:22 +08:00
grossmj
ebe4fdc5b5
Development on 2.2.57.dev2 2026-01-28 18:44:51 +08:00
grossmj
7f45cc6f47
Disable checking for available disk space. Ref #2548 2026-01-28 18:32:42 +08:00
grossmj
43d7e8a437
Release v2.2.56.1 v2.2.56.1 2026-01-28 17:00:07 +08:00
grossmj
833b5a9ea8
Sync appliances 2026-01-28 16:52:30 +08:00
grossmj
05dda0117f
Merge branch 'master' into 2.2 2026-01-28 16:00:14 +08:00
Jeremy Grossmann
6f0dfecc3d
Merge pull request #2605 from iskanred/bugfix/2604
Fix telnet keepalive options on macOS
2026-01-28 15:56:13 +08:00
grossmj
abaeab6242
Upgrade greenlet and sqlalchemy dependencies 2026-01-26 19:50:42 +08:00
Iskander Nafikov
2414b7a968 Fix telnet keepalive options on macOS 2026-01-26 00:31:03 +08:00
grossmj
1d45df6613
Upgrade dependencies 2026-01-24 21:38:58 +08:00
grossmj
69a695c9e6
Merge branch '2.2' into 3.0
# Conflicts:
#	dev-requirements.txt
#	gns3server/appliances/infix.gns3a
#	gns3server/crash_report.py
#	gns3server/run.py
#	gns3server/utils/asyncio/__init__.py
#	gns3server/version.py
#	requirements.txt
#	setup.py
2026-01-24 19:27:39 +08:00