mirror of
https://github.com/GNS3/gns3-server
synced 2024-12-26 16:58:28 +00:00
Remove explicit Response for endpoints returning HTTP 204 status code
This commit is contained in:
parent
5b478fc331
commit
fc6aeb715a
@ -109,43 +109,42 @@ async def update_atm_switch(
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_atm_switch_node(node: ATMSwitch = Depends(dep_node)) -> Response:
|
async def delete_atm_switch_node(node: ATMSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete an ATM switch node.
|
Delete an ATM switch node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Dynamips.instance().delete_node(node.id)
|
await Dynamips.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def start_atm_switch(node: ATMSwitch = Depends(dep_node)) -> Response:
|
def start_atm_switch(node: ATMSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start an ATM switch node.
|
Start an ATM switch node.
|
||||||
This endpoint results in no action since ATM switch nodes are always on.
|
This endpoint results in no action since ATM switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def stop_atm_switch(node: ATMSwitch = Depends(dep_node)) -> Response:
|
def stop_atm_switch(node: ATMSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop an ATM switch node.
|
Stop an ATM switch node.
|
||||||
This endpoint results in no action since ATM switch nodes are always on.
|
This endpoint results in no action since ATM switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def suspend_atm_switch(node: ATMSwitch = Depends(dep_node)) -> Response:
|
def suspend_atm_switch(node: ATMSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend an ATM switch node.
|
Suspend an ATM switch node.
|
||||||
This endpoint results in no action since ATM switch nodes are always on.
|
This endpoint results in no action since ATM switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -171,7 +170,7 @@ async def create_nio(
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_nio(adapter_number: int, port_number: int, node: ATMSwitch = Depends(dep_node)) -> Response:
|
async def delete_nio(adapter_number: int, port_number: int, node: ATMSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Remove a NIO (Network Input/Output) from the node.
|
Remove a NIO (Network Input/Output) from the node.
|
||||||
The adapter number on the switch is always 0.
|
The adapter number on the switch is always 0.
|
||||||
@ -179,7 +178,6 @@ async def delete_nio(adapter_number: int, port_number: int, node: ATMSwitch = De
|
|||||||
|
|
||||||
nio = await node.remove_nio(port_number)
|
nio = await node.remove_nio(port_number)
|
||||||
await nio.delete()
|
await nio.delete()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -209,14 +207,13 @@ async def stop_capture(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: ATMSwitch = Depends(dep_node)
|
node: ATMSwitch = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The adapter number on the switch is always 0.
|
The adapter number on the switch is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
|
@ -99,43 +99,41 @@ def update_cloud(node_data: schemas.CloudUpdate, node: Cloud = Depends(dep_node)
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_cloud(node: Cloud = Depends(dep_node)) -> Response:
|
async def delete_cloud(node: Cloud = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a cloud node.
|
Delete a cloud node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Builtin.instance().delete_node(node.id)
|
await Builtin.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_cloud(node: Cloud = Depends(dep_node)) -> Response:
|
async def start_cloud(node: Cloud = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a cloud node.
|
Start a cloud node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.start()
|
await node.start()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_cloud(node: Cloud = Depends(dep_node)) -> Response:
|
async def stop_cloud(node: Cloud = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a cloud node.
|
Stop a cloud node.
|
||||||
This endpoint results in no action since cloud nodes cannot be stopped.
|
This endpoint results in no action since cloud nodes cannot be stopped.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_cloud(node: Cloud = Depends(dep_node)) -> Response:
|
async def suspend_cloud(node: Cloud = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend a cloud node.
|
Suspend a cloud node.
|
||||||
This endpoint results in no action since cloud nodes cannot be suspended.
|
This endpoint results in no action since cloud nodes cannot be suspended.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -190,14 +188,13 @@ async def delete_cloud_nio(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: Cloud = Depends(dep_node)
|
node: Cloud = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Remove a NIO (Network Input/Output) from the node.
|
Remove a NIO (Network Input/Output) from the node.
|
||||||
The adapter number on the cloud is always 0.
|
The adapter number on the cloud is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.remove_nio(port_number)
|
await node.remove_nio(port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -226,14 +223,13 @@ async def stop_cloud_capture(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: Cloud = Depends(dep_node)
|
node: Cloud = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The adapter number on the cloud is always 0.
|
The adapter number on the cloud is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/pcap")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/pcap")
|
||||||
|
@ -132,73 +132,66 @@ async def update_docker_node(node_data: schemas.DockerUpdate, node: DockerVM = D
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_docker_node(node: DockerVM = Depends(dep_node)) -> Response:
|
async def start_docker_node(node: DockerVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a Docker node.
|
Start a Docker node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.start()
|
await node.start()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_docker_node(node: DockerVM = Depends(dep_node)) -> Response:
|
async def stop_docker_node(node: DockerVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a Docker node.
|
Stop a Docker node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop()
|
await node.stop()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_docker_node(node: DockerVM = Depends(dep_node)) -> Response:
|
async def suspend_docker_node(node: DockerVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend a Docker node.
|
Suspend a Docker node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.pause()
|
await node.pause()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reload_docker_node(node: DockerVM = Depends(dep_node)) -> Response:
|
async def reload_docker_node(node: DockerVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Reload a Docker node.
|
Reload a Docker node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.restart()
|
await node.restart()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/pause", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/pause", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def pause_docker_node(node: DockerVM = Depends(dep_node)) -> Response:
|
async def pause_docker_node(node: DockerVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Pause a Docker node.
|
Pause a Docker node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.pause()
|
await node.pause()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/unpause", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/unpause", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def unpause_docker_node(node: DockerVM = Depends(dep_node)) -> Response:
|
async def unpause_docker_node(node: DockerVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Unpause a Docker node.
|
Unpause a Docker node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.unpause()
|
await node.unpause()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_docker_node(node: DockerVM = Depends(dep_node)) -> Response:
|
async def delete_docker_node(node: DockerVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a Docker node.
|
Delete a Docker node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.delete()
|
await node.delete()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/duplicate", response_model=schemas.Docker, status_code=status.HTTP_201_CREATED)
|
@router.post("/{node_id}/duplicate", response_model=schemas.Docker, status_code=status.HTTP_201_CREATED)
|
||||||
@ -257,14 +250,13 @@ async def delete_docker_node_nio(
|
|||||||
adapter_number: int,
|
adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: DockerVM = Depends(dep_node)
|
node: DockerVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
The port number on the Docker node is always 0.
|
The port number on the Docker node is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.adapter_remove_nio_binding(adapter_number)
|
await node.adapter_remove_nio_binding(adapter_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -292,14 +284,13 @@ async def stop_docker_node_capture(
|
|||||||
adapter_number: int,
|
adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: DockerVM = Depends(dep_node)
|
node: DockerVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The port number on the Docker node is always 0.
|
The port number on the Docker node is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(adapter_number)
|
await node.stop_capture(adapter_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
@ -328,7 +319,6 @@ async def console_ws(websocket: WebSocket, node: DockerVM = Depends(dep_node)) -
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reset_console(node: DockerVM = Depends(dep_node)) -> Response:
|
async def reset_console(node: DockerVM = Depends(dep_node)) -> None:
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -105,17 +105,16 @@ async def update_router(node_data: schemas.DynamipsUpdate, node: Router = Depend
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_router(node: Router = Depends(dep_node)) -> Response:
|
async def delete_router(node: Router = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a Dynamips router.
|
Delete a Dynamips router.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Dynamips.instance().delete_node(node.id)
|
await Dynamips.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_router(node: Router = Depends(dep_node)) -> Response:
|
async def start_router(node: Router = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a Dynamips router.
|
Start a Dynamips router.
|
||||||
"""
|
"""
|
||||||
@ -125,44 +124,39 @@ async def start_router(node: Router = Depends(dep_node)) -> Response:
|
|||||||
except GeneratorExit:
|
except GeneratorExit:
|
||||||
pass
|
pass
|
||||||
await node.start()
|
await node.start()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_router(node: Router = Depends(dep_node)) -> Response:
|
async def stop_router(node: Router = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a Dynamips router.
|
Stop a Dynamips router.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop()
|
await node.stop()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_router(node: Router = Depends(dep_node)) -> Response:
|
async def suspend_router(node: Router = Depends(dep_node)) -> None:
|
||||||
|
|
||||||
await node.suspend()
|
await node.suspend()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resume", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/resume", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def resume_router(node: Router = Depends(dep_node)) -> Response:
|
async def resume_router(node: Router = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Resume a suspended Dynamips router.
|
Resume a suspended Dynamips router.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.resume()
|
await node.resume()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reload_router(node: Router = Depends(dep_node)) -> Response:
|
async def reload_router(node: Router = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Reload a suspended Dynamips router.
|
Reload a suspended Dynamips router.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.reload()
|
await node.reload()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -208,14 +202,13 @@ async def update_nio(
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_nio(adapter_number: int, port_number: int, node: Router = Depends(dep_node)) -> Response:
|
async def delete_nio(adapter_number: int, port_number: int, node: Router = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
nio = await node.slot_remove_nio_binding(adapter_number, port_number)
|
nio = await node.slot_remove_nio_binding(adapter_number, port_number)
|
||||||
await nio.delete()
|
await nio.delete()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -237,13 +230,12 @@ async def start_capture(
|
|||||||
@router.post(
|
@router.post(
|
||||||
"/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop", status_code=status.HTTP_204_NO_CONTENT
|
"/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop", status_code=status.HTTP_204_NO_CONTENT
|
||||||
)
|
)
|
||||||
async def stop_capture(adapter_number: int, port_number: int, node: Router = Depends(dep_node)) -> Response:
|
async def stop_capture(adapter_number: int, port_number: int, node: Router = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(adapter_number, port_number)
|
await node.stop_capture(adapter_number, port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
@ -301,7 +293,6 @@ async def console_ws(websocket: WebSocket, node: Router = Depends(dep_node)) ->
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reset_console(node: Router = Depends(dep_node)) -> Response:
|
async def reset_console(node: Router = Depends(dep_node)) -> None:
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -108,43 +108,42 @@ async def update_ethernet_hub(
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_ethernet_hub(node: EthernetHub = Depends(dep_node)) -> Response:
|
async def delete_ethernet_hub(node: EthernetHub = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete an Ethernet hub.
|
Delete an Ethernet hub.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Dynamips.instance().delete_node(node.id)
|
await Dynamips.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def start_ethernet_hub(node: EthernetHub = Depends(dep_node)) -> Response:
|
def start_ethernet_hub(node: EthernetHub = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start an Ethernet hub.
|
Start an Ethernet hub.
|
||||||
This endpoint results in no action since Ethernet hub nodes are always on.
|
This endpoint results in no action since Ethernet hub nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def stop_ethernet_hub(node: EthernetHub = Depends(dep_node)) -> Response:
|
def stop_ethernet_hub(node: EthernetHub = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop an Ethernet hub.
|
Stop an Ethernet hub.
|
||||||
This endpoint results in no action since Ethernet hub nodes are always on.
|
This endpoint results in no action since Ethernet hub nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def suspend_ethernet_hub(node: EthernetHub = Depends(dep_node)) -> Response:
|
def suspend_ethernet_hub(node: EthernetHub = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend an Ethernet hub.
|
Suspend an Ethernet hub.
|
||||||
This endpoint results in no action since Ethernet hub nodes are always on.
|
This endpoint results in no action since Ethernet hub nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -175,7 +174,7 @@ async def delete_nio(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: EthernetHub = Depends(dep_node)
|
node: EthernetHub = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
The adapter number on the hub is always 0.
|
The adapter number on the hub is always 0.
|
||||||
@ -183,7 +182,6 @@ async def delete_nio(
|
|||||||
|
|
||||||
nio = await node.remove_nio(port_number)
|
nio = await node.remove_nio(port_number)
|
||||||
await nio.delete()
|
await nio.delete()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -212,14 +210,13 @@ async def stop_capture(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: EthernetHub = Depends(dep_node)
|
node: EthernetHub = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The adapter number on the hub is always 0.
|
The adapter number on the hub is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
|
@ -112,43 +112,42 @@ async def update_ethernet_switch(
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_ethernet_switch(node: EthernetSwitch = Depends(dep_node)) -> Response:
|
async def delete_ethernet_switch(node: EthernetSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete an Ethernet switch.
|
Delete an Ethernet switch.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Dynamips.instance().delete_node(node.id)
|
await Dynamips.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def start_ethernet_switch(node: EthernetSwitch = Depends(dep_node)) -> Response:
|
def start_ethernet_switch(node: EthernetSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start an Ethernet switch.
|
Start an Ethernet switch.
|
||||||
This endpoint results in no action since Ethernet switch nodes are always on.
|
This endpoint results in no action since Ethernet switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def stop_ethernet_switch(node: EthernetSwitch = Depends(dep_node)) -> Response:
|
def stop_ethernet_switch(node: EthernetSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop an Ethernet switch.
|
Stop an Ethernet switch.
|
||||||
This endpoint results in no action since Ethernet switch nodes are always on.
|
This endpoint results in no action since Ethernet switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def suspend_ethernet_switch(node: EthernetSwitch = Depends(dep_node)) -> Response:
|
def suspend_ethernet_switch(node: EthernetSwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend an Ethernet switch.
|
Suspend an Ethernet switch.
|
||||||
This endpoint results in no action since Ethernet switch nodes are always on.
|
This endpoint results in no action since Ethernet switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -175,7 +174,7 @@ async def delete_nio(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: EthernetSwitch = Depends(dep_node)
|
node: EthernetSwitch = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
The adapter number on the switch is always 0.
|
The adapter number on the switch is always 0.
|
||||||
@ -183,7 +182,6 @@ async def delete_nio(
|
|||||||
|
|
||||||
nio = await node.remove_nio(port_number)
|
nio = await node.remove_nio(port_number)
|
||||||
await nio.delete()
|
await nio.delete()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -212,14 +210,13 @@ async def stop_capture(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: EthernetSwitch = Depends(dep_node)
|
node: EthernetSwitch = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The adapter number on the switch is always 0.
|
The adapter number on the switch is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
|
@ -112,43 +112,42 @@ async def update_frame_relay_switch(
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)) -> Response:
|
async def delete_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a Frame Relay switch node.
|
Delete a Frame Relay switch node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Dynamips.instance().delete_node(node.id)
|
await Dynamips.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def start_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)) -> Response:
|
def start_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a Frame Relay switch node.
|
Start a Frame Relay switch node.
|
||||||
This endpoint results in no action since Frame Relay switch nodes are always on.
|
This endpoint results in no action since Frame Relay switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def stop_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)) -> Response:
|
def stop_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a Frame Relay switch node.
|
Stop a Frame Relay switch node.
|
||||||
This endpoint results in no action since Frame Relay switch nodes are always on.
|
This endpoint results in no action since Frame Relay switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def suspend_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)) -> Response:
|
def suspend_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend a Frame Relay switch node.
|
Suspend a Frame Relay switch node.
|
||||||
This endpoint results in no action since Frame Relay switch nodes are always on.
|
This endpoint results in no action since Frame Relay switch nodes are always on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -179,7 +178,7 @@ async def delete_nio(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: FrameRelaySwitch = Depends(dep_node)
|
node: FrameRelaySwitch = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Remove a NIO (Network Input/Output) from the node.
|
Remove a NIO (Network Input/Output) from the node.
|
||||||
The adapter number on the switch is always 0.
|
The adapter number on the switch is always 0.
|
||||||
@ -187,7 +186,6 @@ async def delete_nio(
|
|||||||
|
|
||||||
nio = await node.remove_nio(port_number)
|
nio = await node.remove_nio(port_number)
|
||||||
await nio.delete()
|
await nio.delete()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -216,14 +214,13 @@ async def stop_capture(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: FrameRelaySwitch = Depends(dep_node)
|
node: FrameRelaySwitch = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The adapter number on the switch is always 0.
|
The adapter number on the switch is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
|
@ -54,14 +54,13 @@ async def get_dynamips_images() -> List[str]:
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/dynamips/images/{filename:path}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/dynamips/images/{filename:path}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def upload_dynamips_image(filename: str, request: Request) -> Response:
|
async def upload_dynamips_image(filename: str, request: Request) -> None:
|
||||||
"""
|
"""
|
||||||
Upload a Dynamips IOS image.
|
Upload a Dynamips IOS image.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
dynamips_manager = Dynamips.instance()
|
dynamips_manager = Dynamips.instance()
|
||||||
await dynamips_manager.write_image(urllib.parse.unquote(filename), request.stream())
|
await dynamips_manager.write_image(urllib.parse.unquote(filename), request.stream())
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/dynamips/images/{filename:path}")
|
@router.get("/dynamips/images/{filename:path}")
|
||||||
@ -96,14 +95,13 @@ async def get_iou_images() -> List[str]:
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/iou/images/{filename:path}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/iou/images/{filename:path}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def upload_iou_image(filename: str, request: Request) -> Response:
|
async def upload_iou_image(filename: str, request: Request) -> None:
|
||||||
"""
|
"""
|
||||||
Upload an IOU image.
|
Upload an IOU image.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
iou_manager = IOU.instance()
|
iou_manager = IOU.instance()
|
||||||
await iou_manager.write_image(urllib.parse.unquote(filename), request.stream())
|
await iou_manager.write_image(urllib.parse.unquote(filename), request.stream())
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/iou/images/{filename:path}")
|
@router.get("/iou/images/{filename:path}")
|
||||||
@ -134,11 +132,10 @@ async def get_qemu_images() -> List[str]:
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/qemu/images/{filename:path}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/qemu/images/{filename:path}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def upload_qemu_image(filename: str, request: Request) -> Response:
|
async def upload_qemu_image(filename: str, request: Request) -> None:
|
||||||
|
|
||||||
qemu_manager = Qemu.instance()
|
qemu_manager = Qemu.instance()
|
||||||
await qemu_manager.write_image(urllib.parse.unquote(filename), request.stream())
|
await qemu_manager.write_image(urllib.parse.unquote(filename), request.stream())
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/qemu/images/{filename:path}")
|
@router.get("/qemu/images/{filename:path}")
|
||||||
|
@ -113,13 +113,12 @@ async def update_iou_node(node_data: schemas.IOUUpdate, node: IOUVM = Depends(de
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_iou_node(node: IOUVM = Depends(dep_node)) -> Response:
|
async def delete_iou_node(node: IOUVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete an IOU node.
|
Delete an IOU node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await IOU.instance().delete_node(node.id)
|
await IOU.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/duplicate", response_model=schemas.IOU, status_code=status.HTTP_201_CREATED)
|
@router.post("/{node_id}/duplicate", response_model=schemas.IOU, status_code=status.HTTP_201_CREATED)
|
||||||
@ -136,7 +135,7 @@ async def duplicate_iou_node(
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_iou_node(start_data: schemas.IOUStart, node: IOUVM = Depends(dep_node)) -> Response:
|
async def start_iou_node(start_data: schemas.IOUStart, node: IOUVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start an IOU node.
|
Start an IOU node.
|
||||||
"""
|
"""
|
||||||
@ -147,37 +146,34 @@ async def start_iou_node(start_data: schemas.IOUStart, node: IOUVM = Depends(dep
|
|||||||
setattr(node, name, value)
|
setattr(node, name, value)
|
||||||
|
|
||||||
await node.start()
|
await node.start()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_iou_node(node: IOUVM = Depends(dep_node)) -> Response:
|
async def stop_iou_node(node: IOUVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop an IOU node.
|
Stop an IOU node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop()
|
await node.stop()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
def suspend_iou_node(node: IOUVM = Depends(dep_node)) -> Response:
|
def suspend_iou_node(node: IOUVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend an IOU node.
|
Suspend an IOU node.
|
||||||
Does nothing since IOU doesn't support being suspended.
|
Does nothing since IOU doesn't support being suspended.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reload_iou_node(node: IOUVM = Depends(dep_node)) -> Response:
|
async def reload_iou_node(node: IOUVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Reload an IOU node.
|
Reload an IOU node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.reload()
|
await node.reload()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -223,13 +219,12 @@ async def update_iou_node_nio(
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_iou_node_nio(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)) -> Response:
|
async def delete_iou_node_nio(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.adapter_remove_nio_binding(adapter_number, port_number)
|
await node.adapter_remove_nio_binding(adapter_number, port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -251,13 +246,12 @@ async def start_iou_node_capture(
|
|||||||
@router.post(
|
@router.post(
|
||||||
"/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop", status_code=status.HTTP_204_NO_CONTENT
|
"/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop", status_code=status.HTTP_204_NO_CONTENT
|
||||||
)
|
)
|
||||||
async def stop_iou_node_capture(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)) -> Response:
|
async def stop_iou_node_capture(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(adapter_number, port_number)
|
await node.stop_capture(adapter_number, port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
@ -285,7 +279,6 @@ async def console_ws(websocket: WebSocket, node: IOUVM = Depends(dep_node)) -> N
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reset_console(node: IOUVM = Depends(dep_node)) -> Response:
|
async def reset_console(node: IOUVM = Depends(dep_node)) -> None:
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -94,43 +94,41 @@ def update_nat_node(node_data: schemas.NATUpdate, node: Nat = Depends(dep_node))
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_nat_node(node: Nat = Depends(dep_node)) -> Response:
|
async def delete_nat_node(node: Nat = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a cloud node.
|
Delete a cloud node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Builtin.instance().delete_node(node.id)
|
await Builtin.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_nat_node(node: Nat = Depends(dep_node)) -> Response:
|
async def start_nat_node(node: Nat = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a NAT node.
|
Start a NAT node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.start()
|
await node.start()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_nat_node(node: Nat = Depends(dep_node)) -> Response:
|
async def stop_nat_node(node: Nat = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a NAT node.
|
Stop a NAT node.
|
||||||
This endpoint results in no action since cloud nodes cannot be stopped.
|
This endpoint results in no action since cloud nodes cannot be stopped.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_nat_node(node: Nat = Depends(dep_node)) -> Response:
|
async def suspend_nat_node(node: Nat = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend a NAT node.
|
Suspend a NAT node.
|
||||||
This endpoint results in no action since NAT nodes cannot be suspended.
|
This endpoint results in no action since NAT nodes cannot be suspended.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -185,14 +183,13 @@ async def delete_nat_node_nio(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: Nat = Depends(dep_node)
|
node: Nat = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Remove a NIO (Network Input/Output) from the node.
|
Remove a NIO (Network Input/Output) from the node.
|
||||||
The adapter number on the cloud is always 0.
|
The adapter number on the cloud is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.remove_nio(port_number)
|
await node.remove_nio(port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -221,14 +218,13 @@ async def stop_nat_node_capture(
|
|||||||
adapter_number: int = Path(..., ge=0, le=0),
|
adapter_number: int = Path(..., ge=0, le=0),
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: Nat = Depends(dep_node)
|
node: Nat = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The adapter number on the cloud is always 0.
|
The adapter number on the cloud is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
|
@ -103,7 +103,7 @@ def get_compute_project(project: Project = Depends(dep_project)) -> schemas.Proj
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/projects/{project_id}/close", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/projects/{project_id}/close", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def close_compute_project(project: Project = Depends(dep_project)) -> Response:
|
async def close_compute_project(project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Close a project on the compute.
|
Close a project on the compute.
|
||||||
"""
|
"""
|
||||||
@ -118,18 +118,16 @@ async def close_compute_project(project: Project = Depends(dep_project)) -> Resp
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
log.warning("Skip project closing, another client is listening for project notifications")
|
log.warning("Skip project closing, another client is listening for project notifications")
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/projects/{project_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/projects/{project_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_compute_project(project: Project = Depends(dep_project)) -> Response:
|
async def delete_compute_project(project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete project from the compute.
|
Delete project from the compute.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.delete()
|
await project.delete()
|
||||||
ProjectManager.instance().remove_project(project.id)
|
ProjectManager.instance().remove_project(project.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
# @Route.get(
|
# @Route.get(
|
||||||
# r"/projects/{project_id}/notifications",
|
# r"/projects/{project_id}/notifications",
|
||||||
@ -219,7 +217,7 @@ async def write_compute_project_file(
|
|||||||
file_path: str,
|
file_path: str,
|
||||||
request: Request,
|
request: Request,
|
||||||
project: Project = Depends(dep_project)
|
project: Project = Depends(dep_project)
|
||||||
) -> Response:
|
) -> None:
|
||||||
|
|
||||||
file_path = urllib.parse.unquote(file_path)
|
file_path = urllib.parse.unquote(file_path)
|
||||||
path = os.path.normpath(file_path)
|
path = os.path.normpath(file_path)
|
||||||
@ -243,5 +241,3 @@ async def write_compute_project_file(
|
|||||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND)
|
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND)
|
||||||
except PermissionError:
|
except PermissionError:
|
||||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN)
|
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN)
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
@ -104,13 +104,12 @@ async def update_qemu_node(node_data: schemas.QemuUpdate, node: QemuVM = Depends
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_qemu_node(node: QemuVM = Depends(dep_node)) -> Response:
|
async def delete_qemu_node(node: QemuVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a Qemu node.
|
Delete a Qemu node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Qemu.instance().delete_node(node.id)
|
await Qemu.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/duplicate", response_model=schemas.Qemu, status_code=status.HTTP_201_CREATED)
|
@router.post("/{node_id}/duplicate", response_model=schemas.Qemu, status_code=status.HTTP_201_CREATED)
|
||||||
@ -134,14 +133,13 @@ async def create_qemu_disk_image(
|
|||||||
disk_name: str,
|
disk_name: str,
|
||||||
disk_data: schemas.QemuDiskImageCreate,
|
disk_data: schemas.QemuDiskImageCreate,
|
||||||
node: QemuVM = Depends(dep_node)
|
node: QemuVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Create a Qemu disk image.
|
Create a Qemu disk image.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
options = jsonable_encoder(disk_data, exclude_unset=True)
|
options = jsonable_encoder(disk_data, exclude_unset=True)
|
||||||
await node.create_disk_image(disk_name, options)
|
await node.create_disk_image(disk_name, options)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.put(
|
@router.put(
|
||||||
@ -152,14 +150,13 @@ async def update_qemu_disk_image(
|
|||||||
disk_name: str,
|
disk_name: str,
|
||||||
disk_data: schemas.QemuDiskImageUpdate,
|
disk_data: schemas.QemuDiskImageUpdate,
|
||||||
node: QemuVM = Depends(dep_node)
|
node: QemuVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Update a Qemu disk image.
|
Update a Qemu disk image.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if disk_data.extend:
|
if disk_data.extend:
|
||||||
await node.resize_disk_image(disk_name, disk_data.extend)
|
await node.resize_disk_image(disk_name, disk_data.extend)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete(
|
@router.delete(
|
||||||
@ -169,63 +166,57 @@ async def update_qemu_disk_image(
|
|||||||
async def delete_qemu_disk_image(
|
async def delete_qemu_disk_image(
|
||||||
disk_name: str,
|
disk_name: str,
|
||||||
node: QemuVM = Depends(dep_node)
|
node: QemuVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a Qemu disk image.
|
Delete a Qemu disk image.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
node.delete_disk_image(disk_name)
|
node.delete_disk_image(disk_name)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_qemu_node(node: QemuVM = Depends(dep_node)) -> Response:
|
async def start_qemu_node(node: QemuVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a Qemu node.
|
Start a Qemu node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.start()
|
await node.start()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_qemu_node(node: QemuVM = Depends(dep_node)) -> Response:
|
async def stop_qemu_node(node: QemuVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a Qemu node.
|
Stop a Qemu node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop()
|
await node.stop()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reload_qemu_node(node: QemuVM = Depends(dep_node)) -> Response:
|
async def reload_qemu_node(node: QemuVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Reload a Qemu node.
|
Reload a Qemu node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.reload()
|
await node.reload()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_qemu_node(node: QemuVM = Depends(dep_node)) -> Response:
|
async def suspend_qemu_node(node: QemuVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend a Qemu node.
|
Suspend a Qemu node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.suspend()
|
await node.suspend()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resume", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/resume", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def resume_qemu_node(node: QemuVM = Depends(dep_node)) -> Response:
|
async def resume_qemu_node(node: QemuVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Resume a Qemu node.
|
Resume a Qemu node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.resume()
|
await node.resume()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -281,14 +272,13 @@ async def delete_qemu_node_nio(
|
|||||||
adapter_number: int,
|
adapter_number: int,
|
||||||
port_number: int = Path(..., ge=0, le=0),
|
port_number: int = Path(..., ge=0, le=0),
|
||||||
node: QemuVM = Depends(dep_node)
|
node: QemuVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
The port number on the Qemu node is always 0.
|
The port number on the Qemu node is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.adapter_remove_nio_binding(adapter_number)
|
await node.adapter_remove_nio_binding(adapter_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -316,14 +306,13 @@ async def stop_qemu_node_capture(
|
|||||||
adapter_number: int,
|
adapter_number: int,
|
||||||
port_number: int = Path(..., ge=0, le=0),
|
port_number: int = Path(..., ge=0, le=0),
|
||||||
node: QemuVM = Depends(dep_node)
|
node: QemuVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The port number on the Qemu node is always 0.
|
The port number on the Qemu node is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(adapter_number)
|
await node.stop_capture(adapter_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
@ -351,7 +340,6 @@ async def console_ws(websocket: WebSocket, node: QemuVM = Depends(dep_node)) ->
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reset_console(node: QemuVM = Depends(dep_node)) -> Response:
|
async def reset_console(node: QemuVM = Depends(dep_node)) -> None:
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -137,63 +137,57 @@ async def update_virtualbox_node(
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> Response:
|
async def delete_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a VirtualBox node.
|
Delete a VirtualBox node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await VirtualBox.instance().delete_node(node.id)
|
await VirtualBox.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> Response:
|
async def start_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a VirtualBox node.
|
Start a VirtualBox node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.start()
|
await node.start()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> Response:
|
async def stop_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a VirtualBox node.
|
Stop a VirtualBox node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop()
|
await node.stop()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> Response:
|
async def suspend_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend a VirtualBox node.
|
Suspend a VirtualBox node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.suspend()
|
await node.suspend()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resume", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/resume", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def resume_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> Response:
|
async def resume_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Resume a VirtualBox node.
|
Resume a VirtualBox node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.resume()
|
await node.resume()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reload_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> Response:
|
async def reload_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Reload a VirtualBox node.
|
Reload a VirtualBox node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.reload()
|
await node.reload()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -249,14 +243,13 @@ async def delete_virtualbox_node_nio(
|
|||||||
adapter_number: int,
|
adapter_number: int,
|
||||||
port_number: int = Path(..., ge=0, le=0),
|
port_number: int = Path(..., ge=0, le=0),
|
||||||
node: VirtualBoxVM = Depends(dep_node)
|
node: VirtualBoxVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
The port number on the VirtualBox node is always 0.
|
The port number on the VirtualBox node is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.adapter_remove_nio_binding(adapter_number)
|
await node.adapter_remove_nio_binding(adapter_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -284,14 +277,13 @@ async def stop_virtualbox_node_capture(
|
|||||||
adapter_number: int,
|
adapter_number: int,
|
||||||
port_number: int = Path(..., ge=0, le=0),
|
port_number: int = Path(..., ge=0, le=0),
|
||||||
node: VirtualBoxVM = Depends(dep_node)
|
node: VirtualBoxVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The port number on the VirtualBox node is always 0.
|
The port number on the VirtualBox node is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(adapter_number)
|
await node.stop_capture(adapter_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
@ -320,7 +312,7 @@ async def console_ws(websocket: WebSocket, node: VirtualBoxVM = Depends(dep_node
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reset_console(node: VirtualBoxVM = Depends(dep_node)) -> Response:
|
async def reset_console(node: VirtualBoxVM = Depends(dep_node)) -> None:
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -103,63 +103,57 @@ def update_vmware_node(node_data: schemas.VMwareUpdate, node: VMwareVM = Depends
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_vmware_node(node: VMwareVM = Depends(dep_node)) -> Response:
|
async def delete_vmware_node(node: VMwareVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a VMware node.
|
Delete a VMware node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await VMware.instance().delete_node(node.id)
|
await VMware.instance().delete_node(node.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_vmware_node(node: VMwareVM = Depends(dep_node)) -> Response:
|
async def start_vmware_node(node: VMwareVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a VMware node.
|
Start a VMware node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.start()
|
await node.start()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_vmware_node(node: VMwareVM = Depends(dep_node)) -> Response:
|
async def stop_vmware_node(node: VMwareVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a VMware node.
|
Stop a VMware node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop()
|
await node.stop()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_vmware_node(node: VMwareVM = Depends(dep_node)) -> Response:
|
async def suspend_vmware_node(node: VMwareVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend a VMware node.
|
Suspend a VMware node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.suspend()
|
await node.suspend()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resume", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/resume", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def resume_vmware_node(node: VMwareVM = Depends(dep_node)) -> Response:
|
async def resume_vmware_node(node: VMwareVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Resume a VMware node.
|
Resume a VMware node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.resume()
|
await node.resume()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reload_vmware_node(node: VMwareVM = Depends(dep_node)) -> Response:
|
async def reload_vmware_node(node: VMwareVM = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Reload a VMware node.
|
Reload a VMware node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.reload()
|
await node.reload()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -213,14 +207,13 @@ async def delete_vmware_node_nio(
|
|||||||
adapter_number: int,
|
adapter_number: int,
|
||||||
port_number: int = Path(..., ge=0, le=0),
|
port_number: int = Path(..., ge=0, le=0),
|
||||||
node: VMwareVM = Depends(dep_node)
|
node: VMwareVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
The port number on the VMware node is always 0.
|
The port number on the VMware node is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.adapter_remove_nio_binding(adapter_number)
|
await node.adapter_remove_nio_binding(adapter_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
@ -248,14 +241,13 @@ async def stop_vmware_node_capture(
|
|||||||
adapter_number: int,
|
adapter_number: int,
|
||||||
port_number: int = Path(..., ge=0, le=0),
|
port_number: int = Path(..., ge=0, le=0),
|
||||||
node: VMwareVM = Depends(dep_node)
|
node: VMwareVM = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
The port number on the VMware node is always 0.
|
The port number on the VMware node is always 0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop_capture(adapter_number)
|
await node.stop_capture(adapter_number)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
@ -297,7 +289,7 @@ async def console_ws(websocket: WebSocket, node: VMwareVM = Depends(dep_node)) -
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reset_console(node: VMwareVM = Depends(dep_node)) -> Response:
|
async def reset_console(node: VMwareVM = Depends(dep_node)) -> None:
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -106,7 +106,7 @@ async def install_appliance(
|
|||||||
templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)),
|
templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)),
|
||||||
current_user: schemas.User = Depends(get_current_active_user),
|
current_user: schemas.User = Depends(get_current_active_user),
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Install an appliance.
|
Install an appliance.
|
||||||
"""
|
"""
|
||||||
@ -120,4 +120,3 @@ async def install_appliance(
|
|||||||
rbac_repo,
|
rbac_repo,
|
||||||
current_user
|
current_user
|
||||||
)
|
)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -57,7 +57,7 @@ async def create_compute(
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{compute_id}/connect", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{compute_id}/connect", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def connect_compute(compute_id: Union[str, UUID]) -> Response:
|
async def connect_compute(compute_id: Union[str, UUID]) -> None:
|
||||||
"""
|
"""
|
||||||
Connect to compute on the controller.
|
Connect to compute on the controller.
|
||||||
"""
|
"""
|
||||||
@ -65,7 +65,6 @@ async def connect_compute(compute_id: Union[str, UUID]) -> Response:
|
|||||||
compute = Controller.instance().get_compute(str(compute_id))
|
compute = Controller.instance().get_compute(str(compute_id))
|
||||||
if not compute.connected:
|
if not compute.connected:
|
||||||
await compute.connect(report_failed_connection=True)
|
await compute.connect(report_failed_connection=True)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{compute_id}", response_model=schemas.Compute, response_model_exclude_unset=True)
|
@router.get("/{compute_id}", response_model=schemas.Compute, response_model_exclude_unset=True)
|
||||||
@ -106,13 +105,12 @@ async def update_compute(
|
|||||||
@router.delete("/{compute_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{compute_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_compute(
|
async def delete_compute(
|
||||||
compute_id: Union[str, UUID], computes_repo: ComputesRepository = Depends(get_repository(ComputesRepository))
|
compute_id: Union[str, UUID], computes_repo: ComputesRepository = Depends(get_repository(ComputesRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a compute from the controller.
|
Delete a compute from the controller.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await ComputesService(computes_repo).delete_compute(compute_id)
|
await ComputesService(computes_repo).delete_compute(compute_id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{compute_id}/docker/images", response_model=List[schemas.ComputeDockerImage])
|
@router.get("/{compute_id}/docker/images", response_model=List[schemas.ComputeDockerImage])
|
||||||
|
@ -83,13 +83,12 @@ def check_version(version: schemas.Version) -> dict:
|
|||||||
dependencies=[Depends(get_current_active_user)],
|
dependencies=[Depends(get_current_active_user)],
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT,
|
||||||
)
|
)
|
||||||
async def reload() -> Response:
|
async def reload() -> None:
|
||||||
"""
|
"""
|
||||||
Reload the controller
|
Reload the controller
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await Controller.instance().reload()
|
await Controller.instance().reload()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -98,7 +97,7 @@ async def reload() -> Response:
|
|||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT,
|
||||||
responses={403: {"model": schemas.ErrorMessage, "description": "Server shutdown not allowed"}},
|
responses={403: {"model": schemas.ErrorMessage, "description": "Server shutdown not allowed"}},
|
||||||
)
|
)
|
||||||
async def shutdown() -> Response:
|
async def shutdown() -> None:
|
||||||
"""
|
"""
|
||||||
Shutdown the server
|
Shutdown the server
|
||||||
"""
|
"""
|
||||||
@ -126,7 +125,6 @@ async def shutdown() -> Response:
|
|||||||
|
|
||||||
# then shutdown the server itself
|
# then shutdown the server itself
|
||||||
os.kill(os.getpid(), signal.SIGTERM)
|
os.kill(os.getpid(), signal.SIGTERM)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
@router.get(
|
||||||
|
@ -76,11 +76,10 @@ async def update_drawing(project_id: UUID, drawing_id: UUID, drawing_data: schem
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{drawing_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{drawing_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_drawing(project_id: UUID, drawing_id: UUID) -> Response:
|
async def delete_drawing(project_id: UUID, drawing_id: UUID) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a drawing.
|
Delete a drawing.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
project = await Controller.instance().get_loaded_project(str(project_id))
|
project = await Controller.instance().get_loaded_project(str(project_id))
|
||||||
await project.delete_drawing(str(drawing_id))
|
await project.delete_drawing(str(drawing_id))
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -113,7 +113,7 @@ async def update_user_group(
|
|||||||
async def delete_user_group(
|
async def delete_user_group(
|
||||||
user_group_id: UUID,
|
user_group_id: UUID,
|
||||||
users_repo: UsersRepository = Depends(get_repository(UsersRepository)),
|
users_repo: UsersRepository = Depends(get_repository(UsersRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete an user group
|
Delete an user group
|
||||||
"""
|
"""
|
||||||
@ -129,8 +129,6 @@ async def delete_user_group(
|
|||||||
if not success:
|
if not success:
|
||||||
raise ControllerError(f"User group '{user_group_id}' could not be deleted")
|
raise ControllerError(f"User group '{user_group_id}' could not be deleted")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{user_group_id}/members", response_model=List[schemas.User])
|
@router.get("/{user_group_id}/members", response_model=List[schemas.User])
|
||||||
async def get_user_group_members(
|
async def get_user_group_members(
|
||||||
@ -152,7 +150,7 @@ async def add_member_to_group(
|
|||||||
user_group_id: UUID,
|
user_group_id: UUID,
|
||||||
user_id: UUID,
|
user_id: UUID,
|
||||||
users_repo: UsersRepository = Depends(get_repository(UsersRepository))
|
users_repo: UsersRepository = Depends(get_repository(UsersRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Add member to an user group.
|
Add member to an user group.
|
||||||
"""
|
"""
|
||||||
@ -165,8 +163,6 @@ async def add_member_to_group(
|
|||||||
if not user_group:
|
if not user_group:
|
||||||
raise ControllerNotFoundError(f"User group '{user_group_id}' not found")
|
raise ControllerNotFoundError(f"User group '{user_group_id}' not found")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete(
|
@router.delete(
|
||||||
"/{user_group_id}/members/{user_id}",
|
"/{user_group_id}/members/{user_id}",
|
||||||
@ -176,7 +172,7 @@ async def remove_member_from_group(
|
|||||||
user_group_id: UUID,
|
user_group_id: UUID,
|
||||||
user_id: UUID,
|
user_id: UUID,
|
||||||
users_repo: UsersRepository = Depends(get_repository(UsersRepository)),
|
users_repo: UsersRepository = Depends(get_repository(UsersRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Remove member from an user group.
|
Remove member from an user group.
|
||||||
"""
|
"""
|
||||||
@ -189,8 +185,6 @@ async def remove_member_from_group(
|
|||||||
if not user_group:
|
if not user_group:
|
||||||
raise ControllerNotFoundError(f"User group '{user_group_id}' not found")
|
raise ControllerNotFoundError(f"User group '{user_group_id}' not found")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{user_group_id}/roles", response_model=List[schemas.Role])
|
@router.get("/{user_group_id}/roles", response_model=List[schemas.Role])
|
||||||
async def get_user_group_roles(
|
async def get_user_group_roles(
|
||||||
@ -226,8 +220,6 @@ async def add_role_to_group(
|
|||||||
if not user_group:
|
if not user_group:
|
||||||
raise ControllerNotFoundError(f"User group '{user_group_id}' not found")
|
raise ControllerNotFoundError(f"User group '{user_group_id}' not found")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete(
|
@router.delete(
|
||||||
"/{user_group_id}/roles/{role_id}",
|
"/{user_group_id}/roles/{role_id}",
|
||||||
@ -238,7 +230,7 @@ async def remove_role_from_group(
|
|||||||
role_id: UUID,
|
role_id: UUID,
|
||||||
users_repo: UsersRepository = Depends(get_repository(UsersRepository)),
|
users_repo: UsersRepository = Depends(get_repository(UsersRepository)),
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Remove role from an user group.
|
Remove role from an user group.
|
||||||
"""
|
"""
|
||||||
@ -250,5 +242,3 @@ async def remove_role_from_group(
|
|||||||
user_group = await users_repo.remove_role_from_user_group(user_group_id, role)
|
user_group = await users_repo.remove_role_from_user_group(user_group_id, role)
|
||||||
if not user_group:
|
if not user_group:
|
||||||
raise ControllerNotFoundError(f"User group '{user_group_id}' not found")
|
raise ControllerNotFoundError(f"User group '{user_group_id}' not found")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -129,7 +129,7 @@ async def get_image(
|
|||||||
async def delete_image(
|
async def delete_image(
|
||||||
image_path: str,
|
image_path: str,
|
||||||
images_repo: ImagesRepository = Depends(get_repository(ImagesRepository)),
|
images_repo: ImagesRepository = Depends(get_repository(ImagesRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete an image.
|
Delete an image.
|
||||||
"""
|
"""
|
||||||
@ -159,16 +159,13 @@ async def delete_image(
|
|||||||
if not success:
|
if not success:
|
||||||
raise ControllerError(f"Image '{image_path}' could not be deleted")
|
raise ControllerError(f"Image '{image_path}' could not be deleted")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/prune", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/prune", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def prune_images(
|
async def prune_images(
|
||||||
images_repo: ImagesRepository = Depends(get_repository(ImagesRepository)),
|
images_repo: ImagesRepository = Depends(get_repository(ImagesRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Prune images not attached to any template.
|
Prune images not attached to any template.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await images_repo.prune_images()
|
await images_repo.prune_images()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -136,14 +136,13 @@ async def update_link(link_data: schemas.LinkUpdate, link: Link = Depends(dep_li
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{link_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{link_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_link(project_id: UUID, link: Link = Depends(dep_link)) -> Response:
|
async def delete_link(project_id: UUID, link: Link = Depends(dep_link)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a link.
|
Delete a link.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
project = await Controller.instance().get_loaded_project(str(project_id))
|
project = await Controller.instance().get_loaded_project(str(project_id))
|
||||||
await project.delete_link(link.id)
|
await project.delete_link(link.id)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{link_id}/reset", response_model=schemas.Link)
|
@router.post("/{link_id}/reset", response_model=schemas.Link)
|
||||||
@ -170,13 +169,12 @@ async def start_capture(capture_data: dict, link: Link = Depends(dep_link)) -> s
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{link_id}/capture/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{link_id}/capture/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_capture(link: Link = Depends(dep_link)) -> Response:
|
async def stop_capture(link: Link = Depends(dep_link)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop packet capture on the link.
|
Stop packet capture on the link.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await link.stop_capture()
|
await link.stop_capture()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{link_id}/capture/stream")
|
@router.get("/{link_id}/capture/stream")
|
||||||
|
@ -130,44 +130,40 @@ async def get_nodes(project: Project = Depends(dep_project)) -> List[schemas.Nod
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_all_nodes(project: Project = Depends(dep_project)) -> Response:
|
async def start_all_nodes(project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Start all nodes belonging to a given project.
|
Start all nodes belonging to a given project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.start_all()
|
await project.start_all()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_all_nodes(project: Project = Depends(dep_project)) -> Response:
|
async def stop_all_nodes(project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop all nodes belonging to a given project.
|
Stop all nodes belonging to a given project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.stop_all()
|
await project.stop_all()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_all_nodes(project: Project = Depends(dep_project)) -> Response:
|
async def suspend_all_nodes(project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend all nodes belonging to a given project.
|
Suspend all nodes belonging to a given project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.suspend_all()
|
await project.suspend_all()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/reload", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/reload", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reload_all_nodes(project: Project = Depends(dep_project)) -> Response:
|
async def reload_all_nodes(project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Reload all nodes belonging to a given project.
|
Reload all nodes belonging to a given project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.stop_all()
|
await project.stop_all()
|
||||||
await project.start_all()
|
await project.start_all()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}", response_model=schemas.Node)
|
@router.get("/{node_id}", response_model=schemas.Node)
|
||||||
@ -201,13 +197,12 @@ async def update_node(node_data: schemas.NodeUpdate, node: Node = Depends(dep_no
|
|||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT,
|
||||||
responses={**responses, 409: {"model": schemas.ErrorMessage, "description": "Cannot delete node"}},
|
responses={**responses, 409: {"model": schemas.ErrorMessage, "description": "Cannot delete node"}},
|
||||||
)
|
)
|
||||||
async def delete_node(node_id: UUID, project: Project = Depends(dep_project)) -> Response:
|
async def delete_node(node_id: UUID, project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a node from a project.
|
Delete a node from a project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.delete_node(str(node_id))
|
await project.delete_node(str(node_id))
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/duplicate", response_model=schemas.Node, status_code=status.HTTP_201_CREATED)
|
@router.post("/{node_id}/duplicate", response_model=schemas.Node, status_code=status.HTTP_201_CREATED)
|
||||||
@ -221,65 +216,59 @@ async def duplicate_node(duplicate_data: schemas.NodeDuplicate, node: Node = Dep
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/start", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def start_node(start_data: dict, node: Node = Depends(dep_node)) -> Response:
|
async def start_node(start_data: dict, node: Node = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Start a node.
|
Start a node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.start(data=start_data)
|
await node.start(data=start_data)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/stop", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def stop_node(node: Node = Depends(dep_node)) -> Response:
|
async def stop_node(node: Node = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Stop a node.
|
Stop a node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.stop()
|
await node.stop()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/suspend", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def suspend_node(node: Node = Depends(dep_node)) -> Response:
|
async def suspend_node(node: Node = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Suspend a node.
|
Suspend a node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.suspend()
|
await node.suspend()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/reload", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reload_node(node: Node = Depends(dep_node)) -> Response:
|
async def reload_node(node: Node = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Reload a node.
|
Reload a node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await node.reload()
|
await node.reload()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/isolate", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/isolate", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def isolate_node(node: Node = Depends(dep_node)) -> Response:
|
async def isolate_node(node: Node = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Isolate a node (suspend all attached links).
|
Isolate a node (suspend all attached links).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for link in node.links:
|
for link in node.links:
|
||||||
await link.update_suspend(True)
|
await link.update_suspend(True)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/unisolate", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/unisolate", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def unisolate_node(node: Node = Depends(dep_node)) -> Response:
|
async def unisolate_node(node: Node = Depends(dep_node)) -> None:
|
||||||
"""
|
"""
|
||||||
Un-isolate a node (resume all attached suspended links).
|
Un-isolate a node (resume all attached suspended links).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for link in node.links:
|
for link in node.links:
|
||||||
await link.update_suspend(False)
|
await link.update_suspend(False)
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/links", response_model=List[schemas.Link], response_model_exclude_unset=True)
|
@router.get("/{node_id}/links", response_model=List[schemas.Link], response_model_exclude_unset=True)
|
||||||
@ -321,7 +310,7 @@ async def create_disk_image(
|
|||||||
disk_name: str,
|
disk_name: str,
|
||||||
disk_data: schemas.QemuDiskImageCreate,
|
disk_data: schemas.QemuDiskImageCreate,
|
||||||
node: Node = Depends(dep_node)
|
node: Node = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Create a Qemu disk image.
|
Create a Qemu disk image.
|
||||||
"""
|
"""
|
||||||
@ -329,7 +318,6 @@ async def create_disk_image(
|
|||||||
if node.node_type != "qemu":
|
if node.node_type != "qemu":
|
||||||
raise ControllerBadRequestError("Creating a disk image is only supported on a Qemu node")
|
raise ControllerBadRequestError("Creating a disk image is only supported on a Qemu node")
|
||||||
await node.post(f"/disk_image/{disk_name}", data=disk_data.dict(exclude_unset=True))
|
await node.post(f"/disk_image/{disk_name}", data=disk_data.dict(exclude_unset=True))
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}/qemu/disk_image/{disk_name}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.put("/{node_id}/qemu/disk_image/{disk_name}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
@ -337,7 +325,7 @@ async def update_disk_image(
|
|||||||
disk_name: str,
|
disk_name: str,
|
||||||
disk_data: schemas.QemuDiskImageUpdate,
|
disk_data: schemas.QemuDiskImageUpdate,
|
||||||
node: Node = Depends(dep_node)
|
node: Node = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Update a Qemu disk image.
|
Update a Qemu disk image.
|
||||||
"""
|
"""
|
||||||
@ -345,14 +333,13 @@ async def update_disk_image(
|
|||||||
if node.node_type != "qemu":
|
if node.node_type != "qemu":
|
||||||
raise ControllerBadRequestError("Updating a disk image is only supported on a Qemu node")
|
raise ControllerBadRequestError("Updating a disk image is only supported on a Qemu node")
|
||||||
await node.put(f"/disk_image/{disk_name}", data=disk_data.dict(exclude_unset=True))
|
await node.put(f"/disk_image/{disk_name}", data=disk_data.dict(exclude_unset=True))
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/qemu/disk_image/{disk_name}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{node_id}/qemu/disk_image/{disk_name}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_disk_image(
|
async def delete_disk_image(
|
||||||
disk_name: str,
|
disk_name: str,
|
||||||
node: Node = Depends(dep_node)
|
node: Node = Depends(dep_node)
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a Qemu disk image.
|
Delete a Qemu disk image.
|
||||||
"""
|
"""
|
||||||
@ -360,7 +347,6 @@ async def delete_disk_image(
|
|||||||
if node.node_type != "qemu":
|
if node.node_type != "qemu":
|
||||||
raise ControllerBadRequestError("Deleting a disk image is only supported on a Qemu node")
|
raise ControllerBadRequestError("Deleting a disk image is only supported on a Qemu node")
|
||||||
await node.delete(f"/disk_image/{disk_name}")
|
await node.delete(f"/disk_image/{disk_name}")
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/files/{file_path:path}")
|
@router.get("/{node_id}/files/{file_path:path}")
|
||||||
@ -451,17 +437,15 @@ async def ws_console(websocket: WebSocket, node: Node = Depends(dep_node)) -> No
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def reset_console_all_nodes(project: Project = Depends(dep_project)) -> Response:
|
async def reset_console_all_nodes(project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Reset console for all nodes belonging to the project.
|
Reset console for all nodes belonging to the project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.reset_console_all()
|
await project.reset_console_all()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{node_id}/console/reset", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def console_reset(node: Node = Depends(dep_node)) -> Response:
|
async def console_reset(node: Node = Depends(dep_node)) -> None:
|
||||||
|
|
||||||
await node.post("/console/reset")
|
await node.post("/console/reset")
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -136,7 +136,7 @@ async def update_permission(
|
|||||||
async def delete_permission(
|
async def delete_permission(
|
||||||
permission_id: UUID,
|
permission_id: UUID,
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a permission.
|
Delete a permission.
|
||||||
"""
|
"""
|
||||||
@ -149,16 +149,13 @@ async def delete_permission(
|
|||||||
if not success:
|
if not success:
|
||||||
raise ControllerNotFoundError(f"Permission '{permission_id}' could not be deleted")
|
raise ControllerNotFoundError(f"Permission '{permission_id}' could not be deleted")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/prune", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/prune", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def prune_permissions(
|
async def prune_permissions(
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Prune orphaned permissions.
|
Prune orphaned permissions.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await rbac_repo.prune_permissions()
|
await rbac_repo.prune_permissions()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -141,7 +141,7 @@ async def update_project(
|
|||||||
async def delete_project(
|
async def delete_project(
|
||||||
project: Project = Depends(dep_project),
|
project: Project = Depends(dep_project),
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a project.
|
Delete a project.
|
||||||
"""
|
"""
|
||||||
@ -150,7 +150,6 @@ async def delete_project(
|
|||||||
await project.delete()
|
await project.delete()
|
||||||
controller.remove_project(project)
|
controller.remove_project(project)
|
||||||
await rbac_repo.delete_all_permissions_with_path(f"/projects/{project.id}")
|
await rbac_repo.delete_all_permissions_with_path(f"/projects/{project.id}")
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{project_id}/stats")
|
@router.get("/{project_id}/stats")
|
||||||
@ -167,13 +166,12 @@ def get_project_stats(project: Project = Depends(dep_project)) -> dict:
|
|||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT,
|
||||||
responses={**responses, 409: {"model": schemas.ErrorMessage, "description": "Could not close project"}},
|
responses={**responses, 409: {"model": schemas.ErrorMessage, "description": "Could not close project"}},
|
||||||
)
|
)
|
||||||
async def close_project(project: Project = Depends(dep_project)) -> Response:
|
async def close_project(project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Close a project.
|
Close a project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.close()
|
await project.close()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
@ -420,7 +418,7 @@ async def get_file(file_path: str, project: Project = Depends(dep_project)) -> F
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{project_id}/files/{file_path:path}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.post("/{project_id}/files/{file_path:path}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def write_file(file_path: str, request: Request, project: Project = Depends(dep_project)) -> Response:
|
async def write_file(file_path: str, request: Request, project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Write a file to a project.
|
Write a file to a project.
|
||||||
"""
|
"""
|
||||||
@ -445,8 +443,6 @@ async def write_file(file_path: str, request: Request, project: Project = Depend
|
|||||||
except OSError as e:
|
except OSError as e:
|
||||||
raise ControllerError(str(e))
|
raise ControllerError(str(e))
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
"/{project_id}/templates/{template_id}",
|
"/{project_id}/templates/{template_id}",
|
||||||
|
@ -106,7 +106,7 @@ async def update_role(
|
|||||||
async def delete_role(
|
async def delete_role(
|
||||||
role_id: UUID,
|
role_id: UUID,
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a role.
|
Delete a role.
|
||||||
"""
|
"""
|
||||||
@ -122,8 +122,6 @@ async def delete_role(
|
|||||||
if not success:
|
if not success:
|
||||||
raise ControllerError(f"Role '{role_id}' could not be deleted")
|
raise ControllerError(f"Role '{role_id}' could not be deleted")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{role_id}/permissions", response_model=List[schemas.Permission])
|
@router.get("/{role_id}/permissions", response_model=List[schemas.Permission])
|
||||||
async def get_role_permissions(
|
async def get_role_permissions(
|
||||||
@ -145,7 +143,7 @@ async def add_permission_to_role(
|
|||||||
role_id: UUID,
|
role_id: UUID,
|
||||||
permission_id: UUID,
|
permission_id: UUID,
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Add a permission to a role.
|
Add a permission to a role.
|
||||||
"""
|
"""
|
||||||
@ -158,8 +156,6 @@ async def add_permission_to_role(
|
|||||||
if not role:
|
if not role:
|
||||||
raise ControllerNotFoundError(f"Role '{role_id}' not found")
|
raise ControllerNotFoundError(f"Role '{role_id}' not found")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete(
|
@router.delete(
|
||||||
"/{role_id}/permissions/{permission_id}",
|
"/{role_id}/permissions/{permission_id}",
|
||||||
@ -169,7 +165,7 @@ async def remove_permission_from_role(
|
|||||||
role_id: UUID,
|
role_id: UUID,
|
||||||
permission_id: UUID,
|
permission_id: UUID,
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Remove member from an user group.
|
Remove member from an user group.
|
||||||
"""
|
"""
|
||||||
@ -181,5 +177,3 @@ async def remove_permission_from_role(
|
|||||||
role = await rbac_repo.remove_permission_from_role(role_id, permission)
|
role = await rbac_repo.remove_permission_from_role(role_id, permission)
|
||||||
if not role:
|
if not role:
|
||||||
raise ControllerNotFoundError(f"Role '{role_id}' not found")
|
raise ControllerNotFoundError(f"Role '{role_id}' not found")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
@ -69,13 +69,12 @@ def get_snapshots(project: Project = Depends(dep_project)) -> List[schemas.Snaps
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{snapshot_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{snapshot_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
async def delete_snapshot(snapshot_id: UUID, project: Project = Depends(dep_project)) -> Response:
|
async def delete_snapshot(snapshot_id: UUID, project: Project = Depends(dep_project)) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a snapshot.
|
Delete a snapshot.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
await project.delete_snapshot(str(snapshot_id))
|
await project.delete_snapshot(str(snapshot_id))
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{snapshot_id}/restore", status_code=status.HTTP_201_CREATED, response_model=schemas.Project)
|
@router.post("/{snapshot_id}/restore", status_code=status.HTTP_201_CREATED, response_model=schemas.Project)
|
||||||
|
@ -95,7 +95,7 @@ def get_default_symbols() -> dict:
|
|||||||
dependencies=[Depends(get_current_active_user)],
|
dependencies=[Depends(get_current_active_user)],
|
||||||
status_code=status.HTTP_204_NO_CONTENT
|
status_code=status.HTTP_204_NO_CONTENT
|
||||||
)
|
)
|
||||||
async def upload_symbol(symbol_id: str, request: Request) -> Response:
|
async def upload_symbol(symbol_id: str, request: Request) -> None:
|
||||||
"""
|
"""
|
||||||
Upload a symbol file.
|
Upload a symbol file.
|
||||||
"""
|
"""
|
||||||
@ -112,4 +112,3 @@ async def upload_symbol(symbol_id: str, request: Request) -> Response:
|
|||||||
# Reset the symbol list
|
# Reset the symbol list
|
||||||
controller.symbols.list()
|
controller.symbols.list()
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
@ -102,7 +102,7 @@ async def delete_template(
|
|||||||
templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)),
|
templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)),
|
||||||
images_repo: RbacRepository = Depends(get_repository(ImagesRepository)),
|
images_repo: RbacRepository = Depends(get_repository(ImagesRepository)),
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete a template.
|
Delete a template.
|
||||||
"""
|
"""
|
||||||
@ -111,7 +111,6 @@ async def delete_template(
|
|||||||
await rbac_repo.delete_all_permissions_with_path(f"/templates/{template_id}")
|
await rbac_repo.delete_all_permissions_with_path(f"/templates/{template_id}")
|
||||||
if prune_images:
|
if prune_images:
|
||||||
await images_repo.prune_images()
|
await images_repo.prune_images()
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("", response_model=List[schemas.Template], response_model_exclude_unset=True)
|
@router.get("", response_model=List[schemas.Template], response_model_exclude_unset=True)
|
||||||
|
@ -194,7 +194,7 @@ async def update_user(
|
|||||||
async def delete_user(
|
async def delete_user(
|
||||||
user_id: UUID,
|
user_id: UUID,
|
||||||
users_repo: UsersRepository = Depends(get_repository(UsersRepository)),
|
users_repo: UsersRepository = Depends(get_repository(UsersRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Delete an user.
|
Delete an user.
|
||||||
"""
|
"""
|
||||||
@ -210,8 +210,6 @@ async def delete_user(
|
|||||||
if not success:
|
if not success:
|
||||||
raise ControllerError(f"User '{user_id}' could not be deleted")
|
raise ControllerError(f"User '{user_id}' could not be deleted")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
@router.get(
|
||||||
"/{user_id}/groups",
|
"/{user_id}/groups",
|
||||||
@ -254,7 +252,7 @@ async def add_permission_to_user(
|
|||||||
user_id: UUID,
|
user_id: UUID,
|
||||||
permission_id: UUID,
|
permission_id: UUID,
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository))
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Add a permission to an user.
|
Add a permission to an user.
|
||||||
"""
|
"""
|
||||||
@ -267,8 +265,6 @@ async def add_permission_to_user(
|
|||||||
if not user:
|
if not user:
|
||||||
raise ControllerNotFoundError(f"User '{user_id}' not found")
|
raise ControllerNotFoundError(f"User '{user_id}' not found")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete(
|
@router.delete(
|
||||||
"/{user_id}/permissions/{permission_id}",
|
"/{user_id}/permissions/{permission_id}",
|
||||||
@ -279,7 +275,7 @@ async def remove_permission_from_user(
|
|||||||
user_id: UUID,
|
user_id: UUID,
|
||||||
permission_id: UUID,
|
permission_id: UUID,
|
||||||
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
|
rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)),
|
||||||
) -> Response:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Remove permission from an user.
|
Remove permission from an user.
|
||||||
"""
|
"""
|
||||||
@ -291,5 +287,3 @@ async def remove_permission_from_user(
|
|||||||
user = await rbac_repo.remove_permission_from_user(user_id, permission)
|
user = await rbac_repo.remove_permission_from_user(user_id, permission)
|
||||||
if not user:
|
if not user:
|
||||||
raise ControllerNotFoundError(f"User '{user_id}' not found")
|
raise ControllerNotFoundError(f"User '{user_id}' not found")
|
||||||
|
|
||||||
return Response(status_code=status.HTTP_204_NO_CONTENT)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user