package org.ovirt.engine.core.vdsbroker.architecture; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.utils.StringMapUtils; import org.ovirt.engine.core.vdsbroker.vdsbroker.VdsProperties; public class MemoryUtils { /** * Creates "HotplugMemoryParams" as defined * in <a href="https://github.com/oVirt/vdsm/blob/master/lib/vdsm/api/vdsm-api.yml">vdsm-api.yml</a> * * @param vmDevice memory device */ public static Map<String, Object> createVmMemoryDeviceMap(VmDevice vmDevice, boolean copyAlias) { Map<String, Object> data = new HashMap<>(); Map<String, Object> memDeviceData = new HashMap<>(); data.put("vmId", vmDevice.getVmId().toString()); memDeviceData.put(VdsProperties.Type, vmDevice.getType().getValue()); memDeviceData.put(VdsProperties.Device, vmDevice.getDevice()); if (StringUtils.isNotBlank(vmDevice.getAddress())) { memDeviceData.put(VdsProperties.Address, StringMapUtils.string2Map(vmDevice.getAddress())); } memDeviceData.put(VdsProperties.SpecParams, vmDevice.getSpecParams()); memDeviceData.put(VdsProperties.DeviceId, vmDevice.getId().getDeviceId().toString()); if (copyAlias) { memDeviceData.put(VdsProperties.Alias, vmDevice.getAlias()); } memDeviceData.put("size", vmDevice.getSpecParams().get("size")); memDeviceData.put("node", vmDevice.getSpecParams().get("node")); data.put("memory", memDeviceData); return data; } }