YueGuobin
c2dd480edd
Fix Docker container variable compatibility with Pydantic models
...
When updating project variables while Docker containers are running, the
system now properly handles both dictionary-format variables and Pydantic
Variable objects. This prevents AttributeError when containers are recreated
after variable updates.
Changes:
- Modified DockerVM.create() to detect and handle Pydantic Variable objects
- Updated _format_env() method to support both variable formats
- Maintains backward compatibility with existing dictionary format
Fixes error: AttributeError: 'Variable' object has no attribute 'get'
2026-05-30 13:26:36 +08:00
YueGuobin
822abbe671
Fix: Improve Docker container deletion error logging
...
When closing a Docker node, if container deletion fails, the error
is silently ignored. This can lead to stale containers remaining on
the system and causing 409 conflicts when reopening projects.
Changes:
- Distinguish between 404 (container already removed, normal) and
other DockerError (deletion failed, needs attention)
- Log warning when deletion fails with error details
- Add comment explaining stale containers will be cleaned up on
project open (via automatic 409 conflict resolution)
This improves observability without blocking project close operations.
The root cause of stale containers can now be diagnosed from logs.
Fixes #2708
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 12:45:05 +08:00
Jeremy Grossmann
c3d202abc9
Merge branch '3.0' into ssh-console-support
2026-05-02 22:10:28 +08:00
YueGuobin
ba220780a9
fix: improve hostname validation error messages with allowed characters
...
When a hostname validation fails, the error message now includes
the allowed character set to help users provide valid names.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-02 13:09:04 +08:00
Cristi
cc05eb5850
feat(compute): Fix missing SSH wrapping for auxiliary console
2026-04-30 17:47:54 +03:00
Cristi
d64eca0418
feat(compute): add SSH console type support
2026-04-30 15:52:47 +03:00
Cristi
83558d4d9f
Enhancement: Re-write current Telnet server implementation using telnetlib3 library
2026-03-24 13:23:45 +02:00
YueGuobin
ce90b2b92c
fix(docker): handle container name conflict automatically
...
When a Docker container with the same name already exists (e.g., from a
previous crashed GNS3 session), Docker returns a 409 Conflict error
when trying to create a new container with that name. This causes the
project open operation to fail.
This fix adds automatic cleanup of stale containers when encountering
a name conflict:
- Added DockerHttp409Error exception class
- Updated http_query to detect 409 status codes
- Modified create() to remove conflicting containers and retry
Fixes the issue where opening a project fails with:
"Docker has returned an error: 409 Conflict. The container name
'/GNS3.xxx' is already in use by container 'xxx'"
2026-02-27 23:35:11 +08:00
grossmj
60c10e7ecc
Merge remote-tracking branch 'origin/2.2' into 3.0
...
# Conflicts:
# .github/workflows/testing.yml
# CHANGELOG
# README.md
# gns3server/appliances/infix.gns3a
# gns3server/compute/docker/__init__.py
# gns3server/compute/docker/docker_vm.py
# gns3server/crash_report.py
# gns3server/version.py
# gns3server/web/web_server.py
# setup.py
# tests/controller/test_project.py
2025-11-29 11:42:02 +10:00
grossmj
3a24318694
Use docker_name property when creating a container
2025-11-17 11:11:11 +10:00
grossmj
bae6221991
Set name of container in Docker
2025-11-17 10:59:05 +10:00
Thomas Schmidt
a7108e1592
use GNS3 node name as vnc Desktop name
...
Most VNC clients use the Desktop name in their window title.
Currently this defaults to user@host which means all docker vnc
connections have identical window names of e.g.
SSVNC: gns3@gns3server
This uses the node name instead.
2025-05-22 13:13:47 +02:00
grossmj
d9dcc2738d
Merge remote-tracking branch 'origin/2.2' into 3.0
...
# Conflicts:
# CHANGELOG
# Dockerfile
# README.md
# gns3server/appliances/infix.gns3a
# gns3server/compute/docker/docker_vm.py
# gns3server/compute/qemu/qemu_vm.py
# gns3server/controller/gns3vm/virtualbox_gns3_vm.py
# gns3server/crash_report.py
# gns3server/static/web-ui/index.html
# gns3server/static/web-ui/main.9bcf455e62558dedfd48.js
# gns3server/version.py
2025-04-21 20:13:31 +07:00
grossmj
ffd628902c
Fix Docker logs decoding. Ref #2522
2025-04-18 13:58:56 +07:00
grossmj
ca34053125
Add delay after starting a Docker container and adding connections in uBridge. Ref #2522
2025-04-18 13:50:20 +07:00
grossmj
d06f93e772
Fix TypeError when reading Docker container logs. Ref #2522
2025-04-18 13:47:29 +07:00
grossmj
0e8d969cd2
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/docker/__init__.py
# gns3server/compute/docker/docker_vm.py
# requirements.txt
2025-04-16 17:53:44 +07:00
grossmj
0e89ff56a8
Replace "Docker hub" by "Docker repository" because it is possible to use different repositories
2025-04-16 17:42:40 +07:00
grossmj
ec9dbd20b8
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/base_node.py
# gns3server/compute/docker/docker_vm.py
# gns3server/compute/qemu/qemu_vm.py
# gns3server/crash_report.py
# gns3server/version.py
2024-11-07 23:18:42 +10:00
grossmj
f3749e83ec
Catch error when cannot resize Docker container TTY.
2024-11-07 14:52:59 +10:00
grossmj
fb06eb3c0c
Remove old debug message
2024-10-31 13:07:09 +10:00
grossmj
c4fcb43e78
Merge branch '2.2' into 3.0
...
# Conflicts:
# .github/workflows/testing.yml
# CHANGELOG
# README.md
# dev-requirements.txt
# gns3server/compute/docker/docker_vm.py
# gns3server/controller/export_project.py
# gns3server/controller/import_project.py
# gns3server/controller/project.py
# gns3server/crash_report.py
# gns3server/static/web-ui/index.html
# gns3server/static/web-ui/main.df8c319a3da6fb0e3629.js
# gns3server/version.py
# requirements.txt
# setup.py
# tests/compute/docker/test_docker_vm.py
# tests/controller/test_import_project.py
2024-10-31 12:54:35 +10:00
grossmj
48b7e6ca50
Fix run Docker containers with user namespaces enabled. Fixes #2414
2024-10-26 19:03:05 +10:00
Jeremy Grossmann
af6f34b2ca
Revert "Backport auxiliary console support for Qemu, Docker and Dynamips nodes"
2024-09-23 13:10:58 +07:00
grossmj
7619080a50
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/base_node.py
# gns3server/compute/docker/docker_vm.py
# gns3server/compute/dynamips/nodes/c1700.py
# gns3server/compute/dynamips/nodes/c2600.py
# gns3server/compute/dynamips/nodes/c2691.py
# gns3server/compute/dynamips/nodes/c3600.py
# gns3server/compute/dynamips/nodes/c3725.py
# gns3server/compute/dynamips/nodes/c3745.py
# gns3server/compute/dynamips/nodes/c7200.py
# gns3server/compute/dynamips/nodes/router.py
# gns3server/compute/qemu/qemu_vm.py
# gns3server/controller/node.py
# gns3server/handlers/api/compute/docker_handler.py
# gns3server/handlers/api/compute/dynamips_vm_handler.py
# gns3server/handlers/api/compute/qemu_handler.py
# gns3server/schemas/docker.py
# gns3server/schemas/docker_template.py
# gns3server/schemas/dynamips_template.py
# gns3server/schemas/dynamips_vm.py
# gns3server/schemas/node.py
# gns3server/schemas/qemu.py
# gns3server/schemas/qemu_template.py
2024-09-22 22:01:06 +07:00
grossmj
c41c11eb34
Backport auxiliary console support for Qemu, Docker and Dynamips nodes
2024-09-22 18:29:04 +07:00
grossmj
22f022cc22
Fix for running Docker containers with user namespaces enabled
2024-09-19 10:40:22 +07:00
grossmj
a1666dd247
Fix MAC address support for Docker containers
2024-09-18 18:02:35 +07:00
grossmj
3214f52e9e
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/docker/docker_vm.py
# gns3server/handlers/api/compute/docker_handler.py
# gns3server/schemas/docker.py
# gns3server/schemas/docker_template.py
# tests/compute/docker/test_docker_vm.py
2024-09-18 17:29:06 +07:00
grossmj
3792901dc7
Support for configuring MAC address in Docker containers
2024-09-18 16:30:22 +07:00
grossmj
5b1ba5a57c
Fix cannot stop Docker VM while console connection is still active.
2024-04-04 22:57:33 +07:00
grossmj
bc1a8c99d1
Fix cannot stop Docker VM while console connection is still active.
2024-04-04 22:17:21 +07:00
grossmj
998898a471
Fix CPU fractional values for Docker VMs.
2024-04-03 17:15:10 +07:00
grossmj
1a53c9aabf
Backport from v3: install Docker resources in a writable location at runtime.
2024-02-14 16:13:45 +08:00
grossmj
09ff807055
Install Docker resources in writable location
2023-11-13 11:23:26 +10:00
grossmj
c11b3c3911
Fix tests after merge
2023-09-06 23:42:50 +07:00
grossmj
1ec056c1a6
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/docker/docker_vm.py
# gns3server/controller/__init__.py
# gns3server/controller/appliance_manager.py
# gns3server/web/route.py
# requirements.txt
# tests/compute/docker/test_docker_vm.py
2023-09-06 23:30:00 +07:00
grossmj
d6e1ee5dbb
Prevent X11 socket file to be modified by Docker container
2023-08-27 18:30:37 +10:00
grossmj
f3b6825e40
Test if busybox is not dynamically linked
2023-08-11 14:10:25 +10:00
grossmj
1cb433c5bc
New packaging relying only pyproject.toml
2023-08-10 22:44:37 +10:00
grossmj
1ff23348d3
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/base_node.py
# gns3server/compute/docker/__init__.py
# gns3server/compute/qemu/qemu_vm.py
# gns3server/controller/compute.py
# gns3server/controller/gns3vm/virtualbox_gns3_vm.py
# gns3server/controller/node.py
# gns3server/controller/project.py
# gns3server/crash_report.py
# gns3server/handlers/api/controller/template_handler.py
# gns3server/static/web-ui/index.html
# gns3server/static/web-ui/main.8448c96e4facbe79a613.js
# gns3server/version.py
# tests/compute/iou/test_iou_vm.py
# tests/compute/qemu/test_qemu_vm.py
# tests/handlers/api/controller/test_template.py
2023-06-20 16:06:53 +09:30
grossmj
84c886b058
Remove left over Xvfb related code
2023-05-31 21:33:39 +09:30
grossmj
e59b5fb95b
Remove Xvfb + x11vnc support
2023-05-31 21:28:06 +09:30
grossmj
b3dfb87622
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/controller/__init__.py
# gns3server/crash_report.py
# gns3server/static/web-ui/index.html
# gns3server/static/web-ui/main.96be36058f5df0ca7e7f.js
# gns3server/utils/images.py
# gns3server/version.py
# requirements.txt
# tests/compute/docker/test_docker_vm.py
# tests/controller/test_controller.py
2023-05-22 15:11:17 +08:00
grossmj
d6141d4652
Fix checking for ":" in project dir on Windows for Docker containers
2023-03-23 22:17:29 -10:00
grossmj
f08ce9d3f1
Check for colon in project name. Fixes #2203
2023-03-19 18:26:26 +10:00
grossmj
3fb138b9a1
Allow ':' in project name when Docker containers are used
2023-03-19 17:29:29 +10:00
grossmj
e5c8ae4bde
Use a stock BusyBox for the Docker integration
2023-01-01 17:04:48 +08:00
grossmj
80f5ca0c3f
Checks for valid hostname on server side for Dynamips, IOU, Qemu and Docker nodes
2022-07-17 11:51:29 +02:00
grossmj
d303d13045
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/base_node.py
# gns3server/compute/docker/docker_vm.py
# gns3server/compute/iou/iou_vm.py
# gns3server/controller/template_manager.py
# gns3server/handlers/api/compute/docker_handler.py
# gns3server/handlers/api/compute/dynamips_vm_handler.py
# gns3server/handlers/api/compute/iou_handler.py
# gns3server/handlers/api/compute/qemu_handler.py
# gns3server/handlers/api/compute/virtualbox_handler.py
# gns3server/handlers/api/compute/vmware_handler.py
# gns3server/handlers/api/compute/vpcs_handler.py
# gns3server/handlers/api/controller/node_handler.py
# gns3server/version.py
# requirements.txt
# tests/controller/test_controller.py
# tests/controller/test_project.py
# tests/handlers/api/controller/test_node.py
2022-06-21 16:45:25 +02:00