This is an automated email from the ASF dual-hosted git repository.
weizhou pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push:
new 1e133d05c7a kvm: Handle the failures when setting up memory balloon
stats period for KVM VMs (#8049)
1e133d05c7a is described below
commit 1e133d05c7a804da7caccffaa16e066e4754254b
Author: Harikrishna <[email protected]>
AuthorDate: Fri Nov 3 13:37:11 2023 +0530
kvm: Handle the failures when setting up memory balloon stats period for
KVM VMs (#8049)
---
.../kvm/resource/LibvirtComputingResource.java | 4 ++--
.../kvm/resource/LibvirtDomainXMLParser.java | 25 ++++++++++++++++------
2 files changed, 20 insertions(+), 9 deletions(-)
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 265e786e8f8..e239443197d 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
@@ -1313,8 +1313,8 @@ public class LibvirtComputingResource extends
ServerResourceBase implements Serv
}
s_logger.debug(String.format("The memory balloon stats period
[%s] has been set successfully for the VM (Libvirt Domain) with ID [%s] and
name [%s].",
currentVmBalloonStatsPeriod, vmId, dm.getName()));
- } catch (final LibvirtException e) {
- s_logger.warn("Failed to set up memory balloon stats period."
+ e.getMessage());
+ } catch (final Exception e) {
+ s_logger.warn(String.format("Failed to set up memory balloon
stats period for the VM %s with exception %s", parser.getName(),
e.getMessage()));
}
}
}
diff --git
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
index cb650e24b2f..80a35a04f93 100644
---
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
+++
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
@@ -59,6 +59,8 @@ public class LibvirtDomainXMLParser {
private Integer vncPort;
private String desc;
+ private String name;
+
public boolean parseDomainXML(String domXML) {
DocumentBuilder builder;
try {
@@ -71,6 +73,7 @@ public class LibvirtDomainXMLParser {
Element rootElement = doc.getDocumentElement();
desc = getTagValue("description", rootElement);
+ name = getTagValue("name", rootElement);
Element devices =
(Element)rootElement.getElementsByTagName("devices").item(0);
NodeList disks = devices.getElementsByTagName("disk");
@@ -303,15 +306,19 @@ public class LibvirtDomainXMLParser {
String path = getTagValue("backend", rng);
String bytes = getAttrValue("rate", "bytes", rng);
String period = getAttrValue("rate", "period", rng);
-
- if (StringUtils.isEmpty(backendModel)) {
- def = new RngDef(path, Integer.parseInt(bytes),
Integer.parseInt(period));
+ if (StringUtils.isAnyEmpty(bytes, period)) {
+ s_logger.debug(String.format("Bytes and period in the rng
section should not be null, please check the VM %s", name));
} else {
- def = new RngDef(path,
RngBackendModel.valueOf(backendModel.toUpperCase()),
- Integer.parseInt(bytes),
Integer.parseInt(period));
+ if (StringUtils.isEmpty(backendModel)) {
+ def = new RngDef(path, Integer.parseInt(bytes),
Integer.parseInt(period));
+ } else {
+ def = new RngDef(path,
RngBackendModel.valueOf(backendModel.toUpperCase()),
+ Integer.parseInt(bytes),
Integer.parseInt(period));
+ }
+ }
+ if (def != null) {
+ rngDefs.add(def);
}
-
- rngDefs.add(def);
}
NodeList watchDogs = devices.getElementsByTagName("watchdog");
@@ -418,4 +425,8 @@ public class LibvirtDomainXMLParser {
public String getDescription() {
return desc;
}
+
+ public String getName() {
+ return name;
+ }
}