From 995775d58855250a2072b22275cf032065efd7b7 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Fri, 20 Apr 2018 09:10:38 -0400 Subject: [PATCH] Prevent NPE if guest OS mapping is missing while prioritizing hosts (#2577) --- .../manager/allocator/impl/FirstFitAllocator.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/server/src/com/cloud/agent/manager/allocator/impl/FirstFitAllocator.java b/server/src/com/cloud/agent/manager/allocator/impl/FirstFitAllocator.java index 33cee36e192..f4ad478861e 100644 --- a/server/src/com/cloud/agent/manager/allocator/impl/FirstFitAllocator.java +++ b/server/src/com/cloud/agent/manager/allocator/impl/FirstFitAllocator.java @@ -29,6 +29,8 @@ import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import com.google.common.base.Strings; + import com.cloud.agent.manager.allocator.HostAllocator; import com.cloud.capacity.CapacityManager; import com.cloud.capacity.CapacityVO; @@ -417,6 +419,10 @@ public class FirstFitAllocator extends AdapterBase implements HostAllocator { // Determine the guest OS category of the template String templateGuestOSCategory = getTemplateGuestOSCategory(template); + if (Strings.isNullOrEmpty(templateGuestOSCategory)) { + return hosts; + } + List prioritizedHosts = new ArrayList(); List noHvmHosts = new ArrayList(); @@ -537,6 +543,11 @@ public class FirstFitAllocator extends AdapterBase implements HostAllocator { protected String getTemplateGuestOSCategory(VMTemplateVO template) { long guestOSId = template.getGuestOSId(); GuestOSVO guestOS = _guestOSDao.findById(guestOSId); + + if (guestOS == null) { + return null; + } + long guestOSCategoryId = guestOS.getCategoryId(); GuestOSCategoryVO guestOSCategory = _guestOSCategoryDao.findById(guestOSCategoryId); return guestOSCategory.getName();