From 26b8041ad7d1fe38058d485f7ee106786281f69a Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Thu, 19 Apr 2018 10:50:51 -0400 Subject: [PATCH] Prevent NPE if guest OS mapping is missing while prioritizing hosts --- .../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 33cee36e1924..f4ad478861e1 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.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 @@ protected List prioritizeHosts(VMTemplateVO template, ServiceOff // 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 @@ protected String getHostGuestOSCategory(Host host) { 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();