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/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/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/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/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/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 94c724b2a..ac204cfd0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -312,12 +312,6 @@ module = [ "gns3server.db.repositories.templates", # 6 "gns3server.db.repositories.users", # 12 "gns3server.db.tasks", # 12 - "gns3server.schemas.compute.cloud_nodes", # 1 - "gns3server.schemas.compute.docker_nodes", # 2 - "gns3server.schemas.compute.frame_relay_switch_nodes", # 5 - "gns3server.schemas.compute.iou_nodes", # 3 - "gns3server.schemas.compute.qemu_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