mirror of
https://github.com/GNS3/gns3-server
synced 2024-12-01 04:38:12 +00:00
Move error responses to API routers.
This commit is contained in:
parent
6b0d0de1bc
commit
a9eb035b7d
@ -30,12 +30,12 @@ from gns3server import schemas
|
|||||||
from gns3server.compute.dynamips import Dynamips
|
from gns3server.compute.dynamips import Dynamips
|
||||||
from gns3server.compute.dynamips.nodes.atm_switch import ATMSwitch
|
from gns3server.compute.dynamips.nodes.atm_switch import ATMSwitch
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or ATM switch node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or ATM switch node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
async def dep_node(project_id: UUID, node_id: UUID):
|
async def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -68,8 +68,7 @@ async def create_atm_switch(project_id: UUID, node_data: schemas.ATMSwitchCreate
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.ATMSwitch,
|
response_model=schemas.ATMSwitch)
|
||||||
responses=responses)
|
|
||||||
def get_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
def get_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return an ATM switch node.
|
Return an ATM switch node.
|
||||||
@ -80,8 +79,7 @@ def get_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.ATMSwitch,
|
response_model=schemas.ATMSwitch,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_atm_switch(destination_node_id: UUID = Body(..., embed=True), node: ATMSwitch = Depends(dep_node)):
|
async def duplicate_atm_switch(destination_node_id: UUID = Body(..., embed=True), node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Duplicate an ATM switch node.
|
Duplicate an ATM switch node.
|
||||||
@ -92,8 +90,7 @@ async def duplicate_atm_switch(destination_node_id: UUID = Body(..., embed=True)
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.ATMSwitch,
|
response_model=schemas.ATMSwitch)
|
||||||
responses=responses)
|
|
||||||
async def update_atm_switch(node_data: schemas.ATMSwitchUpdate, node: ATMSwitch = Depends(dep_node)):
|
async def update_atm_switch(node_data: schemas.ATMSwitchUpdate, node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update an ATM switch node.
|
Update an ATM switch node.
|
||||||
@ -109,8 +106,7 @@ async def update_atm_switch(node_data: schemas.ATMSwitchUpdate, node: ATMSwitch
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_atm_switch_node(node: ATMSwitch = Depends(dep_node)):
|
async def delete_atm_switch_node(node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete an ATM switch node.
|
Delete an ATM switch node.
|
||||||
@ -120,8 +116,7 @@ async def delete_atm_switch_node(node: ATMSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def start_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
def start_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start an ATM switch node.
|
Start an ATM switch node.
|
||||||
@ -132,8 +127,7 @@ def start_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def stop_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
def stop_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop an ATM switch node.
|
Stop an ATM switch node.
|
||||||
@ -144,8 +138,7 @@ def stop_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def suspend_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
def suspend_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend an ATM switch node.
|
Suspend an ATM switch node.
|
||||||
@ -157,8 +150,7 @@ def suspend_atm_switch(node: ATMSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_nio(adapter_number: int,
|
async def create_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -174,8 +166,7 @@ async def create_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_nio(adapter_number: int, port_number: int, node: ATMSwitch = Depends(dep_node)):
|
async def delete_nio(adapter_number: int, port_number: int, node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Remove a NIO (Network Input/Output) from the node.
|
Remove a NIO (Network Input/Output) from the node.
|
||||||
@ -186,8 +177,7 @@ async def delete_nio(adapter_number: int, port_number: int, node: ATMSwitch = De
|
|||||||
await nio.delete()
|
await nio.delete()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_capture(adapter_number: int,
|
async def start_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -203,8 +193,7 @@ async def start_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop_capture",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop_capture",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_capture(adapter_number: int, port_number: int, node: ATMSwitch = Depends(dep_node)):
|
async def stop_capture(adapter_number: int, port_number: int, node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -214,8 +203,7 @@ async def stop_capture(adapter_number: int, port_number: int, node: ATMSwitch =
|
|||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: ATMSwitch = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: ATMSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
|
@ -31,12 +31,12 @@ from gns3server import schemas
|
|||||||
from gns3server.compute.builtin import Builtin
|
from gns3server.compute.builtin import Builtin
|
||||||
from gns3server.compute.builtin.nodes.cloud import Cloud
|
from gns3server.compute.builtin.nodes.cloud import Cloud
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or cloud node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or cloud node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -75,8 +75,7 @@ async def create_cloud(project_id: UUID, node_data: schemas.CloudCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.Cloud,
|
response_model=schemas.Cloud)
|
||||||
responses=responses)
|
|
||||||
def get_cloud(node: Cloud = Depends(dep_node)):
|
def get_cloud(node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a cloud node.
|
Return a cloud node.
|
||||||
@ -86,8 +85,7 @@ def get_cloud(node: Cloud = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.Cloud,
|
response_model=schemas.Cloud)
|
||||||
responses=responses)
|
|
||||||
def update_cloud(node_data: schemas.CloudUpdate, node: Cloud = Depends(dep_node)):
|
def update_cloud(node_data: schemas.CloudUpdate, node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a cloud node.
|
Update a cloud node.
|
||||||
@ -102,8 +100,7 @@ def update_cloud(node_data: schemas.CloudUpdate, node: Cloud = Depends(dep_node)
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_cloud(node: Cloud = Depends(dep_node)):
|
async def delete_cloud(node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a cloud node.
|
Delete a cloud node.
|
||||||
@ -113,8 +110,7 @@ async def delete_cloud(node: Cloud = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_cloud(node: Cloud = Depends(dep_node)):
|
async def start_cloud(node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a cloud node.
|
Start a cloud node.
|
||||||
@ -124,8 +120,7 @@ async def start_cloud(node: Cloud = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_cloud(node: Cloud = Depends(dep_node)):
|
async def stop_cloud(node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a cloud node.
|
Stop a cloud node.
|
||||||
@ -136,8 +131,7 @@ async def stop_cloud(node: Cloud = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_cloud(node: Cloud = Depends(dep_node)):
|
async def suspend_cloud(node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a cloud node.
|
Suspend a cloud node.
|
||||||
@ -149,8 +143,7 @@ async def suspend_cloud(node: Cloud = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO])
|
||||||
responses=responses)
|
|
||||||
async def create_cloud_nio(adapter_number: int,
|
async def create_cloud_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
||||||
@ -167,8 +160,7 @@ async def create_cloud_nio(adapter_number: int,
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO])
|
||||||
responses=responses)
|
|
||||||
async def update_cloud_nio(adapter_number: int,
|
async def update_cloud_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
||||||
@ -186,8 +178,7 @@ async def update_cloud_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_cloud_nio(adapter_number: int, port_number: int, node: Cloud = Depends(dep_node)):
|
async def delete_cloud_nio(adapter_number: int, port_number: int, node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Remove a NIO (Network Input/Output) from the node.
|
Remove a NIO (Network Input/Output) from the node.
|
||||||
@ -197,8 +188,7 @@ async def delete_cloud_nio(adapter_number: int, port_number: int, node: Cloud =
|
|||||||
await node.remove_nio(port_number)
|
await node.remove_nio(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_cloud_capture(adapter_number: int,
|
async def start_cloud_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -214,8 +204,7 @@ async def start_cloud_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_cloud_capture(adapter_number: int, port_number: int, node: Cloud = Depends(dep_node)):
|
async def stop_cloud_capture(adapter_number: int, port_number: int, node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -225,8 +214,7 @@ async def stop_cloud_capture(adapter_number: int, port_number: int, node: Cloud
|
|||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/pcap",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/pcap")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: Cloud = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: Cloud = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
|
@ -30,12 +30,12 @@ from gns3server import schemas
|
|||||||
from gns3server.compute.docker import Docker
|
from gns3server.compute.docker import Docker
|
||||||
from gns3server.compute.docker.docker_vm import DockerVM
|
from gns3server.compute.docker.docker_vm import DockerVM
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Docker node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Docker node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -85,8 +85,7 @@ async def create_docker_node(project_id: UUID, node_data: schemas.DockerCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.Docker,
|
response_model=schemas.Docker)
|
||||||
responses=responses)
|
|
||||||
def get_docker_node(node: DockerVM = Depends(dep_node)):
|
def get_docker_node(node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a Docker node.
|
Return a Docker node.
|
||||||
@ -96,8 +95,7 @@ def get_docker_node(node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.Docker,
|
response_model=schemas.Docker)
|
||||||
responses=responses)
|
|
||||||
async def update_docker_node(node_data: schemas.DockerUpdate, node: DockerVM = Depends(dep_node)):
|
async def update_docker_node(node_data: schemas.DockerUpdate, node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a Docker node.
|
Update a Docker node.
|
||||||
@ -124,8 +122,7 @@ async def update_docker_node(node_data: schemas.DockerUpdate, node: DockerVM = D
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_docker_node(node: DockerVM = Depends(dep_node)):
|
async def start_docker_node(node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a Docker node.
|
Start a Docker node.
|
||||||
@ -135,8 +132,7 @@ async def start_docker_node(node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_docker_node(node: DockerVM = Depends(dep_node)):
|
async def stop_docker_node(node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a Docker node.
|
Stop a Docker node.
|
||||||
@ -146,8 +142,7 @@ async def stop_docker_node(node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_docker_node(node: DockerVM = Depends(dep_node)):
|
async def suspend_docker_node(node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a Docker node.
|
Suspend a Docker node.
|
||||||
@ -157,8 +152,7 @@ async def suspend_docker_node(node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload",
|
@router.post("/{node_id}/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_docker_node(node: DockerVM = Depends(dep_node)):
|
async def reload_docker_node(node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Reload a Docker node.
|
Reload a Docker node.
|
||||||
@ -168,8 +162,7 @@ async def reload_docker_node(node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/pause",
|
@router.post("/{node_id}/pause",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def pause_docker_node(node: DockerVM = Depends(dep_node)):
|
async def pause_docker_node(node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Pause a Docker node.
|
Pause a Docker node.
|
||||||
@ -179,8 +172,7 @@ async def pause_docker_node(node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/unpause",
|
@router.post("/{node_id}/unpause",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def unpause_docker_node(node: DockerVM = Depends(dep_node)):
|
async def unpause_docker_node(node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Unpause a Docker node.
|
Unpause a Docker node.
|
||||||
@ -190,8 +182,7 @@ async def unpause_docker_node(node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_docker_node(node: DockerVM = Depends(dep_node)):
|
async def delete_docker_node(node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a Docker node.
|
Delete a Docker node.
|
||||||
@ -202,8 +193,7 @@ async def delete_docker_node(node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.Docker,
|
response_model=schemas.Docker,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_docker_node(destination_node_id: UUID = Body(..., embed=True), node: DockerVM = Depends(dep_node)):
|
async def duplicate_docker_node(destination_node_id: UUID = Body(..., embed=True), node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Duplicate a Docker node.
|
Duplicate a Docker node.
|
||||||
@ -215,8 +205,7 @@ async def duplicate_docker_node(destination_node_id: UUID = Body(..., embed=True
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_docker_node_nio(adapter_number: int,
|
async def create_docker_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -233,8 +222,7 @@ async def create_docker_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def update_docker_node_nio(adapter_number: int,
|
async def update_docker_node_nio(adapter_number: int,
|
||||||
port_number: int, nio_data: schemas.UDPNIO,
|
port_number: int, nio_data: schemas.UDPNIO,
|
||||||
node: DockerVM = Depends(dep_node)):
|
node: DockerVM = Depends(dep_node)):
|
||||||
@ -251,8 +239,7 @@ async def update_docker_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_docker_node_nio(adapter_number: int, port_number: int, node: DockerVM = Depends(dep_node)):
|
async def delete_docker_node_nio(adapter_number: int, port_number: int, node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
@ -262,8 +249,7 @@ async def delete_docker_node_nio(adapter_number: int, port_number: int, node: Do
|
|||||||
await node.adapter_remove_nio_binding(adapter_number)
|
await node.adapter_remove_nio_binding(adapter_number)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_docker_node_capture(adapter_number: int,
|
async def start_docker_node_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -279,8 +265,7 @@ async def start_docker_node_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_docker_node_capture(adapter_number: int, port_number: int, node: DockerVM = Depends(dep_node)):
|
async def stop_docker_node_capture(adapter_number: int, port_number: int, node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -290,8 +275,7 @@ async def stop_docker_node_capture(adapter_number: int, port_number: int, node:
|
|||||||
await node.stop_capture(adapter_number)
|
await node.stop_capture(adapter_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: DockerVM = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: DockerVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
@ -313,8 +297,7 @@ async def console_ws(websocket: WebSocket, node: DockerVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset",
|
@router.post("/{node_id}/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reset_console(node: DockerVM = Depends(dep_node)):
|
async def reset_console(node: DockerVM = Depends(dep_node)):
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
|
@ -33,12 +33,14 @@ from gns3server.compute.dynamips.nodes.router import Router
|
|||||||
from gns3server.compute.dynamips.dynamips_error import DynamipsError
|
from gns3server.compute.dynamips.dynamips_error import DynamipsError
|
||||||
from gns3server import schemas
|
from gns3server import schemas
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Dynamips node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Dynamips node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DEFAULT_CHASSIS = {
|
DEFAULT_CHASSIS = {
|
||||||
"c1700": "1720",
|
"c1700": "1720",
|
||||||
"c2600": "2610",
|
"c2600": "2610",
|
||||||
@ -87,8 +89,7 @@ async def create_router(project_id: UUID, node_data: schemas.DynamipsCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.Dynamips,
|
response_model=schemas.Dynamips)
|
||||||
responses=responses)
|
|
||||||
def get_router(node: Router = Depends(dep_node)):
|
def get_router(node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return Dynamips router.
|
Return Dynamips router.
|
||||||
@ -98,8 +99,7 @@ def get_router(node: Router = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.Dynamips,
|
response_model=schemas.Dynamips)
|
||||||
responses=responses)
|
|
||||||
async def update_router(node_data: schemas.DynamipsUpdate, node: Router = Depends(dep_node)):
|
async def update_router(node_data: schemas.DynamipsUpdate, node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a Dynamips router.
|
Update a Dynamips router.
|
||||||
@ -111,8 +111,7 @@ async def update_router(node_data: schemas.DynamipsUpdate, node: Router = Depend
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_router(node: Router = Depends(dep_node)):
|
async def delete_router(node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a Dynamips router.
|
Delete a Dynamips router.
|
||||||
@ -122,8 +121,7 @@ async def delete_router(node: Router = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_router(node: Router = Depends(dep_node)):
|
async def start_router(node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a Dynamips router.
|
Start a Dynamips router.
|
||||||
@ -137,8 +135,7 @@ async def start_router(node: Router = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_router(node: Router = Depends(dep_node)):
|
async def stop_router(node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a Dynamips router.
|
Stop a Dynamips router.
|
||||||
@ -148,16 +145,14 @@ async def stop_router(node: Router = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_router(node: Router = Depends(dep_node)):
|
async def suspend_router(node: Router = Depends(dep_node)):
|
||||||
|
|
||||||
await node.suspend()
|
await node.suspend()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resume",
|
@router.post("/{node_id}/resume",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def resume_router(node: Router = Depends(dep_node)):
|
async def resume_router(node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Resume a suspended Dynamips router.
|
Resume a suspended Dynamips router.
|
||||||
@ -167,8 +162,7 @@ async def resume_router(node: Router = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload",
|
@router.post("/{node_id}/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_router(node: Router = Depends(dep_node)):
|
async def reload_router(node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Reload a suspended Dynamips router.
|
Reload a suspended Dynamips router.
|
||||||
@ -179,8 +173,7 @@ async def reload_router(node: Router = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_nio(adapter_number: int, port_number: int, nio_data: schemas.UDPNIO, node: Router = Depends(dep_node)):
|
async def create_nio(adapter_number: int, port_number: int, nio_data: schemas.UDPNIO, node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Add a NIO (Network Input/Output) to the node.
|
Add a NIO (Network Input/Output) to the node.
|
||||||
@ -193,8 +186,7 @@ async def create_nio(adapter_number: int, port_number: int, nio_data: schemas.UD
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def update_nio(adapter_number: int, port_number: int, nio_data: schemas.UDPNIO, node: Router = Depends(dep_node)):
|
async def update_nio(adapter_number: int, port_number: int, nio_data: schemas.UDPNIO, node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a NIO (Network Input/Output) on the node.
|
Update a NIO (Network Input/Output) on the node.
|
||||||
@ -208,8 +200,7 @@ async def update_nio(adapter_number: int, port_number: int, nio_data: schemas.UD
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_nio(adapter_number: int, port_number: int, node: Router = Depends(dep_node)):
|
async def delete_nio(adapter_number: int, port_number: int, node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
@ -219,8 +210,7 @@ async def delete_nio(adapter_number: int, port_number: int, node: Router = Depen
|
|||||||
await nio.delete()
|
await nio.delete()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_capture(adapter_number: int,
|
async def start_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -243,8 +233,7 @@ async def start_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_capture(adapter_number: int, port_number: int, node: Router = Depends(dep_node)):
|
async def stop_capture(adapter_number: int, port_number: int, node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -253,8 +242,7 @@ async def stop_capture(adapter_number: int, port_number: int, node: Router = Dep
|
|||||||
await node.stop_capture(adapter_number, port_number)
|
await node.stop_capture(adapter_number, port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: Router = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
@ -265,8 +253,7 @@ async def stream_pcap_file(adapter_number: int, port_number: int, node: Router =
|
|||||||
return StreamingResponse(stream, media_type="application/vnd.tcpdump.pcap")
|
return StreamingResponse(stream, media_type="application/vnd.tcpdump.pcap")
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/idlepc_proposals",
|
@router.get("/{node_id}/idlepc_proposals")
|
||||||
responses=responses)
|
|
||||||
async def get_idlepcs(node: Router = Depends(dep_node)) -> List[str]:
|
async def get_idlepcs(node: Router = Depends(dep_node)) -> List[str]:
|
||||||
"""
|
"""
|
||||||
Retrieve Dynamips idle-pc proposals
|
Retrieve Dynamips idle-pc proposals
|
||||||
@ -276,8 +263,7 @@ async def get_idlepcs(node: Router = Depends(dep_node)) -> List[str]:
|
|||||||
return await node.get_idle_pc_prop()
|
return await node.get_idle_pc_prop()
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/auto_idlepc",
|
@router.get("/{node_id}/auto_idlepc")
|
||||||
responses=responses)
|
|
||||||
async def get_auto_idlepc(node: Router = Depends(dep_node)) -> dict:
|
async def get_auto_idlepc(node: Router = Depends(dep_node)) -> dict:
|
||||||
"""
|
"""
|
||||||
Get an automatically guessed best idle-pc value.
|
Get an automatically guessed best idle-pc value.
|
||||||
@ -288,8 +274,7 @@ async def get_auto_idlepc(node: Router = Depends(dep_node)) -> dict:
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_router(destination_node_id: UUID, node: Router = Depends(dep_node)):
|
async def duplicate_router(destination_node_id: UUID, node: Router = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Duplicate a router.
|
Duplicate a router.
|
||||||
@ -309,8 +294,7 @@ async def console_ws(websocket: WebSocket, node: Router = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset",
|
@router.post("/{node_id}/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reset_console(node: Router = Depends(dep_node)):
|
async def reset_console(node: Router = Depends(dep_node)):
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
|
@ -30,12 +30,12 @@ from gns3server.compute.dynamips import Dynamips
|
|||||||
from gns3server.compute.dynamips.nodes.ethernet_hub import EthernetHub
|
from gns3server.compute.dynamips.nodes.ethernet_hub import EthernetHub
|
||||||
from gns3server import schemas
|
from gns3server import schemas
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Ethernet hub node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Ethernet hub node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -68,8 +68,7 @@ async def create_ethernet_hub(project_id: UUID, node_data: schemas.EthernetHubCr
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.EthernetHub,
|
response_model=schemas.EthernetHub)
|
||||||
responses=responses)
|
|
||||||
def get_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
def get_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return an Ethernet hub.
|
Return an Ethernet hub.
|
||||||
@ -80,8 +79,7 @@ def get_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.EthernetHub,
|
response_model=schemas.EthernetHub,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_ethernet_hub(destination_node_id: UUID = Body(..., embed=True),
|
async def duplicate_ethernet_hub(destination_node_id: UUID = Body(..., embed=True),
|
||||||
node: EthernetHub = Depends(dep_node)):
|
node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
@ -93,8 +91,7 @@ async def duplicate_ethernet_hub(destination_node_id: UUID = Body(..., embed=Tru
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.EthernetHub,
|
response_model=schemas.EthernetHub)
|
||||||
responses=responses)
|
|
||||||
async def update_ethernet_hub(node_data: schemas.EthernetHubUpdate, node: EthernetHub = Depends(dep_node)):
|
async def update_ethernet_hub(node_data: schemas.EthernetHubUpdate, node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update an Ethernet hub.
|
Update an Ethernet hub.
|
||||||
@ -110,8 +107,7 @@ async def update_ethernet_hub(node_data: schemas.EthernetHubUpdate, node: Ethern
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
async def delete_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete an Ethernet hub.
|
Delete an Ethernet hub.
|
||||||
@ -121,8 +117,7 @@ async def delete_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def start_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
def start_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start an Ethernet hub.
|
Start an Ethernet hub.
|
||||||
@ -133,8 +128,7 @@ def start_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def stop_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
def stop_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop an Ethernet hub.
|
Stop an Ethernet hub.
|
||||||
@ -145,8 +139,7 @@ def stop_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def suspend_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
def suspend_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend an Ethernet hub.
|
Suspend an Ethernet hub.
|
||||||
@ -158,8 +151,7 @@ def suspend_ethernet_hub(node: EthernetHub = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_nio(adapter_number: int,
|
async def create_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -175,8 +167,7 @@ async def create_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_nio(adapter_number: int, port_number: int, node: EthernetHub = Depends(dep_node)):
|
async def delete_nio(adapter_number: int, port_number: int, node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
@ -187,8 +178,7 @@ async def delete_nio(adapter_number: int, port_number: int, node: EthernetHub =
|
|||||||
await nio.delete()
|
await nio.delete()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_capture(adapter_number: int,
|
async def start_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -204,8 +194,7 @@ async def start_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_capture(adapter_number: int, port_number: int, node: EthernetHub = Depends(dep_node)):
|
async def stop_capture(adapter_number: int, port_number: int, node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -215,8 +204,7 @@ async def stop_capture(adapter_number: int, port_number: int, node: EthernetHub
|
|||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: EthernetHub = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: EthernetHub = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
|
@ -30,12 +30,12 @@ from gns3server.compute.dynamips import Dynamips
|
|||||||
from gns3server.compute.dynamips.nodes.ethernet_switch import EthernetSwitch
|
from gns3server.compute.dynamips.nodes.ethernet_switch import EthernetSwitch
|
||||||
from gns3server import schemas
|
from gns3server import schemas
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Ethernet switch node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Ethernet switch node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -71,8 +71,7 @@ async def create_ethernet_switch(project_id: UUID, node_data: schemas.EthernetSw
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.EthernetSwitch,
|
response_model=schemas.EthernetSwitch)
|
||||||
responses=responses)
|
|
||||||
def get_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
def get_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
||||||
|
|
||||||
return node.__json__()
|
return node.__json__()
|
||||||
@ -80,8 +79,7 @@ def get_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.EthernetSwitch,
|
response_model=schemas.EthernetSwitch,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_ethernet_switch(destination_node_id: UUID = Body(..., embed=True),
|
async def duplicate_ethernet_switch(destination_node_id: UUID = Body(..., embed=True),
|
||||||
node: EthernetSwitch = Depends(dep_node)):
|
node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
@ -93,8 +91,7 @@ async def duplicate_ethernet_switch(destination_node_id: UUID = Body(..., embed=
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.EthernetSwitch,
|
response_model=schemas.EthernetSwitch)
|
||||||
responses=responses)
|
|
||||||
async def update_ethernet_switch(node_data: schemas.EthernetSwitchUpdate, node: EthernetSwitch = Depends(dep_node)):
|
async def update_ethernet_switch(node_data: schemas.EthernetSwitchUpdate, node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update an Ethernet switch.
|
Update an Ethernet switch.
|
||||||
@ -113,8 +110,7 @@ async def update_ethernet_switch(node_data: schemas.EthernetSwitchUpdate, node:
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
async def delete_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete an Ethernet switch.
|
Delete an Ethernet switch.
|
||||||
@ -124,8 +120,7 @@ async def delete_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def start_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
def start_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start an Ethernet switch.
|
Start an Ethernet switch.
|
||||||
@ -136,8 +131,7 @@ def start_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def stop_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
def stop_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop an Ethernet switch.
|
Stop an Ethernet switch.
|
||||||
@ -148,8 +142,7 @@ def stop_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def suspend_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
def suspend_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend an Ethernet switch.
|
Suspend an Ethernet switch.
|
||||||
@ -161,8 +154,7 @@ def suspend_ethernet_switch(node: EthernetSwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_nio(adapter_number: int,
|
async def create_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -174,8 +166,7 @@ async def create_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_nio(adapter_number: int, port_number: int, node: EthernetSwitch = Depends(dep_node)):
|
async def delete_nio(adapter_number: int, port_number: int, node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
@ -186,8 +177,7 @@ async def delete_nio(adapter_number: int, port_number: int, node: EthernetSwitch
|
|||||||
await nio.delete()
|
await nio.delete()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_capture(adapter_number: int,
|
async def start_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -203,8 +193,7 @@ async def start_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_capture(adapter_number: int,port_number: int, node: EthernetSwitch = Depends(dep_node)):
|
async def stop_capture(adapter_number: int,port_number: int, node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -214,8 +203,7 @@ async def stop_capture(adapter_number: int,port_number: int, node: EthernetSwitc
|
|||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: EthernetSwitch = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: EthernetSwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
|
@ -30,12 +30,12 @@ from gns3server import schemas
|
|||||||
from gns3server.compute.dynamips import Dynamips
|
from gns3server.compute.dynamips import Dynamips
|
||||||
from gns3server.compute.dynamips.nodes.frame_relay_switch import FrameRelaySwitch
|
from gns3server.compute.dynamips.nodes.frame_relay_switch import FrameRelaySwitch
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Frame Relay switch node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Frame Relay switch node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -68,8 +68,7 @@ async def create_frame_relay_switch(project_id: UUID, node_data: schemas.FrameRe
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.FrameRelaySwitch,
|
response_model=schemas.FrameRelaySwitch)
|
||||||
responses=responses)
|
|
||||||
def get_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
def get_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a Frame Relay switch node.
|
Return a Frame Relay switch node.
|
||||||
@ -80,8 +79,7 @@ def get_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.FrameRelaySwitch,
|
response_model=schemas.FrameRelaySwitch,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_frame_relay_switch(destination_node_id: UUID = Body(..., embed=True),
|
async def duplicate_frame_relay_switch(destination_node_id: UUID = Body(..., embed=True),
|
||||||
node: FrameRelaySwitch = Depends(dep_node)):
|
node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
@ -93,8 +91,7 @@ async def duplicate_frame_relay_switch(destination_node_id: UUID = Body(..., emb
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.FrameRelaySwitch,
|
response_model=schemas.FrameRelaySwitch)
|
||||||
responses=responses)
|
|
||||||
async def update_frame_relay_switch(node_data: schemas.FrameRelaySwitchUpdate,
|
async def update_frame_relay_switch(node_data: schemas.FrameRelaySwitchUpdate,
|
||||||
node: FrameRelaySwitch = Depends(dep_node)):
|
node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
@ -111,8 +108,7 @@ async def update_frame_relay_switch(node_data: schemas.FrameRelaySwitchUpdate,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
async def delete_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a Frame Relay switch node.
|
Delete a Frame Relay switch node.
|
||||||
@ -122,8 +118,7 @@ async def delete_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def start_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
def start_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a Frame Relay switch node.
|
Start a Frame Relay switch node.
|
||||||
@ -134,8 +129,7 @@ def start_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def stop_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
def stop_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a Frame Relay switch node.
|
Stop a Frame Relay switch node.
|
||||||
@ -146,8 +140,7 @@ def stop_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def suspend_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
def suspend_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a Frame Relay switch node.
|
Suspend a Frame Relay switch node.
|
||||||
@ -159,8 +152,7 @@ def suspend_frame_relay_switch(node: FrameRelaySwitch = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_nio(adapter_number: int,
|
async def create_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -176,8 +168,7 @@ async def create_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_nio(adapter_number: int, port_number: int, node: FrameRelaySwitch = Depends(dep_node)):
|
async def delete_nio(adapter_number: int, port_number: int, node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Remove a NIO (Network Input/Output) from the node.
|
Remove a NIO (Network Input/Output) from the node.
|
||||||
@ -188,8 +179,7 @@ async def delete_nio(adapter_number: int, port_number: int, node: FrameRelaySwit
|
|||||||
await nio.delete()
|
await nio.delete()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_capture(adapter_number: int,
|
async def start_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -205,8 +195,7 @@ async def start_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_capture(adapter_number: int, port_number: int, node: FrameRelaySwitch = Depends(dep_node)):
|
async def stop_capture(adapter_number: int, port_number: int, node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -216,8 +205,7 @@ async def stop_capture(adapter_number: int, port_number: int, node: FrameRelaySw
|
|||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: FrameRelaySwitch = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: FrameRelaySwitch = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
|
@ -31,12 +31,12 @@ from gns3server import schemas
|
|||||||
from gns3server.compute.iou import IOU
|
from gns3server.compute.iou import IOU
|
||||||
from gns3server.compute.iou.iou_vm import IOUVM
|
from gns3server.compute.iou.iou_vm import IOUVM
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or IOU node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or IOU node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -82,8 +82,7 @@ async def create_iou_node(project_id: UUID, node_data: schemas.IOUCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.IOU,
|
response_model=schemas.IOU)
|
||||||
responses=responses)
|
|
||||||
def get_iou_node(node: IOUVM = Depends(dep_node)):
|
def get_iou_node(node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return an IOU node.
|
Return an IOU node.
|
||||||
@ -93,8 +92,7 @@ def get_iou_node(node: IOUVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.IOU,
|
response_model=schemas.IOU)
|
||||||
responses=responses)
|
|
||||||
async def update_iou_node(node_data: schemas.IOUUpdate, node: IOUVM = Depends(dep_node)):
|
async def update_iou_node(node_data: schemas.IOUUpdate, node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update an IOU node.
|
Update an IOU node.
|
||||||
@ -116,8 +114,7 @@ async def update_iou_node(node_data: schemas.IOUUpdate, node: IOUVM = Depends(de
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_iou_node(node: IOUVM = Depends(dep_node)):
|
async def delete_iou_node(node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete an IOU node.
|
Delete an IOU node.
|
||||||
@ -128,8 +125,7 @@ async def delete_iou_node(node: IOUVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.IOU,
|
response_model=schemas.IOU,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_iou_node(destination_node_id: UUID = Body(..., embed=True), node: IOUVM = Depends(dep_node)):
|
async def duplicate_iou_node(destination_node_id: UUID = Body(..., embed=True), node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Duplicate an IOU node.
|
Duplicate an IOU node.
|
||||||
@ -140,8 +136,7 @@ async def duplicate_iou_node(destination_node_id: UUID = Body(..., embed=True),
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_iou_node(start_data: schemas.IOUStart, node: IOUVM = Depends(dep_node)):
|
async def start_iou_node(start_data: schemas.IOUStart, node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start an IOU node.
|
Start an IOU node.
|
||||||
@ -157,8 +152,7 @@ async def start_iou_node(start_data: schemas.IOUStart, node: IOUVM = Depends(dep
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_iou_node(node: IOUVM = Depends(dep_node)):
|
async def stop_iou_node(node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop an IOU node.
|
Stop an IOU node.
|
||||||
@ -168,8 +162,7 @@ async def stop_iou_node(node: IOUVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
def suspend_iou_node(node: IOUVM = Depends(dep_node)):
|
def suspend_iou_node(node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend an IOU node.
|
Suspend an IOU node.
|
||||||
@ -180,8 +173,7 @@ def suspend_iou_node(node: IOUVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload",
|
@router.post("/{node_id}/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_iou_node(node: IOUVM = Depends(dep_node)):
|
async def reload_iou_node(node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Reload an IOU node.
|
Reload an IOU node.
|
||||||
@ -192,8 +184,7 @@ async def reload_iou_node(node: IOUVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO])
|
||||||
responses=responses)
|
|
||||||
async def create_iou_node_nio(adapter_number: int,
|
async def create_iou_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
||||||
@ -209,8 +200,7 @@ async def create_iou_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO])
|
||||||
responses=responses)
|
|
||||||
async def update_iou_node_nio(adapter_number: int,
|
async def update_iou_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
||||||
@ -227,8 +217,7 @@ async def update_iou_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_iou_node_nio(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)):
|
async def delete_iou_node_nio(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
@ -237,8 +226,7 @@ async def delete_iou_node_nio(adapter_number: int, port_number: int, node: IOUVM
|
|||||||
await node.adapter_remove_nio_binding(adapter_number, port_number)
|
await node.adapter_remove_nio_binding(adapter_number, port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_iou_node_capture(adapter_number: int,
|
async def start_iou_node_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -253,8 +241,7 @@ async def start_iou_node_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_iou_node_capture(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)):
|
async def stop_iou_node_capture(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -263,8 +250,7 @@ async def stop_iou_node_capture(adapter_number: int, port_number: int, node: IOU
|
|||||||
await node.stop_capture(adapter_number, port_number)
|
await node.stop_capture(adapter_number, port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: IOUVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
@ -285,8 +271,7 @@ async def console_ws(websocket: WebSocket, node: IOUVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset",
|
@router.post("/{node_id}/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reset_console(node: IOUVM = Depends(dep_node)):
|
async def reset_console(node: IOUVM = Depends(dep_node)):
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
|
@ -31,12 +31,12 @@ from gns3server import schemas
|
|||||||
from gns3server.compute.builtin import Builtin
|
from gns3server.compute.builtin import Builtin
|
||||||
from gns3server.compute.builtin.nodes.nat import Nat
|
from gns3server.compute.builtin.nodes.nat import Nat
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or NAT node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or NAT node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -70,8 +70,7 @@ async def create_nat_node(project_id: UUID, node_data: schemas.NATCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.NAT,
|
response_model=schemas.NAT)
|
||||||
responses=responses)
|
|
||||||
def get_nat_node(node: Nat = Depends(dep_node)):
|
def get_nat_node(node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a NAT node.
|
Return a NAT node.
|
||||||
@ -81,8 +80,7 @@ def get_nat_node(node: Nat = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.NAT,
|
response_model=schemas.NAT)
|
||||||
responses=responses)
|
|
||||||
def update_nat_node(node_data: schemas.NATUpdate, node: Nat = Depends(dep_node)):
|
def update_nat_node(node_data: schemas.NATUpdate, node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a NAT node.
|
Update a NAT node.
|
||||||
@ -97,8 +95,7 @@ def update_nat_node(node_data: schemas.NATUpdate, node: Nat = Depends(dep_node))
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_nat_node(node: Nat = Depends(dep_node)):
|
async def delete_nat_node(node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a cloud node.
|
Delete a cloud node.
|
||||||
@ -108,8 +105,7 @@ async def delete_nat_node(node: Nat = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_nat_node(node: Nat = Depends(dep_node)):
|
async def start_nat_node(node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a NAT node.
|
Start a NAT node.
|
||||||
@ -119,8 +115,7 @@ async def start_nat_node(node: Nat = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_nat_node(node: Nat = Depends(dep_node)):
|
async def stop_nat_node(node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a NAT node.
|
Stop a NAT node.
|
||||||
@ -131,8 +126,7 @@ async def stop_nat_node(node: Nat = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_nat_node(node: Nat = Depends(dep_node)):
|
async def suspend_nat_node(node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a NAT node.
|
Suspend a NAT node.
|
||||||
@ -144,8 +138,7 @@ async def suspend_nat_node(node: Nat = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO])
|
||||||
responses=responses)
|
|
||||||
async def create_nat_node_nio(adapter_number: int,
|
async def create_nat_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
||||||
@ -162,8 +155,7 @@ async def create_nat_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
response_model=Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO])
|
||||||
responses=responses)
|
|
||||||
async def update_nat_node_nio(adapter_number: int,
|
async def update_nat_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
nio_data: Union[schemas.EthernetNIO, schemas.TAPNIO, schemas.UDPNIO],
|
||||||
@ -181,8 +173,7 @@ async def update_nat_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_nat_node_nio(adapter_number: int, port_number: int, node: Nat = Depends(dep_node)):
|
async def delete_nat_node_nio(adapter_number: int, port_number: int, node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Remove a NIO (Network Input/Output) from the node.
|
Remove a NIO (Network Input/Output) from the node.
|
||||||
@ -192,8 +183,7 @@ async def delete_nat_node_nio(adapter_number: int, port_number: int, node: Nat =
|
|||||||
await node.remove_nio(port_number)
|
await node.remove_nio(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_nat_node_capture(adapter_number: int,
|
async def start_nat_node_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -209,8 +199,7 @@ async def start_nat_node_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_nat_node_capture(adapter_number: int, port_number: int, node: Nat = Depends(dep_node)):
|
async def stop_nat_node_capture(adapter_number: int, port_number: int, node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -220,8 +209,7 @@ async def stop_nat_node_capture(adapter_number: int, port_number: int, node: Nat
|
|||||||
await node.stop_capture(port_number)
|
await node.stop_capture(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: Nat = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: Nat = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
|
@ -32,12 +32,12 @@ from gns3server.compute.project_manager import ProjectManager
|
|||||||
from gns3server.compute.qemu import Qemu
|
from gns3server.compute.qemu import Qemu
|
||||||
from gns3server.compute.qemu.qemu_vm import QemuVM
|
from gns3server.compute.qemu.qemu_vm import QemuVM
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Qemu node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or Qemu node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -79,8 +79,7 @@ async def create_qemu_node(project_id: UUID, node_data: schemas.QemuCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.Qemu,
|
response_model=schemas.Qemu)
|
||||||
responses=responses)
|
|
||||||
def get_qemu_node(node: QemuVM = Depends(dep_node)):
|
def get_qemu_node(node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a Qemu node.
|
Return a Qemu node.
|
||||||
@ -90,8 +89,7 @@ def get_qemu_node(node: QemuVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.Qemu,
|
response_model=schemas.Qemu)
|
||||||
responses=responses)
|
|
||||||
async def update_qemu_node(node_data: schemas.QemuUpdate, node: QemuVM = Depends(dep_node)):
|
async def update_qemu_node(node_data: schemas.QemuUpdate, node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a Qemu node.
|
Update a Qemu node.
|
||||||
@ -108,8 +106,7 @@ async def update_qemu_node(node_data: schemas.QemuUpdate, node: QemuVM = Depends
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_qemu_node(node: QemuVM = Depends(dep_node)):
|
async def delete_qemu_node(node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a Qemu node.
|
Delete a Qemu node.
|
||||||
@ -120,8 +117,7 @@ async def delete_qemu_node(node: QemuVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.Qemu,
|
response_model=schemas.Qemu,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_qemu_node(destination_node_id: UUID = Body(..., embed=True), node: QemuVM = Depends(dep_node)):
|
async def duplicate_qemu_node(destination_node_id: UUID = Body(..., embed=True), node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Duplicate a Qemu node.
|
Duplicate a Qemu node.
|
||||||
@ -132,16 +128,14 @@ async def duplicate_qemu_node(destination_node_id: UUID = Body(..., embed=True),
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resize_disk",
|
@router.post("/{node_id}/resize_disk",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def resize_qemu_node_disk(node_data: schemas.QemuDiskResize, node: QemuVM = Depends(dep_node)):
|
async def resize_qemu_node_disk(node_data: schemas.QemuDiskResize, node: QemuVM = Depends(dep_node)):
|
||||||
|
|
||||||
await node.resize_disk(node_data.drive_name, node_data.extend)
|
await node.resize_disk(node_data.drive_name, node_data.extend)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_qemu_node(node: QemuVM = Depends(dep_node)):
|
async def start_qemu_node(node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a Qemu node.
|
Start a Qemu node.
|
||||||
@ -158,8 +152,7 @@ async def start_qemu_node(node: QemuVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_qemu_node(node: QemuVM = Depends(dep_node)):
|
async def stop_qemu_node(node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a Qemu node.
|
Stop a Qemu node.
|
||||||
@ -169,8 +162,7 @@ async def stop_qemu_node(node: QemuVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload",
|
@router.post("/{node_id}/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_qemu_node(node: QemuVM = Depends(dep_node)):
|
async def reload_qemu_node(node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Reload a Qemu node.
|
Reload a Qemu node.
|
||||||
@ -180,8 +172,7 @@ async def reload_qemu_node(node: QemuVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_qemu_node(node: QemuVM = Depends(dep_node)):
|
async def suspend_qemu_node(node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a Qemu node.
|
Suspend a Qemu node.
|
||||||
@ -191,8 +182,7 @@ async def suspend_qemu_node(node: QemuVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resume",
|
@router.post("/{node_id}/resume",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def resume_qemu_node(node: QemuVM = Depends(dep_node)):
|
async def resume_qemu_node(node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Resume a Qemu node.
|
Resume a Qemu node.
|
||||||
@ -203,8 +193,7 @@ async def resume_qemu_node(node: QemuVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_qemu_node_nio(adapter_number: int,
|
async def create_qemu_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -221,8 +210,7 @@ async def create_qemu_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def update_qemu_node_nio(adapter_number: int,
|
async def update_qemu_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -242,8 +230,7 @@ async def update_qemu_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_qemu_node_nio(adapter_number: int,
|
async def delete_qemu_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: QemuVM = Depends(dep_node)):
|
node: QemuVM = Depends(dep_node)):
|
||||||
@ -255,8 +242,7 @@ async def delete_qemu_node_nio(adapter_number: int,
|
|||||||
await node.adapter_remove_nio_binding(adapter_number)
|
await node.adapter_remove_nio_binding(adapter_number)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_qemu_node_capture(adapter_number: int,
|
async def start_qemu_node_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -272,8 +258,7 @@ async def start_qemu_node_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_qemu_node_capture(adapter_number: int, port_number: int, node: QemuVM = Depends(dep_node)):
|
async def stop_qemu_node_capture(adapter_number: int, port_number: int, node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -283,8 +268,7 @@ async def stop_qemu_node_capture(adapter_number: int, port_number: int, node: Qe
|
|||||||
await node.stop_capture(adapter_number)
|
await node.stop_capture(adapter_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: QemuVM = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: QemuVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
@ -306,8 +290,7 @@ async def console_ws(websocket: WebSocket, node: QemuVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset",
|
@router.post("/{node_id}/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reset_console(node: QemuVM = Depends(dep_node)):
|
async def reset_console(node: QemuVM = Depends(dep_node)):
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
|
@ -32,12 +32,12 @@ from gns3server.compute.virtualbox.virtualbox_error import VirtualBoxError
|
|||||||
from gns3server.compute.project_manager import ProjectManager
|
from gns3server.compute.project_manager import ProjectManager
|
||||||
from gns3server.compute.virtualbox.virtualbox_vm import VirtualBoxVM
|
from gns3server.compute.virtualbox.virtualbox_vm import VirtualBoxVM
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or VirtualBox node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or VirtualBox node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -83,8 +83,7 @@ async def create_virtualbox_node(project_id: UUID, node_data: schemas.VirtualBox
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.VirtualBox,
|
response_model=schemas.VirtualBox)
|
||||||
responses=responses)
|
|
||||||
def get_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
def get_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a VirtualBox node.
|
Return a VirtualBox node.
|
||||||
@ -94,8 +93,7 @@ def get_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.VirtualBox,
|
response_model=schemas.VirtualBox)
|
||||||
responses=responses)
|
|
||||||
async def update_virtualbox_node(node_data: schemas.VirtualBoxUpdate, node: VirtualBoxVM = Depends(dep_node)):
|
async def update_virtualbox_node(node_data: schemas.VirtualBoxUpdate, node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a VirtualBox node.
|
Update a VirtualBox node.
|
||||||
@ -138,8 +136,7 @@ async def update_virtualbox_node(node_data: schemas.VirtualBoxUpdate, node: Virt
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
async def delete_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a VirtualBox node.
|
Delete a VirtualBox node.
|
||||||
@ -149,8 +146,7 @@ async def delete_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
async def start_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a VirtualBox node.
|
Start a VirtualBox node.
|
||||||
@ -165,8 +161,7 @@ async def start_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
async def stop_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a VirtualBox node.
|
Stop a VirtualBox node.
|
||||||
@ -176,8 +171,7 @@ async def stop_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
async def suspend_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a VirtualBox node.
|
Suspend a VirtualBox node.
|
||||||
@ -187,8 +181,7 @@ async def suspend_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resume",
|
@router.post("/{node_id}/resume",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def resume_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
async def resume_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Resume a VirtualBox node.
|
Resume a VirtualBox node.
|
||||||
@ -198,8 +191,7 @@ async def resume_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload",
|
@router.post("/{node_id}/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
async def reload_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Reload a VirtualBox node.
|
Reload a VirtualBox node.
|
||||||
@ -210,8 +202,7 @@ async def reload_virtualbox_node(node: VirtualBoxVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_virtualbox_node_nio(adapter_number: int,
|
async def create_virtualbox_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -228,8 +219,7 @@ async def create_virtualbox_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def update_virtualbox_node_nio(adapter_number: int,
|
async def update_virtualbox_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -249,8 +239,7 @@ async def update_virtualbox_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_virtualbox_node_nio(adapter_number: int, port_number: int, node: VirtualBoxVM = Depends(dep_node)):
|
async def delete_virtualbox_node_nio(adapter_number: int, port_number: int, node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
@ -260,8 +249,7 @@ async def delete_virtualbox_node_nio(adapter_number: int, port_number: int, node
|
|||||||
await node.adapter_remove_nio_binding(adapter_number)
|
await node.adapter_remove_nio_binding(adapter_number)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_virtualbox_node_capture(adapter_number: int,
|
async def start_virtualbox_node_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -277,8 +265,7 @@ async def start_virtualbox_node_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_virtualbox_node_capture(adapter_number: int, port_number: int, node: VirtualBoxVM = Depends(dep_node)):
|
async def stop_virtualbox_node_capture(adapter_number: int, port_number: int, node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -288,8 +275,7 @@ async def stop_virtualbox_node_capture(adapter_number: int, port_number: int, no
|
|||||||
await node.stop_capture(adapter_number)
|
await node.stop_capture(adapter_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: VirtualBoxVM = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: VirtualBoxVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
@ -311,8 +297,7 @@ async def console_ws(websocket: WebSocket, node: VirtualBoxVM = Depends(dep_node
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset",
|
@router.post("/{node_id}/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reset_console(node: VirtualBoxVM = Depends(dep_node)):
|
async def reset_console(node: VirtualBoxVM = Depends(dep_node)):
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
|
@ -31,12 +31,12 @@ from gns3server.compute.vmware import VMware
|
|||||||
from gns3server.compute.project_manager import ProjectManager
|
from gns3server.compute.project_manager import ProjectManager
|
||||||
from gns3server.compute.vmware.vmware_vm import VMwareVM
|
from gns3server.compute.vmware.vmware_vm import VMwareVM
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or VMware node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or VMware node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -76,8 +76,7 @@ async def create_vmware_node(project_id: UUID, node_data: schemas.VMwareCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.VMware,
|
response_model=schemas.VMware)
|
||||||
responses=responses)
|
|
||||||
def get_vmware_node(node: VMwareVM = Depends(dep_node)):
|
def get_vmware_node(node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a VMware node.
|
Return a VMware node.
|
||||||
@ -87,8 +86,7 @@ def get_vmware_node(node: VMwareVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.VMware,
|
response_model=schemas.VMware)
|
||||||
responses=responses)
|
|
||||||
def update_vmware_node(node_data: schemas.VMwareUpdate, node: VMwareVM = Depends(dep_node)):
|
def update_vmware_node(node_data: schemas.VMwareUpdate, node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a VMware node.
|
Update a VMware node.
|
||||||
@ -106,8 +104,7 @@ def update_vmware_node(node_data: schemas.VMwareUpdate, node: VMwareVM = Depends
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_vmware_node(node: VMwareVM = Depends(dep_node)):
|
async def delete_vmware_node(node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a VMware node.
|
Delete a VMware node.
|
||||||
@ -117,8 +114,7 @@ async def delete_vmware_node(node: VMwareVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_vmware_node(node: VMwareVM = Depends(dep_node)):
|
async def start_vmware_node(node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a VMware node.
|
Start a VMware node.
|
||||||
@ -133,8 +129,7 @@ async def start_vmware_node(node: VMwareVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_vmware_node(node: VMwareVM = Depends(dep_node)):
|
async def stop_vmware_node(node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a VMware node.
|
Stop a VMware node.
|
||||||
@ -144,8 +139,7 @@ async def stop_vmware_node(node: VMwareVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_vmware_node(node: VMwareVM = Depends(dep_node)):
|
async def suspend_vmware_node(node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a VMware node.
|
Suspend a VMware node.
|
||||||
@ -155,8 +149,7 @@ async def suspend_vmware_node(node: VMwareVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resume",
|
@router.post("/{node_id}/resume",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def resume_vmware_node(node: VMwareVM = Depends(dep_node)):
|
async def resume_vmware_node(node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Resume a VMware node.
|
Resume a VMware node.
|
||||||
@ -166,8 +159,7 @@ async def resume_vmware_node(node: VMwareVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload",
|
@router.post("/{node_id}/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_vmware_node(node: VMwareVM = Depends(dep_node)):
|
async def reload_vmware_node(node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Reload a VMware node.
|
Reload a VMware node.
|
||||||
@ -178,8 +170,7 @@ async def reload_vmware_node(node: VMwareVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_vmware_node_nio(adapter_number: int,
|
async def create_vmware_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -196,8 +187,7 @@ async def create_vmware_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def update_vmware_node_nio(adapter_number: int,
|
async def update_vmware_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO, node: VMwareVM = Depends(dep_node)):
|
nio_data: schemas.UDPNIO, node: VMwareVM = Depends(dep_node)):
|
||||||
@ -214,8 +204,7 @@ async def update_vmware_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_vmware_node_nio(adapter_number: int, port_number: int, node: VMwareVM = Depends(dep_node)):
|
async def delete_vmware_node_nio(adapter_number: int, port_number: int, node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a NIO (Network Input/Output) from the node.
|
Delete a NIO (Network Input/Output) from the node.
|
||||||
@ -225,8 +214,7 @@ async def delete_vmware_node_nio(adapter_number: int, port_number: int, node: VM
|
|||||||
await node.adapter_remove_nio_binding(adapter_number)
|
await node.adapter_remove_nio_binding(adapter_number)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_vmware_node_capture(adapter_number: int,
|
async def start_vmware_node_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -242,8 +230,7 @@ async def start_vmware_node_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_vmware_node_capture(adapter_number: int, port_number: int, node: VMwareVM = Depends(dep_node)):
|
async def stop_vmware_node_capture(adapter_number: int, port_number: int, node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -253,8 +240,7 @@ async def stop_vmware_node_capture(adapter_number: int, port_number: int, node:
|
|||||||
await node.stop_capture(adapter_number)
|
await node.stop_capture(adapter_number)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: VMwareVM = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: VMwareVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
@ -267,8 +253,7 @@ async def stream_pcap_file(adapter_number: int, port_number: int, node: VMwareVM
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/interfaces/vmnet",
|
@router.post("/{node_id}/interfaces/vmnet",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
def allocate_vmnet(node: VMwareVM = Depends(dep_node)) -> dict:
|
def allocate_vmnet(node: VMwareVM = Depends(dep_node)) -> dict:
|
||||||
"""
|
"""
|
||||||
Allocate a VMware VMnet interface on the server.
|
Allocate a VMware VMnet interface on the server.
|
||||||
@ -291,8 +276,7 @@ async def console_ws(websocket: WebSocket, node: VMwareVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset",
|
@router.post("/{node_id}/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reset_console(node: VMwareVM = Depends(dep_node)):
|
async def reset_console(node: VMwareVM = Depends(dep_node)):
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
|
@ -30,12 +30,12 @@ from gns3server import schemas
|
|||||||
from gns3server.compute.vpcs import VPCS
|
from gns3server.compute.vpcs import VPCS
|
||||||
from gns3server.compute.vpcs.vpcs_vm import VPCSVM
|
from gns3server.compute.vpcs.vpcs_vm import VPCSVM
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or VMware node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or VMware node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_node(project_id: UUID, node_id: UUID):
|
def dep_node(project_id: UUID, node_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -69,8 +69,7 @@ async def create_vpcs_node(project_id: UUID, node_data: schemas.VPCSCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.VPCS,
|
response_model=schemas.VPCS)
|
||||||
responses=responses)
|
|
||||||
def get_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
def get_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a VPCS node.
|
Return a VPCS node.
|
||||||
@ -80,8 +79,7 @@ def get_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.VPCS,
|
response_model=schemas.VPCS)
|
||||||
responses=responses)
|
|
||||||
def update_vpcs_node(node_data: schemas.VPCSUpdate, node: VPCSVM = Depends(dep_node)):
|
def update_vpcs_node(node_data: schemas.VPCSUpdate, node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a VPCS node.
|
Update a VPCS node.
|
||||||
@ -96,8 +94,7 @@ def update_vpcs_node(node_data: schemas.VPCSUpdate, node: VPCSVM = Depends(dep_n
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}",
|
@router.delete("/{node_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
async def delete_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Delete a VPCS node.
|
Delete a VPCS node.
|
||||||
@ -108,8 +105,7 @@ async def delete_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.VPCS,
|
response_model=schemas.VPCS,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_vpcs_node(destination_node_id: UUID = Body(..., embed=True), node: VPCSVM = Depends(dep_node)):
|
async def duplicate_vpcs_node(destination_node_id: UUID = Body(..., embed=True), node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Duplicate a VPCS node.
|
Duplicate a VPCS node.
|
||||||
@ -120,8 +116,7 @@ async def duplicate_vpcs_node(destination_node_id: UUID = Body(..., embed=True),
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
async def start_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a VPCS node.
|
Start a VPCS node.
|
||||||
@ -131,8 +126,7 @@ async def start_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
async def stop_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a VPCS node.
|
Stop a VPCS node.
|
||||||
@ -142,8 +136,7 @@ async def stop_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
async def suspend_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a VPCS node.
|
Suspend a VPCS node.
|
||||||
@ -154,8 +147,7 @@ async def suspend_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload",
|
@router.post("/{node_id}/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
async def reload_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Reload a VPCS node.
|
Reload a VPCS node.
|
||||||
@ -166,8 +158,7 @@ async def reload_vpcs_node(node: VPCSVM = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def create_vpcs_node_nio(adapter_number: int,
|
async def create_vpcs_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -184,8 +175,7 @@ async def create_vpcs_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.put("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.UDPNIO,
|
response_model=schemas.UDPNIO)
|
||||||
responses=responses)
|
|
||||||
async def update_vpcs_node_nio(adapter_number: int,
|
async def update_vpcs_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
nio_data: schemas.UDPNIO,
|
nio_data: schemas.UDPNIO,
|
||||||
@ -203,8 +193,7 @@ async def update_vpcs_node_nio(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
@router.delete("/{node_id}/adapters/{adapter_number}/ports/{port_number}/nio",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_vpcs_node_nio(adapter_number: int,
|
async def delete_vpcs_node_nio(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node: VPCSVM = Depends(dep_node)):
|
node: VPCSVM = Depends(dep_node)):
|
||||||
@ -216,8 +205,7 @@ async def delete_vpcs_node_nio(adapter_number: int,
|
|||||||
await node.port_remove_nio_binding(port_number)
|
await node.port_remove_nio_binding(port_number)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/start")
|
||||||
responses=responses)
|
|
||||||
async def start_vpcs_node_capture(adapter_number: int,
|
async def start_vpcs_node_capture(adapter_number: int,
|
||||||
port_number: int,
|
port_number: int,
|
||||||
node_capture_data: schemas.NodeCapture,
|
node_capture_data: schemas.NodeCapture,
|
||||||
@ -233,8 +221,7 @@ async def start_vpcs_node_capture(adapter_number: int,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
@router.post("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_vpcs_node_capture(adapter_number: int, port_number: int, node: VPCSVM = Depends(dep_node)):
|
async def stop_vpcs_node_capture(adapter_number: int, port_number: int, node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a packet capture on the node.
|
Stop a packet capture on the node.
|
||||||
@ -245,15 +232,13 @@ async def stop_vpcs_node_capture(adapter_number: int, port_number: int, node: VP
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset",
|
@router.post("/{node_id}/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reset_console(node: VPCSVM = Depends(dep_node)):
|
async def reset_console(node: VPCSVM = Depends(dep_node)):
|
||||||
|
|
||||||
await node.reset_console()
|
await node.reset_console()
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream",
|
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap_file(adapter_number: int, port_number: int, node: VPCSVM = Depends(dep_node)):
|
async def stream_pcap_file(adapter_number: int, port_number: int, node: VPCSVM = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stream the pcap capture file.
|
Stream the pcap capture file.
|
||||||
|
@ -27,12 +27,12 @@ from uuid import UUID
|
|||||||
from gns3server.controller import Controller
|
from gns3server.controller import Controller
|
||||||
from gns3server import schemas
|
from gns3server import schemas
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Project or drawing not found"}
|
404: {"model": schemas.ErrorMessage, "description": "Project or drawing not found"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
@router.get("",
|
@router.get("",
|
||||||
response_model=List[schemas.Drawing],
|
response_model=List[schemas.Drawing],
|
||||||
@ -48,8 +48,7 @@ async def get_drawings(project_id: UUID):
|
|||||||
|
|
||||||
@router.post("",
|
@router.post("",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.Drawing,
|
response_model=schemas.Drawing)
|
||||||
responses=responses)
|
|
||||||
async def create_drawing(project_id: UUID, drawing_data: schemas.Drawing):
|
async def create_drawing(project_id: UUID, drawing_data: schemas.Drawing):
|
||||||
"""
|
"""
|
||||||
Create a new drawing.
|
Create a new drawing.
|
||||||
@ -62,8 +61,7 @@ async def create_drawing(project_id: UUID, drawing_data: schemas.Drawing):
|
|||||||
|
|
||||||
@router.get("/{drawing_id}",
|
@router.get("/{drawing_id}",
|
||||||
response_model=schemas.Drawing,
|
response_model=schemas.Drawing,
|
||||||
response_model_exclude_unset=True,
|
response_model_exclude_unset=True)
|
||||||
responses=responses)
|
|
||||||
async def get_drawing(project_id: UUID, drawing_id: UUID):
|
async def get_drawing(project_id: UUID, drawing_id: UUID):
|
||||||
"""
|
"""
|
||||||
Return a drawing.
|
Return a drawing.
|
||||||
@ -76,8 +74,7 @@ async def get_drawing(project_id: UUID, drawing_id: UUID):
|
|||||||
|
|
||||||
@router.put("/{drawing_id}",
|
@router.put("/{drawing_id}",
|
||||||
response_model=schemas.Drawing,
|
response_model=schemas.Drawing,
|
||||||
response_model_exclude_unset=True,
|
response_model_exclude_unset=True)
|
||||||
responses=responses)
|
|
||||||
async def update_drawing(project_id: UUID, drawing_id: UUID, drawing_data: schemas.Drawing):
|
async def update_drawing(project_id: UUID, drawing_id: UUID, drawing_data: schemas.Drawing):
|
||||||
"""
|
"""
|
||||||
Update a drawing.
|
Update a drawing.
|
||||||
@ -90,8 +87,7 @@ async def update_drawing(project_id: UUID, drawing_id: UUID, drawing_data: schem
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{drawing_id}",
|
@router.delete("/{drawing_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_drawing(project_id: UUID, drawing_id: UUID):
|
async def delete_drawing(project_id: UUID, drawing_id: UUID):
|
||||||
"""
|
"""
|
||||||
Delete a drawing.
|
Delete a drawing.
|
||||||
|
@ -37,12 +37,12 @@ from gns3server import schemas
|
|||||||
import logging
|
import logging
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or link"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or link"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
async def dep_link(project_id: UUID, link_id: UUID):
|
async def dep_link(project_id: UUID, link_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -95,8 +95,7 @@ async def create_link(project_id: UUID, link_data: schemas.Link):
|
|||||||
return link.__json__()
|
return link.__json__()
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{link_id}/available_filters",
|
@router.get("/{link_id}/available_filters")
|
||||||
responses=responses)
|
|
||||||
async def get_filters(link: Link = Depends(dep_link)):
|
async def get_filters(link: Link = Depends(dep_link)):
|
||||||
"""
|
"""
|
||||||
Return all filters available for a given link.
|
Return all filters available for a given link.
|
||||||
@ -107,8 +106,7 @@ async def get_filters(link: Link = Depends(dep_link)):
|
|||||||
|
|
||||||
@router.get("/{link_id}",
|
@router.get("/{link_id}",
|
||||||
response_model=schemas.Link,
|
response_model=schemas.Link,
|
||||||
response_model_exclude_unset=True,
|
response_model_exclude_unset=True)
|
||||||
responses=responses)
|
|
||||||
async def get_link(link: Link = Depends(dep_link)):
|
async def get_link(link: Link = Depends(dep_link)):
|
||||||
"""
|
"""
|
||||||
Return a link.
|
Return a link.
|
||||||
@ -119,8 +117,7 @@ async def get_link(link: Link = Depends(dep_link)):
|
|||||||
|
|
||||||
@router.put("/{link_id}",
|
@router.put("/{link_id}",
|
||||||
response_model=schemas.Link,
|
response_model=schemas.Link,
|
||||||
response_model_exclude_unset=True,
|
response_model_exclude_unset=True)
|
||||||
responses=responses)
|
|
||||||
async def update_link(link_data: schemas.Link, link: Link = Depends(dep_link)):
|
async def update_link(link_data: schemas.Link, link: Link = Depends(dep_link)):
|
||||||
"""
|
"""
|
||||||
Update a link.
|
Update a link.
|
||||||
@ -137,8 +134,7 @@ async def update_link(link_data: schemas.Link, link: Link = Depends(dep_link)):
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{link_id}",
|
@router.delete("/{link_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_link(project_id: UUID, link: Link = Depends(dep_link)):
|
async def delete_link(project_id: UUID, link: Link = Depends(dep_link)):
|
||||||
"""
|
"""
|
||||||
Delete a link.
|
Delete a link.
|
||||||
@ -149,8 +145,7 @@ async def delete_link(project_id: UUID, link: Link = Depends(dep_link)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{link_id}/reset",
|
@router.post("/{link_id}/reset",
|
||||||
response_model=schemas.Link,
|
response_model=schemas.Link)
|
||||||
responses=responses)
|
|
||||||
async def reset_link(link: Link = Depends(dep_link)):
|
async def reset_link(link: Link = Depends(dep_link)):
|
||||||
"""
|
"""
|
||||||
Reset a link.
|
Reset a link.
|
||||||
@ -162,8 +157,7 @@ async def reset_link(link: Link = Depends(dep_link)):
|
|||||||
|
|
||||||
@router.post("/{link_id}/capture/start",
|
@router.post("/{link_id}/capture/start",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.Link,
|
response_model=schemas.Link)
|
||||||
responses=responses)
|
|
||||||
async def start_capture(capture_data: dict, link: Link = Depends(dep_link)):
|
async def start_capture(capture_data: dict, link: Link = Depends(dep_link)):
|
||||||
"""
|
"""
|
||||||
Start packet capture on the link.
|
Start packet capture on the link.
|
||||||
@ -175,8 +169,7 @@ async def start_capture(capture_data: dict, link: Link = Depends(dep_link)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{link_id}/capture/stop",
|
@router.post("/{link_id}/capture/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_capture(link: Link = Depends(dep_link)):
|
async def stop_capture(link: Link = Depends(dep_link)):
|
||||||
"""
|
"""
|
||||||
Stop packet capture on the link.
|
Stop packet capture on the link.
|
||||||
@ -185,8 +178,7 @@ async def stop_capture(link: Link = Depends(dep_link)):
|
|||||||
await link.stop_capture()
|
await link.stop_capture()
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{link_id}/capture/stream",
|
@router.get("/{link_id}/capture/stream")
|
||||||
responses=responses)
|
|
||||||
async def stream_pcap(request: Request, link: Link = Depends(dep_link)):
|
async def stream_pcap(request: Request, link: Link = Depends(dep_link)):
|
||||||
"""
|
"""
|
||||||
Stream the PCAP capture file from compute.
|
Stream the PCAP capture file from compute.
|
||||||
|
@ -76,12 +76,12 @@ class NodeConcurrency(APIRoute):
|
|||||||
return custom_route_handler
|
return custom_route_handler
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter(route_class=NodeConcurrency)
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or node"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or node"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(route_class=NodeConcurrency, responses=responses)
|
||||||
|
|
||||||
|
|
||||||
async def dep_project(project_id: UUID):
|
async def dep_project(project_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -133,8 +133,7 @@ async def get_nodes(project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/start",
|
@router.post("/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_all_nodes(project: Project = Depends(dep_project)):
|
async def start_all_nodes(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Start all nodes belonging to a given project.
|
Start all nodes belonging to a given project.
|
||||||
@ -144,8 +143,7 @@ async def start_all_nodes(project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/stop",
|
@router.post("/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_all_nodes(project: Project = Depends(dep_project)):
|
async def stop_all_nodes(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Stop all nodes belonging to a given project.
|
Stop all nodes belonging to a given project.
|
||||||
@ -155,8 +153,7 @@ async def stop_all_nodes(project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/suspend",
|
@router.post("/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_all_nodes(project: Project = Depends(dep_project)):
|
async def suspend_all_nodes(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Suspend all nodes belonging to a given project.
|
Suspend all nodes belonging to a given project.
|
||||||
@ -166,8 +163,7 @@ async def suspend_all_nodes(project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/reload",
|
@router.post("/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_all_nodes(project: Project = Depends(dep_project)):
|
async def reload_all_nodes(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Reload all nodes belonging to a given project.
|
Reload all nodes belonging to a given project.
|
||||||
@ -178,8 +174,7 @@ async def reload_all_nodes(project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}",
|
@router.get("/{node_id}",
|
||||||
response_model=schemas.Node,
|
response_model=schemas.Node)
|
||||||
responses=responses)
|
|
||||||
def get_node(node: Node = Depends(dep_node)):
|
def get_node(node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a node from a given project.
|
Return a node from a given project.
|
||||||
@ -190,8 +185,7 @@ def get_node(node: Node = Depends(dep_node)):
|
|||||||
|
|
||||||
@router.put("/{node_id}",
|
@router.put("/{node_id}",
|
||||||
response_model=schemas.Node,
|
response_model=schemas.Node,
|
||||||
response_model_exclude_unset=True,
|
response_model_exclude_unset=True)
|
||||||
responses=responses)
|
|
||||||
async def update_node(node_data: schemas.NodeUpdate, node: Node = Depends(dep_node)):
|
async def update_node(node_data: schemas.NodeUpdate, node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Update a node.
|
Update a node.
|
||||||
@ -222,8 +216,7 @@ async def delete_node(node_id: UUID, project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
@router.post("/{node_id}/duplicate",
|
@router.post("/{node_id}/duplicate",
|
||||||
response_model=schemas.Node,
|
response_model=schemas.Node,
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def duplicate_node(duplicate_data: schemas.NodeDuplicate, node: Node = Depends(dep_node)):
|
async def duplicate_node(duplicate_data: schemas.NodeDuplicate, node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Duplicate a node.
|
Duplicate a node.
|
||||||
@ -237,8 +230,7 @@ async def duplicate_node(duplicate_data: schemas.NodeDuplicate, node: Node = Dep
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/start",
|
@router.post("/{node_id}/start",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def start_node(start_data: dict, node: Node = Depends(dep_node)):
|
async def start_node(start_data: dict, node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Start a node.
|
Start a node.
|
||||||
@ -248,8 +240,7 @@ async def start_node(start_data: dict, node: Node = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/stop",
|
@router.post("/{node_id}/stop",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def stop_node(node: Node = Depends(dep_node)):
|
async def stop_node(node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Stop a node.
|
Stop a node.
|
||||||
@ -259,8 +250,7 @@ async def stop_node(node: Node = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/suspend",
|
@router.post("/{node_id}/suspend",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def suspend_node(node: Node = Depends(dep_node)):
|
async def suspend_node(node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Suspend a node.
|
Suspend a node.
|
||||||
@ -270,8 +260,7 @@ async def suspend_node(node: Node = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/reload",
|
@router.post("/{node_id}/reload",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reload_node(node: Node = Depends(dep_node)):
|
async def reload_node(node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Reload a node.
|
Reload a node.
|
||||||
@ -294,8 +283,7 @@ async def get_node_links(node: Node = Depends(dep_node)):
|
|||||||
return links
|
return links
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/dynamips/auto_idlepc",
|
@router.get("/{node_id}/dynamips/auto_idlepc")
|
||||||
responses=responses)
|
|
||||||
async def auto_idlepc(node: Node = Depends(dep_node)):
|
async def auto_idlepc(node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Compute an Idle-PC value for a Dynamips node
|
Compute an Idle-PC value for a Dynamips node
|
||||||
@ -304,8 +292,7 @@ async def auto_idlepc(node: Node = Depends(dep_node)):
|
|||||||
return await node.dynamips_auto_idlepc()
|
return await node.dynamips_auto_idlepc()
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/dynamips/idlepc_proposals",
|
@router.get("/{node_id}/dynamips/idlepc_proposals")
|
||||||
responses=responses)
|
|
||||||
async def idlepc_proposals(node: Node = Depends(dep_node)):
|
async def idlepc_proposals(node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Compute a list of potential idle-pc values for a Dynamips node
|
Compute a list of potential idle-pc values for a Dynamips node
|
||||||
@ -315,8 +302,7 @@ async def idlepc_proposals(node: Node = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/resize_disk",
|
@router.post("/{node_id}/resize_disk",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def resize_disk(resize_data: dict, node: Node = Depends(dep_node)):
|
async def resize_disk(resize_data: dict, node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Resize a disk image.
|
Resize a disk image.
|
||||||
@ -324,8 +310,7 @@ async def resize_disk(resize_data: dict, node: Node = Depends(dep_node)):
|
|||||||
await node.post("/resize_disk", **resize_data)
|
await node.post("/resize_disk", **resize_data)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{node_id}/files/{file_path:path}",
|
@router.get("/{node_id}/files/{file_path:path}")
|
||||||
responses=responses)
|
|
||||||
async def get_file(file_path: str, node: Node = Depends(dep_node)):
|
async def get_file(file_path: str, node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Return a file in the node directory
|
Return a file in the node directory
|
||||||
@ -347,8 +332,7 @@ async def get_file(file_path: str, node: Node = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/files/{file_path:path}",
|
@router.post("/{node_id}/files/{file_path:path}",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED)
|
||||||
responses=responses)
|
|
||||||
async def post_file(file_path: str, request: Request, node: Node = Depends(dep_node)):
|
async def post_file(file_path: str, request: Request, node: Node = Depends(dep_node)):
|
||||||
"""
|
"""
|
||||||
Write a file in the node directory.
|
Write a file in the node directory.
|
||||||
@ -414,8 +398,7 @@ async def ws_console(websocket: WebSocket, node: Node = Depends(dep_node)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/console/reset",
|
@router.post("/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def reset_console_all_nodes(project: Project = Depends(dep_project)):
|
async def reset_console_all_nodes(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Reset console for all nodes belonging to the project.
|
Reset console for all nodes belonging to the project.
|
||||||
@ -425,8 +408,7 @@ async def reset_console_all_nodes(project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/{node_id}/console/reset",
|
@router.post("/{node_id}/console/reset",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def console_reset(node: Node = Depends(dep_node)):
|
async def console_reset(node: Node = Depends(dep_node)):
|
||||||
|
|
||||||
await node.post("/console/reset")#, request.json)
|
await node.post("/console/reset")#, request.json)
|
||||||
|
@ -46,13 +46,12 @@ from gns3server.controller.export_project import export_project as export_contro
|
|||||||
from gns3server.utils.asyncio import aiozipstream
|
from gns3server.utils.asyncio import aiozipstream
|
||||||
from gns3server.config import Config
|
from gns3server.config import Config
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_project(project_id: UUID):
|
def dep_project(project_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -94,8 +93,7 @@ async def create_project(project_data: schemas.ProjectCreate):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{project_id}",
|
@router.get("/{project_id}",
|
||||||
response_model=schemas.Project,
|
response_model=schemas.Project)
|
||||||
responses=responses)
|
|
||||||
def get_project(project: Project = Depends(dep_project)):
|
def get_project(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Return a project.
|
Return a project.
|
||||||
@ -106,8 +104,7 @@ def get_project(project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
@router.put("/{project_id}",
|
@router.put("/{project_id}",
|
||||||
response_model=schemas.Project,
|
response_model=schemas.Project,
|
||||||
response_model_exclude_unset=True,
|
response_model_exclude_unset=True)
|
||||||
responses=responses)
|
|
||||||
async def update_project(project_data: schemas.ProjectUpdate, project: Project = Depends(dep_project)):
|
async def update_project(project_data: schemas.ProjectUpdate, project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Update a project.
|
Update a project.
|
||||||
@ -118,8 +115,7 @@ async def update_project(project_data: schemas.ProjectUpdate, project: Project =
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{project_id}",
|
@router.delete("/{project_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_project(project: Project = Depends(dep_project)):
|
async def delete_project(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Delete a project.
|
Delete a project.
|
||||||
@ -130,8 +126,7 @@ async def delete_project(project: Project = Depends(dep_project)):
|
|||||||
controller.remove_project(project)
|
controller.remove_project(project)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{project_id}/stats",
|
@router.get("/{project_id}/stats")
|
||||||
responses=responses)
|
|
||||||
def get_project_stats(project: Project = Depends(dep_project)):
|
def get_project_stats(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Return a project statistics.
|
Return a project statistics.
|
||||||
@ -253,8 +248,7 @@ async def notification_ws(project_id: UUID, websocket: WebSocket):
|
|||||||
await project.close()
|
await project.close()
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{project_id}/export",
|
@router.get("/{project_id}/export")
|
||||||
responses=responses)
|
|
||||||
async def export_project(project: Project = Depends(dep_project),
|
async def export_project(project: Project = Depends(dep_project),
|
||||||
include_snapshots: bool = False,
|
include_snapshots: bool = False,
|
||||||
include_images: bool = False,
|
include_images: bool = False,
|
||||||
@ -304,8 +298,7 @@ async def export_project(project: Project = Depends(dep_project),
|
|||||||
|
|
||||||
@router.post("/{project_id}/import",
|
@router.post("/{project_id}/import",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.Project,
|
response_model=schemas.Project)
|
||||||
responses=responses)
|
|
||||||
async def import_project(project_id: UUID, request: Request, path: Optional[Path] = None, name: Optional[str] = None):
|
async def import_project(project_id: UUID, request: Request, path: Optional[Path] = None, name: Optional[str] = None):
|
||||||
"""
|
"""
|
||||||
Import a project from a portable archive.
|
Import a project from a portable archive.
|
||||||
|
@ -30,12 +30,12 @@ from gns3server.controller.project import Project
|
|||||||
from gns3server import schemas
|
from gns3server import schemas
|
||||||
from gns3server.controller import Controller
|
from gns3server.controller import Controller
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
responses = {
|
responses = {
|
||||||
404: {"model": schemas.ErrorMessage, "description": "Could not find project or snapshot"}
|
404: {"model": schemas.ErrorMessage, "description": "Could not find project or snapshot"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router = APIRouter(responses=responses)
|
||||||
|
|
||||||
|
|
||||||
def dep_project(project_id: UUID):
|
def dep_project(project_id: UUID):
|
||||||
"""
|
"""
|
||||||
@ -48,8 +48,7 @@ def dep_project(project_id: UUID):
|
|||||||
|
|
||||||
@router.post("",
|
@router.post("",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.Snapshot,
|
response_model=schemas.Snapshot)
|
||||||
responses=responses)
|
|
||||||
async def create_snapshot(snapshot_data: schemas.SnapshotCreate, project: Project = Depends(dep_project)):
|
async def create_snapshot(snapshot_data: schemas.SnapshotCreate, project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Create a new snapshot of a project.
|
Create a new snapshot of a project.
|
||||||
@ -61,8 +60,7 @@ async def create_snapshot(snapshot_data: schemas.SnapshotCreate, project: Projec
|
|||||||
|
|
||||||
@router.get("",
|
@router.get("",
|
||||||
response_model=List[schemas.Snapshot],
|
response_model=List[schemas.Snapshot],
|
||||||
response_model_exclude_unset=True,
|
response_model_exclude_unset=True)
|
||||||
responses=responses)
|
|
||||||
def get_snapshots(project: Project = Depends(dep_project)):
|
def get_snapshots(project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Return all snapshots belonging to a given project.
|
Return all snapshots belonging to a given project.
|
||||||
@ -73,8 +71,7 @@ def get_snapshots(project: Project = Depends(dep_project)):
|
|||||||
|
|
||||||
|
|
||||||
@router.delete("/{snapshot_id}",
|
@router.delete("/{snapshot_id}",
|
||||||
status_code=status.HTTP_204_NO_CONTENT,
|
status_code=status.HTTP_204_NO_CONTENT)
|
||||||
responses=responses)
|
|
||||||
async def delete_snapshot(snapshot_id: UUID, project: Project = Depends(dep_project)):
|
async def delete_snapshot(snapshot_id: UUID, project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Delete a snapshot.
|
Delete a snapshot.
|
||||||
@ -85,8 +82,7 @@ async def delete_snapshot(snapshot_id: UUID, project: Project = Depends(dep_proj
|
|||||||
|
|
||||||
@router.post("/{snapshot_id}/restore",
|
@router.post("/{snapshot_id}/restore",
|
||||||
status_code=status.HTTP_201_CREATED,
|
status_code=status.HTTP_201_CREATED,
|
||||||
response_model=schemas.Project,
|
response_model=schemas.Project)
|
||||||
responses=responses)
|
|
||||||
async def restore_snapshot(snapshot_id: UUID, project: Project = Depends(dep_project)):
|
async def restore_snapshot(snapshot_id: UUID, project: Project = Depends(dep_project)):
|
||||||
"""
|
"""
|
||||||
Restore a snapshot.
|
Restore a snapshot.
|
||||||
|
Loading…
Reference in New Issue
Block a user