====== Nova RDP Support API====== Nova currently provides support for [[http://en.wikipedia.org/wiki/Virtual_Network_Computing|VNC]] and [[http://en.wikipedia.org/wiki/SPICE_(protocol)|SPICE]] graphical consoles. VNC in particular is the protocol employed natively by most popular hypervisors supported by Nova. [[http://en.wikipedia.org/wiki/Hyper-V|Microsoft Hyper-V]] in this context is a remarkable exception, as it employs the [[http://en.wikipedia.org/wiki/Remote_Desktop_Protocol|Remote Desktop Protocol (RDP)]] for graphical console access, based on [[http://msdn.microsoft.com/en-us/library/jj712081.aspx|Open Specifications]] and implemented by various open source projects. [[http://www.youtube.com/watch?v=DhBa-IuTQAs|Here]]'s an example video showing an HTML5 RDP console based on [[https://github.com/FreeRDP/FreeRDP|FreeRDP]]. ---- ===== Getting an RDP console URL ===== This requires a public API which is symmetric with the VNC and SPICE ones. ==== Get an RDP console URL: V2 API ==== ^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) === Example. Get RDP console URL request: XML === === Example. Get RDP console URL request: JSON === { "os-getRDPConsole": { "type": "rdp-html5" } } === Example. Get RDP console URL response: XML === rdp-html5 http://example.com:6083/?token=f9906a48-b71e-4f18-baca-c987da3ebdb3 === Example. Get RDP console URL response: JSON === { "console": { "type": "rdp-html5", "url": "http://example.com:6083/?token=f9906a48-b71e-4f18-baca-c987da3ebdb3&title=dafa(75ecef58-3b8e-4659-ab3b-5501454188e9)" } } ---- ==== Get an RDP console URL: V3 API ==== ^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) === Example. Get RDP console URL request: XML === === Example. Get RDP console URL request: JSON === { "get_rdp_console": { "type": "rdp-html5" } } === Example. Get RDP console URL response: XML === Same output as in the [[nova-rdp-api#Example. Get RDP console URL response: XML|V2 API example]] === Example. Get RDP console URL response: JSON === Same output as in the [[nova-rdp-api#Example. Get RDP console URL response: JSON|V2 API example]] ---- ===== Getting console connection details ===== 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. ==== Get console connection info: V2 API ==== ^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) === Example. Get console connection request: XML === === Example. Get console connection request: JSON === { "os-getConsoleConnectInfo": null } === Example. Get console connection response: XML === b48316c5-71e8-45e4-9884-6c78055b9b13 localhost 3389 51af38c3-555e-4884-a314-6c8cdde37444 === Example. Get console connection response: JSON === { "console": { "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13", "host": "localhost", "port": 3389, "internal_access_path": "51af38c3-555e-4884-a314-6c8cdde37444" } } ---- ==== Get console connection info: V3 API ==== ^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) === Example. Get console connection request: XML === === Example. Get console connection request: JSON === { "get_console_connect_info": null } === Example. Get console connection response: XML === Same output as in the [[nova-rdp-api#Example. Get console connection response: XML|V2 API example]] === Example. Get console connection response: JSON === Same output as in the [[nova-rdp-api#Example. Get console connection response: JSON|V2 API example]]