Welcome to API documentation!¶
Warning
The API is not stable, feel free to post comments on our website https://gns3.com/
Communications¶
All the communication are done over HTTP using JSON.
Errors¶
In case of error a standard HTTP error is raise and you got a JSON like that
{
"status": 409,
"message": "Conflict"
}
Sample session using curl¶
Warning
Beware the output of this sample is truncated in order to simplify the understanding. Please read the documentation for the exact output.
You can check the server version with a simple curl command:
# curl "http://localhost:8000/v1/version"
{
"version": "1.3.dev1"
}
The next step is to create a project.
# curl -X POST "http://localhost:8000/v1/projects" -d '{"name": "test"}'
{
"project_id": "42f9feee-3217-4104-981e-85d5f0a806ec",
"temporary": false,
"name": "Test"
}
With this project id we can now create two VPCS VM.
# curl -X POST "http://localhost:8000/v1/projects/42f9feee-3217-4104-981e-85d5f0a806ec/vpcs/vms" -d '{"name": "VPCS 1"}'
{
"console": 2000,
"name": "VPCS 1",
"project_id": "42f9feee-3217-4104-981e-85d5f0a806ec",
"vm_id": "24d2e16b-fbef-4259-ae34-7bc21a41ee28"
}%
# curl -X POST "http://localhost:8000/v1/projects/42f9feee-3217-4104-981e-85d5f0a806ec/vpcs/vms" -d '{"name": "VPCS 2"}'
{
"console": 2001,
"name": "VPCS 2",
"vm_id": "daefc24a-103c-4717-8e01-6517d931c1ae"
}
Now we need to link the two VPCS. The first step is to allocate on the remote servers two UDP ports.
# curl -X POST "http://localhost:8000/v1/projects/42f9feee-3217-4104-981e-85d5f0a806ec/ports/udp" -d '{}'
{
"udp_port": 10000
}
# curl -X POST "http://localhost:8000/v1/projects/42f9feee-3217-4104-981e-85d5f0a806ec/ports/udp" -d '{}'
{
"udp_port": 10001
}
We can create the bidirectionnal communication between the two VPCS. The communication is made by creating two UDP tunnels.
# curl -X POST "http://localhost:8000/v1/projects/42f9feee-3217-4104-981e-85d5f0a806ec/vpcs/vms/24d2e16b-fbef-4259-ae34-7bc21a41ee28/adapters/0/ports/0/nio" -d '{"lport": 10000, "rhost": "127.0.0.1", "rport": 10001, "type": "nio_udp"}'
{
"lport": 10000,
"rhost": "127.0.0.1",
"rport": 10001,
"type": "nio_udp"
}
# curl -X POST "http://localhost:8000/v1/projects/42f9feee-3217-4104-981e-85d5f0a806ec/vpcs/vms/daefc24a-103c-4717-8e01-6517d931c1ae/adapters/0/ports/0/nio" -d '{"lport": 10001, "rhost": "127.0.0.1", "rport": 10000, "type": "nio_udp"}'
{
"lport": 10001,
"rhost": "127.0.0.1",
"rport": 10000,
"type": "nio_udp"
}
Now we can start the two VM
# curl -X POST "http://localhost:8000/v1/projects/42f9feee-3217-4104-981e-85d5f0a806ec/vpcs/vms/24d2e16b-fbef-4259-ae34-7bc21a41ee28/start" -d "{}"
# curl -X POST "http://localhost:8000/v1/projects/42f9feee-3217-4104-981e-85d5f0a806ec/vpcs/vms/daefc24a-103c-4717-8e01-6517d931c1ae/start" -d '{}'
Everything should be started now. You can connect via telnet to the different VM. The port is the field console in the create VM request.
# telnet 127.0.0.1 2000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to Virtual PC Simulator, version 0.6
Dedicated to Daling.
Build time: Dec 29 2014 12:51:46
Copyright (c) 2007-2014, Paul Meng (mirnshi@gmail.com)
All rights reserved.
VPCS is free software, distributed under the terms of the "BSD" licence.
Source code and license can be found at vpcs.sf.net.
For more information, please visit wiki.freecode.com.cn.
Press '?' to get help.
VPCS> ip 192.168.1.1
Checking for duplicate address...
PC1 : 192.168.1.1 255.255.255.0
VPCS> disconnect
Good-bye
Connection closed by foreign host.
# telnet 127.0.0.1 2001
telnet 127.0.0.1 2001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to Virtual PC Simulator, version 0.6
Dedicated to Daling.
Build time: Dec 29 2014 12:51:46
Copyright (c) 2007-2014, Paul Meng (mirnshi@gmail.com)
All rights reserved.
VPCS is free software, distributed under the terms of the "BSD" licence.
Source code and license can be found at vpcs.sf.net.
For more information, please visit wiki.freecode.com.cn.
Press '?' to get help.
VPCS> ip 192.168.1.2
Checking for duplicate address...
PC1 : 192.168.1.2 255.255.255.0
VPCS> ping 192.168.1.1
84 bytes from 192.168.1.1 icmp_seq=1 ttl=64 time=0.179 ms
84 bytes from 192.168.1.1 icmp_seq=2 ttl=64 time=0.218 ms
84 bytes from 192.168.1.1 icmp_seq=3 ttl=64 time=0.190 ms
84 bytes from 192.168.1.1 icmp_seq=4 ttl=64 time=0.198 ms
84 bytes from 192.168.1.1 icmp_seq=5 ttl=64 time=0.185 ms
VPCS> disconnect
Good-bye
Connection closed by foreign host.
Limitations¶
Concurrency¶
A VM can’t process multiple request in the same time. But you can make multiple request on multiple VM. It’s transparent for the client when the first request on a VM start a lock is acquire for this VM id and released for the next request at the end. You can safely send all the requests in the same time and let the server manage an efficent concurrency.
We think it can be a little slower for some operations, but it’s remove a big complexity for the client due to the fact only some command on some VM can be concurrent.
Authentification¶
In this version of the API you have no authentification system. If you listen on your network interface instead of localhost be carefull. Due to the nature of the multiple supported VM it’s easy for an user to upload and run code on your machine.
Glossary¶
VM¶
A Virtual Machine (Dynamips, IOU, Qemu, VPCS...)
Adapter¶
The physical network interface. The adapter can contain multiple ports.
Port¶
A port is an opening on network adapter that cable plug into.
For example a VM can have a serial and an ethernet adapter plugged in. The ethernet adapter can have 4 ports.
API Endpoints¶
Config¶
/v1/config/reload¶
POST /v1/config/reload¶
Check if version is the same as the server
Response status codes¶
- 201: Config reload
- 403: Config reload refused
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/config/reload' -d '{}'
POST /v1/config/reload HTTP/1.1
{}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/config/reload
Dynamips device¶
/v1/projects/{project_id}/dynamips/devices¶
Contents
POST /v1/projects/{project_id}/dynamips/devices¶
Create a new Dynamips device instance
Parameters¶
- project_id: UUID for the project
Response status codes¶
- 400: Invalid request
- 201: Instance created
- 409: Conflict
/v1/projects/{project_id}/dynamips/devices/{device_id}¶
Contents
GET /v1/projects/{project_id}/dynamips/devices/{device_id}¶
Get a Dynamips device instance
Parameters¶
- project_id: UUID for the project
- device_id: UUID for the instance
Response status codes¶
- 200: Success
- 400: Invalid request
- 404: Instance doesn’t exist
PUT /v1/projects/{project_id}/dynamips/devices/{device_id}¶
Update a Dynamips device instance
Parameters¶
- project_id: UUID for the project
- device_id: UUID for the instance
Response status codes¶
- 200: Instance updated
- 400: Invalid request
- 404: Instance doesn’t exist
- 409: Conflict
DELETE /v1/projects/{project_id}/dynamips/devices/{device_id}¶
Delete a Dynamips device instance
Parameters¶
- project_id: UUID for the project
- device_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance deleted
/v1/projects/{project_id}/dynamips/devices/{device_id}/ports/{port_number:d+}/nio¶
Contents
POST /v1/projects/{project_id}/dynamips/devices/{device_id}/ports/{port_number:d+}/nio¶
Add a NIO to a Dynamips device instance
Parameters¶
- project_id: UUID for the project
- port_number: Port on the device
- device_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 201: NIO created
- 404: Instance doesn’t exist
Input¶
Generic Ethernet Network Input/Output
Name | Mandatory | Type | Description |
---|---|---|---|
ethernet_device | ✔ | string | Ethernet device name e.g. eth0 |
type | ✔ | enum | Possible values: nio_generic_ethernet |
Linux Ethernet Network Input/Output
Name | Mandatory | Type | Description |
---|---|---|---|
ethernet_device | ✔ | string | Ethernet device name e.g. eth0 |
type | ✔ | enum | Possible values: nio_linux_ethernet |
NULL Network Input/Output
Name | Mandatory | Type | Description |
---|---|---|---|
type | ✔ | enum | Possible values: nio_null |
TAP Network Input/Output
Name | Mandatory | Type | Description |
---|---|---|---|
tap_device | ✔ | string | TAP device name e.g. tap0 |
type | ✔ | enum | Possible values: nio_tap |
UDP Network Input/Output
Name | Mandatory | Type | Description |
---|---|---|---|
lport | ✔ | integer | Local port |
rhost | ✔ | string | Remote host |
rport | ✔ | integer | Remote port |
type | ✔ | enum | Possible values: nio_udp |
DELETE /v1/projects/{project_id}/dynamips/devices/{device_id}/ports/{port_number:d+}/nio¶
Remove a NIO from a Dynamips device instance
Parameters¶
- project_id: UUID for the project
- port_number: Port on the device
- device_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: NIO deleted
/v1/projects/{project_id}/dynamips/devices/{device_id}/ports/{port_number:d+}/start_capture¶
Contents
POST /v1/projects/{project_id}/dynamips/devices/{device_id}/ports/{port_number:d+}/start_capture¶
Start a packet capture on a Dynamips device instance
Parameters¶
- project_id: UUID for the project
- port_number: Port on the device
- device_id: UUID for the instance
Response status codes¶
- 200: Capture started
- 400: Invalid request
- 404: Instance doesn’t exist
/v1/projects/{project_id}/dynamips/devices/{device_id}/ports/{port_number:d+}/stop_capture¶
Contents
POST /v1/projects/{project_id}/dynamips/devices/{device_id}/ports/{port_number:d+}/stop_capture¶
Stop a packet capture on a Dynamips device instance
Parameters¶
- project_id: UUID for the project
- port_number: Port on the device
- device_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Capture stopped
Dynamips vm¶
/v1/projects/{project_id}/dynamips/vms¶
Contents
POST /v1/projects/{project_id}/dynamips/vms¶
Create a new Dynamips VM instance
Parameters¶
- project_id: UUID for the project
Response status codes¶
- 400: Invalid request
- 201: Instance created
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
aux | integer | auxiliary console TCP port | |
chassis | string | router chassis model | |
clock_divisor | integer | clock divisor | |
console | integer | console TCP port | |
disk0 | integer | disk0 size in MB | |
disk1 | integer | disk1 size in MB | |
dynamips_id | integer | ID to use with Dynamips | |
exec_area | integer | exec area value | |
idlemax | integer | idlemax value | |
idlepc | string | Idle-PC value | |
idlesleep | integer | idlesleep value | |
image | ✔ | string | path to the IOS image |
iomem | integer | I/O memory percentage | |
mac_addr | string | base MAC address | |
midplane | enum | Possible values: std, vxr | |
mmap | boolean | MMAP feature | |
name | ✔ | string | Dynamips VM instance name |
npe | enum | Possible values: npe-100, npe-150, npe-175, npe-200, npe-225, npe-300, npe-400, npe-g2 | |
nvram | integer | amount of NVRAM in KB | |
platform | ✔ | string | platform |
power_supplies | array | Power supplies status | |
private_config | string | path to the IOS private configuration file | |
private_config_base64 | string | private configuration base64 encoded | |
private_config_content | string | Content of IOS private configuration file | |
ram | ✔ | integer | amount of RAM in MB |
sensors | array | Temperature sensors | |
slot0 | Network module slot 0 | ||
slot1 | Network module slot 1 | ||
slot2 | Network module slot 2 | ||
slot3 | Network module slot 3 | ||
slot4 | Network module slot 4 | ||
slot5 | Network module slot 5 | ||
slot6 | Network module slot 6 | ||
sparsemem | boolean | sparse memory feature | |
startup_config | string | path to the IOS startup configuration file | |
startup_config_base64 | string | startup configuration base64 encoded | |
startup_config_content | string | Content of IOS startup configuration file | |
system_id | string | system ID | |
vm_id | Dynamips VM instance identifier | ||
wic0 | Network module WIC slot 0 | ||
wic1 | Network module WIC slot 0 | ||
wic2 | Network module WIC slot 0 |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
aux | ['integer', 'null'] | auxiliary console TCP port | |
chassis | string | router chassis model | |
clock_divisor | integer | clock divisor | |
console | integer | console TCP port | |
disk0 | integer | disk0 size in MB | |
disk1 | integer | disk1 size in MB | |
dynamips_id | ✔ | integer | ID to use with Dynamips |
exec_area | integer | exec area value | |
idlemax | integer | idlemax value | |
idlepc | string | Idle-PC value | |
idlesleep | integer | idlesleep value | |
image | string | path to the IOS image | |
iomem | integer | I/O memory percentage | |
mac_addr | string | base MAC address | |
midplane | enum | Possible values: std, vxr | |
mmap | boolean | MMAP feature | |
name | ✔ | string | Dynamips VM instance name |
npe | enum | Possible values: npe-100, npe-150, npe-175, npe-200, npe-225, npe-300, npe-400, npe-g2 | |
nvram | integer | amount of NVRAM in KB | |
platform | string | platform | |
power_supplies | array | Power supplies status | |
private_config | string | path to the IOS private configuration file | |
private_config_base64 | string | private configuration base64 encoded | |
project_id | ✔ | string | Project UUID |
ram | integer | amount of RAM in MB | |
sensors | array | Temperature sensors | |
slot0 | Network module slot 0 | ||
slot1 | Network module slot 1 | ||
slot2 | Network module slot 2 | ||
slot3 | Network module slot 3 | ||
slot4 | Network module slot 4 | ||
slot5 | Network module slot 5 | ||
slot6 | Network module slot 6 | ||
sparsemem | boolean | sparse memory feature | |
startup_config | string | path to the IOS startup configuration file | |
startup_config_base64 | string | startup configuration base64 encoded | |
system_id | string | system ID | |
vm_id | ✔ | string | Dynamips router instance UUID |
wic0 | Network module WIC slot 0 | ||
wic1 | Network module WIC slot 0 | ||
wic2 | Network module WIC slot 0 |
/v1/projects/{project_id}/dynamips/vms/{vm_id}¶
GET /v1/projects/{project_id}/dynamips/vms/{vm_id}¶
Get a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Success
- 400: Invalid request
- 404: Instance doesn’t exist
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
aux | ['integer', 'null'] | auxiliary console TCP port | |
chassis | string | router chassis model | |
clock_divisor | integer | clock divisor | |
console | integer | console TCP port | |
disk0 | integer | disk0 size in MB | |
disk1 | integer | disk1 size in MB | |
dynamips_id | ✔ | integer | ID to use with Dynamips |
exec_area | integer | exec area value | |
idlemax | integer | idlemax value | |
idlepc | string | Idle-PC value | |
idlesleep | integer | idlesleep value | |
image | string | path to the IOS image | |
iomem | integer | I/O memory percentage | |
mac_addr | string | base MAC address | |
midplane | enum | Possible values: std, vxr | |
mmap | boolean | MMAP feature | |
name | ✔ | string | Dynamips VM instance name |
npe | enum | Possible values: npe-100, npe-150, npe-175, npe-200, npe-225, npe-300, npe-400, npe-g2 | |
nvram | integer | amount of NVRAM in KB | |
platform | string | platform | |
power_supplies | array | Power supplies status | |
private_config | string | path to the IOS private configuration file | |
private_config_base64 | string | private configuration base64 encoded | |
project_id | ✔ | string | Project UUID |
ram | integer | amount of RAM in MB | |
sensors | array | Temperature sensors | |
slot0 | Network module slot 0 | ||
slot1 | Network module slot 1 | ||
slot2 | Network module slot 2 | ||
slot3 | Network module slot 3 | ||
slot4 | Network module slot 4 | ||
slot5 | Network module slot 5 | ||
slot6 | Network module slot 6 | ||
sparsemem | boolean | sparse memory feature | |
startup_config | string | path to the IOS startup configuration file | |
startup_config_base64 | string | startup configuration base64 encoded | |
system_id | string | system ID | |
vm_id | ✔ | string | Dynamips router instance UUID |
wic0 | Network module WIC slot 0 | ||
wic1 | Network module WIC slot 0 | ||
wic2 | Network module WIC slot 0 |
PUT /v1/projects/{project_id}/dynamips/vms/{vm_id}¶
Update a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Instance updated
- 400: Invalid request
- 404: Instance doesn’t exist
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
aux | integer | auxiliary console TCP port | |
chassis | string | router chassis model | |
clock_divisor | integer | clock divisor | |
console | integer | console TCP port | |
disk0 | integer | disk0 size in MB | |
disk1 | integer | disk1 size in MB | |
exec_area | integer | exec area value | |
idlemax | integer | idlemax value | |
idlepc | string | Idle-PC value | |
idlesleep | integer | idlesleep value | |
image | string | path to the IOS image | |
iomem | integer | I/O memory percentage | |
mac_addr | string | base MAC address | |
midplane | enum | Possible values: std, vxr | |
mmap | boolean | MMAP feature | |
name | string | Dynamips VM instance name | |
npe | enum | Possible values: npe-100, npe-150, npe-175, npe-200, npe-225, npe-300, npe-400, npe-g2 | |
nvram | integer | amount of NVRAM in KB | |
platform | string | platform | |
power_supplies | array | Power supplies status | |
private_config | string | path to the IOS private configuration file | |
private_config_base64 | string | private configuration base64 encoded | |
private_config_content | string | Content of IOS private configuration file | |
ram | integer | amount of RAM in MB | |
sensors | array | Temperature sensors | |
slot0 | Network module slot 0 | ||
slot1 | Network module slot 1 | ||
slot2 | Network module slot 2 | ||
slot3 | Network module slot 3 | ||
slot4 | Network module slot 4 | ||
slot5 | Network module slot 5 | ||
slot6 | Network module slot 6 | ||
sparsemem | boolean | sparse memory feature | |
startup_config | string | path to the IOS startup configuration file | |
startup_config_base64 | string | startup configuration base64 encoded | |
startup_config_content | string | Content of IOS startup configuration file | |
system_id | string | system ID | |
wic0 | Network module WIC slot 0 | ||
wic1 | Network module WIC slot 0 | ||
wic2 | Network module WIC slot 0 |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
aux | ['integer', 'null'] | auxiliary console TCP port | |
chassis | string | router chassis model | |
clock_divisor | integer | clock divisor | |
console | integer | console TCP port | |
disk0 | integer | disk0 size in MB | |
disk1 | integer | disk1 size in MB | |
dynamips_id | ✔ | integer | ID to use with Dynamips |
exec_area | integer | exec area value | |
idlemax | integer | idlemax value | |
idlepc | string | Idle-PC value | |
idlesleep | integer | idlesleep value | |
image | string | path to the IOS image | |
iomem | integer | I/O memory percentage | |
mac_addr | string | base MAC address | |
midplane | enum | Possible values: std, vxr | |
mmap | boolean | MMAP feature | |
name | ✔ | string | Dynamips VM instance name |
npe | enum | Possible values: npe-100, npe-150, npe-175, npe-200, npe-225, npe-300, npe-400, npe-g2 | |
nvram | integer | amount of NVRAM in KB | |
platform | string | platform | |
power_supplies | array | Power supplies status | |
private_config | string | path to the IOS private configuration file | |
private_config_base64 | string | private configuration base64 encoded | |
project_id | ✔ | string | Project UUID |
ram | integer | amount of RAM in MB | |
sensors | array | Temperature sensors | |
slot0 | Network module slot 0 | ||
slot1 | Network module slot 1 | ||
slot2 | Network module slot 2 | ||
slot3 | Network module slot 3 | ||
slot4 | Network module slot 4 | ||
slot5 | Network module slot 5 | ||
slot6 | Network module slot 6 | ||
sparsemem | boolean | sparse memory feature | |
startup_config | string | path to the IOS startup configuration file | |
startup_config_base64 | string | startup configuration base64 encoded | |
system_id | string | system ID | |
vm_id | ✔ | string | Dynamips router instance UUID |
wic0 | Network module WIC slot 0 | ||
wic1 | Network module WIC slot 0 | ||
wic2 | Network module WIC slot 0 |
DELETE /v1/projects/{project_id}/dynamips/vms/{vm_id}¶
Delete a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance deleted
/v1/projects/{project_id}/dynamips/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Add a NIO to a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter where the nio should be added
- port_number: Port on the adapter
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 201: NIO created
- 404: Instance doesn’t exist
DELETE /v1/projects/{project_id}/dynamips/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Remove a NIO from a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter from where the nio should be removed
- port_number: Port on the adapter
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: NIO deleted
/v1/projects/{project_id}/dynamips/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/start_capture¶
Contents
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/start_capture¶
Start a packet capture on a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter to start a packet capture
- port_number: Port on the adapter
- vm_id: UUID for the instance
Response status codes¶
- 200: Capture started
- 400: Invalid request
- 404: Instance doesn’t exist
/v1/projects/{project_id}/dynamips/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/stop_capture¶
Contents
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/stop_capture¶
Stop a packet capture on a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter to stop a packet capture
- port_number: Port on the adapter (always 0)
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Capture stopped
/v1/projects/{project_id}/dynamips/vms/{vm_id}/auto_idlepc¶
Contents
GET /v1/projects/{project_id}/dynamips/vms/{vm_id}/auto_idlepc¶
Retrieve the idlepc proposals
Response status codes¶
- 200: Best Idle-pc value found
- 400: Invalid request
- 404: Instance doesn’t exist
/v1/projects/{project_id}/dynamips/vms/{vm_id}/configs¶
Contents
GET /v1/projects/{project_id}/dynamips/vms/{vm_id}/configs¶
Retrieve the startup and private configs content
Response status codes¶
- 200: Configs retrieved
- 400: Invalid request
- 404: Instance doesn’t exist
/v1/projects/{project_id}/dynamips/vms/{vm_id}/configs/save¶
Contents
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/configs/save¶
Save the startup and private configs content
Response status codes¶
- 200: Configs saved
- 400: Invalid request
- 404: Instance doesn’t exist
/v1/projects/{project_id}/dynamips/vms/{vm_id}/idlepc_proposals¶
Contents
GET /v1/projects/{project_id}/dynamips/vms/{vm_id}/idlepc_proposals¶
Retrieve the idlepc proposals
Response status codes¶
- 200: Idle-PCs retrieved
- 400: Invalid request
- 404: Instance doesn’t exist
/v1/projects/{project_id}/dynamips/vms/{vm_id}/reload¶
Contents
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/reload¶
Reload a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance reloaded
/v1/projects/{project_id}/dynamips/vms/{vm_id}/resume¶
Contents
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/resume¶
Resume a suspended Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance resumed
/v1/projects/{project_id}/dynamips/vms/{vm_id}/start¶
Contents
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/start¶
Start a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance started
/v1/projects/{project_id}/dynamips/vms/{vm_id}/stop¶
Contents
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/stop¶
Stop a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance stopped
/v1/projects/{project_id}/dynamips/vms/{vm_id}/suspend¶
Contents
POST /v1/projects/{project_id}/dynamips/vms/{vm_id}/suspend¶
Suspend a Dynamips VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance suspended
Iou¶
/v1/projects/{project_id}/iou/vms¶
Contents
POST /v1/projects/{project_id}/iou/vms¶
Create a new IOU instance
Parameters¶
- project_id: UUID for the project
Response status codes¶
- 400: Invalid request
- 201: Instance created
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ['integer', 'null'] | console TCP port | |
ethernet_adapters | integer | How many ethernet adapters are connected to the IOU | |
initial_config_content | ['string', 'null'] | Initial configuration of the IOU | |
iourc_content | ['string', 'null'] | Content of the iourc file, if a file exist on servers this variable is ignored. It's mostly for compatibility with < 1.3 releases | |
l1_keepalives | ['boolean', 'null'] | Always up ethernet interface | |
name | ✔ | string | IOU VM name |
nvram | ['integer', 'null'] | Allocated NVRAM KB | |
path | ✔ | string | Path of iou binary |
ram | ['integer', 'null'] | Allocated RAM MB | |
serial_adapters | integer | How many serial adapters are connected to the IOU | |
use_default_iou_values | ['boolean', 'null'] | Use default IOU values | |
vm_id | IOU VM identifier |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ✔ | integer | console TCP port |
ethernet_adapters | ✔ | integer | How many ethernet adapters are connected to the IOU |
initial_config | ✔ | ['string', 'null'] | Path of the initial config content relative to project directory |
iourc_path | ['string', 'null'] | Path of the iourc file used by remote servers | |
l1_keepalives | ✔ | boolean | Always up ethernet interface |
name | ✔ | string | IOU VM name |
nvram | ✔ | integer | Allocated NVRAM KB |
path | ✔ | string | Path of iou binary |
project_id | ✔ | string | Project UUID |
ram | ✔ | integer | Allocated RAM MB |
serial_adapters | ✔ | integer | How many serial adapters are connected to the IOU |
use_default_iou_values | ✔ | ['boolean', 'null'] | Use default IOU values |
vm_id | ✔ | string | IOU VM UUID |
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms' -d '{"ethernet_adapters": 0, "initial_config_content": "hostname test", "iourc_content": "test", "l1_keepalives": true, "name": "PC TEST 1", "nvram": 512, "path": "/private/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/pytest-4450/test_iou_create_with_params0/iou.bin", "ram": 1024, "serial_adapters": 4, "use_default_iou_values": true}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms HTTP/1.1
{
"ethernet_adapters": 0,
"initial_config_content": "hostname test",
"iourc_content": "test",
"l1_keepalives": true,
"name": "PC TEST 1",
"nvram": 512,
"path": "/private/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/pytest-4450/test_iou_create_with_params0/iou.bin",
"ram": 1024,
"serial_adapters": 4,
"use_default_iou_values": true
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 466
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms
{
"console": 2000,
"ethernet_adapters": 0,
"initial_config": "initial-config.cfg",
"iourc_path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmps796q8lx/iourc",
"l1_keepalives": true,
"name": "PC TEST 1",
"nvram": 512,
"path": "iou.bin",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"ram": 1024,
"serial_adapters": 4,
"use_default_iou_values": true,
"vm_id": "69f5842a-d4e5-45fe-a500-1010c72f1748"
}
/v1/projects/{project_id}/iou/vms/{vm_id}¶
Contents
GET /v1/projects/{project_id}/iou/vms/{vm_id}¶
Get a IOU instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Success
- 400: Invalid request
- 404: Instance doesn’t exist
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ✔ | integer | console TCP port |
ethernet_adapters | ✔ | integer | How many ethernet adapters are connected to the IOU |
initial_config | ✔ | ['string', 'null'] | Path of the initial config content relative to project directory |
iourc_path | ['string', 'null'] | Path of the iourc file used by remote servers | |
l1_keepalives | ✔ | boolean | Always up ethernet interface |
name | ✔ | string | IOU VM name |
nvram | ✔ | integer | Allocated NVRAM KB |
path | ✔ | string | Path of iou binary |
project_id | ✔ | string | Project UUID |
ram | ✔ | integer | Allocated RAM MB |
serial_adapters | ✔ | integer | How many serial adapters are connected to the IOU |
use_default_iou_values | ✔ | ['boolean', 'null'] | Use default IOU values |
vm_id | ✔ | string | IOU VM UUID |
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/ede1bba5-0723-4fd8-9e89-bdfffe5f5c8f'
GET /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/ede1bba5-0723-4fd8-9e89-bdfffe5f5c8f HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 386
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}
{
"console": 2000,
"ethernet_adapters": 2,
"initial_config": null,
"iourc_path": null,
"l1_keepalives": false,
"name": "PC TEST 1",
"nvram": 128,
"path": "iou.bin",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"ram": 256,
"serial_adapters": 2,
"use_default_iou_values": true,
"vm_id": "ede1bba5-0723-4fd8-9e89-bdfffe5f5c8f"
}
PUT /v1/projects/{project_id}/iou/vms/{vm_id}¶
Update a IOU instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Instance updated
- 400: Invalid request
- 404: Instance doesn’t exist
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ['integer', 'null'] | console TCP port | |
ethernet_adapters | ['integer', 'null'] | How many ethernet adapters are connected to the IOU | |
initial_config_content | ['string', 'null'] | Initial configuration of the IOU | |
iourc_content | ['string', 'null'] | Content of the iourc file, if a file exist on servers this variable is ignored. It's mostly for compatibility with < 1.3 releases | |
l1_keepalives | ['boolean', 'null'] | Always up ethernet interface | |
name | ['string', 'null'] | IOU VM name | |
nvram | ['integer', 'null'] | Allocated NVRAM KB | |
path | ['string', 'null'] | Path of iou binary | |
ram | ['integer', 'null'] | Allocated RAM MB | |
serial_adapters | ['integer', 'null'] | How many serial adapters are connected to the IOU | |
use_default_iou_values | ['boolean', 'null'] | Use default IOU values |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ✔ | integer | console TCP port |
ethernet_adapters | ✔ | integer | How many ethernet adapters are connected to the IOU |
initial_config | ✔ | ['string', 'null'] | Path of the initial config content relative to project directory |
iourc_path | ['string', 'null'] | Path of the iourc file used by remote servers | |
l1_keepalives | ✔ | boolean | Always up ethernet interface |
name | ✔ | string | IOU VM name |
nvram | ✔ | integer | Allocated NVRAM KB |
path | ✔ | string | Path of iou binary |
project_id | ✔ | string | Project UUID |
ram | ✔ | integer | Allocated RAM MB |
serial_adapters | ✔ | integer | How many serial adapters are connected to the IOU |
use_default_iou_values | ✔ | ['boolean', 'null'] | Use default IOU values |
vm_id | ✔ | string | IOU VM UUID |
Sample session¶
curl -i -X PUT 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/3812eced-e777-4f35-8c7e-e6736e34fcfd' -d '{"console": 2001, "ethernet_adapters": 4, "initial_config_content": "hostname test", "iourc_content": "test", "l1_keepalives": true, "name": "test", "nvram": 2048, "ram": 512, "serial_adapters": 0, "use_default_iou_values": true}'
PUT /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/3812eced-e777-4f35-8c7e-e6736e34fcfd HTTP/1.1
{
"console": 2001,
"ethernet_adapters": 4,
"initial_config_content": "hostname test",
"iourc_content": "test",
"l1_keepalives": true,
"name": "test",
"nvram": 2048,
"ram": 512,
"serial_adapters": 0,
"use_default_iou_values": true
}
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 461
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}
{
"console": 2001,
"ethernet_adapters": 4,
"initial_config": "initial-config.cfg",
"iourc_path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmpws7fdl5e/iourc",
"l1_keepalives": true,
"name": "test",
"nvram": 2048,
"path": "iou.bin",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"ram": 512,
"serial_adapters": 0,
"use_default_iou_values": true,
"vm_id": "3812eced-e777-4f35-8c7e-e6736e34fcfd"
}
DELETE /v1/projects/{project_id}/iou/vms/{vm_id}¶
Delete a IOU instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance deleted
Sample session¶
curl -i -X DELETE 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/becc8bf8-1936-4076-b7dd-ee83ba078907'
DELETE /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/becc8bf8-1936-4076-b7dd-ee83ba078907 HTTP/1.1
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}
/v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Contents
- /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio
POST /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Add a NIO to a IOU instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Network adapter where the nio is located
- port_number: Port where the nio should be added
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 201: NIO created
- 404: Instance doesn’t exist
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/04648c72-4339-471e-aa12-57b42d7ea18b/adapters/1/ports/0/nio' -d '{"ethernet_device": "eth0", "type": "nio_generic_ethernet"}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/04648c72-4339-471e-aa12-57b42d7ea18b/adapters/1/ports/0/nio HTTP/1.1
{
"ethernet_device": "eth0",
"type": "nio_generic_ethernet"
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 69
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio
{
"ethernet_device": "eth0",
"type": "nio_generic_ethernet"
}
DELETE /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Remove a NIO from a IOU instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Network adapter where the nio is located
- port_number: Port from where the nio should be removed
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: NIO deleted
Sample session¶
curl -i -X DELETE 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/779f3f81-60ab-4d26-860c-75f915b1d70b/adapters/1/ports/0/nio'
DELETE /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/779f3f81-60ab-4d26-860c-75f915b1d70b/adapters/1/ports/0/nio HTTP/1.1
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio
/v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/start_capture¶
Contents
POST /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/start_capture¶
Start a packet capture on a IOU VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter to start a packet capture
- port_number: Port on the adapter
- vm_id: UUID for the instance
Response status codes¶
- 200: Capture started
- 400: Invalid request
- 404: Instance doesn’t exist
- 409: VM not started
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
capture_file_name | ✔ | string | Capture file name |
data_link_type | ✔ | string | PCAP data link type |
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/6056b617-d0c4-4683-bc9e-d0130beec951/adapters/0/ports/0/start_capture' -d '{"capture_file_name": "test.pcap", "data_link_type": "DLT_EN10MB"}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/6056b617-d0c4-4683-bc9e-d0130beec951/adapters/0/ports/0/start_capture HTTP/1.1
{
"capture_file_name": "test.pcap",
"data_link_type": "DLT_EN10MB"
}
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 158
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/start_capture
{
"pcap_file_path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmp367810hd/a1e920ca-338a-4e9f-b363-aa607b09dd80/project-files/captures/test.pcap"
}
/v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/stop_capture¶
Contents
POST /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/stop_capture¶
Stop a packet capture on a IOU VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter to stop a packet capture
- port_number: Port on the adapter (always 0)
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Capture stopped
- 409: VM not started
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/0fb3c393-7cda-4abc-ad76-a9e7af04abea/adapters/0/ports/0/stop_capture' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/0fb3c393-7cda-4abc-ad76-a9e7af04abea/adapters/0/ports/0/stop_capture HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/stop_capture
/v1/projects/{project_id}/iou/vms/{vm_id}/initial_config¶
Contents
GET /v1/projects/{project_id}/iou/vms/{vm_id}/initial_config¶
Retrieve the initial config content
Response status codes¶
- 200: Initial config retrieved
- 400: Invalid request
- 404: Instance doesn’t exist
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
content | ✔ | ['string', 'null'] | Content of the initial configuration file |
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/821b0dc3-4cc0-4899-8184-75bfc22db584/initial_config'
GET /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/821b0dc3-4cc0-4899-8184-75bfc22db584/initial_config HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 25
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}/initial_config
{
"content": "TEST"
}
/v1/projects/{project_id}/iou/vms/{vm_id}/reload¶
Contents
POST /v1/projects/{project_id}/iou/vms/{vm_id}/reload¶
Reload a IOU instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance reloaded
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/b32c38db-3692-4719-b94f-2b3f664cd06f/reload' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/b32c38db-3692-4719-b94f-2b3f664cd06f/reload HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}/reload
/v1/projects/{project_id}/iou/vms/{vm_id}/start¶
Contents
POST /v1/projects/{project_id}/iou/vms/{vm_id}/start¶
Start a IOU instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance started
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/55209a6f-8fe0-49d1-a884-b7cd09547b5c/start' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/55209a6f-8fe0-49d1-a884-b7cd09547b5c/start HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}/start
/v1/projects/{project_id}/iou/vms/{vm_id}/stop¶
Contents
POST /v1/projects/{project_id}/iou/vms/{vm_id}/stop¶
Stop a IOU instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance stopped
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/d893bd2c-d84e-4f89-ad84-f3bdfaf460b6/stop' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/iou/vms/d893bd2c-d84e-4f89-ad84-f3bdfaf460b6/stop HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/iou/vms/{vm_id}/stop
Network¶
/v1/interfaces¶
GET /v1/interfaces¶
List all the network interfaces available on the server
Response status codes¶
- 200: OK
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/interfaces'
GET /v1/interfaces HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 718
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/interfaces
[
{
"id": "lo0",
"name": "lo0"
},
{
"id": "gif0",
"name": "gif0"
},
{
"id": "stf0",
"name": "stf0"
},
{
"id": "en0",
"name": "en0"
},
{
"id": "en1",
"name": "en1"
},
{
"id": "fw0",
"name": "fw0"
},
{
"id": "en2",
"name": "en2"
},
{
"id": "p2p0",
"name": "p2p0"
},
{
"id": "bridge0",
"name": "bridge0"
},
{
"id": "vboxnet0",
"name": "vboxnet0"
},
{
"id": "vboxnet1",
"name": "vboxnet1"
},
{
"id": "vboxnet2",
"name": "vboxnet2"
}
]
/v1/projects/{project_id}/ports/udp¶
Contents
POST /v1/projects/{project_id}/ports/udp¶
Allocate an UDP port on the server
Parameters¶
- project_id: The UUID of the project
Response status codes¶
- 201: UDP port allocated
- 404: The project doesn’t exist
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/ports/udp' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/ports/udp HTTP/1.1
{}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 25
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/ports/udp
{
"udp_port": 10000
}
Project¶
/v1/projects¶
POST /v1/projects¶
Create a new project on the server
Response status codes¶
- 201: Project created
- 409: Project already created
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
name | ['string', 'null'] | Project name | |
path | ['string', 'null'] | Project directory | |
project_id | ['string', 'null'] | Project UUID | |
temporary | boolean | If project is a temporary project |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
location | ✔ | string | Base directory where the project should be created on remote server |
name | string | Project name | |
path | string | Directory of the project on the server | |
project_id | ✔ | string | Project UUID |
temporary | ✔ | boolean | If project is a temporary project |
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects' -d '{"name": "test"}'
POST /v1/projects HTTP/1.1
{
"name": "test"
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 297
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects
{
"location": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmp_6lclsv7",
"name": "test",
"path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmp_6lclsv7/187543e2-5d46-4108-a623-cfdd31fa300e",
"project_id": "187543e2-5d46-4108-a623-cfdd31fa300e",
"temporary": false
}
/v1/projects/{project_id}¶
Contents
GET /v1/projects/{project_id}¶
Get project information
Parameters¶
- project_id: The UUID of the project
Response status codes¶
- 200: Success
- 404: The project doesn’t exist
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
location | ✔ | string | Base directory where the project should be created on remote server |
name | string | Project name | |
path | string | Directory of the project on the server | |
project_id | ✔ | string | Project UUID |
temporary | ✔ | boolean | If project is a temporary project |
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/projects/00010203-0405-0607-0809-0a0b0c0d0e02'
GET /v1/projects/00010203-0405-0607-0809-0a0b0c0d0e02 HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 297
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}
{
"location": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmphbzo0jp9",
"name": "test",
"path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmphbzo0jp9/00010203-0405-0607-0809-0a0b0c0d0e02",
"project_id": "00010203-0405-0607-0809-0a0b0c0d0e02",
"temporary": false
}
PUT /v1/projects/{project_id}¶
Update a project
Parameters¶
- project_id: The UUID of the project
Response status codes¶
- 200: The project has been updated
- 403: You are not allowed to modify this property
- 404: The project doesn’t exist
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
name | ['string', 'null'] | Project name | |
path | ['string', 'null'] | Path of the project on the server (work only with --local) | |
temporary | boolean | If project is a temporary project |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
location | ✔ | string | Base directory where the project should be created on remote server |
name | string | Project name | |
path | string | Directory of the project on the server | |
project_id | ✔ | string | Project UUID |
temporary | ✔ | boolean | If project is a temporary project |
Sample session¶
curl -i -X PUT 'http://localhost:8000/v1/projects/b32aab45-411c-4171-9f20-357eaa00d54c' -d '{"name": "second_name", "path": "/private/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/pytest-4450/test_update_path_project_non_l0"}'
PUT /v1/projects/b32aab45-411c-4171-9f20-357eaa00d54c HTTP/1.1
{
"name": "second_name",
"path": "/private/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/pytest-4450/test_update_path_project_non_l0"
}
HTTP/1.1 403
CONNECTION: keep-alive
CONTENT-LENGTH: 100
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}
{
"message": "You are not allowed to modify the project directory location",
"status": 403
}
DELETE /v1/projects/{project_id}¶
Delete a project from disk
Parameters¶
- project_id: The UUID of the project
Response status codes¶
- 404: The project doesn’t exist
- 204: Changes have been written on disk
Sample session¶
curl -i -X DELETE 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80'
DELETE /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80 HTTP/1.1
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}
/v1/projects/{project_id}/close¶
Contents
POST /v1/projects/{project_id}/close¶
Close a project
Parameters¶
- project_id: The UUID of the project
Response status codes¶
- 404: The project doesn’t exist
- 204: The project has been closed
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/close' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/close HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/close
/v1/projects/{project_id}/commit¶
Contents
POST /v1/projects/{project_id}/commit¶
Write changes on disk
Parameters¶
- project_id: The UUID of the project
Response status codes¶
- 404: The project doesn’t exist
- 204: Changes have been written on disk
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/commit' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/commit HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/commit
Qemu¶
/v1/projects/{project_id}/qemu/vms¶
Contents
POST /v1/projects/{project_id}/qemu/vms¶
Create a new Qemu.instance
Parameters¶
- project_id: UUID for the project
Response status codes¶
- 400: Invalid request
- 201: Instance created
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | ['string', 'null'] | QEMU adapter type | |
adapters | ['integer', 'null'] | number of adapters | |
console | ['integer', 'null'] | console TCP port | |
cpu_throttling | ['integer', 'null'] | Percentage of CPU allowed for QEMU | |
hda_disk_image | ['string', 'null'] | QEMU hda disk image path | |
hdb_disk_image | ['string', 'null'] | QEMU hdb disk image path | |
hdc_disk_image | ['string', 'null'] | QEMU hdc disk image path | |
hdd_disk_image | ['string', 'null'] | QEMU hdd disk image path | |
initrd | ['string', 'null'] | QEMU initrd path | |
kernel_command_line | ['string', 'null'] | QEMU kernel command line | |
kernel_image | ['string', 'null'] | QEMU kernel image path | |
legacy_networking | ['boolean', 'null'] | Use QEMU legagy networking commands (-net syntax) | |
name | ✔ | string | QEMU VM instance name |
options | ['string', 'null'] | Additional QEMU options | |
process_priority | enum | Possible values: realtime, very high, high, normal, low, very low, null | |
qemu_path | ✔ | string | Path to QEMU |
ram | ['integer', 'null'] | amount of RAM in MB | |
vm_id | QEMU VM identifier |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | ✔ | string | QEMU adapter type |
adapters | ✔ | integer | number of adapters |
console | ✔ | integer | console TCP port |
cpu_throttling | ✔ | integer | Percentage of CPU allowed for QEMU |
hda_disk_image | ✔ | string | QEMU hda disk image path |
hdb_disk_image | ✔ | string | QEMU hdb disk image path |
hdc_disk_image | ✔ | string | QEMU hdc disk image path |
hdd_disk_image | ✔ | string | QEMU hdd disk image path |
initrd | ✔ | string | QEMU initrd path |
kernel_command_line | ✔ | string | QEMU kernel command line |
kernel_image | ✔ | string | QEMU kernel image path |
legacy_networking | ✔ | boolean | Use QEMU legagy networking commands (-net syntax) |
name | ✔ | string | QEMU VM instance name |
options | ✔ | string | Additional QEMU options |
process_priority | ✔ | enum | Possible values: realtime, very high, high, normal, low, very low |
project_id | ✔ | string | Project uuid |
qemu_path | ✔ | string | path to QEMU |
ram | ✔ | integer | amount of RAM in MB |
vm_id | ✔ | string | QEMU VM uuid |
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms' -d '{"hda_disk_image": "/tmp/hda", "name": "PC TEST 1", "qemu_path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmpyasp9636/qemu_x42", "ram": 1024}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms HTTP/1.1
{
"hda_disk_image": "/tmp/hda",
"name": "PC TEST 1",
"qemu_path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmpyasp9636/qemu_x42",
"ram": 1024
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 606
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms
{
"adapter_type": "e1000",
"adapters": 1,
"console": 2000,
"cpu_throttling": 0,
"hda_disk_image": "/tmp/hda",
"hdb_disk_image": "",
"hdc_disk_image": "",
"hdd_disk_image": "",
"initrd": "",
"kernel_command_line": "",
"kernel_image": "",
"legacy_networking": false,
"name": "PC TEST 1",
"options": "",
"process_priority": "low",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"qemu_path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmpyasp9636/qemu_x42",
"ram": 1024,
"vm_id": "8c325041-39a8-4c31-b921-b66dadadc353"
}
/v1/projects/{project_id}/qemu/vms/{vm_id}¶
Contents
GET /v1/projects/{project_id}/qemu/vms/{vm_id}¶
Get a Qemu.instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Success
- 400: Invalid request
- 404: Instance doesn’t exist
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | ✔ | string | QEMU adapter type |
adapters | ✔ | integer | number of adapters |
console | ✔ | integer | console TCP port |
cpu_throttling | ✔ | integer | Percentage of CPU allowed for QEMU |
hda_disk_image | ✔ | string | QEMU hda disk image path |
hdb_disk_image | ✔ | string | QEMU hdb disk image path |
hdc_disk_image | ✔ | string | QEMU hdc disk image path |
hdd_disk_image | ✔ | string | QEMU hdd disk image path |
initrd | ✔ | string | QEMU initrd path |
kernel_command_line | ✔ | string | QEMU kernel command line |
kernel_image | ✔ | string | QEMU kernel image path |
legacy_networking | ✔ | boolean | Use QEMU legagy networking commands (-net syntax) |
name | ✔ | string | QEMU VM instance name |
options | ✔ | string | Additional QEMU options |
process_priority | ✔ | enum | Possible values: realtime, very high, high, normal, low, very low |
project_id | ✔ | string | Project uuid |
qemu_path | ✔ | string | path to QEMU |
ram | ✔ | integer | amount of RAM in MB |
vm_id | ✔ | string | QEMU VM uuid |
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/e3935d2d-2bf9-4cde-8c7e-0bd1d74c3dad'
GET /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/e3935d2d-2bf9-4cde-8c7e-0bd1d74c3dad HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 597
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}
{
"adapter_type": "e1000",
"adapters": 1,
"console": 2000,
"cpu_throttling": 0,
"hda_disk_image": "",
"hdb_disk_image": "",
"hdc_disk_image": "",
"hdd_disk_image": "",
"initrd": "",
"kernel_command_line": "",
"kernel_image": "",
"legacy_networking": false,
"name": "PC TEST 1",
"options": "",
"process_priority": "low",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"qemu_path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmpyasp9636/qemu_x42",
"ram": 256,
"vm_id": "e3935d2d-2bf9-4cde-8c7e-0bd1d74c3dad"
}
PUT /v1/projects/{project_id}/qemu/vms/{vm_id}¶
Update a Qemu.instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Instance updated
- 400: Invalid request
- 404: Instance doesn’t exist
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | ['string', 'null'] | QEMU adapter type | |
adapters | ['integer', 'null'] | number of adapters | |
console | ['integer', 'null'] | console TCP port | |
cpu_throttling | ['integer', 'null'] | Percentage of CPU allowed for QEMU | |
hda_disk_image | ['string', 'null'] | QEMU hda disk image path | |
hdb_disk_image | ['string', 'null'] | QEMU hdb disk image path | |
hdc_disk_image | ['string', 'null'] | QEMU hdc disk image path | |
hdd_disk_image | ['string', 'null'] | QEMU hdd disk image path | |
initrd | ['string', 'null'] | QEMU initrd path | |
kernel_command_line | ['string', 'null'] | QEMU kernel command line | |
kernel_image | ['string', 'null'] | QEMU kernel image path | |
legacy_networking | ['boolean', 'null'] | Use QEMU legagy networking commands (-net syntax) | |
name | ['string', 'null'] | QEMU VM instance name | |
options | ['string', 'null'] | Additional QEMU options | |
process_priority | enum | Possible values: realtime, very high, high, normal, low, very low, null | |
qemu_path | ['string', 'null'] | Path to QEMU | |
ram | ['integer', 'null'] | amount of RAM in MB |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | ✔ | string | QEMU adapter type |
adapters | ✔ | integer | number of adapters |
console | ✔ | integer | console TCP port |
cpu_throttling | ✔ | integer | Percentage of CPU allowed for QEMU |
hda_disk_image | ✔ | string | QEMU hda disk image path |
hdb_disk_image | ✔ | string | QEMU hdb disk image path |
hdc_disk_image | ✔ | string | QEMU hdc disk image path |
hdd_disk_image | ✔ | string | QEMU hdd disk image path |
initrd | ✔ | string | QEMU initrd path |
kernel_command_line | ✔ | string | QEMU kernel command line |
kernel_image | ✔ | string | QEMU kernel image path |
legacy_networking | ✔ | boolean | Use QEMU legagy networking commands (-net syntax) |
name | ✔ | string | QEMU VM instance name |
options | ✔ | string | Additional QEMU options |
process_priority | ✔ | enum | Possible values: realtime, very high, high, normal, low, very low |
project_id | ✔ | string | Project uuid |
qemu_path | ✔ | string | path to QEMU |
ram | ✔ | integer | amount of RAM in MB |
vm_id | ✔ | string | QEMU VM uuid |
Sample session¶
curl -i -X PUT 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/e5b90e65-6f6a-4d44-b2d8-3a5c3a4a626b' -d '{"console": 2001, "hdb_disk_image": "/tmp/hdb", "name": "test", "ram": 1024}'
PUT /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/e5b90e65-6f6a-4d44-b2d8-3a5c3a4a626b HTTP/1.1
{
"console": 2001,
"hdb_disk_image": "/tmp/hdb",
"name": "test",
"ram": 1024
}
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 601
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}
{
"adapter_type": "e1000",
"adapters": 1,
"console": 2001,
"cpu_throttling": 0,
"hda_disk_image": "",
"hdb_disk_image": "/tmp/hdb",
"hdc_disk_image": "",
"hdd_disk_image": "",
"initrd": "",
"kernel_command_line": "",
"kernel_image": "",
"legacy_networking": false,
"name": "test",
"options": "",
"process_priority": "low",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"qemu_path": "/var/folders/3s/r2wbv07n7wg4vrsn874lmxxh0000gn/T/tmpyasp9636/qemu_x42",
"ram": 1024,
"vm_id": "e5b90e65-6f6a-4d44-b2d8-3a5c3a4a626b"
}
DELETE /v1/projects/{project_id}/qemu/vms/{vm_id}¶
Delete a Qemu.instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance deleted
Sample session¶
curl -i -X DELETE 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/6537c17b-2e47-46f9-b96b-6fc66382709f'
DELETE /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/6537c17b-2e47-46f9-b96b-6fc66382709f HTTP/1.1
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}
/v1/projects/{project_id}/qemu/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Contents
- /v1/projects/{project_id}/qemu/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio
POST /v1/projects/{project_id}/qemu/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Add a NIO to a Qemu.instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Network adapter where the nio is located
- port_number: Port on the adapter (always 0)
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 201: NIO created
- 404: Instance doesn’t exist
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/e791569e-7f95-4a1d-9f8d-b48611afeef3/adapters/1/ports/0/nio' -d '{"ethernet_device": "eth0", "type": "nio_generic_ethernet"}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/e791569e-7f95-4a1d-9f8d-b48611afeef3/adapters/1/ports/0/nio HTTP/1.1
{
"ethernet_device": "eth0",
"type": "nio_generic_ethernet"
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 69
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio
{
"ethernet_device": "eth0",
"type": "nio_generic_ethernet"
}
DELETE /v1/projects/{project_id}/qemu/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Remove a NIO from a Qemu.instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Network adapter where the nio is located
- port_number: Port on the adapter (always 0)
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: NIO deleted
Sample session¶
curl -i -X DELETE 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/b54e4616-058f-413d-a589-0b7c5da20aa3/adapters/1/ports/0/nio'
DELETE /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/b54e4616-058f-413d-a589-0b7c5da20aa3/adapters/1/ports/0/nio HTTP/1.1
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio
/v1/projects/{project_id}/qemu/vms/{vm_id}/reload¶
Contents
POST /v1/projects/{project_id}/qemu/vms/{vm_id}/reload¶
Reload a Qemu.instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance reloaded
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/e6de45b1-048b-498b-9875-de76762532e9/reload' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/e6de45b1-048b-498b-9875-de76762532e9/reload HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}/reload
/v1/projects/{project_id}/qemu/vms/{vm_id}/resume¶
Contents
POST /v1/projects/{project_id}/qemu/vms/{vm_id}/resume¶
Resume a Qemu.instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance resumed
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/d7152d7c-7f23-4d92-9ee1-fae132a50b3b/resume' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/d7152d7c-7f23-4d92-9ee1-fae132a50b3b/resume HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}/resume
/v1/projects/{project_id}/qemu/vms/{vm_id}/start¶
Contents
POST /v1/projects/{project_id}/qemu/vms/{vm_id}/start¶
Start a Qemu.instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance started
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/031c1e57-577c-4ff4-91d1-da6fe0816fdd/start' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/031c1e57-577c-4ff4-91d1-da6fe0816fdd/start HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}/start
/v1/projects/{project_id}/qemu/vms/{vm_id}/stop¶
Contents
POST /v1/projects/{project_id}/qemu/vms/{vm_id}/stop¶
Stop a Qemu.instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance stopped
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/79ca17e8-0194-4682-bb2a-0bdd9f7d1e1a/stop' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/79ca17e8-0194-4682-bb2a-0bdd9f7d1e1a/stop HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}/stop
/v1/projects/{project_id}/qemu/vms/{vm_id}/suspend¶
Contents
POST /v1/projects/{project_id}/qemu/vms/{vm_id}/suspend¶
Suspend a Qemu.instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance suspended
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/7e24f49b-51ea-410f-bc94-16fc58071493/suspend' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/qemu/vms/7e24f49b-51ea-410f-bc94-16fc58071493/suspend HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/qemu/vms/{vm_id}/suspend
/v1/qemu/binaries¶
GET /v1/qemu/binaries¶
Get a list of available Qemu binaries
Response status codes¶
- 200: Success
- 400: Invalid request
- 404: Instance doesn’t exist
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/qemu/binaries'
GET /v1/qemu/binaries HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 134
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/qemu/binaries
[
{
"path": "/tmp/1",
"version": "2.2.0"
},
{
"path": "/tmp/2",
"version": "2.1.0"
}
]
Server¶
/v1/server/shutdown¶
POST /v1/server/shutdown¶
Shutdown the local server
Response status codes¶
- 201: Server is shutting down
- 403: Server shutdown refused
Version¶
/v1/version¶
Contents
GET /v1/version¶
Retrieve the server version number
Response status codes¶
- 200: OK
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
local | boolean | Either this is a local server | |
version | ✔ | string | Version number human readable |
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/version'
GET /v1/version HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 49
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/version
{
"local": true,
"version": "1.3.1.rc2"
}
POST /v1/version¶
Check if version is the same as the server
Response status codes¶
- 200: Same version
- 409: Invalid version
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
local | boolean | Either this is a local server | |
version | ✔ | string | Version number human readable |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
local | boolean | Either this is a local server | |
version | ✔ | string | Version number human readable |
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/version' -d '{"version": "1.3.1.rc2"}'
POST /v1/version HTTP/1.1
{
"version": "1.3.1.rc2"
}
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 30
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/version
{
"version": "1.3.1.rc2"
}
Virtualbox¶
/v1/projects/{project_id}/virtualbox/vms¶
Contents
POST /v1/projects/{project_id}/virtualbox/vms¶
Create a new VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
Response status codes¶
- 400: Invalid request
- 201: Instance created
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | string | VirtualBox adapter type | |
adapters | integer | number of adapters | |
console | integer | console TCP port | |
enable_remote_console | boolean | enable the remote console | |
headless | boolean | headless mode | |
linked_clone | ✔ | boolean | either the VM is a linked clone or not |
name | ✔ | string | VirtualBox VM instance name |
ram | integer | Amount of RAM | |
use_any_adapter | boolean | allow GNS3 to use any VirtualBox adapter | |
vm_id | VirtualBox VM instance identifier | ||
vmname | ✔ | string | VirtualBox VM name (in VirtualBox itself) |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | string | VirtualBox adapter type | |
adapters | integer | number of adapters | |
console | integer | console TCP port | |
enable_remote_console | boolean | enable the remote console | |
headless | boolean | headless mode | |
name | ✔ | string | VirtualBox VM instance name |
project_id | ✔ | string | Project UUID |
ram | integer | Amount of RAM | |
use_any_adapter | boolean | allow GNS3 to use any VirtualBox adapter | |
vm_id | ✔ | string | VirtualBox VM instance UUID |
vmname | string | VirtualBox VM name (in VirtualBox itself) |
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms' -d '{"linked_clone": false, "name": "VM1", "vmname": "VM1"}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms HTTP/1.1
{
"linked_clone": false,
"name": "VM1",
"vmname": "VM1"
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 355
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms
{
"adapter_type": "Intel PRO/1000 MT Desktop (82540EM)",
"adapters": 0,
"console": 2000,
"enable_remote_console": false,
"headless": false,
"name": "VM1",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"ram": 0,
"use_any_adapter": false,
"vm_id": "fd208626-81e5-449e-b145-fd6993f5097c",
"vmname": "VM1"
}
/v1/projects/{project_id}/virtualbox/vms/{vm_id}¶
Contents
GET /v1/projects/{project_id}/virtualbox/vms/{vm_id}¶
Get a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Success
- 400: Invalid request
- 404: Instance doesn’t exist
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | string | VirtualBox adapter type | |
adapters | integer | number of adapters | |
console | integer | console TCP port | |
enable_remote_console | boolean | enable the remote console | |
headless | boolean | headless mode | |
name | ✔ | string | VirtualBox VM instance name |
project_id | ✔ | string | Project UUID |
ram | integer | Amount of RAM | |
use_any_adapter | boolean | allow GNS3 to use any VirtualBox adapter | |
vm_id | ✔ | string | VirtualBox VM instance UUID |
vmname | string | VirtualBox VM name (in VirtualBox itself) |
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/f49ff215-0872-4bf7-90c8-3d9ecc2b2f2b'
GET /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/f49ff215-0872-4bf7-90c8-3d9ecc2b2f2b HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 361
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}
{
"adapter_type": "Intel PRO/1000 MT Desktop (82540EM)",
"adapters": 0,
"console": 2001,
"enable_remote_console": false,
"headless": false,
"name": "VMTEST",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"ram": 0,
"use_any_adapter": false,
"vm_id": "f49ff215-0872-4bf7-90c8-3d9ecc2b2f2b",
"vmname": "VMTEST"
}
PUT /v1/projects/{project_id}/virtualbox/vms/{vm_id}¶
Update a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Instance updated
- 400: Invalid request
- 404: Instance doesn’t exist
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | string | VirtualBox adapter type | |
adapters | integer | number of adapters | |
console | integer | console TCP port | |
enable_remote_console | boolean | enable the remote console | |
headless | boolean | headless mode | |
name | string | VirtualBox VM instance name | |
ram | integer | Amount of RAM | |
use_any_adapter | boolean | allow GNS3 to use any VirtualBox adapter | |
vmname | string | VirtualBox VM name (in VirtualBox itself) |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
adapter_type | string | VirtualBox adapter type | |
adapters | integer | number of adapters | |
console | integer | console TCP port | |
enable_remote_console | boolean | enable the remote console | |
headless | boolean | headless mode | |
name | ✔ | string | VirtualBox VM instance name |
project_id | ✔ | string | Project UUID |
ram | integer | Amount of RAM | |
use_any_adapter | boolean | allow GNS3 to use any VirtualBox adapter | |
vm_id | ✔ | string | VirtualBox VM instance UUID |
vmname | string | VirtualBox VM name (in VirtualBox itself) |
Sample session¶
curl -i -X PUT 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/514963f5-93f8-4d18-bcd6-7d50ef7164a6' -d '{"console": 2010, "name": "test"}'
PUT /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/514963f5-93f8-4d18-bcd6-7d50ef7164a6 HTTP/1.1
{
"console": 2010,
"name": "test"
}
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 359
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}
{
"adapter_type": "Intel PRO/1000 MT Desktop (82540EM)",
"adapters": 0,
"console": 2010,
"enable_remote_console": false,
"headless": false,
"name": "test",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"ram": 0,
"use_any_adapter": false,
"vm_id": "514963f5-93f8-4d18-bcd6-7d50ef7164a6",
"vmname": "VMTEST"
}
DELETE /v1/projects/{project_id}/virtualbox/vms/{vm_id}¶
Delete a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance deleted
/v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Contents
- /v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio
POST /v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Add a NIO to a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter where the nio should be added
- port_number: Port on the adapter (always 0)
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 201: NIO created
- 404: Instance doesn’t exist
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/5463a797-0eb0-41d2-8b32-1efbd7a353cc/adapters/0/ports/0/nio' -d '{"lport": 4242, "rhost": "127.0.0.1", "rport": 4343, "type": "nio_udp"}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/5463a797-0eb0-41d2-8b32-1efbd7a353cc/adapters/0/ports/0/nio HTTP/1.1
{
"lport": 4242,
"rhost": "127.0.0.1",
"rport": 4343,
"type": "nio_udp"
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 89
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio
{
"lport": 4242,
"rhost": "127.0.0.1",
"rport": 4343,
"type": "nio_udp"
}
DELETE /v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Remove a NIO from a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter from where the nio should be removed
- port_number: Port on the adapter (always 0)
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: NIO deleted
Sample session¶
curl -i -X DELETE 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/387fb016-f1fc-4844-a25e-97c08ef77274/adapters/0/ports/0/nio'
DELETE /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/387fb016-f1fc-4844-a25e-97c08ef77274/adapters/0/ports/0/nio HTTP/1.1
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio
/v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/start_capture¶
Contents
POST /v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/start_capture¶
Start a packet capture on a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter to start a packet capture
- port_number: Port on the adapter (always 0)
- vm_id: UUID for the instance
Response status codes¶
- 200: Capture started
- 400: Invalid request
- 404: Instance doesn’t exist
/v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/stop_capture¶
Contents
POST /v1/projects/{project_id}/virtualbox/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/stop_capture¶
Stop a packet capture on a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Adapter to stop a packet capture
- port_number: Port on the adapter (always 0)
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Capture stopped
/v1/projects/{project_id}/virtualbox/vms/{vm_id}/reload¶
Contents
POST /v1/projects/{project_id}/virtualbox/vms/{vm_id}/reload¶
Reload a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance reloaded
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/f24209c8-671e-428a-9561-db4775f6b8a7/reload' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/f24209c8-671e-428a-9561-db4775f6b8a7/reload HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}/reload
/v1/projects/{project_id}/virtualbox/vms/{vm_id}/resume¶
Contents
POST /v1/projects/{project_id}/virtualbox/vms/{vm_id}/resume¶
Resume a suspended VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance resumed
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/70df82f6-e868-4ab3-9be9-d456871f41dc/resume' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/70df82f6-e868-4ab3-9be9-d456871f41dc/resume HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}/resume
/v1/projects/{project_id}/virtualbox/vms/{vm_id}/start¶
Contents
POST /v1/projects/{project_id}/virtualbox/vms/{vm_id}/start¶
Start a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance started
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/354d48fe-cab6-41d8-8cc1-64716e02c3a8/start' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/354d48fe-cab6-41d8-8cc1-64716e02c3a8/start HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}/start
/v1/projects/{project_id}/virtualbox/vms/{vm_id}/stop¶
Contents
POST /v1/projects/{project_id}/virtualbox/vms/{vm_id}/stop¶
Stop a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance stopped
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/90733316-a02a-490b-b8c4-e6ea4a32296a/stop' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/90733316-a02a-490b-b8c4-e6ea4a32296a/stop HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}/stop
/v1/projects/{project_id}/virtualbox/vms/{vm_id}/suspend¶
Contents
POST /v1/projects/{project_id}/virtualbox/vms/{vm_id}/suspend¶
Suspend a VirtualBox VM instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance suspended
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/0f257aa5-d61d-4ee9-872a-898462f7ecdf/suspend' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/virtualbox/vms/0f257aa5-d61d-4ee9-872a-898462f7ecdf/suspend HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/virtualbox/vms/{vm_id}/suspend
Vpcs¶
/v1/projects/{project_id}/vpcs/vms¶
Contents
POST /v1/projects/{project_id}/vpcs/vms¶
Create a new VPCS instance
Parameters¶
- project_id: UUID for the project
Response status codes¶
- 400: Invalid request
- 201: Instance created
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ['integer', 'null'] | console TCP port | |
name | ✔ | string | VPCS VM name |
startup_script | ['string', 'null'] | Content of the VPCS startup script | |
vm_id | VPCS VM identifier |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ✔ | integer | console TCP port |
name | ✔ | string | VPCS VM name |
project_id | ✔ | string | Project UUID |
startup_script | ['string', 'null'] | Content of the VPCS startup script | |
startup_script_path | ✔ | ['string', 'null'] | Path of the VPCS startup script relative to project directory |
vm_id | ✔ | string | VPCS VM UUID |
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms' -d '{"name": "PC TEST 1"}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms HTTP/1.1
{
"name": "PC TEST 1"
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 220
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms
{
"console": 2009,
"name": "PC TEST 1",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"startup_script": null,
"startup_script_path": null,
"vm_id": "68c6af80-0a82-406e-b051-24c95bd728f4"
}
/v1/projects/{project_id}/vpcs/vms/{vm_id}¶
Contents
GET /v1/projects/{project_id}/vpcs/vms/{vm_id}¶
Get a VPCS instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Success
- 400: Invalid request
- 404: Instance doesn’t exist
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ✔ | integer | console TCP port |
name | ✔ | string | VPCS VM name |
project_id | ✔ | string | Project UUID |
startup_script | ['string', 'null'] | Content of the VPCS startup script | |
startup_script_path | ✔ | ['string', 'null'] | Path of the VPCS startup script relative to project directory |
vm_id | ✔ | string | VPCS VM UUID |
Sample session¶
curl -i -X GET 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/3ff6ff9e-93de-45ae-a7ec-e296d406ffe1'
GET /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/3ff6ff9e-93de-45ae-a7ec-e296d406ffe1 HTTP/1.1
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 220
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms/{vm_id}
{
"console": 2009,
"name": "PC TEST 1",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"startup_script": null,
"startup_script_path": null,
"vm_id": "3ff6ff9e-93de-45ae-a7ec-e296d406ffe1"
}
PUT /v1/projects/{project_id}/vpcs/vms/{vm_id}¶
Update a VPCS instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 200: Instance updated
- 400: Invalid request
- 404: Instance doesn’t exist
- 409: Conflict
Input¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ['integer', 'null'] | console TCP port | |
name | ['string', 'null'] | VPCS VM name | |
startup_script | ['string', 'null'] | Content of the VPCS startup script |
Output¶
Name | Mandatory | Type | Description |
---|---|---|---|
console | ✔ | integer | console TCP port |
name | ✔ | string | VPCS VM name |
project_id | ✔ | string | Project UUID |
startup_script | ['string', 'null'] | Content of the VPCS startup script | |
startup_script_path | ✔ | ['string', 'null'] | Path of the VPCS startup script relative to project directory |
vm_id | ✔ | string | VPCS VM UUID |
Sample session¶
curl -i -X PUT 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/4905e649-6e81-446d-a60b-fd8b058a85e8' -d '{"console": 2011, "name": "test", "startup_script": "ip 192.168.1.1"}'
PUT /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/4905e649-6e81-446d-a60b-fd8b058a85e8 HTTP/1.1
{
"console": 2011,
"name": "test",
"startup_script": "ip 192.168.1.1"
}
HTTP/1.1 200
CONNECTION: keep-alive
CONTENT-LENGTH: 236
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms/{vm_id}
{
"console": 2011,
"name": "test",
"project_id": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"startup_script": "ip 192.168.1.1",
"startup_script_path": "startup.vpc",
"vm_id": "4905e649-6e81-446d-a60b-fd8b058a85e8"
}
DELETE /v1/projects/{project_id}/vpcs/vms/{vm_id}¶
Delete a VPCS instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance deleted
Sample session¶
curl -i -X DELETE 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/6bc73868-fea6-449b-af5c-e7b746e4129d'
DELETE /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/6bc73868-fea6-449b-af5c-e7b746e4129d HTTP/1.1
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms/{vm_id}
/v1/projects/{project_id}/vpcs/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Contents
- /v1/projects/{project_id}/vpcs/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio
POST /v1/projects/{project_id}/vpcs/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Add a NIO to a VPCS instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Network adapter where the nio is located
- port_number: Port where the nio should be added
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 201: NIO created
- 404: Instance doesn’t exist
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/4125e37f-2bf1-435c-a86c-ae1fce4c916a/adapters/0/ports/0/nio' -d '{"lport": 4242, "rhost": "127.0.0.1", "rport": 4343, "type": "nio_udp"}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/4125e37f-2bf1-435c-a86c-ae1fce4c916a/adapters/0/ports/0/nio HTTP/1.1
{
"lport": 4242,
"rhost": "127.0.0.1",
"rport": 4343,
"type": "nio_udp"
}
HTTP/1.1 201
CONNECTION: keep-alive
CONTENT-LENGTH: 89
CONTENT-TYPE: application/json
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio
{
"lport": 4242,
"rhost": "127.0.0.1",
"rport": 4343,
"type": "nio_udp"
}
DELETE /v1/projects/{project_id}/vpcs/vms/{vm_id}/adapters/{adapter_number:d+}/ports/{port_number:d+}/nio¶
Remove a NIO from a VPCS instance
Parameters¶
- project_id: UUID for the project
- adapter_number: Network adapter where the nio is located
- port_number: Port from where the nio should be removed
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: NIO deleted
Sample session¶
curl -i -X DELETE 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/f7d1d6ad-422b-486a-8d23-1ff46cd8bc4b/adapters/0/ports/0/nio'
DELETE /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/f7d1d6ad-422b-486a-8d23-1ff46cd8bc4b/adapters/0/ports/0/nio HTTP/1.1
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms/{vm_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio
/v1/projects/{project_id}/vpcs/vms/{vm_id}/reload¶
Contents
POST /v1/projects/{project_id}/vpcs/vms/{vm_id}/reload¶
Reload a VPCS instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance reloaded
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/4c5c5174-07bf-4f2a-93ab-cec244e24852/reload' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/4c5c5174-07bf-4f2a-93ab-cec244e24852/reload HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms/{vm_id}/reload
/v1/projects/{project_id}/vpcs/vms/{vm_id}/start¶
Contents
POST /v1/projects/{project_id}/vpcs/vms/{vm_id}/start¶
Start a VPCS instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance started
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/43ac3ea8-78a7-405e-ad5e-653293c48e66/start' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/43ac3ea8-78a7-405e-ad5e-653293c48e66/start HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms/{vm_id}/start
/v1/projects/{project_id}/vpcs/vms/{vm_id}/stop¶
Contents
POST /v1/projects/{project_id}/vpcs/vms/{vm_id}/stop¶
Stop a VPCS instance
Parameters¶
- project_id: UUID for the project
- vm_id: UUID for the instance
Response status codes¶
- 400: Invalid request
- 404: Instance doesn’t exist
- 204: Instance stopped
Sample session¶
curl -i -X POST 'http://localhost:8000/v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/59df4b41-6a23-4c99-9370-600b3a2cff23/stop' -d '{}'
POST /v1/projects/a1e920ca-338a-4e9f-b363-aa607b09dd80/vpcs/vms/59df4b41-6a23-4c99-9370-600b3a2cff23/stop HTTP/1.1
{}
HTTP/1.1 204
CONNECTION: keep-alive
CONTENT-LENGTH: 0
DATE: Thu, 08 Jan 2015 16:09:15 GMT
SERVER: Python/3.4 GNS3/1.3.1.rc2
X-ROUTE: /v1/projects/{project_id}/vpcs/vms/{vm_id}/stop