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
+1 -1
View File
@@ -170,7 +170,7 @@
tox_envlist: all
# bug #1940425 only affect ml2/ovn so we execute
# test_live_migration_with_trunk in this job to keep
tempest_test_regex: (^tempest\..*compute\..*(migration|resize|reboot).*)
tempest_test_regex: (^tempest\..*compute\..*(migration|resize|reboot|spice).*)
devstack_localrc:
Q_AGENT: openvswitch
Q_ML2_TENANT_NETWORK_TYPE: vxlan