This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new adc05f8d590 Fix XenServer nested extra configuration (#8698)
adc05f8d590 is described below
commit adc05f8d59021d9601e0a4eda1db67a20089495a
Author: Gabriel Pordeus Santos <[email protected]>
AuthorDate: Mon Mar 25 07:19:16 2024 -0300
Fix XenServer nested extra configuration (#8698)
---
.../xenserver/resource/CitrixResourceBase.java | 2 +-
.../xenserver/ExtraConfigurationUtility.java | 19 +++++++++++++------
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git
a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
index 295c96025ab..8f03648deb6 100644
---
a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
+++
b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
@@ -1972,7 +1972,7 @@ public abstract class CitrixResourceBase extends
ServerResourceBase implements S
// Add configuration settings VM record for User VM instances before
creating VM
Map<String, String> extraConfig = vmSpec.getExtraConfig();
if (vmSpec.getType().equals(VirtualMachine.Type.User) &&
MapUtils.isNotEmpty(extraConfig)) {
- logger.info("Appending user extra configuration settings to VM");
+ logger.info("Appending user extra configuration settings [{}] to
[{}].", extraConfig, vmSpec);
ExtraConfigurationUtility.setExtraConfigurationToVm(conn,vmr, vm,
extraConfig);
}
}
diff --git
a/plugins/hypervisors/xenserver/src/main/java/org/apache/cloudstack/hypervisor/xenserver/ExtraConfigurationUtility.java
b/plugins/hypervisors/xenserver/src/main/java/org/apache/cloudstack/hypervisor/xenserver/ExtraConfigurationUtility.java
index a2702efeb72..64d83c1427b 100644
---
a/plugins/hypervisors/xenserver/src/main/java/org/apache/cloudstack/hypervisor/xenserver/ExtraConfigurationUtility.java
+++
b/plugins/hypervisors/xenserver/src/main/java/org/apache/cloudstack/hypervisor/xenserver/ExtraConfigurationUtility.java
@@ -43,6 +43,7 @@ public class ExtraConfigurationUtility {
String paramValue = configParams.get(paramKey);
//Map params
+ LOGGER.debug("Applying [{}] configuration as [{}].", paramKey,
paramValue);
if (paramKey.contains(":")) {
applyConfigWithNestedKeyValue(conn, vm, recordMap, paramKey,
paramValue);
} else {
@@ -55,6 +56,11 @@ public class ExtraConfigurationUtility {
return recordMap.containsKey(actualParam);
}
+ private static Map<String, String> putInMap(Map<String, String> map,
String key, String value) {
+ map.put(key, value);
+ return map;
+ }
+
/**
* Nested keys contain ":" between the paramKey and need to split into
operation param and key
* */
@@ -71,26 +77,27 @@ public class ExtraConfigurationUtility {
try {
switch (actualParam) {
case "VCPUs_params":
- vm.addToVCPUsParams(conn, keyName, paramValue);
+ vm.setVCPUsParams(conn, putInMap(vm.getVCPUsParams(conn),
keyName, paramValue));
break;
case "platform":
- vm.addToOtherConfig(conn, keyName, paramValue);
+ vm.setOtherConfig(conn, putInMap(vm.getOtherConfig(conn),
keyName, paramValue));
break;
case "HVM_boot_params":
- vm.addToHVMBootParams(conn, keyName, paramValue);
+ vm.setHVMBootParams(conn,
putInMap(vm.getHVMBootParams(conn), keyName, paramValue));
break;
case "other_config":
- vm.addToOtherConfig(conn, keyName, paramValue);
+ vm.setOtherConfig(conn, putInMap(vm.getOtherConfig(conn),
keyName, paramValue));
break;
case "xenstore_data":
- vm.addToXenstoreData(conn, keyName, paramValue);
+ vm.setXenstoreData(conn,
putInMap(vm.getXenstoreData(conn), keyName, paramValue));
break;
default:
String msg = String.format("Passed configuration %s is not
supported", paramKey);
LOGGER.warn(msg);
}
} catch (XmlRpcException | Types.XenAPIException e) {
- LOGGER.error("Exception caught while setting VM configuration.
exception: " + e.getMessage());
+ LOGGER.error("Exception caught while setting VM configuration:
[{}]", e.getMessage() == null ? e.toString() : e.getMessage());
+ LOGGER.debug("Exception caught while setting VM configuration", e);
throw new CloudRuntimeException("Exception caught while setting VM
configuration", e);
}
}