You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2024/03/25 10:19:23 UTC

(cloudstack) branch main updated: Fix XenServer nested extra configuration (#8698)

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 <ga...@gmail.com>
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);
         }
     }