diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index d1eba117a16..c9e2e7ace56 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -1274,23 +1274,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) { - // Save a new entry for guest.os.category.id - hostDetails.put("guest.os.category.id", String.valueOf(guestOSCategory.getId())); + if (guestOSCategory != null && !GuestOSCategoryVO.CATEGORY_NONE.equalsIgnoreCase(guestOSCategory.getName())) { + // 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 6c49bf142e2..24e76e63f65 100644 --- a/ui/scripts/system.js +++ b/ui/scripts/system.js @@ -14252,7 +14252,7 @@ var oscategoryObjs = json.listoscategoriesresponse.oscategory; var items = [{ id: '', - description: _l('label.none') + description: _l('') }]; $(oscategoryObjs).each(function() { items.push({