YueGuobin
31991fe359
feat(marker): add project-level marker definition inheritance
...
Project-level marker definitions fan out to every link (existing and new).
A definition is stored once on Project._marker_definitions; when applied to
a link the marker is named "global-{def_name}" — the "global" prefix was
pre-reserved in the schema, so inherited and per-link markers can never
collide, nor will their registry keys.
Key behavior:
- POST /projects/{pid}/marker-definitions → fan out to all existing links
- PUT /projects/{pid}/marker-definitions/{name} → sync all inherited copies
- DELETE → remove every inherited copy from every link
- New links auto-inherit all active defs (hook in UDPLink.create)
- Per-link DELETE/PUT of a "global-*" marker is rejected (409)
- Inherited markers are NOT persisted in the topology; they are re-created
from _marker_definitions on project load
- Compute side is untouched — the marker reaches uBridge via the existing
start_marker→update→NIO→ubridge pipeline
Files:
- controller/project.py — _marker_definitions + CRUD + fanout + topology load
- controller/link.py — Link.inherit_marker() + asdict() filter
- controller/udp_link.py — guards on stop/update + create() inheritance hook
- controller/topology.py — persist marker_definitions in project topology
- schemas/controller/links.py — MarkerDefinitionCreate schema
- api/routes/controller/projects.py — REST endpoints (marker-definitions)
2026-07-16 00:39:52 +08:00
UmmmAGoodName
afeb6a3196
Minor optimizations to logic
2026-03-11 18:51:32 +01:00
Felix Schulz
8ab34924b5
Add 'created_by' field to track project creator
2026-02-21 22:15:21 +01:00
grossmj
8ce0cbf7f7
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/controller/topology.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-23 13:28:56 +07:00
grossmj
7b5d123ad8
Improve error message when a project cannot be parsed.
2024-09-23 13:23:03 +07:00
grossmj
2416069a6e
Update _convert_2.2.0() with correct comments
2024-07-20 17:55:38 +02:00
grossmj
999f41b03e
Convert topologies < 3.0 to have valid node hostnames
2024-07-20 17:22:24 +02:00
grossmj
9c456532d0
Pydantic v2 migration
2023-08-04 18:20:06 +10:00
grossmj
df50b46952
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/docker/docker_vm.py
# gns3server/version.py
# requirements.txt
2022-04-27 22:23:05 +07:00
Kai Vogelgesang
73dff4b9c6
Fix typo
2022-03-23 08:38:14 +01:00
grossmj
41ba215e32
Show topology path when check topology schema fails.
2021-04-27 22:48:55 -07:00
grossmj
cefab8d362
Rename __json__() to asdict()
2021-04-17 23:34:28 +09:30
grossmj
44074ff7c9
Some cleaning.
2021-04-17 18:36:32 +09:30
grossmj
9c850e0f2b
Move schemas between compute and controller subpackages
2021-04-15 18:12:08 +09:30
grossmj
c021e21309
Use black with -l 120 param.
2021-04-13 18:46:50 +09:30
grossmj
f928738bd5
Use pyupgrade with --py36-plus param.
2021-04-13 18:37:58 +09:30
grossmj
082206a7db
Fix packet capture with HTTPS remote server. Fixes #1882
2021-04-07 12:40:15 +09:30
grossmj
91920e5a5b
Fix issue with tests + some cleaning.
2021-03-31 09:58:52 +10:30
grossmj
eeaf10b418
Put all schemas in the same module.
2020-10-31 16:02:21 +10:30
grossmj
81439c750a
Use pydantic for data validation (instead of jsonschema)
...
Fix/improve various pydantic shema models.
2020-10-31 15:07:12 +10:30
grossmj
eb3cb8a41f
Migration to FastAPI
2020-10-02 16:07:50 +09:30
grossmj
5575657318
Fix tests. Ref #1754
2020-05-26 21:40:41 +09:30
grossmj
69b816e21e
Fix bug when changing properties for closed project. Fixes #1754
2020-05-26 18:34:20 +09:30
grossmj
868c39acfe
Fix issues with empty project variables. Fixes https://github.com/GNS3/gns3-gui/issues/2941
2020-03-14 17:22:43 +10:30
grossmj
2f57bd58c0
Fix error with console type in Ethernet switch schema. Fixes #1659
2019-10-08 17:16:17 +08:00
grossmj
81a48df9bb
Update the GNS3 version in topology file if converted. Ref https://github.com/GNS3/gns3-gui/issues/2798
2019-05-26 15:44:55 +07:00
grossmj
21bed54768
Fix opening previously saved 2.1 project grid overlapping. Fixes #2734
2019-03-31 16:48:08 +07:00
grossmj
724eda1f35
Handle locking/unlocking items independently from the layer position.
2019-03-02 16:26:40 +07:00
grossmj
d7c2e16c21
Use "template" to name what we use to create new nodes.
2018-11-28 16:12:58 +07:00
Karim
8eb20525e8
Update schema to allow for drawing grid size to be part of project.
2018-11-26 15:31:28 +00:00
grossmj
9de13c570c
Merge branch '2.1' into 2.2
...
# Conflicts:
# gns3server/compute/builtin/nodes/cloud.py
# gns3server/compute/docker/docker_vm.py
# gns3server/compute/dynamips/nodes/ethernet_switch.py
# gns3server/compute/iou/iou_vm.py
# gns3server/compute/qemu/qemu_vm.py
# gns3server/compute/virtualbox/virtualbox_vm.py
# gns3server/compute/vmware/vmware_vm.py
# gns3server/controller/__init__.py
# gns3server/version.py
# gns3server/web/web_server.py
2018-10-04 15:44:13 +02:00
grossmj
17d657c919
Fix small errors like unhandled exceptions etc.
2018-09-11 15:06:01 +02:00
grossmj
d1ccf3bc84
Merge branch '2.1' into 2.2
...
# Conflicts:
# gns3server/version.py
# requirements.txt
2018-06-04 22:46:52 +07:00
ziajka
f2700ed445
Support of supplier and variables in topology
2018-05-08 10:07:42 +02:00
grossmj
2ea0aa5ded
Merge branch '2.1' into 2.2
...
# Conflicts:
# gns3server/compute/iou/iou_vm.py
# gns3server/compute/virtualbox/virtualbox_vm.py
# gns3server/compute/vmware/vmware_vm.py
2018-04-18 17:08:42 +08:00
grossmj
2de182eff4
Grid size support for projects.
2018-04-13 16:54:57 +08:00
grossmj
509b171b06
Allow to have projects with the same name in different locations.
2018-03-30 23:01:37 +07:00
grossmj
ea0009db6c
Save state feature for VirtualBox and VMware. New "On close" setting to
...
select the action to execute when closing/stopping a Qemu/VirtualBox/VMware VM.
2018-03-30 21:18:44 +07:00
Julien Duponchelle
b37a282475
Raise a NotImplementedError for IPV6 support in old UDP cloud
...
Fix #1093
2017-07-20 16:23:32 +02:00
ziajka
dadbb0ab09
More options for drawing area
2017-07-03 10:01:22 +02:00
ziajka
cc34f45677
Additional drawing options for Project
2017-06-30 14:31:25 +02:00
Julien Duponchelle
93adef91d8
Merge branch '2.0' into 2.1
2017-05-31 16:58:31 +02:00
Julien Duponchelle
bdd980d6a2
Ignore console_hsot when loading topologie
2017-05-22 11:42:50 +02:00
Julien Duponchelle
51d6152a5c
Fix support for some old topologies
...
Fix #1042
2017-05-19 18:27:20 +02:00
Julien Duponchelle
bdcadcc335
Fix support from some old topologies
...
Fix #1038
2017-05-19 17:49:39 +02:00
Julien Duponchelle
cd17ef6b12
Merge branch '2.0' into 2.1
2017-05-15 15:46:50 +02:00
Julien Duponchelle
fb6a95f7bb
Fix conversion issue with old topology with C3640
...
Fix #1019
2017-05-10 13:50:19 +02:00
Julien Duponchelle
930e7089db
Fix a conversion issue with some 1.3 topologies
2017-05-04 12:09:56 +02:00
Julien Duponchelle
fa1450cb24
Catch error when we can't backup the topology
...
Fix #998
2017-05-03 17:35:10 +02:00
Julien Duponchelle
8e5f7d0838
Catch error when writting the topology file on read only device
...
Fix #1003
2017-05-03 17:28:47 +02:00