bug 7185: the tags logic in the update disk,service offerings was wrong. once a tag is created, it should not be modified. we should only append to the existing list of tags, adding more tags. fixing the same

status 7185: resolved fixed
This commit is contained in:
abhishek 2010-11-16 12:50:36 -08:00
parent f9333a282d
commit 0876136dc4

View File

@ -1183,10 +1183,24 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
offering.setGuestIpType(guestIpType);
}
if (tags != null) {
if (tags.trim().isEmpty()) {
if (tags != null)
{
if (tags.trim().isEmpty() && offeringHandle.getTags() == null)
{
//no new tags; no existing tags
offering.setTagsArray(csvTagsToList(null));
} else {
}
else if (!tags.trim().isEmpty() && offeringHandle.getTags() != null)
{
//new tags + existing tags
List<String> oldTags = csvTagsToList(offeringHandle.getTags());
List<String> newTags = csvTagsToList(tags);
oldTags.addAll(newTags);
offering.setTagsArray(oldTags);
}
else if(!tags.trim().isEmpty())
{
//new tags; NO existing tags
offering.setTagsArray(csvTagsToList(tags));
}
}
@ -1247,9 +1261,9 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
String tags = cmd.getTags();
//Check if diskOffering exists
DiskOfferingVO diskOffering = _diskOfferingDao.findById(diskOfferingId);
DiskOfferingVO diskOfferingHandle = _diskOfferingDao.findById(diskOfferingId);
if (diskOffering == null) {
if (diskOfferingHandle == null) {
throw new InvalidParameterValueException("Unable to find disk offering by id " + diskOfferingId);
}
@ -1258,7 +1272,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
return _diskOfferingDao.findById(diskOfferingId);
}
diskOffering = _diskOfferingDao.createForUpdate(diskOfferingId);
DiskOfferingVO diskOffering = _diskOfferingDao.createForUpdate(diskOfferingId);
if (name != null) {
diskOffering.setName(name);
@ -1268,12 +1282,26 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
diskOffering.setDisplayText(displayText);
}
if (tags != null) {
if (tags.trim().isEmpty()) {
if (tags != null)
{
if (tags.trim().isEmpty() && diskOfferingHandle.getTags() == null)
{
//no new tags; no existing tags
diskOffering.setTagsArray(csvTagsToList(null));
} else {
}
else if (!tags.trim().isEmpty() && diskOfferingHandle.getTags() != null)
{
//new tags + existing tags
List<String> oldTags = csvTagsToList(diskOfferingHandle.getTags());
List<String> newTags = csvTagsToList(tags);
oldTags.addAll(newTags);
diskOffering.setTagsArray(oldTags);
}
else if(!tags.trim().isEmpty())
{
//new tags; NO existing tags
diskOffering.setTagsArray(csvTagsToList(tags));
}
}
}
if (_diskOfferingDao.update(diskOfferingId, diskOffering)) {