Skip to content

Commit 1e133d0

Browse files
kvm: Handle the failures when setting up memory balloon stats period for KVM VMs (#8049)
1 parent 3b11663 commit 1e133d0

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1313,8 +1313,8 @@ protected void setupMemoryBalloonStatsPeriod(Connect conn) {
13131313
}
13141314
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].",
13151315
currentVmBalloonStatsPeriod, vmId, dm.getName()));
1316-
} catch (final LibvirtException e) {
1317-
s_logger.warn("Failed to set up memory balloon stats period." + e.getMessage());
1316+
} catch (final Exception e) {
1317+
s_logger.warn(String.format("Failed to set up memory balloon stats period for the VM %s with exception %s", parser.getName(), e.getMessage()));
13181318
}
13191319
}
13201320
}

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public class LibvirtDomainXMLParser {
5959
private Integer vncPort;
6060
private String desc;
6161

62+
private String name;
63+
6264
public boolean parseDomainXML(String domXML) {
6365
DocumentBuilder builder;
6466
try {
@@ -71,6 +73,7 @@ public boolean parseDomainXML(String domXML) {
7173
Element rootElement = doc.getDocumentElement();
7274

7375
desc = getTagValue("description", rootElement);
76+
name = getTagValue("name", rootElement);
7477

7578
Element devices = (Element)rootElement.getElementsByTagName("devices").item(0);
7679
NodeList disks = devices.getElementsByTagName("disk");
@@ -303,15 +306,19 @@ public boolean parseDomainXML(String domXML) {
303306
String path = getTagValue("backend", rng);
304307
String bytes = getAttrValue("rate", "bytes", rng);
305308
String period = getAttrValue("rate", "period", rng);
306-
307-
if (StringUtils.isEmpty(backendModel)) {
308-
def = new RngDef(path, Integer.parseInt(bytes), Integer.parseInt(period));
309+
if (StringUtils.isAnyEmpty(bytes, period)) {
310+
s_logger.debug(String.format("Bytes and period in the rng section should not be null, please check the VM %s", name));
309311
} else {
310-
def = new RngDef(path, RngBackendModel.valueOf(backendModel.toUpperCase()),
311-
Integer.parseInt(bytes), Integer.parseInt(period));
312+
if (StringUtils.isEmpty(backendModel)) {
313+
def = new RngDef(path, Integer.parseInt(bytes), Integer.parseInt(period));
314+
} else {
315+
def = new RngDef(path, RngBackendModel.valueOf(backendModel.toUpperCase()),
316+
Integer.parseInt(bytes), Integer.parseInt(period));
317+
}
318+
}
319+
if (def != null) {
320+
rngDefs.add(def);
312321
}
313-
314-
rngDefs.add(def);
315322
}
316323

317324
NodeList watchDogs = devices.getElementsByTagName("watchdog");
@@ -418,4 +425,8 @@ public List<WatchDogDef> getWatchDogs() {
418425
public String getDescription() {
419426
return desc;
420427
}
428+
429+
public String getName() {
430+
return name;
431+
}
421432
}

0 commit comments

Comments
 (0)