bug 11814: TemplateResponse now returns template details info

This commit is contained in:
Kelven Yang 2011-11-18 16:34:42 -08:00
parent a59658177d
commit 061ff36434
4 changed files with 32 additions and 1 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.api.IdentityProxy;
@ -124,6 +125,10 @@ public class TemplateResponse extends BaseResponse implements ControlledEntityRe
@SerializedName(ApiConstants.PROJECT) @Param(description="the project name of the template")
private String projectName;
@SerializedName(ApiConstants.DETAILS) @Param(description="additional key/value details tied with template")
private Map details;
@Override
public Long getObjectId() {
@ -265,4 +270,12 @@ public class TemplateResponse extends BaseResponse implements ControlledEntityRe
public void setProjectName(String projectName) {
this.projectName = projectName;
}
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

@ -103,6 +103,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.VMTemplateSwiftDao;
import com.cloud.storage.dao.VolumeDao;
@ -163,6 +164,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 VMTemplateSwiftDao _templateSwiftDao;
private static UploadDao _uploadDao;
@ -213,6 +215,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);
_templateSwiftDao = locator.getDao(VMTemplateSwiftDao.class);
_uploadDao = locator.getDao(UploadDao.class);
@ -482,7 +485,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

@ -1426,6 +1426,7 @@ 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());
@ -1478,6 +1479,7 @@ public class ApiResponseHelper implements ResponseGenerator {
templateResponse.setPasswordEnabled(template.getEnablePassword());
templateResponse.setCrossZones(template.isCrossZones());
templateResponse.setFormat(template.getFormat());
templateResponse.setDetails(template.getDetails());
if (template.getTemplateType() != null) {
templateResponse.setTemplateType(template.getTemplateType().toString());
}
@ -1559,6 +1561,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) {
@ -1643,6 +1646,7 @@ public class ApiResponseHelper implements ResponseGenerator {
isoResponse.setCreated(iso.getCreated());
isoResponse.setChecksum(iso.getChecksum());
isoResponse.setPasswordEnabled(false);
isoResponse.setDetails(iso.getDetails());
// add account ID and name
Account owner = ApiDBUtils.findAccountById(iso.getAccountId());
@ -1686,6 +1690,7 @@ public class ApiResponseHelper implements ResponseGenerator {
isoResponse.setCrossZones(iso.isCrossZones());
isoResponse.setPublic(iso.isPublicTemplate());
isoResponse.setChecksum(iso.getChecksum());
isoResponse.setDetails(iso.getDetails());
// TODO: implement
GuestOS os = ApiDBUtils.findGuestOSById(iso.getGuestOSId());
@ -1743,6 +1748,7 @@ public class ApiResponseHelper implements ResponseGenerator {
isoResponse.setCrossZones(iso.isCrossZones());
isoResponse.setPublic(iso.isPublicTemplate());
isoResponse.setChecksum(iso.getChecksum());
isoResponse.setDetails(iso.getDetails());
// TODO: implement
GuestOS os = ApiDBUtils.findGuestOSById(iso.getGuestOSId());