mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-22 10:52:21 +03:00
marker: fix PUT marker with an enabled-only body (bpf no longer required)
update_marker reused MarkerCreate, whose bpf is required, so a partial PUT like
{"enabled": false} was rejected with 422 "bpf field required". Add a MarkerUpdate
schema with every field optional (bpf included; capture_node_id and name are
create-only/path-driven and omitted) and use it for the PUT route — partial
updates now validate cleanly.
This commit is contained in:
parent
f7d7ba165a
commit
e97df86d96
@ -497,7 +497,7 @@ async def delete_marker(
|
|||||||
)
|
)
|
||||||
async def update_marker(
|
async def update_marker(
|
||||||
marker_name: str,
|
marker_name: str,
|
||||||
marker_data: schemas.MarkerCreate,
|
marker_data: schemas.MarkerUpdate,
|
||||||
link: Link = Depends(dep_link)
|
link: Link = Depends(dep_link)
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -20,7 +20,7 @@ from .common import ErrorMessage
|
|||||||
from .version import Version
|
from .version import Version
|
||||||
|
|
||||||
# Controller schemas
|
# Controller schemas
|
||||||
from .controller.links import LinkCreate, LinkUpdate, Link, UDPPortInfo, EthernetPortInfo, LinkCapture, MarkerCreate, MarkerDefinitionCreate
|
from .controller.links import LinkCreate, LinkUpdate, Link, UDPPortInfo, EthernetPortInfo, LinkCapture, MarkerCreate, MarkerUpdate, MarkerDefinitionCreate
|
||||||
from .controller.computes import ComputeCreate, ComputeUpdate, ComputeVirtualBoxVM, ComputeVMwareVM, ComputeDockerImage, AutoIdlePC, Compute
|
from .controller.computes import ComputeCreate, ComputeUpdate, ComputeVirtualBoxVM, ComputeVMwareVM, ComputeDockerImage, AutoIdlePC, Compute
|
||||||
from .controller.templates import TemplateCreate, TemplateUpdate, TemplateUsage, Template
|
from .controller.templates import TemplateCreate, TemplateUpdate, TemplateUsage, Template
|
||||||
from .controller.images import Image, ImageType
|
from .controller.images import Image, ImageType
|
||||||
|
|||||||
@ -191,6 +191,29 @@ class MarkerCreate(BaseModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MarkerUpdate(BaseModel):
|
||||||
|
"""
|
||||||
|
Body for updating a marker — partial update, every field optional.
|
||||||
|
|
||||||
|
``bpf`` is optional here (it is required on create). ``capture_node_id`` and
|
||||||
|
``name`` are create-only / path-driven and intentionally absent; an explicit
|
||||||
|
``direction: null`` clears the direction back to both (omitting keeps it).
|
||||||
|
"""
|
||||||
|
|
||||||
|
bpf: Optional[str] = None
|
||||||
|
tag: Optional[int] = None
|
||||||
|
direction: Optional[str] = Field(
|
||||||
|
None,
|
||||||
|
pattern=r"^(tx|rx)$",
|
||||||
|
description="Direction filter; an explicit null clears it to both. Omit to keep.",
|
||||||
|
)
|
||||||
|
color: Optional[str] = Field(None, description="Hex color render hint, e.g. '#ff5722'")
|
||||||
|
highlight_duration: Optional[int] = Field(
|
||||||
|
None, ge=1, description="UI highlight duration in ms; null = UI default"
|
||||||
|
)
|
||||||
|
enabled: Optional[bool] = Field(None, description="Toggle the marker on/off (instant).")
|
||||||
|
|
||||||
|
|
||||||
class MarkerDefinitionCreate(BaseModel):
|
class MarkerDefinitionCreate(BaseModel):
|
||||||
"""
|
"""
|
||||||
Body for creating / updating a project-level marker definition.
|
Body for creating / updating a project-level marker definition.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user