From a3495bda9dba1721b650f0f42d2390ad50f7ab22 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Wed, 22 Feb 2023 14:48:42 +0100 Subject: [PATCH 1/3] avoid hard coded guest OS IDs --- .../java/com/cloud/upgrade/GuestOsMapper.java | 5 ++++- .../cloud/upgrade/dao/Upgrade41720to41800.java | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java b/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java index 14dbfd085c02..df3ec1247d33 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java @@ -102,8 +102,11 @@ private boolean addGuestOs(long categoryId, String displayName) { guestOS = guestOSDao.persist(guestOS); return (guestOS != null); } + public void addGuestOsHypervisorMapping(GuestOSHypervisorMapping mapping, long category, String displayName) { + addGuestOsHypervisorMapping(mapping, getGuestOsId(category, displayName)); + } - public void addGuestOsHypervisorMapping(GuestOSHypervisorMapping mapping, long guestOsId) { + private void addGuestOsHypervisorMapping(GuestOSHypervisorMapping mapping, long guestOsId) { if(!isValidGuestOSHypervisorMapping(mapping)) { return; } diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41720to41800.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41720to41800.java index c24da883506f..77fffb17ddd0 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41720to41800.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41720to41800.java @@ -283,14 +283,18 @@ private void updateGuestOsMappings() { // Pass Guest OS Ids to update pre-4.14 mappings // Add support CentOS 8 for Xenserver 8.1.0 - guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("Xenserver", "8.1.0", "CentOS 8"), 297); + guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("Xenserver", "8.1.0", "CentOS 8"), + 1, "CentOS 8"); // Add support for Debian Buster 10 for Xenserver 8.1.0 - guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("Xenserver", "8.1.0", "Debian Buster 10"), 292); - guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("Xenserver", "8.1.0", "Debian Buster 10"), 293); + guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("Xenserver", "8.1.0", "Debian Buster 10"), + 2, "Debian GNU/Linux 10 (32-bit)"); + guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("Xenserver", "8.1.0", "Debian Buster 10"), + 2, "Debian GNU/Linux 10 (64-bit)"); // Add support for SUSE Linux Enterprise 15 (64-bit) for Xenserver 8.1.0 - guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("Xenserver", "8.1.0", "SUSE Linux Enterprise 15 (64-bit)"), 291); + guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("Xenserver", "8.1.0", "SUSE Linux Enterprise 15 (64-bit)"), + 5, "SUSE Linux Enterprise Server 15 (64-bit)"); // Add support for Ubuntu Focal Fossa 20.04 for Xenserver 8.2.0 mappings.add(new GuestOSHypervisorMapping("Xenserver", "8.2.0", "Ubuntu Focal Fossa 20.04")); @@ -313,7 +317,8 @@ private void updateGuestOsMappings() { mappings.clear(); // Add support for windows2019srv_64Guest from VMware 7.0 - guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("VMware", "7.0", "windows2019srv_64Guest"), 276); + guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("VMware", "7.0", "windows2019srv_64Guest"), + 6, "Windows Server 2019 (64-bit)"); // Add support for amazonlinux3_64Guest from VMware 7.0.1.0 mappings.add(new GuestOSHypervisorMapping("VMware", "7.0.1.0", "amazonlinux3_64Guest")); @@ -373,7 +378,8 @@ private void updateGuestOsMappings() { mappings.clear(); // Add support for windows2019srvNext_64Guest from VMware 7.0.1.0 - Pass Guest OS Ids to update pre-4.14 mappings - guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("VMware", "7.0.1.0", "windows2019srvNext_64Guest"), 276); + guestOsMapper.addGuestOsHypervisorMapping(new GuestOSHypervisorMapping("VMware", "7.0.1.0", "windows2019srvNext_64Guest"), + 6, "Windows Server 2019 (64-bit)"); // The below existing Guest OS Ids must be used for updating the guest OS hypervisor mappings // CentOS - 1, Debian - 2, Oracle - 3, RedHat - 4, SUSE - 5, Windows - 6, Other - 7, Novel - 8, Unix - 9, Ubuntu - 10, None - 11 From 6ab852f729aad15c88d5f0fb9cbf1d3d222755bc Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Wed, 22 Feb 2023 18:02:29 +0100 Subject: [PATCH 2/3] add logging in case of missing hypervisor --- .../src/main/java/com/cloud/upgrade/GuestOsMapper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java b/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java index df3ec1247d33..df0402c3f786 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java @@ -103,7 +103,12 @@ private boolean addGuestOs(long categoryId, String displayName) { return (guestOS != null); } public void addGuestOsHypervisorMapping(GuestOSHypervisorMapping mapping, long category, String displayName) { - addGuestOsHypervisorMapping(mapping, getGuestOsId(category, displayName)); + long guestOsId = getGuestOsId(category, displayName); + if (guestOsId == 0) { + LOG.warn(String.format("no guest os found for category %d and name %s, skipping mapping it to %s/%s", guestOsId, displayName, mapping.getHypervisorType(), mapping.getHypervisorVersion())); + } else { + addGuestOsHypervisorMapping(mapping, guestOsId); + } } private void addGuestOsHypervisorMapping(GuestOSHypervisorMapping mapping, long guestOsId) { From 0a13424eeaa5e0d8eaf4c63fa4df638a96bd6f51 Mon Sep 17 00:00:00 2001 From: dahn Date: Thu, 23 Feb 2023 09:50:42 +0100 Subject: [PATCH 3/3] warn -> error --- .../schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java b/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java index df0402c3f786..def77c58f829 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/GuestOsMapper.java @@ -105,7 +105,7 @@ private boolean addGuestOs(long categoryId, String displayName) { public void addGuestOsHypervisorMapping(GuestOSHypervisorMapping mapping, long category, String displayName) { long guestOsId = getGuestOsId(category, displayName); if (guestOsId == 0) { - LOG.warn(String.format("no guest os found for category %d and name %s, skipping mapping it to %s/%s", guestOsId, displayName, mapping.getHypervisorType(), mapping.getHypervisorVersion())); + LOG.error(String.format("no guest os found for category %d and name %s, skipping mapping it to %s/%s", guestOsId, displayName, mapping.getHypervisorType(), mapping.getHypervisorVersion())); } else { addGuestOsHypervisorMapping(mapping, guestOsId); }