libvirt: allow direct SPICE connections to qemu

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
This commit is contained in:
Michael Still
2025-02-22 08:25:38 +11:00
parent d8e95078cd
commit cbc263f6bc
25 changed files with 348 additions and 38 deletions
@@ -19,8 +19,8 @@
}
],
"status": "CURRENT",
"version": "2.98",
"version": "2.99",
"min_version": "2.1",
"updated": "2013-07-23T11:33:21Z"
}
}
}
@@ -22,9 +22,9 @@
}
],
"status": "CURRENT",
"version": "2.98",
"version": "2.99",
"min_version": "2.1",
"updated": "2013-07-23T11:33:21Z"
}
]
}
}