This is an automated email from the ASF dual-hosted git repository.

nvazquez pushed a commit to branch 4.22
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.22 by this push:
     new 57e02515bab Add VM detail for KVM hint dedicated feature (#14254)
57e02515bab is described below

commit 57e02515bab894cb8f996592757367c52962add7
Author: Nicolas Vazquez <[email protected]>
AuthorDate: Wed Oct 21 10:12:08 2026 -0300

    Add VM detail for KVM hint dedicated feature (#14254)
---
 api/src/main/java/com/cloud/vm/VmDetailConstants.java            | 3 +++
 .../cloud/hypervisor/kvm/resource/LibvirtComputingResource.java  | 3 +++
 .../java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java     | 9 +++++++++
 server/src/main/java/com/cloud/api/query/QueryManagerImpl.java   | 1 +
 4 files changed, 16 insertions(+)

diff --git a/api/src/main/java/com/cloud/vm/VmDetailConstants.java 
b/api/src/main/java/com/cloud/vm/VmDetailConstants.java
index db766572497..1ee1345b056 100644
--- a/api/src/main/java/com/cloud/vm/VmDetailConstants.java
+++ b/api/src/main/java/com/cloud/vm/VmDetailConstants.java
@@ -58,6 +58,9 @@ public interface VmDetailConstants {
     // KVM specific, disk controllers
     String KVM_SKIP_FORCE_DISK_CONTROLLER = "skip.force.disk.controller";
 
+    // KVM specific, configuring special features
+    String KVM_HINT_DEDICATED = "kvm.hint.dedicated";
+
     // Mac OSX guest specific (internal)
     String SMC_PRESENT = "smc.present";
     String FIRMWARE = "firmware";
diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index a9ed0c62cab..9409cab00b4 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -3250,6 +3250,9 @@ public class LibvirtComputingResource extends 
ServerResourceBase implements Serv
         if (isUefiEnabled && isSecureBoot) {
             features.addFeatures(SMM);
         }
+        if (MapUtils.isNotEmpty(customParams) && 
customParams.containsKey(VmDetailConstants.KVM_HINT_DEDICATED)) {
+            
features.setKvmHintDedicated(Boolean.parseBoolean(customParams.get(VmDetailConstants.KVM_HINT_DEDICATED)));
+        }
         return features;
     }
 
diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
index 54b5d289eb3..c7c225abf20 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
@@ -391,6 +391,8 @@ public class LibvirtVMDef {
         private final List<String> _features = new ArrayList<String>();
 
         private HyperVEnlightenmentFeatureDef hyperVEnlightenmentFeatureDef = 
null;
+        private boolean kvmHintDedicated = false;
+
         public void addFeatures(String feature) {
             _features.add(feature);
         }
@@ -399,6 +401,10 @@ public class LibvirtVMDef {
             this.hyperVEnlightenmentFeatureDef = hyperVEnlightenmentFeatureDef;
         }
 
+        public void setKvmHintDedicated(boolean kvmHintDedicated) {
+            this.kvmHintDedicated = kvmHintDedicated;
+        }
+
         @Override
         public String toString() {
             StringBuilder feaBuilder = new StringBuilder();
@@ -416,6 +422,9 @@ public class LibvirtVMDef {
                     feaBuilder.append(hpervF);
                 }
             }
+            if (kvmHintDedicated) {
+                feaBuilder.append("<kvm><hint-dedicated state='on'/></kvm>\n");
+            }
             feaBuilder.append("</features>\n");
             return feaBuilder.toString();
         }
diff --git a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java 
b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
index d557ceb9ce3..d2f82ba3700 100644
--- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
@@ -5635,6 +5635,7 @@ public class QueryManagerImpl extends 
MutualExclusiveIdsManagerBase implements Q
             options.put(VmDetailConstants.GUEST_CPU_MODEL, 
Collections.emptyList());
             options.put(VmDetailConstants.KVM_GUEST_OS_MACHINE_TYPE, 
Collections.emptyList());
             options.put(VmDetailConstants.KVM_SKIP_FORCE_DISK_CONTROLLER, 
Arrays.asList("true", "false"));
+            options.put(VmDetailConstants.KVM_HINT_DEDICATED, 
Arrays.asList("true", "false"));
         }
 
         if (HypervisorType.VMware.equals(hypervisorType)) {

Reply via email to