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)) {