Nova currently provides support for VNC and SPICE graphical consoles. VNC in particular is the protocol employed natively by most popular hypervisors supported by Nova. Microsoft Hyper-V in this context is a remarkable exception, as it employs the Remote Desktop Protocol (RDP) for graphical console access, based on Open Specifications and implemented by various open source projects.
Here's an example video showing an HTML5 RDP console based on FreeRDP.
This requires a public API which is symmetric with the VNC and SPICE ones.
Verb | URI | Description |
---|---|---|
GET | /servers/{id}/action | Gets the URL for accessing the RDP console. |
Normal Response Code(s): 200
Error Response Code(s): badRequest (400), itemNotFound (404), buildInProgress (409)
<?xml version="1.0" encoding="UTF-8"?> <os-getRDPConsole type="rdp-html5" />
{ "os-getRDPConsole": { "type": "rdp-html5" } }
<?xml version='1.0' encoding='UTF-8'?> <console> <type>rdp-html5</type> <url>http://example.com:6083/?token=f9906a48-b71e-4f18-baca-c987da3ebdb3</url> </console>
{ "console": { "type": "rdp-html5", "url": "http://example.com:6083/?token=f9906a48-b71e-4f18-baca-c987da3ebdb3&title=dafa(75ecef58-3b8e-4659-ab3b-5501454188e9)" } }
Verb | URI | Description |
---|---|---|
GET | /v3/servers/{id}/action | Gets the URL for accessing the RDP console. |
Normal Response Code(s): 200
Error Response Code(s): badRequest (400), itemNotFound (404), buildInProgress (409)
<?xml version="1.0" encoding="UTF-8"?> <get_rdp_console type="rdp-html5" />
{ "get_rdp_console": { "type": "rdp-html5" } }
Same output as in the V2 API example
Same output as in the V2 API example
Nova includes internally the required proxy solutions for VNC (novnc, xvpvnc) and SPICE, but this is not the case for RDP. Beside that, it's also desirable to leave to third party the ability to choose a custom graphical console UI solution not necessarily included with Nova. A public API has been provided to retrieve the relevant information by providing a valid console authentication token.
Verb | URI | Description |
---|---|---|
GET | /os-console-auth-tokens/{token_id} | Gets the connection info for the specified console authentication token. |
Normal Response Code(s): 200
Error Response Code(s): badRequest (400), itemNotFound (404)
<?xml version="1.0" encoding="UTF-8"?> <os-getConsoleConnectInfo/>
{ "os-getConsoleConnectInfo": null }
<?xml version='1.0' encoding='UTF-8'?> <console> <instance_uuid>b48316c5-71e8-45e4-9884-6c78055b9b13</instance_uuid> <host>localhost</host> <port>3389</port> <internal_access_path>51af38c3-555e-4884-a314-6c8cdde37444</internal_access_path> </console>
{ "console": { "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "host": "localhost", "port": 3389, "internal_access_path": "51af38c3-555e-4884-a314-6c8cdde37444" } }
Verb | URI | Description |
---|---|---|
GET | /v3/os-console-auth-tokens/{token_id} | Gets the connection info for the specified console authentication token. |
Normal Response Code(s): 200
Error Response Code(s): badRequest (400), itemNotFound (404)
<?xml version="1.0" encoding="UTF-8"?> <get_console_connect_info/>
{ "get_console_connect_info": null }
Same output as in the V2 API example
Same output as in the V2 API example