From 908a1eb3e698b152f4112849183a9ded8d18b441 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 04:47:23 +0000 Subject: [PATCH 1/6] fix(typing): resolve mypy errors in schemas.compute.cloud_nodes --- gns3server/schemas/compute/cloud_nodes.py | 7 ++++--- pyproject.toml | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gns3server/schemas/compute/cloud_nodes.py b/gns3server/schemas/compute/cloud_nodes.py index 4cda4ce23..8fee188a1 100644 --- a/gns3server/schemas/compute/cloud_nodes.py +++ b/gns3server/schemas/compute/cloud_nodes.py @@ -126,7 +126,7 @@ class CloudBase(BaseModel): Common cloud node properties. """ - name: str + name: Optional[str] = None node_id: Optional[UUID] = None usage: Optional[str] = None remote_console_host: Optional[str] = Field(None, description="Remote console host or IP") @@ -144,7 +144,7 @@ class CloudCreate(CloudBase): Properties to create a cloud node. """ - pass + name: str class CloudUpdate(CloudBase): @@ -152,10 +152,11 @@ class CloudUpdate(CloudBase): Properties to update a cloud node. """ - name: Optional[str] = None + pass class Cloud(CloudBase): + name: str project_id: UUID node_id: UUID ports_mapping: List[Union[EthernetPort, TAPPort, UDPPort]] diff --git a/pyproject.toml b/pyproject.toml index 258447eb6..f6d5a8e23 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -375,7 +375,6 @@ module = [ "gns3server.db.repositories.users", # 12 "gns3server.db.tasks", # 12 "gns3server.schemas.compute.atm_switch_nodes", # 5 - "gns3server.schemas.compute.cloud_nodes", # 1 "gns3server.schemas.compute.docker_nodes", # 2 "gns3server.schemas.compute.dynamips_nodes", # 1 "gns3server.schemas.compute.frame_relay_switch_nodes", # 5 From 2b704025e327ed58ceabbc0d976d1a5882c6cc13 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 04:54:35 +0000 Subject: [PATCH 2/6] fix(typing): resolve mypy errors in schemas.compute.docker_nodes --- gns3server/schemas/compute/docker_nodes.py | 11 +++++++---- pyproject.toml | 1 - 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/gns3server/schemas/compute/docker_nodes.py b/gns3server/schemas/compute/docker_nodes.py index 4359df723..1745b6d2e 100644 --- a/gns3server/schemas/compute/docker_nodes.py +++ b/gns3server/schemas/compute/docker_nodes.py @@ -41,8 +41,8 @@ class DockerBase(BaseModel): # the canonical "no path" value is "/" (the creation default) return value or "/" - name: str - image: str = Field(..., description="Docker image name") + name: Optional[str] = None + image: Optional[str] = Field(None, description="Docker image name") node_id: Optional[UUID] = None console: Optional[int] = Field(None, gt=0, le=65535, description="Console TCP port") console_type: Optional[ConsoleType] = Field(None, description="Console type") @@ -76,6 +76,8 @@ class DockerCreate(DockerBase): Properties to create a Docker node. """ + name: str + image: str = Field(..., description="Docker image name") application_id: Optional[int] = Field( None, ge=1, le=1022, description="IOL application ID for iol-runner images (allocated by the controller)" ) @@ -93,11 +95,12 @@ class DockerUpdate(DockerBase): Properties to update a Docker node. """ - name: Optional[str] = None - image: Optional[str] = Field(None, description="Docker image name") + pass class Docker(DockerBase): + name: str + image: str = Field(..., description="Docker image name") container_id: str = Field( ..., min_length=12, max_length=64, pattern="^[a-f0-9]+$", description="Docker container ID (read only)" ) diff --git a/pyproject.toml b/pyproject.toml index f6d5a8e23..e608c2e55 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -375,7 +375,6 @@ module = [ "gns3server.db.repositories.users", # 12 "gns3server.db.tasks", # 12 "gns3server.schemas.compute.atm_switch_nodes", # 5 - "gns3server.schemas.compute.docker_nodes", # 2 "gns3server.schemas.compute.dynamips_nodes", # 1 "gns3server.schemas.compute.frame_relay_switch_nodes", # 5 "gns3server.schemas.compute.iou_nodes", # 3 From abb564a2fa4213611cf5e4c5f8d5d7832f4e06a6 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 05:15:18 +0000 Subject: [PATCH 3/6] fix(typing): resolve mypy errors in schemas.compute.frame_relay_switch_nodes --- gns3server/schemas/compute/frame_relay_switch_nodes.py | 4 ++-- pyproject.toml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gns3server/schemas/compute/frame_relay_switch_nodes.py b/gns3server/schemas/compute/frame_relay_switch_nodes.py index 67db0bf3e..fbb86b553 100644 --- a/gns3server/schemas/compute/frame_relay_switch_nodes.py +++ b/gns3server/schemas/compute/frame_relay_switch_nodes.py @@ -26,8 +26,8 @@ class FrameRelaySwitchBase(BaseModel): Common Frame Relay switch properties. """ - name: str = None - node_id: UUID = None + name: Optional[str] = None + node_id: Optional[UUID] = None usage: Optional[str] = None mappings: Optional[dict] = None diff --git a/pyproject.toml b/pyproject.toml index e608c2e55..2d68270a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -376,7 +376,6 @@ module = [ "gns3server.db.tasks", # 12 "gns3server.schemas.compute.atm_switch_nodes", # 5 "gns3server.schemas.compute.dynamips_nodes", # 1 - "gns3server.schemas.compute.frame_relay_switch_nodes", # 5 "gns3server.schemas.compute.iou_nodes", # 3 "gns3server.schemas.compute.nat_nodes", # 1 "gns3server.schemas.compute.qemu_nodes", # 1 From aa7941411f7a06748936b0fef8569cd869de4bcb Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 05:08:23 +0000 Subject: [PATCH 4/6] fix(typing): resolve mypy errors in schemas.compute.iou_nodes --- gns3server/schemas/compute/iou_nodes.py | 17 ++++++++++------- pyproject.toml | 1 - 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/gns3server/schemas/compute/iou_nodes.py b/gns3server/schemas/compute/iou_nodes.py index f4dd42ce5..e51fa1a28 100644 --- a/gns3server/schemas/compute/iou_nodes.py +++ b/gns3server/schemas/compute/iou_nodes.py @@ -26,9 +26,9 @@ class IOUBase(BaseModel): Common IOU node properties. """ - name: str - path: str = Field(..., description="IOU executable path") - application_id: int = Field(..., description="Application ID for running IOU executable") + name: Optional[str] = None + path: Optional[str] = Field(None, description="IOU executable path") + application_id: Optional[int] = Field(None, description="Application ID for running IOU executable") node_id: Optional[UUID] = None usage: Optional[str] = Field(None, description="How to use the node") console: Optional[int] = Field(None, gt=0, le=65535, description="Console TCP port") @@ -52,7 +52,9 @@ class IOUCreate(IOUBase): Properties to create an IOU node. """ - pass + name: str + path: str = Field(..., description="IOU executable path") + application_id: int = Field(..., description="Application ID for running IOU executable") class IOUUpdate(IOUBase): @@ -60,12 +62,13 @@ class IOUUpdate(IOUBase): Properties to update an IOU node. """ - name: Optional[str] = None - path: Optional[str] = Field(None, description="IOU executable path") - application_id: Optional[int] = Field(None, description="Application ID for running IOU executable") + pass class IOU(IOUBase): + name: str + path: str = Field(..., description="IOU executable path") + application_id: int = Field(..., description="Application ID for running IOU executable") project_id: UUID = Field(..., description="Project ID") node_directory: str = Field(..., description="Path to the node working directory (read only)") command_line: str = Field(..., description="Last command line used to start IOU (read only)") diff --git a/pyproject.toml b/pyproject.toml index 2d68270a4..4c502006b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -376,7 +376,6 @@ module = [ "gns3server.db.tasks", # 12 "gns3server.schemas.compute.atm_switch_nodes", # 5 "gns3server.schemas.compute.dynamips_nodes", # 1 - "gns3server.schemas.compute.iou_nodes", # 3 "gns3server.schemas.compute.nat_nodes", # 1 "gns3server.schemas.compute.qemu_nodes", # 1 "gns3server.schemas.compute.virtualbox_nodes", # 2 From 87f209f5485369d04fde428dcdf23aba1b47d7e6 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 04:47:34 +0000 Subject: [PATCH 5/6] fix(typing): resolve mypy errors in schemas.compute.qemu_nodes --- gns3server/schemas/compute/qemu_nodes.py | 6 ++++-- pyproject.toml | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/gns3server/schemas/compute/qemu_nodes.py b/gns3server/schemas/compute/qemu_nodes.py index 4596677c8..275ac92bb 100644 --- a/gns3server/schemas/compute/qemu_nodes.py +++ b/gns3server/schemas/compute/qemu_nodes.py @@ -155,7 +155,7 @@ class QemuBase(BaseModel): Common Qemu node properties. """ - name: str + name: Optional[str] = None node_id: Optional[UUID] = None usage: Optional[str] = Field(None, description="How to use the node") linked_clone: Optional[bool] = Field(None, description="Whether the VM is a linked clone or not") @@ -219,6 +219,7 @@ class QemuCreate(QemuBase): Properties to create a Qemu node. """ + name: str disk_images_to_reset: Optional[List[str]] = Field( None, description="Disk image properties whose stale linked-clone overlays must be recreated", @@ -230,10 +231,11 @@ class QemuUpdate(QemuBase): Properties to update a Qemu node. """ - name: Optional[str] = None + pass class Qemu(QemuBase): + name: str project_id: UUID = Field(..., description="Project ID") node_directory: str = Field(..., description="Path to the node working directory (read only)") command_line: str = Field(..., description="Last command line used to start IOU (read only)") diff --git a/pyproject.toml b/pyproject.toml index 4c502006b..86353ab97 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -377,7 +377,6 @@ module = [ "gns3server.schemas.compute.atm_switch_nodes", # 5 "gns3server.schemas.compute.dynamips_nodes", # 1 "gns3server.schemas.compute.nat_nodes", # 1 - "gns3server.schemas.compute.qemu_nodes", # 1 "gns3server.schemas.compute.virtualbox_nodes", # 2 "gns3server.schemas.compute.vmware_nodes", # 3 "gns3server.schemas.compute.vpcs_nodes", # 1 From 515ae8dcfbf5f7800015ba321d2abce760116c77 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 04:54:42 +0000 Subject: [PATCH 6/6] fix(typing): resolve mypy errors in schemas.compute.virtualbox_nodes --- gns3server/schemas/compute/virtualbox_nodes.py | 12 +++++++----- pyproject.toml | 1 - 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gns3server/schemas/compute/virtualbox_nodes.py b/gns3server/schemas/compute/virtualbox_nodes.py index 06ad9f831..d05692ebc 100644 --- a/gns3server/schemas/compute/virtualbox_nodes.py +++ b/gns3server/schemas/compute/virtualbox_nodes.py @@ -56,8 +56,8 @@ class VirtualBoxBase(BaseModel): Common VirtualBox node properties. """ - name: str - vmname: str = Field(..., description="VirtualBox VM name (in VirtualBox itself)") + name: Optional[str] = None + vmname: Optional[str] = None node_id: Optional[UUID] = None linked_clone: Optional[bool] = Field(None, description="Whether the VM is a linked clone or not") usage: Optional[str] = Field(None, description="How to use the node") @@ -78,7 +78,8 @@ class VirtualBoxCreate(VirtualBoxBase): Properties to create a VirtualBox node. """ - pass + name: str + vmname: str = Field(..., description="VirtualBox VM name (in VirtualBox itself)") class VirtualBoxUpdate(VirtualBoxBase): @@ -86,11 +87,12 @@ class VirtualBoxUpdate(VirtualBoxBase): Properties to update a VirtualBox node. """ - name: Optional[str] = None - vmname: Optional[str] = None + pass class VirtualBox(VirtualBoxBase): + name: str + vmname: str = Field(..., description="VirtualBox VM name (in VirtualBox itself)") project_id: UUID = Field(..., description="Project ID") node_directory: Optional[str] = Field(None, description="Path to the node working directory (read only)") status: NodeStatus = Field(..., description="Container status (read only)") diff --git a/pyproject.toml b/pyproject.toml index 86353ab97..7e068d69e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -377,7 +377,6 @@ module = [ "gns3server.schemas.compute.atm_switch_nodes", # 5 "gns3server.schemas.compute.dynamips_nodes", # 1 "gns3server.schemas.compute.nat_nodes", # 1 - "gns3server.schemas.compute.virtualbox_nodes", # 2 "gns3server.schemas.compute.vmware_nodes", # 3 "gns3server.schemas.compute.vpcs_nodes", # 1 "gns3server.schemas.controller.appliances", # 1