diff --git a/docs/api/examples/get_vpcsuuid.txt b/docs/api/examples/get_vpcsuuid.txt
index 1abe5fd9..57b93cbf 100644
--- a/docs/api/examples/get_vpcsuuid.txt
+++ b/docs/api/examples/get_vpcsuuid.txt
@@ -18,5 +18,5 @@ X-ROUTE: /vpcs/{uuid}
"project_uuid": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"script_file": null,
"startup_script": null,
- "uuid": "f8155d67-c0bf-4229-be4c-97edaaae7b0b"
+ "uuid": "c9e15d9f-cff3-402a-b9c9-57f4d008832f"
}
diff --git a/docs/api/examples/post_vpcs.txt b/docs/api/examples/post_vpcs.txt
index 26ee627f..cbd49f85 100644
--- a/docs/api/examples/post_vpcs.txt
+++ b/docs/api/examples/post_vpcs.txt
@@ -21,5 +21,5 @@ X-ROUTE: /vpcs
"project_uuid": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
"script_file": null,
"startup_script": null,
- "uuid": "5a9aac64-5b62-41bd-955a-fcef90a2fac5"
+ "uuid": "f5016337-fa62-4e82-95da-9f66f68e6e8f"
}
diff --git a/docs/api/virtualbox.rst b/docs/api/virtualbox.rst
new file mode 100644
index 00000000..9a6cb762
--- /dev/null
+++ b/docs/api/virtualbox.rst
@@ -0,0 +1,47 @@
+/virtualbox
+---------------------------------------------
+
+.. contents::
+
+POST /virtualbox
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Create a new VirtualBox VM instance
+
+Response status codes
+**********************
+- **400**: Invalid project UUID
+- **201**: VirtualBox VM instance created
+- **409**: Conflict
+
+Input
+*******
+.. raw:: html
+
+
+ Name | Mandatory | Type | Description |
+ linked_clone | | boolean | either the VM is a linked clone or not |
+ name | ✔ | string | VirtualBox VM instance name |
+ project_uuid | | string | Project UUID |
+ uuid | | string | VirtualBox VM instance UUID |
+ vbox_id | | integer | VirtualBox VM instance ID (for project created before GNS3 1.3) |
+ vmname | ✔ | string | VirtualBox VM name (in VirtualBox itself) |
+
+
+Output
+*******
+.. raw:: html
+
+
+ Name | Mandatory | Type | Description |
+ console | | integer | console TCP port |
+ name | ✔ | string | VirtualBox VM instance name |
+ project_uuid | | string | Project UUID |
+ uuid | ✔ | string | VirtualBox VM instance UUID |
+
+
+Sample session
+***************
+
+
+.. literalinclude:: examples/post_virtualbox.txt
+
diff --git a/docs/api/virtualboxuuidstart.rst b/docs/api/virtualboxuuidstart.rst
new file mode 100644
index 00000000..570a64f7
--- /dev/null
+++ b/docs/api/virtualboxuuidstart.rst
@@ -0,0 +1,25 @@
+/virtualbox/{uuid}/start
+---------------------------------------------
+
+.. contents::
+
+POST /virtualbox/**{uuid}**/start
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Start a VirtualBox VM instance
+
+Parameters
+**********
+- **uuid**: VirtualBox VM instance UUID
+
+Response status codes
+**********************
+- **400**: Invalid VirtualBox VM instance UUID
+- **404**: VirtualBox VM instance doesn't exist
+- **204**: VirtualBox VM instance started
+
+Sample session
+***************
+
+
+.. literalinclude:: examples/post_virtualboxuuidstart.txt
+
diff --git a/docs/api/virtualboxuuidstop.rst b/docs/api/virtualboxuuidstop.rst
new file mode 100644
index 00000000..21fd9809
--- /dev/null
+++ b/docs/api/virtualboxuuidstop.rst
@@ -0,0 +1,25 @@
+/virtualbox/{uuid}/stop
+---------------------------------------------
+
+.. contents::
+
+POST /virtualbox/**{uuid}**/stop
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Stop a VirtualBox VM instance
+
+Parameters
+**********
+- **uuid**: VirtualBox VM instance UUID
+
+Response status codes
+**********************
+- **400**: Invalid VirtualBox VM instance UUID
+- **404**: VirtualBox VM instance doesn't exist
+- **204**: VirtualBox VM instance stopped
+
+Sample session
+***************
+
+
+.. literalinclude:: examples/post_virtualboxuuidstop.txt
+
diff --git a/docs/api/vpcs.rst b/docs/api/vpcs.rst
index 225990bb..4790ad9e 100644
--- a/docs/api/vpcs.rst
+++ b/docs/api/vpcs.rst
@@ -9,6 +9,7 @@ Create a new VPCS instance
Response status codes
**********************
+- **400**: Invalid project UUID
- **201**: VPCS instance created
- **409**: Conflict
@@ -18,9 +19,11 @@ Input
Name | Mandatory | Type | Description |
- console | | integer | console TCP port |
+ console | | ['integer', 'null'] | console TCP port |
name | ✔ | string | VPCS device name |
project_uuid | ✔ | string | Project UUID |
+ script_file | | ['string', 'null'] | VPCS startup script |
+ startup_script | | ['string', 'null'] | Content of the VPCS startup script |
uuid | | string | VPCS device UUID |
vpcs_id | | integer | VPCS device instance ID (for project created before GNS3 1.3) |
@@ -34,6 +37,8 @@ Output
console | ✔ | integer | console TCP port |
name | ✔ | string | VPCS device name |
project_uuid | ✔ | string | Project UUID |
+ script_file | | ['string', 'null'] | VPCS startup script |
+ startup_script | | ['string', 'null'] | Content of the VPCS startup script |
uuid | ✔ | string | VPCS device UUID |
diff --git a/docs/api/vpcsuuid.rst b/docs/api/vpcsuuid.rst
new file mode 100644
index 00000000..f2489f1c
--- /dev/null
+++ b/docs/api/vpcsuuid.rst
@@ -0,0 +1,60 @@
+/vpcs/{uuid}
+---------------------------------------------
+
+.. contents::
+
+GET /vpcs/**{uuid}**
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Get a VPCS instance
+
+Parameters
+**********
+- **uuid**: VPCS instance UUID
+
+Response status codes
+**********************
+- **200**: VPCS instance started
+- **404**: VPCS instance doesn't exist
+
+Sample session
+***************
+
+
+.. literalinclude:: examples/get_vpcsuuid.txt
+
+
+PUT /vpcs/**{uuid}**
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Update a VPCS instance
+
+Response status codes
+**********************
+- **200**: VPCS instance updated
+- **409**: Conflict
+
+Input
+*******
+.. raw:: html
+
+
+ Name | Mandatory | Type | Description |
+ console | | ['integer', 'null'] | console TCP port |
+ name | | ['string', 'null'] | VPCS device name |
+ script_file | | ['string', 'null'] | VPCS startup script |
+ startup_script | | ['string', 'null'] | Content of the VPCS startup script |
+
+
+Output
+*******
+.. raw:: html
+
+
+ Name | Mandatory | Type | Description |
+ console | ✔ | integer | console TCP port |
+ name | ✔ | string | VPCS device name |
+ project_uuid | ✔ | string | Project UUID |
+ script_file | | ['string', 'null'] | VPCS startup script |
+ startup_script | | ['string', 'null'] | Content of the VPCS startup script |
+ uuid | ✔ | string | VPCS device UUID |
+
+
diff --git a/scripts/documentation.sh b/scripts/documentation.sh
index 0ee22a9a..fb7af59c 100755
--- a/scripts/documentation.sh
+++ b/scripts/documentation.sh
@@ -23,6 +23,8 @@ set -e
echo "WARNING: This script should be run at the root directory of the project"
+export PYTEST_BUILD_DOCUMENTATION=1
+
py.test -v
python3 gns3server/web/documentation.py
cd docs
diff --git a/tests/api/base.py b/tests/api/base.py
index c2b6d299..638d53cc 100644
--- a/tests/api/base.py
+++ b/tests/api/base.py
@@ -25,7 +25,7 @@ import socket
import pytest
from aiohttp import web
import aiohttp
-
+import os
from gns3server.web.route import Route
# TODO: get rid of *
@@ -93,7 +93,7 @@ class Query:
response.json = None
else:
response.json = {}
- if kwargs.get('example'):
+ if kwargs.get('example') and os.environ.get("PYTEST_BUILD_DOCUMENTATION") == "1":
self._dump_example(method, response.route, body, response)
return response