]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
domain_capabilities: add console capabilities
authorRoman Bogorodskiy <bogorodskiy@gmail.com>
Sun, 11 May 2025 16:20:20 +0000 (18:20 +0200)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Wed, 4 Jun 2025 17:41:06 +0000 (19:41 +0200)
Currently, domain capabilities do not include information about the
supported console device types. While most of the drivers support
'pty' console type, it's not the case for bhyve. Without this
information, management software cannot always generate compatible
domain configuration.

To address that, extend domain capabilities like that:

   <devices>
    ...
    <console supported='yes'>
      <enum name='type'>
        <value>pty</value>
        <value>type2</value>
        ...
      </enum>
    </console>
    ...
   </devices>

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/domain_capabilities.c
src/conf/domain_capabilities.h
src/conf/schemas/domaincaps.rng

index 27551f6102facd388dfd6a86c9934fdadcfdceef..f7cce92ca197d3e371dd05be9ac2538a54f3a076 100644 (file)
@@ -689,6 +689,17 @@ virDomainCapsDevicePanicFormat(virBuffer *buf,
 }
 
 
+static void
+virDomainCapsDeviceConsoleFormat(virBuffer *buf,
+                                 const virDomainCapsDeviceConsole *console)
+{
+    FORMAT_PROLOGUE(console);
+
+    ENUM_PROCESS(console, type, virDomainChrTypeToString);
+
+    FORMAT_EPILOGUE(console);
+}
+
 /**
  * virDomainCapsFeatureGICFormat:
  * @buf: target buffer
@@ -871,6 +882,7 @@ virDomainCapsFormat(const virDomainCaps *caps)
     virDomainCapsDeviceCryptoFormat(&buf, &caps->crypto);
     virDomainCapsDeviceNetFormat(&buf, &caps->net);
     virDomainCapsDevicePanicFormat(&buf, &caps->panic);
+    virDomainCapsDeviceConsoleFormat(&buf, &caps->console);
 
     virBufferAdjustIndent(&buf, -2);
     virBufferAddLit(&buf, "</devices>\n");
index 69dd1a15c114b7573e1de284b1de236f48d61775..60d5fe77de617387f5f20f6ee93a5dbba6dc781e 100644 (file)
@@ -265,6 +265,13 @@ struct _virDomainCapsDevicePanic {
     virDomainCapsEnum model;   /* virDomainPanicModel */
 };
 
+typedef struct _virDomainCapsDeviceConsole virDomainCapsDeviceConsole;
+struct _virDomainCapsDeviceConsole {
+    virTristateBool supported;
+    virDomainCapsEnum type;   /* virDomainChrType */
+};
+
+
 typedef enum {
     VIR_DOMAIN_CAPS_FEATURE_IOTHREADS = 0,
     VIR_DOMAIN_CAPS_FEATURE_VMCOREINFO,
@@ -304,6 +311,7 @@ struct _virDomainCaps {
     virDomainCapsDeviceCrypto crypto;
     virDomainCapsDeviceNet net;
     virDomainCapsDevicePanic panic;
+    virDomainCapsDeviceConsole console;
     /* add new domain devices here */
 
     virDomainCapsFeatureGIC gic;
index 595dbcd6344965c5e613a22edc52e5180979e2e5..8bc34691c720590417549714d3dc0e308c35f93e 100644 (file)
       <optional>
         <ref name="panic"/>
       </optional>
+      <optional>
+        <ref name="console"/>
+      </optional>
     </element>
   </define>
 
     </element>
   </define>
 
+  <define name="console">
+    <element name="console">
+      <ref name="supported"/>
+      <ref name="enum"/>
+    </element>
+  </define>
+
   <define name="interface">
     <element name="interface">
       <ref name="supported"/>