bug 11814: TemplateResponse now returns template details info

This commit is contained in:
Kelven Yang 2011-11-18 16:34:42 -08:00
parent 7f7be6a1d5
commit 83d7757f2e
4 changed files with 30 additions and 2 deletions

View File

@ -18,6 +18,7 @@
package com.cloud.api.response;
import java.util.Date;
import java.util.Map;
import com.cloud.api.ApiConstants;
import com.cloud.serializer.Param;
@ -122,6 +123,9 @@ public class TemplateResponse extends BaseResponse {
@SerializedName("templatetag") @Param(description="the tag of this template")
private String templateTag;
@SerializedName(ApiConstants.DETAILS) @Param(description="additional key/value details tied with template")
private Map details;
@Override
public Long getObjectId() {
@ -390,4 +394,12 @@ public class TemplateResponse extends BaseResponse {
public void setTemplateTag(String templateTag) {
this.templateTag = templateTag;
}
public Map getDetails() {
return this.details;
}
public void setDetails(Map details) {
this.details = details;
}
}

View File

@ -18,6 +18,7 @@
package com.cloud.template;
import java.util.Date;
import java.util.Map;
import com.cloud.acl.ControlledEntity;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
@ -87,4 +88,6 @@ public interface VirtualMachineTemplate extends ControlledEntity {
Long getSourceTemplateId();
String getTemplateTag();
Map getDetails();
}

View File

@ -94,6 +94,7 @@ import com.cloud.storage.dao.SnapshotDao;
import com.cloud.storage.dao.StoragePoolDao;
import com.cloud.storage.dao.UploadDao;
import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VMTemplateDetailsDao;
import com.cloud.storage.dao.VMTemplateHostDao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.user.Account;
@ -151,6 +152,7 @@ public class ApiDBUtils {
private static SnapshotDao _snapshotDao;
private static StoragePoolDao _storagePoolDao;
private static VMTemplateDao _templateDao;
private static VMTemplateDetailsDao _templateDetailsDao;
private static VMTemplateHostDao _templateHostDao;
private static UploadDao _uploadDao;
private static UserDao _userDao;
@ -196,6 +198,7 @@ public class ApiDBUtils {
_snapshotDao = locator.getDao(SnapshotDao.class);
_storagePoolDao = locator.getDao(StoragePoolDao.class);
_templateDao = locator.getDao(VMTemplateDao.class);
_templateDetailsDao = locator.getDao(VMTemplateDetailsDao.class);
_templateHostDao = locator.getDao(VMTemplateHostDao.class);
_uploadDao = locator.getDao(UploadDao.class);
_userDao = locator.getDao(UserDao.class);
@ -425,7 +428,13 @@ public class ApiDBUtils {
}
public static VMTemplateVO findTemplateById(Long templateId) {
return _templateDao.findByIdIncludingRemoved(templateId);
VMTemplateVO template = _templateDao.findByIdIncludingRemoved(templateId);
if(template != null) {
Map details = _templateDetailsDao.findDetails(templateId);
if(details != null && !details.isEmpty())
template.setDetails(details);
}
return template;
}
public static VMTemplateHostVO findTemplateHostRef(long templateId, long zoneId) {

View File

@ -1435,7 +1435,8 @@ public class ApiResponseHelper implements ResponseGenerator {
response.setFormat(result.getFormat());
response.setOsTypeId(result.getGuestOSId());
response.setOsTypeName(ApiDBUtils.findGuestOSById(result.getGuestOSId()).getDisplayName());
response.setDetails(result.getDetails());
if (result.getFormat() == ImageFormat.ISO) { // Templates are always bootable
response.setBootable(result.isBootable());
} else {
@ -1499,6 +1500,7 @@ public class ApiResponseHelper implements ResponseGenerator {
templateResponse.setTemplateType(template.getTemplateType().toString());
}
templateResponse.setHypervisor(template.getHypervisorType().toString());
templateResponse.setDetails(template.getDetails());
GuestOS os = ApiDBUtils.findGuestOSById(template.getGuestOSId());
if (os != null) {
@ -1587,6 +1589,7 @@ public class ApiResponseHelper implements ResponseGenerator {
isoResponse.setPublic(iso.isPublicTemplate());
isoResponse.setCreated(iso.getCreated());
isoResponse.setPasswordEnabled(false);
isoResponse.setDetails(iso.getDetails());
Account owner = ApiDBUtils.findAccountById(iso.getAccountId());
if (owner != null) {
isoResponse.setAccount(owner.getAccountName());
@ -1630,6 +1633,7 @@ public class ApiResponseHelper implements ResponseGenerator {
isoResponse.setFeatured(iso.isFeatured());
isoResponse.setCrossZones(iso.isCrossZones());
isoResponse.setPublic(iso.isPublicTemplate());
isoResponse.setDetails(iso.getDetails());
// TODO: implement
GuestOS os = ApiDBUtils.findGuestOSById(iso.getGuestOSId());