CLOUDSTACK-4649: allow to update template details with addResourceDetails API

Conflicts:
	server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
This commit is contained in:
Alena Prokharchyk 2013-10-22 10:26:37 -07:00
parent 3ec14c4baf
commit d79135f4e6
3 changed files with 17 additions and 1 deletions

View File

@ -29,4 +29,6 @@ public interface VMTemplateDetailsDao extends GenericDao<VMTemplateDetailVO, Lon
VMTemplateDetailVO findDetail(long templateId, String name);
void deleteDetails(long vmId);
void addTemplateDetail(Long templateId, String key, String value);
}

View File

@ -96,4 +96,16 @@ public class VMTemplateDetailsDaoImpl extends GenericDaoBase<VMTemplateDetailVO,
}
txn.commit();
}
@Override
public void addTemplateDetail(Long templateId, String key, String value) {
VMTemplateDetailVO detail = findDetail(templateId, key);
if (detail == null) {
VMTemplateDetailVO newEntry = new VMTemplateDetailVO(templateId, key, value);
persist(newEntry);
} else {
detail.setValue(value);
update(detail.getId(), detail);
}
}
}

View File

@ -213,7 +213,7 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
}
// TODO - Have a better design here.
if(resourceType == TaggedResourceType.Volume){
if (resourceType == TaggedResourceType.Volume){
VolumeDetailVO v = new VolumeDetailVO(id, key, value);
_volumeDetailDao.persist(v);
} else if (resourceType == TaggedResourceType.Nic){
@ -227,6 +227,8 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
_networkDetailsDao.persist(networkDetail);
} else if (resourceType == TaggedResourceType.UserVm) {
_userVmDetailsDao.addVmDetail(id, key, value);
} else if (resourceType == TaggedResourceType.Template) {
_templateDetailsDao.addTemplateDetail(id, key, value);
} else{
throw new InvalidParameterValueException("The resource type " + resourceType + " is not supported by the API yet");
}