if (!isAdmin || featured == null) {
featured = Boolean.FALSE;
}
Long guestOSId = cmd.getOsTypeId();
GuestOSVO guestOS = _guestOSDao.findById(guestOSId);
if (guestOS == null) {
throw new InvalidParameterValueException("GuestOS with ID: "
+ guestOSId + " does not exist.");
}
String uniqueName = Long.valueOf((userId == null) ? 1 : userId)
.toString()
+ UUID.nameUUIDFromBytes(name.getBytes()).toString();
Long nextTemplateId = _templateDao.getNextInSequence(Long.class, "id");
String description = cmd.getDisplayText();
boolean isExtractable = false;
Long sourceTemplateId = null;
if (volume != null) {
VMTemplateVO template = ApiDBUtils.findTemplateById(volume
.getTemplateId());
isExtractable = template != null
&& template.isExtractable()
&& template.getTemplateType() != Storage.TemplateType.SYSTEM;
if (template != null) {
sourceTemplateId = template.getId();
} else if (volume.getVolumeType() == Type.ROOT) { // vm created out
// of blank
// template
UserVm userVm = ApiDBUtils.findUserVmById(volume
.getInstanceId());
sourceTemplateId = userVm.getIsoId();
}
}
String templateTag = cmd.getTemplateTag();
if (templateTag != null) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Adding template tag: " + templateTag);
}
}
privateTemplate = new VMTemplateVO(nextTemplateId, uniqueName, name,
ImageFormat.RAW, isPublic, featured, isExtractable,
TemplateType.USER, null, null, requiresHvmValue, bitsValue,
templateOwner.getId(), null, description, passwordEnabledValue,
guestOS.getId(), true, hyperType, templateTag, cmd.getDetails());
if (sourceTemplateId != null) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("This template is getting created from other template, setting source template Id to: "
+ sourceTemplateId);
}