This patch adds a new console type, "spice-direct", which provides
the connection information required to talk the native SPICE protocol
directly to qemu on the hypervisor. This is intended to be fronted
by a proxy which will handle authentication separately.
A new microversion is introduced which adds the type "spice-direct"
to the existing "spice" protocol.
An example request:
POST /servers/<uuid>/remote-consoles
{
"remote_console": {
"protocol": "spice",
"type": "spice-direct"
}
}
An example response:
{
"remote_console": {
"protocol": "spice",
"type": "spice-direct",
"url": "http://localhost:13200/nova?token=XXX";
}
}
This token can then be used to lookup connection details for the
console using a request like this:
GET /os-console-auth-tokens/<consoletoken>
Which returns something like this:
{
"console": {
"instance_uuid": <uuid>,
"host": <hypervisor>,
"port": <a TCP port number>,
"tls_port": <another TCP port number>,
"internal_access_path": null
}
}
APIImpact
Change-Id: I1e701cbabc0e2c435685e31465159eec09e3b1a0
120 lines
3.2 KiB
ReStructuredText
120 lines
3.2 KiB
ReStructuredText
.. -*- rst -*-
|
|
|
|
=================
|
|
Server Consoles
|
|
=================
|
|
|
|
Manage server consoles.
|
|
|
|
Create Console
|
|
==============
|
|
|
|
.. rest_method:: POST /servers/{server_id}/remote-consoles
|
|
|
|
.. note:: Microversion 2.6 or greater is required for this API.
|
|
|
|
The API provides a unified request for creating a remote console. The user can
|
|
get a URL to connect the console from this API. The URL includes the token
|
|
which is used to get permission to access the console. Servers may support
|
|
different console protocols. To return a remote console using a specific
|
|
protocol, such as VNC, set the ``protocol`` parameter to ``vnc``.
|
|
|
|
Normal response codes: 200
|
|
|
|
Error response codes: badRequest(400), unauthorized(401), forbidden(403), itemNotFound(404),
|
|
conflict(409), notImplemented(501)
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
|
|
- server_id: server_id_path
|
|
- remote_console: remote_console
|
|
- protocol: remote_console_protocol
|
|
- type: remote_console_type
|
|
|
|
**Example Get Remote VNC Console**
|
|
|
|
.. literalinclude:: ../../doc/api_samples/os-remote-consoles/v2.6/create-vnc-console-req.json
|
|
:language: javascript
|
|
|
|
**Example Get Remote spice-direct Console**
|
|
|
|
*``spice-direct`` consoles were added in microversion 2.99.*
|
|
|
|
.. literalinclude:: ../../doc/api_samples/os-remote-consoles/v2.99/create-spice-direct-console-req.json
|
|
:language: javascript
|
|
|
|
Response
|
|
--------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- remote_console: remote_console
|
|
- protocol: remote_console_protocol
|
|
- type: remote_console_type
|
|
- url: remote_console_url
|
|
|
|
**Example Get Remote VNC Console**
|
|
|
|
.. literalinclude:: ../../doc/api_samples/os-remote-consoles/v2.6/create-vnc-console-resp.json
|
|
:language: javascript
|
|
|
|
**Example Get Remote spice-direct Console**
|
|
|
|
*``spice-direct`` consoles were added in microversion 2.99.*
|
|
|
|
.. literalinclude:: ../../doc/api_samples/os-remote-consoles/v2.99/create-spice-direct-console-resp.json
|
|
:language: javascript
|
|
|
|
Show Console Connection Information
|
|
===================================
|
|
|
|
.. rest_method:: GET /os-console-auth-tokens/{console_token}
|
|
|
|
Given the console authentication token for a server, shows the related
|
|
connection information.
|
|
|
|
Nova HyperV driver has been removed therefore requests for RDP console connection
|
|
information will always return an http 400 error. Starting from microversion 2.31
|
|
it's available for all other console types.
|
|
|
|
Normal response codes: 200
|
|
|
|
Error response codes: badRequest(400), unauthorized(401), forbidden(403),
|
|
itemNotFound(404)
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- console_token: console_token
|
|
|
|
|
|
Response
|
|
--------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- console: console
|
|
- instance_uuid: instance_id_body
|
|
- host: console_host
|
|
- port: port_number
|
|
- tls_port: tls_port_number
|
|
- internal_access_path: internal_access_path
|
|
|
|
**Example Show Console Authentication Token**
|
|
|
|
.. literalinclude:: ../../doc/api_samples/os-console-auth-tokens/v2.31/get-console-connect-info-get-resp.json
|
|
:language: javascript
|
|
|
|
**Example Console Connection Information for a spice-direct Console**
|
|
|
|
*``spice-direct`` consoles were added in microversion 2.99.*
|
|
|
|
.. literalinclude:: ../../doc/api_samples/os-console-auth-tokens/v2.99/get-console-connect-info-get-resp.json
|
|
:language: javascript
|