From b1ddd7c2e6bbe2713fc79680e2bd451876cffa0d Mon Sep 17 00:00:00 2001 From: Harikrishna Date: Wed, 23 Dec 2020 19:37:21 +0530 Subject: [PATCH] =?UTF-8?q?vmware:=20Fix=20for=20mapping=20guest=20OS=20ty?= =?UTF-8?q?pe=20read=20from=20OVF=20to=20existing=20guest=20OS=20in=20C?= =?UTF-8?q?=E2=80=A6=20(#4553)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix for mapping guest OS type read from OVF to existing guest OS in CloudStack database while registering VMware template * Added unit tests to String Utils methods and updated the code * Updated the java doc section * Updated os description logic to keep equals ignore match with guest os display name --- .../deployasis/DeployAsIsHelperImpl.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/deployasis/DeployAsIsHelperImpl.java b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/deployasis/DeployAsIsHelperImpl.java index 66109660934..6d05af3337d 100644 --- a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/deployasis/DeployAsIsHelperImpl.java +++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/deployasis/DeployAsIsHelperImpl.java @@ -167,8 +167,26 @@ public class DeployAsIsHelperImpl implements DeployAsIsHelper { hypervisor.toString(), minimumHypervisorVersion); if (CollectionUtils.isNotEmpty(guestOsMappings)) { - GuestOSHypervisorVO mapping = guestOsMappings.get(0); - return mapping.getGuestOsId(); + Long guestOsId = null; + if (guestOsMappings.size() == 1) { + GuestOSHypervisorVO mapping = guestOsMappings.get(0); + guestOsId = mapping.getGuestOsId(); + } else { + if (!StringUtils.isEmpty(guestOsDescription)) { + for (GuestOSHypervisorVO guestOSHypervisorVO : guestOsMappings) { + GuestOSVO guestOSVO = guestOSDao.findById(guestOSHypervisorVO.getGuestOsId()); + if (guestOsDescription.equalsIgnoreCase(guestOSVO.getDisplayName())) { + guestOsId = guestOSHypervisorVO.getGuestOsId(); + break; + } + } + } + if (null == guestOsId) { + GuestOSHypervisorVO mapping = guestOsMappings.get(guestOsMappings.size()-1); + guestOsId = mapping.getGuestOsId(); + } + } + return guestOsId; } else { throw new CloudRuntimeException("Did not find a guest OS with type " + guestOsType); } @@ -301,7 +319,7 @@ public class DeployAsIsHelperImpl implements DeployAsIsHelper { } String propValue = null; try { - propValue = getValueFromInformationTO(informationTO); + propValue = getValueFromInformationTO(informationTO); } catch (RuntimeException re) { LOGGER.error("gson marshalling of property object fails: " + propKey,re); } catch (IOException e) {