Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1972,7 +1972,7 @@ protected void finalizeVmMetaData(final VM vm, final VM.Record vmr, final Connec
// 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);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public static void setExtraConfigurationToVm(Connection conn, VM.Record vmr, VM
String paramValue = configParams.get(paramKey);

//Map params
LOGGER.debug("Applying [{}] configuration as [{}].", paramKey, paramValue);
if (paramKey.contains(":")) {
applyConfigWithNestedKeyValue(conn, vm, recordMap, paramKey, paramValue);
} else {
Expand All @@ -55,6 +56,11 @@ private static boolean isValidOperation(Map<String, Object> recordMap, String ac
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
* */
Expand All @@ -71,26 +77,27 @@ private static void applyConfigWithNestedKeyValue(Connection conn, VM vm, Map<St
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);
}
}
Expand Down