mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-03 01:00:11 +03:00
Merge pull request #2917 from markparonyan/mypy-api-routes-compute-1
fix(typing): resolve mypy errors in gns3server.api.routes.compute
This commit is contained in:
commit
2866dbc51b
@ -91,9 +91,9 @@ async def ws_compute_authentication(websocket: WebSocket) -> Union[None, WebSock
|
|||||||
if not separator:
|
if not separator:
|
||||||
raise invalid_user_credentials_exc
|
raise invalid_user_credentials_exc
|
||||||
|
|
||||||
username = secrets.compare_digest(username, server_settings.compute_username)
|
username_valid = secrets.compare_digest(username, server_settings.compute_username)
|
||||||
password = secrets.compare_digest(password, server_settings.compute_password.get_secret_value())
|
password_valid = secrets.compare_digest(password, server_settings.compute_password.get_secret_value())
|
||||||
if not (username and password):
|
if not (username_valid and password_valid):
|
||||||
raise invalid_user_credentials_exc
|
raise invalid_user_credentials_exc
|
||||||
|
|
||||||
except HTTPException as e:
|
except HTTPException as e:
|
||||||
@ -101,5 +101,6 @@ async def ws_compute_authentication(websocket: WebSocket) -> Union[None, WebSock
|
|||||||
websocket_error = {"action": "log.error", "event": {"message": err_msg}}
|
websocket_error = {"action": "log.error", "event": {"message": err_msg}}
|
||||||
await websocket.send_json(websocket_error)
|
await websocket.send_json(websocket_error)
|
||||||
log.error(err_msg)
|
log.error(err_msg)
|
||||||
return await websocket.close(code=1008)
|
await websocket.close(code=1008)
|
||||||
|
return None
|
||||||
return websocket
|
return websocket
|
||||||
|
|||||||
@ -24,14 +24,16 @@ from fastapi import APIRouter, WebSocket, Depends, Body, status, HTTPException
|
|||||||
from fastapi.encoders import jsonable_encoder
|
from fastapi.encoders import jsonable_encoder
|
||||||
from fastapi.responses import StreamingResponse
|
from fastapi.responses import StreamingResponse
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
from typing import Union
|
from typing import Any, Union
|
||||||
|
|
||||||
from gns3server import schemas
|
from gns3server import schemas
|
||||||
from gns3server.compute.docker import Docker
|
from gns3server.compute.docker import Docker
|
||||||
from gns3server.compute.docker.docker_vm import DockerVM
|
from gns3server.compute.docker.docker_vm import DockerVM
|
||||||
from .dependencies.authentication import compute_authentication, ws_compute_authentication
|
from .dependencies.authentication import compute_authentication, ws_compute_authentication
|
||||||
|
|
||||||
responses = {404: {"model": schemas.ErrorMessage, "description": "Could not find project or Docker node"}}
|
responses: dict[int | str, dict[str, Any]] = {
|
||||||
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Docker node"}
|
||||||
|
}
|
||||||
|
|
||||||
router = APIRouter(responses=responses)
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
@ -53,13 +55,13 @@ def dep_node(project_id: UUID, node_id: UUID) -> DockerVM:
|
|||||||
responses={409: {"model": schemas.ErrorMessage, "description": "Could not create Docker node"}},
|
responses={409: {"model": schemas.ErrorMessage, "description": "Could not create Docker node"}},
|
||||||
dependencies=[Depends(compute_authentication)],
|
dependencies=[Depends(compute_authentication)],
|
||||||
)
|
)
|
||||||
async def create_docker_node(project_id: UUID, node_data: schemas.DockerCreate) -> schemas.Docker:
|
async def create_docker_node(project_id: UUID, node_create: schemas.DockerCreate) -> schemas.Docker:
|
||||||
"""
|
"""
|
||||||
Create a new Docker node.
|
Create a new Docker node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
docker_manager = Docker.instance()
|
docker_manager = Docker.instance()
|
||||||
node_data = jsonable_encoder(node_data, exclude_unset=True)
|
node_data = jsonable_encoder(node_create, exclude_unset=True)
|
||||||
container = await docker_manager.create_node(
|
container = await docker_manager.create_node(
|
||||||
node_data.pop("name"),
|
node_data.pop("name"),
|
||||||
str(project_id),
|
str(project_id),
|
||||||
@ -124,7 +126,7 @@ def get_docker_node(node: DockerVM = Depends(dep_node)) -> schemas.Docker:
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}", response_model=schemas.Docker, dependencies=[Depends(compute_authentication)])
|
@router.put("/{node_id}", response_model=schemas.Docker, dependencies=[Depends(compute_authentication)])
|
||||||
async def update_docker_node(node_data: schemas.DockerUpdate, node: DockerVM = Depends(dep_node)) -> schemas.Docker:
|
async def update_docker_node(node_update: schemas.DockerUpdate, node: DockerVM = Depends(dep_node)) -> schemas.Docker:
|
||||||
"""
|
"""
|
||||||
Update a Docker node.
|
Update a Docker node.
|
||||||
"""
|
"""
|
||||||
@ -152,7 +154,7 @@ async def update_docker_node(node_data: schemas.DockerUpdate, node: DockerVM = D
|
|||||||
]
|
]
|
||||||
|
|
||||||
changed = False
|
changed = False
|
||||||
node_data = jsonable_encoder(node_data, exclude_unset=True)
|
node_data = jsonable_encoder(node_update, exclude_unset=True)
|
||||||
for prop in props:
|
for prop in props:
|
||||||
# hasattr: startup_config_content only exists on IOLDockerVM
|
# hasattr: startup_config_content only exists on IOLDockerVM
|
||||||
if prop in node_data and hasattr(node, prop) and node_data[prop] != getattr(node, prop):
|
if prop in node_data and hasattr(node, prop) and node_data[prop] != getattr(node, prop):
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import os
|
|||||||
from fastapi import APIRouter, WebSocket, Body, Depends, status, HTTPException
|
from fastapi import APIRouter, WebSocket, Body, Depends, status, HTTPException
|
||||||
from fastapi.encoders import jsonable_encoder
|
from fastapi.encoders import jsonable_encoder
|
||||||
from fastapi.responses import StreamingResponse
|
from fastapi.responses import StreamingResponse
|
||||||
from typing import List, Union
|
from typing import Any, List, Optional, Union
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
from gns3server.compute.dynamips import Dynamips
|
from gns3server.compute.dynamips import Dynamips
|
||||||
@ -32,7 +32,9 @@ from gns3server import schemas
|
|||||||
|
|
||||||
from .dependencies.authentication import compute_authentication, ws_compute_authentication
|
from .dependencies.authentication import compute_authentication, ws_compute_authentication
|
||||||
|
|
||||||
responses = {404: {"model": schemas.ErrorMessage, "description": "Could not find project or Dynamips node"}}
|
responses: dict[int | str, dict[str, Any]] = {
|
||||||
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Dynamips node"}
|
||||||
|
}
|
||||||
|
|
||||||
router = APIRouter(responses=responses)
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
@ -64,25 +66,26 @@ async def create_router(project_id: UUID, node_data: schemas.DynamipsCreate) ->
|
|||||||
|
|
||||||
dynamips_manager = Dynamips.instance()
|
dynamips_manager = Dynamips.instance()
|
||||||
platform = node_data.platform
|
platform = node_data.platform
|
||||||
|
chassis: Optional[str]
|
||||||
if not node_data.chassis and platform in DEFAULT_CHASSIS:
|
if not node_data.chassis and platform in DEFAULT_CHASSIS:
|
||||||
chassis = DEFAULT_CHASSIS[platform]
|
chassis = DEFAULT_CHASSIS[platform]
|
||||||
else:
|
else:
|
||||||
chassis = node_data.chassis
|
chassis = node_data.chassis
|
||||||
node_data = jsonable_encoder(node_data, exclude_unset=True)
|
data = jsonable_encoder(node_data, exclude_unset=True)
|
||||||
vm = await dynamips_manager.create_node(
|
vm = await dynamips_manager.create_node(
|
||||||
node_data.pop("name"),
|
data.pop("name"),
|
||||||
str(project_id),
|
str(project_id),
|
||||||
node_data.get("node_id"),
|
data.get("node_id"),
|
||||||
dynamips_id=node_data.get("dynamips_id"),
|
dynamips_id=data.get("dynamips_id"),
|
||||||
platform=platform,
|
platform=platform,
|
||||||
console=node_data.get("console"),
|
console=data.get("console"),
|
||||||
console_type=node_data.get("console_type", "telnet"),
|
console_type=data.get("console_type", "telnet"),
|
||||||
aux=node_data.get("aux"),
|
aux=data.get("aux"),
|
||||||
aux_type=node_data.pop("aux_type", "none"),
|
aux_type=data.pop("aux_type", "none"),
|
||||||
chassis=chassis,
|
chassis=chassis,
|
||||||
node_type="dynamips",
|
node_type="dynamips",
|
||||||
)
|
)
|
||||||
await dynamips_manager.update_vm_settings(vm, node_data)
|
await dynamips_manager.update_vm_settings(vm, data)
|
||||||
return vm.asdict()
|
return vm.asdict()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
API routes for Ethernet hub nodes.
|
API routes for Ethernet hub nodes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from typing import Any
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, Body, Path, status, HTTPException
|
from fastapi import APIRouter, Depends, Body, Path, status, HTTPException
|
||||||
@ -29,7 +30,9 @@ from gns3server.compute.dynamips import Dynamips
|
|||||||
from gns3server.compute.dynamips.nodes.ethernet_hub import EthernetHub
|
from gns3server.compute.dynamips.nodes.ethernet_hub import EthernetHub
|
||||||
from gns3server import schemas
|
from gns3server import schemas
|
||||||
|
|
||||||
responses = {404: {"model": schemas.ErrorMessage, "description": "Could not find project or Ethernet hub node"}}
|
responses: dict[int | str, dict[str, Any]] = {
|
||||||
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Ethernet hub node"}
|
||||||
|
}
|
||||||
|
|
||||||
router = APIRouter(responses=responses)
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
@ -57,13 +60,13 @@ async def create_ethernet_hub(project_id: UUID, node_data: schemas.EthernetHubCr
|
|||||||
|
|
||||||
# Use the Dynamips Ethernet hub to simulate this node
|
# Use the Dynamips Ethernet hub to simulate this node
|
||||||
dynamips_manager = Dynamips.instance()
|
dynamips_manager = Dynamips.instance()
|
||||||
node_data = jsonable_encoder(node_data, exclude_unset=True)
|
data = jsonable_encoder(node_data, exclude_unset=True)
|
||||||
node = await dynamips_manager.create_node(
|
node = await dynamips_manager.create_node(
|
||||||
node_data.pop("name"),
|
data.pop("name"),
|
||||||
str(project_id),
|
str(project_id),
|
||||||
node_data.get("node_id"),
|
data.get("node_id"),
|
||||||
node_type="ethernet_hub",
|
node_type="ethernet_hub",
|
||||||
ports=node_data.get("ports_mapping"),
|
ports=data.get("ports_mapping"),
|
||||||
)
|
)
|
||||||
return node.asdict()
|
return node.asdict()
|
||||||
|
|
||||||
@ -97,11 +100,11 @@ async def update_ethernet_hub(
|
|||||||
Update an Ethernet hub.
|
Update an Ethernet hub.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
node_data = jsonable_encoder(node_data, exclude_unset=True)
|
data = jsonable_encoder(node_data, exclude_unset=True)
|
||||||
if "name" in node_data and node.name != node_data["name"]:
|
if "name" in data and node.name != data["name"]:
|
||||||
await node.set_name(node_data["name"])
|
await node.set_name(data["name"])
|
||||||
if "ports_mapping" in node_data:
|
if "ports_mapping" in data:
|
||||||
node.ports_mapping = node_data["ports_mapping"]
|
node.ports_mapping = data["ports_mapping"]
|
||||||
node.updated()
|
node.updated()
|
||||||
return node.asdict()
|
return node.asdict()
|
||||||
|
|
||||||
|
|||||||
@ -305,10 +305,6 @@ module = [
|
|||||||
"gns3server.agent.web_wireshark.docker_client", # 5
|
"gns3server.agent.web_wireshark.docker_client", # 5
|
||||||
"gns3server.api.routes.compute.atm_switch_nodes", # 9
|
"gns3server.api.routes.compute.atm_switch_nodes", # 9
|
||||||
"gns3server.api.routes.compute.cloud_nodes", # 14
|
"gns3server.api.routes.compute.cloud_nodes", # 14
|
||||||
"gns3server.api.routes.compute.dependencies.authentication", # 3
|
|
||||||
"gns3server.api.routes.compute.docker_nodes", # 26
|
|
||||||
"gns3server.api.routes.compute.dynamips_nodes", # 9
|
|
||||||
"gns3server.api.routes.compute.ethernet_hub_nodes", # 9
|
|
||||||
"gns3server.api.routes.compute.ethernet_switch_nodes", # 16
|
"gns3server.api.routes.compute.ethernet_switch_nodes", # 16
|
||||||
"gns3server.api.routes.compute.frame_relay_switch_nodes", # 9
|
"gns3server.api.routes.compute.frame_relay_switch_nodes", # 9
|
||||||
"gns3server.api.routes.compute.iou_nodes", # 15
|
"gns3server.api.routes.compute.iou_nodes", # 15
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user