From 68a0b27929de4f581f0e3fc411d1e01e8b18f5ea Mon Sep 17 00:00:00 2001 From: Sanjay Tripathi Date: Mon, 30 Dec 2013 17:09:05 +0530 Subject: [PATCH] CLOUDSTACK-3806: OS Preference can not be set. --- .../cloud/resource/ResourceManagerImpl.java | 24 ++++++++++++------- ui/scripts/system.js | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index d34c8443c8a..6c20644afe3 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -1272,23 +1272,29 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, if (guestOSCategoryId != null) { // Verify that the guest OS Category exists - if (guestOSCategoryId > 0) { - if (_guestOSCategoryDao.findById(guestOSCategoryId) == null) { - throw new InvalidParameterValueException("Please specify a valid guest OS category."); - } + if (!(guestOSCategoryId > 0) || _guestOSCategoryDao.findById(guestOSCategoryId) == null) { + throw new InvalidParameterValueException("Please specify a valid guest OS category."); } GuestOSCategoryVO guestOSCategory = _guestOSCategoryDao.findById(guestOSCategoryId); - Map hostDetails = _hostDetailsDao.findDetails(hostId); + DetailVO guestOSDetail = _hostDetailsDao.findDetail(hostId, "guest.os.category.id"); if (guestOSCategory != null && !GuestOSCategoryVO.CATEGORY_NONE.equalsIgnoreCase(guestOSCategory.getName())) { - // Save a new entry for guest.os.category.id - hostDetails.put("guest.os.category.id", String.valueOf(guestOSCategory.getId())); + // Create/Update an entry for guest.os.category.id + if (guestOSDetail != null) { + guestOSDetail.setValue(String.valueOf(guestOSCategory.getId())); + _hostDetailsDao.update(guestOSDetail.getId(), guestOSDetail); + } else { + Map detail = new HashMap(); + detail.put("guest.os.category.id", String.valueOf(guestOSCategory.getId())); + _hostDetailsDao.persist(hostId, detail); + } } else { // Delete any existing entry for guest.os.category.id - hostDetails.remove("guest.os.category.id"); + if (guestOSDetail != null) { + _hostDetailsDao.remove(guestOSDetail.getId()); + } } - _hostDetailsDao.persist(hostId, hostDetails); } List hostTags = cmd.getHostTags(); diff --git a/ui/scripts/system.js b/ui/scripts/system.js index be0c16e466a..609876894ae 100644 --- a/ui/scripts/system.js +++ b/ui/scripts/system.js @@ -13693,7 +13693,7 @@ var oscategoryObjs = json.listoscategoriesresponse.oscategory; var items = [{ id: '', - description: _l('label.none') + description: _l('') }]; $(oscategoryObjs).each(function() { items.push({