From 197dc6cf6e1022b295cb3a722de95074ce11a1a5 Mon Sep 17 00:00:00 2001 From: nit Date: Mon, 13 Jun 2011 19:04:07 +0530 Subject: [PATCH] registerIso - remove hardcoding of GuestosId when its None. Retrieve it from DB. --- api/src/com/cloud/api/ApiConstants.java | 1 + server/src/com/cloud/api/ApiDBUtils.java | 4 ++++ .../src/com/cloud/storage/dao/GuestOSDao.java | 2 ++ .../com/cloud/storage/dao/GuestOSDaoImpl.java | 19 ++++++++++++++++++- .../cloud/template/TemplateAdapterBase.java | 9 ++++++--- 5 files changed, 31 insertions(+), 4 deletions(-) mode change 100644 => 100755 server/src/com/cloud/storage/dao/GuestOSDao.java mode change 100644 => 100755 server/src/com/cloud/storage/dao/GuestOSDaoImpl.java diff --git a/api/src/com/cloud/api/ApiConstants.java b/api/src/com/cloud/api/ApiConstants.java index 22baf904b2c..977baeba4f1 100755 --- a/api/src/com/cloud/api/ApiConstants.java +++ b/api/src/com/cloud/api/ApiConstants.java @@ -94,6 +94,7 @@ public class ApiConstants { public static final String IS_RECURSIVE = "isrecursive"; public static final String IS_SHARED = "isshared"; public static final String ISO_FILTER = "isofilter"; + public static final String ISO_GUEST_OS_NONE = "None"; public static final String JOB_ID = "jobid"; public static final String JOB_STATUS = "jobstatus"; public static final String LASTNAME = "lastname"; diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 9116a9960b0..2a2da56c05f 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -355,6 +355,10 @@ public class ApiDBUtils { return _guestOSDao.findByIdIncludingRemoved(id); } + public static GuestOS findGuestOSByDisplayName(String displayName) { + return _guestOSDao.listByDisplayName(displayName); + } + public static HostVO findHostById(Long hostId) { return _hostDao.findByIdIncludingRemoved(hostId); } diff --git a/server/src/com/cloud/storage/dao/GuestOSDao.java b/server/src/com/cloud/storage/dao/GuestOSDao.java old mode 100644 new mode 100755 index dd19fb8cef0..d139dc5647b --- a/server/src/com/cloud/storage/dao/GuestOSDao.java +++ b/server/src/com/cloud/storage/dao/GuestOSDao.java @@ -21,5 +21,7 @@ import com.cloud.storage.GuestOSVO; import com.cloud.utils.db.GenericDao; public interface GuestOSDao extends GenericDao { + + GuestOSVO listByDisplayName(String displayName); } diff --git a/server/src/com/cloud/storage/dao/GuestOSDaoImpl.java b/server/src/com/cloud/storage/dao/GuestOSDaoImpl.java old mode 100644 new mode 100755 index eea950fe430..8cc145332ab --- a/server/src/com/cloud/storage/dao/GuestOSDaoImpl.java +++ b/server/src/com/cloud/storage/dao/GuestOSDaoImpl.java @@ -17,16 +17,33 @@ */ package com.cloud.storage.dao; +import java.util.List; + import javax.ejb.Local; import com.cloud.storage.GuestOSVO; +import com.cloud.storage.VMTemplateHostVO; import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchBuilder; +import com.cloud.utils.db.SearchCriteria; @Local (value={GuestOSDao.class}) public class GuestOSDaoImpl extends GenericDaoBase implements GuestOSDao { + + protected final SearchBuilder Search; + protected GuestOSDaoImpl() { - + Search = createSearchBuilder(); + Search.and("display_name", Search.entity().getDisplayName(), SearchCriteria.Op.EQ); + Search.done(); } + @Override + public GuestOSVO listByDisplayName(String displayName) { + SearchCriteria sc = Search.create(); + sc.setParameters("display_name", displayName); + return findOneBy(sc); + } + } diff --git a/server/src/com/cloud/template/TemplateAdapterBase.java b/server/src/com/cloud/template/TemplateAdapterBase.java index adb574ebd6d..150185f0aab 100755 --- a/server/src/com/cloud/template/TemplateAdapterBase.java +++ b/server/src/com/cloud/template/TemplateAdapterBase.java @@ -7,6 +7,8 @@ import javax.naming.ConfigurationException; import org.apache.log4j.Logger; +import com.cloud.api.ApiConstants; +import com.cloud.api.ApiDBUtils; import com.cloud.api.commands.DeleteIsoCmd; import com.cloud.api.commands.DeleteTemplateCmd; import com.cloud.api.commands.RegisterIsoCmd; @@ -23,6 +25,7 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.host.dao.HostDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.org.Grouping; +import com.cloud.storage.GuestOS; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.TemplateType; @@ -105,12 +108,12 @@ public abstract class TemplateAdapterBase implements TemplateAdapter { if (bootable == null) { bootable = Boolean.TRUE; } - - if ((guestOSId == null || guestOSId == 138L) && bootable == true){ + GuestOS noneGuestOs = ApiDBUtils.findGuestOSByDisplayName(ApiConstants.ISO_GUEST_OS_NONE); + if ((guestOSId == null || guestOSId == noneGuestOs.getId()) && bootable == true){ throw new InvalidParameterValueException("Please pass a valid GuestOS Id"); } if (bootable == false){ - guestOSId = 138L; //Guest os id of None. + guestOSId = noneGuestOs.getId(); //Guest os id of None. } } else { if (bits == null) {