mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Now we have multiple routing template and buitin templates now, refactor template download code, that can handle it.
Basically, change the meaning of type field in template table: SYSTEM means sytem vm template, BUILIIN means buildin templates.
This commit is contained in:
parent
fb9f43d807
commit
ad1ef80459
@ -0,0 +1,115 @@
|
||||
package com.cloud.agent.resource.computing;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
public class KVMGuestOsMapper {
|
||||
private static final Logger s_logger = Logger.getLogger(KVMGuestOsMapper.class);
|
||||
private static Map<String, String> s_mapper = new HashMap<String, String>();
|
||||
static {
|
||||
s_mapper.put("CentOS 4.5 (32-bit)", "CentOS 4.5");
|
||||
s_mapper.put("CentOS 4.6 (32-bit)", "CentOS 4.6");
|
||||
s_mapper.put("CentOS 4.7 (32-bit)", "CentOS 4.7");
|
||||
s_mapper.put("CentOS 4.8 (32-bit)", "CentOS 4.8");
|
||||
s_mapper.put("CentOS 5.0 (32-bit)", "CentOS 5.0");
|
||||
s_mapper.put("CentOS 5.0 (64-bit)", "CentOS 5.0");
|
||||
s_mapper.put("CentOS 5.1 (32-bit)", "CentOS 5.1");
|
||||
s_mapper.put("CentOS 5.1 (64-bit)", "CentOS 5.1");
|
||||
s_mapper.put("CentOS 5.2 (32-bit)", "CentOS 5.2");
|
||||
s_mapper.put("CentOS 5.2 (64-bit)", "CentOS 5.2");
|
||||
s_mapper.put("CentOS 5.3 (32-bit)", "CentOS 5.3");
|
||||
s_mapper.put("CentOS 5.3 (64-bit)", "CentOS 5.3");
|
||||
s_mapper.put("CentOS 5.4 (32-bit)", "CentOS 5.4");
|
||||
s_mapper.put("CentOS 5.4 (64-bit)", "CentOS 5.4");
|
||||
s_mapper.put("CentOS 5.5 (32-bit)", "CentOS 5.5");
|
||||
s_mapper.put("CentOS 5.5 (64-bit)", "CentOS 5.5");
|
||||
s_mapper.put("Red Hat Enterprise Linux 2", "Red Hat Enterprise Linux 2");
|
||||
s_mapper.put("Red Hat Enterprise Linux 3 (32-bit)", "Red Hat Enterprise Linux 3");
|
||||
s_mapper.put("Red Hat Enterprise Linux 3 (64-bit)", "Red Hat Enterprise Linux 3");
|
||||
s_mapper.put("Red Hat Enterprise Linux 4(64-bit)", "Red Hat Enterprise Linux 4");
|
||||
s_mapper.put("Red Hat Enterprise Linux 4.5 (32-bit)", "Red Hat Enterprise Linux 4.5");
|
||||
s_mapper.put("Red Hat Enterprise Linux 4.6 (32-bit)", "Red Hat Enterprise Linux 4.6");
|
||||
s_mapper.put("Red Hat Enterprise Linux 4.7 (32-bit)", "Red Hat Enterprise Linux 4.7");
|
||||
s_mapper.put("Red Hat Enterprise Linux 4.8 (32-bit)", "Red Hat Enterprise Linux 4.8");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.0 (32-bit)", "Red Hat Enterprise Linux 5.0");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.0 (64-bit)", "Red Hat Enterprise Linux 5.0");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.1 (32-bit)", "Red Hat Enterprise Linux 5.1");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.1 (32-bit)", "Red Hat Enterprise Linux 5.1");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.2 (32-bit)", "Red Hat Enterprise Linux 5.2");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.2 (64-bit)", "Red Hat Enterprise Linux 5.2");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.3 (32-bit)", "Red Hat Enterprise Linux 5.3");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.3 (64-bit)", "Red Hat Enterprise Linux 5.3");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.4 (32-bit)", "Red Hat Enterprise Linux 5.4");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.4 (64-bit)", "Red Hat Enterprise Linux 5.4");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.5 (32-bit)", "Red Hat Enterprise Linux 5.5");
|
||||
s_mapper.put("Red Hat Enterprise Linux 5.5 (64-bit)", "Red Hat Enterprise Linux 5.5");
|
||||
s_mapper.put("Fedora 13", "Fedora 13");
|
||||
s_mapper.put("Fedora 12", "Fedora 12");
|
||||
s_mapper.put("Fedora 11", "Fedora 11");
|
||||
s_mapper.put("Fedora 10", "Fedora 10");
|
||||
s_mapper.put("Fedora 9", "Fedora 9");
|
||||
s_mapper.put("Fedora 8", "Fedora 8");
|
||||
s_mapper.put("Ubuntu 10.04 (32-bit)", "Ubuntu 10.04");
|
||||
s_mapper.put("Ubuntu 10.04 (64-bit)", "Ubuntu 10.04");
|
||||
s_mapper.put("Ubuntu 9.10 (32-bit)", "Ubuntu 9.10");
|
||||
s_mapper.put("Ubuntu 9.10 (64-bit)", "Ubuntu 9.10");
|
||||
s_mapper.put("Ubuntu 9.04 (32-bit)", "Ubuntu 9.04");
|
||||
s_mapper.put("Ubuntu 9.04 (64-bit)", "Ubuntu 9.04");
|
||||
s_mapper.put("Ubuntu 8.10 (32-bit)", "Ubuntu 8.10");
|
||||
s_mapper.put("Ubuntu 8.10 (64-bit)", "Ubuntu 8.10");
|
||||
s_mapper.put("Ubuntu 8.04 (32-bit)", "Ubuntu 8.04");
|
||||
s_mapper.put("Ubuntu 8.04 (64-bit)", "Ubuntu 8.04");
|
||||
s_mapper.put("Debian GNU/Linux 5.0 (32-bit)", "Debian GNU/Linux 5");
|
||||
s_mapper.put("Debian GNU/Linux 5.0 (64-bit)", "Debian GNU/Linux 5");
|
||||
s_mapper.put("Debian GNU/Linux 4.0 (32-bit)", "Debian GNU/Linux 4");
|
||||
s_mapper.put("Debian GNU/Linux 4.0 (64-bit)", "Debian GNU/Linux 4");
|
||||
s_mapper.put("Other 2.6x Linux (32-bit)", "Other 2.6x Linux");
|
||||
s_mapper.put("Other 2.6x Linux (64-bit)", "Other 2.6x Linux");
|
||||
s_mapper.put("Other Linux (32-bit)", "Other Linux");
|
||||
s_mapper.put("Other Linux (64-bit)", "Other Linux");
|
||||
s_mapper.put("Other Ubuntu (32-bit)", "Other Linux");
|
||||
s_mapper.put("Other Ubuntu (64-bit)", "Other Linux");
|
||||
s_mapper.put("Asianux 3(32-bit)", "Other Linux");
|
||||
s_mapper.put("Asianux 3(64-bit)", "Other Linux");
|
||||
s_mapper.put("Windows 7 (32-bit)", "Windows 7");
|
||||
s_mapper.put("Windows 7 (64-bit)", "Windows 7");
|
||||
s_mapper.put("Windows Server 2003 Enterprise Edition(32-bit)", "Windows Server 2003");
|
||||
s_mapper.put("Windows Server 2003 Enterprise Edition(64-bit)", "Windows Server 2003");
|
||||
s_mapper.put("Windows Server 2003 DataCenter Edition(32-bit)", "Windows Server 2003");
|
||||
s_mapper.put("Windows Server 2003 DataCenter Edition(64-bit)", "Windows Server 2003");
|
||||
s_mapper.put("Windows Server 2003 Standard Edition(32-bit)", "Windows Server 2003");
|
||||
s_mapper.put("Windows Server 2003 Standard Edition(64-bit)", "Windows Server 2003");
|
||||
s_mapper.put("Windows Server 2003 Web Edition", "Windows Server 2003");
|
||||
s_mapper.put("Microsoft Small Bussiness Server 2003", "Windows Server 2003");
|
||||
s_mapper.put("Windows Server 2008 (32-bit)", "Windows Server 2008");
|
||||
s_mapper.put("Windows Server 2008 (64-bit)", "Windows Server 2008");
|
||||
s_mapper.put("Windows Server 2008 R2 (64-bit)", "Windows Server 2008");
|
||||
s_mapper.put("Windows 2000 Server SP4 (32-bit)", "Windows 2000");
|
||||
s_mapper.put("Windows 2000 Server", "Windows 2000");
|
||||
s_mapper.put("Windows 2000 Advanced Server", "Windows 2000");
|
||||
s_mapper.put("Windows 2000 Professional", "Windows 2000");
|
||||
s_mapper.put("Windows Vista (32-bit)", "Windows Vista");
|
||||
s_mapper.put("Windows Vista (64-bit)", "Windows Vista");
|
||||
s_mapper.put("Windows XP SP2 (32-bit)", "Windows XP");
|
||||
s_mapper.put("Windows XP SP3 (32-bit)", "Windows XP");
|
||||
s_mapper.put("Windows XP (32-bit)", "Windows XP");
|
||||
s_mapper.put("Windows XP (64-bit)", "Windows XP");
|
||||
s_mapper.put("Windows 98", "Windows 98");
|
||||
s_mapper.put("Windows 95", "Windows 95");
|
||||
s_mapper.put("Windows NT 4", "Windows NT");
|
||||
s_mapper.put("Windows 3.1", "Windows 3.1");
|
||||
}
|
||||
|
||||
public static String getGuestOsName(String guestOsName) {
|
||||
String guestOS = s_mapper.get(guestOsName);
|
||||
if (guestOS == null) {
|
||||
s_logger.debug("Can't find the mapping of guest os: " + guestOsName);
|
||||
return "Other";
|
||||
} else {
|
||||
return guestOS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3092,23 +3092,23 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
|
||||
private boolean isGuestPVEnabled(String guestOS) {
|
||||
if (guestOS == null)
|
||||
return false;
|
||||
if (guestOS.startsWith("Ubuntu 10.04") ||
|
||||
guestOS.startsWith("Ubuntu 9") ||
|
||||
guestOS.startsWith("Ubuntu 8.10") ||
|
||||
guestOS.startsWith("Fedora 13") ||
|
||||
guestOS.startsWith("Fedora 12") ||
|
||||
guestOS.startsWith("Fedora 11") ||
|
||||
guestOS.startsWith("Fedora 10") ||
|
||||
guestOS.startsWith("Fedora 9") ||
|
||||
guestOS.startsWith("CentOS 5.3") ||
|
||||
guestOS.startsWith("CentOS 5.4") ||
|
||||
guestOS.startsWith("CentOS 5.5") ||
|
||||
guestOS.startsWith("Red Hat Enterprise Linux 5.3") ||
|
||||
guestOS.startsWith("Red Hat Enterprise Linux 5.4") ||
|
||||
guestOS.startsWith("Red Hat Enterprise Linux 5.5") ||
|
||||
guestOS.startsWith("Red Hat Enterprise Linux 6") ||
|
||||
guestOS.startsWith("Debain Lenney") ||
|
||||
guestOS.startsWith("Debain Squeeze")
|
||||
String guestOSName = KVMGuestOsMapper.getGuestOsName(guestOS);
|
||||
if (guestOSName.startsWith("Ubuntu 10.04") ||
|
||||
guestOSName.startsWith("Ubuntu 9") ||
|
||||
guestOSName.startsWith("Ubuntu 8.10") ||
|
||||
guestOSName.startsWith("Fedora 13") ||
|
||||
guestOSName.startsWith("Fedora 12") ||
|
||||
guestOSName.startsWith("Fedora 11") ||
|
||||
guestOSName.startsWith("Fedora 10") ||
|
||||
guestOSName.startsWith("Fedora 9") ||
|
||||
guestOSName.startsWith("CentOS 5.3") ||
|
||||
guestOSName.startsWith("CentOS 5.4") ||
|
||||
guestOSName.startsWith("CentOS 5.5") ||
|
||||
guestOSName.startsWith("Red Hat Enterprise Linux 5.3") ||
|
||||
guestOSName.startsWith("Red Hat Enterprise Linux 5.4") ||
|
||||
guestOSName.startsWith("Red Hat Enterprise Linux 5.5") ||
|
||||
guestOSName.startsWith("Red Hat Enterprise Linux 6") ||
|
||||
guestOSName.startsWith("Debian GNU/Linux")
|
||||
)
|
||||
return true;
|
||||
else
|
||||
|
||||
@ -79,6 +79,11 @@ public class Storage {
|
||||
hfsp
|
||||
}
|
||||
|
||||
public static enum TemplateType {
|
||||
SYSTEM,
|
||||
BUILTIN
|
||||
}
|
||||
|
||||
public static enum StoragePoolType {
|
||||
Filesystem(false), //local directory
|
||||
NetworkFilesystem(true), //NFS or CIFS
|
||||
|
||||
@ -38,9 +38,4 @@ public interface VirtualMachineTemplate {
|
||||
*/
|
||||
String getName();
|
||||
|
||||
/**
|
||||
* @return the file system for this template.
|
||||
*/
|
||||
FileSystem getFileSystem();
|
||||
|
||||
}
|
||||
|
||||
@ -35,6 +35,7 @@ import com.cloud.async.AsyncInstanceCreateStatus;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.storage.Storage.FileSystem;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.Storage.TemplateType;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.cloud.storage.Storage;
|
||||
@ -64,7 +65,7 @@ public class VMTemplateVO implements VirtualMachineTemplate {
|
||||
private boolean featured;
|
||||
|
||||
@Column(name="type")
|
||||
private FileSystem fileSystem = null;
|
||||
private Storage.TemplateType templateType;
|
||||
|
||||
@Column(name="url")
|
||||
private String url = null;
|
||||
@ -125,16 +126,16 @@ public class VMTemplateVO implements VirtualMachineTemplate {
|
||||
/**
|
||||
* Proper constructor for a new vm template.
|
||||
*/
|
||||
public VMTemplateVO(long id, String name, ImageFormat format, boolean isPublic, boolean featured, FileSystem fs, String url, boolean requiresHvm, int bits, long accountId, String cksum, String displayText, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType) {
|
||||
this(id, generateUniqueName(id, accountId, name), name, format, isPublic, featured, fs, url, null, requiresHvm, bits, accountId, cksum, displayText, enablePassword, guestOSId, bootable, hyperType);
|
||||
public VMTemplateVO(long id, String name, ImageFormat format, boolean isPublic, boolean featured, TemplateType type, String url, boolean requiresHvm, int bits, long accountId, String cksum, String displayText, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType) {
|
||||
this(id, generateUniqueName(id, accountId, name), name, format, isPublic, featured, type, url, null, requiresHvm, bits, accountId, cksum, displayText, enablePassword, guestOSId, bootable, hyperType);
|
||||
}
|
||||
|
||||
public VMTemplateVO(Long id, String uniqueName, String name, ImageFormat format, boolean isPublic, boolean featured, FileSystem fs, String url, Date created, boolean requiresHvm, int bits, long accountId, String cksum, String displayText, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType) {
|
||||
public VMTemplateVO(Long id, String uniqueName, String name, ImageFormat format, boolean isPublic, boolean featured, TemplateType type, String url, Date created, boolean requiresHvm, int bits, long accountId, String cksum, String displayText, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.publicTemplate = isPublic;
|
||||
this.featured = featured;
|
||||
this.fileSystem = fs;
|
||||
this.templateType = type;
|
||||
this.url = url;
|
||||
this.requiresHvm = requiresHvm;
|
||||
this.bits = bits;
|
||||
@ -181,13 +182,12 @@ public class VMTemplateVO implements VirtualMachineTemplate {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileSystem getFileSystem() {
|
||||
return fileSystem;
|
||||
public TemplateType getTemplateType() {
|
||||
return templateType;
|
||||
}
|
||||
|
||||
public void setFileSystem(FileSystem fs) {
|
||||
this.fileSystem = fs;
|
||||
public void setTemplateType(TemplateType type) {
|
||||
this.templateType = type;
|
||||
}
|
||||
|
||||
public boolean requiresHvm() {
|
||||
@ -300,8 +300,8 @@ public class VMTemplateVO implements VirtualMachineTemplate {
|
||||
return HypervisorType.getType(hypervisorType);
|
||||
}
|
||||
|
||||
public void setHypervisorType(HypervisorType hyper) {
|
||||
hypervisorType = hyper.toString();
|
||||
public void setHypervisorType(HypervisorType hyperType) {
|
||||
hypervisorType = hyperType.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -313,8 +313,7 @@ public class VMTemplateVO implements VirtualMachineTemplate {
|
||||
}
|
||||
VMTemplateVO other = (VMTemplateVO)that;
|
||||
|
||||
return (this.getUniqueName().equals(other.getUniqueName()));
|
||||
|
||||
return ((this.getUniqueName().equals(other.getUniqueName())));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -30,7 +30,7 @@ import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.storage.LaunchPermissionVO;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.Storage.FileSystem;
|
||||
import com.cloud.storage.Storage.TemplateType;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.utils.DateUtil;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
@ -120,7 +120,7 @@ public class LaunchPermissionDaoImpl extends GenericDaoBase<LaunchPermissionVO,
|
||||
boolean isPublic = rs.getBoolean(4);
|
||||
String value = rs.getString(5);
|
||||
ImageFormat format = ImageFormat.valueOf(value);
|
||||
String filesystem = rs.getString(6);
|
||||
String tmpltType = rs.getString(6);
|
||||
boolean requiresHVM = rs.getBoolean(7);
|
||||
int bits = rs.getInt(8);
|
||||
String url = rs.getString(9);
|
||||
@ -140,7 +140,7 @@ public class LaunchPermissionDaoImpl extends GenericDaoBase<LaunchPermissionVO,
|
||||
if (isPublic) {
|
||||
continue; // if it's public already, skip adding it to permitted templates as this for private templates only
|
||||
}
|
||||
VMTemplateVO template = new VMTemplateVO(id, uniqueName, name, format, isPublic, featured, FileSystem.valueOf(filesystem), url, createdDate, requiresHVM, bits, templateAccountId, checksum, displayText, enablePassword, guestOSId, true, null);
|
||||
VMTemplateVO template = new VMTemplateVO(id, uniqueName, name, format, isPublic, featured, TemplateType.valueOf(tmpltType), url, createdDate, requiresHVM, bits, templateAccountId, checksum, displayText, enablePassword, guestOSId, true, null);
|
||||
permittedTemplates.add(template);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
@ -49,8 +49,9 @@ public interface VMTemplateDao extends GenericDao<VMTemplateVO, Long> {
|
||||
public VMTemplateVO findByTemplateName(String templateName);
|
||||
//public void update(VMTemplateVO template);
|
||||
public VMTemplateVO findRoutingTemplate();
|
||||
public List<VMTemplateVO> listAllRoutingTemplates();
|
||||
public VMTemplateVO findConsoleProxyTemplate();
|
||||
public VMTemplateVO findDefaultBuiltinTemplate();
|
||||
public List<VMTemplateVO> listDefaultBuiltinTemplates();
|
||||
public String getRoutingTemplateUniqueName();
|
||||
public List<VMTemplateVO> findIsosByIdAndPath(Long domainId, Long accountId, String path);
|
||||
public List<VMTemplateVO> listReadyTemplates();
|
||||
|
||||
@ -31,8 +31,10 @@ import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.configuration.dao.ConfigurationDao;
|
||||
import com.cloud.domain.DomainVO;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.storage.SnapshotPolicyVO;
|
||||
import com.cloud.storage.Storage;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VMTemplateZoneVO;
|
||||
@ -49,21 +51,23 @@ import com.cloud.utils.exception.CloudRuntimeException;
|
||||
@Local(value={VMTemplateDao.class})
|
||||
public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implements VMTemplateDao {
|
||||
private static final Logger s_logger = Logger.getLogger(VMTemplateDaoImpl.class);
|
||||
private HypervisorType _defaultHyperType;
|
||||
|
||||
@Inject
|
||||
VMTemplateZoneDao _templateZoneDao;
|
||||
@Inject
|
||||
ConfigurationDao _configDao;
|
||||
|
||||
private final String SELECT_ALL = "SELECT t.id, t.unique_name, t.name, t.public, t.featured, t.type, t.hvm, t.bits, t.url, t.format, t.created, t.account_id, " +
|
||||
"t.checksum, t.display_text, t.enable_password, t.guest_os_id, t.bootable, t.prepopulate, t.cross_zones FROM vm_template t";
|
||||
|
||||
protected static final String SELECT_ALL_IN_ZONE =
|
||||
"SELECT t.id, t.unique_name, t.name, t.public, t.featured, t.type, t.hvm, t.bits, t.url, t.format, t.created, t.removed, t.account_id, " +
|
||||
"t.checksum, t.display_text, t.enable_password, t.guest_os_id, t.bootable, t.prepopulate, t.cross_zones FROM vm_template t, template_zone_ref tz where t.removed is null and tz.removed is null and t.id = tz.template_id and tz.zone_id=? ";
|
||||
"t.checksum, t.display_text, t.enable_password, t.guest_os_id, t.bootable, t.prepopulate, t.cross_zones, t.hypervisor_type FROM vm_template t";
|
||||
|
||||
protected SearchBuilder<VMTemplateVO> TemplateNameSearch;
|
||||
protected SearchBuilder<VMTemplateVO> UniqueNameSearch;
|
||||
protected SearchBuilder<VMTemplateVO> tmpltTypeSearch;
|
||||
protected SearchBuilder<VMTemplateVO> tmpltTypeHyperSearch;
|
||||
protected SearchBuilder<VMTemplateVO> AccountIdSearch;
|
||||
protected SearchBuilder<VMTemplateVO> NameSearch;
|
||||
protected SearchBuilder<VMTemplateVO> TmpltsInZoneSearch;
|
||||
|
||||
protected SearchBuilder<VMTemplateVO> PublicSearch;
|
||||
private String routerTmpltName;
|
||||
@ -92,18 +96,21 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
||||
return findOneIncludingRemovedBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VMTemplateVO> listAllRoutingTemplates() {
|
||||
SearchCriteria<VMTemplateVO> sc = tmpltTypeSearch.create();
|
||||
sc.setParameters("templateType", Storage.TemplateType.SYSTEM);
|
||||
return listBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VMTemplateVO findRoutingTemplate() {
|
||||
SearchCriteria<VMTemplateVO> sc = UniqueNameSearch.create();
|
||||
sc.setParameters("uniqueName", routerTmpltName);
|
||||
return findOneIncludingRemovedBy(sc);
|
||||
return findSystemVMTemplate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VMTemplateVO findConsoleProxyTemplate() {
|
||||
SearchCriteria<VMTemplateVO> sc = UniqueNameSearch.create();
|
||||
sc.setParameters("uniqueName", consoleProxyTmpltName);
|
||||
return findOneIncludingRemovedBy(sc);
|
||||
return findSystemVMTemplate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -168,11 +175,29 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
||||
NameSearch = createSearchBuilder();
|
||||
NameSearch.and("name", NameSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
|
||||
tmpltTypeHyperSearch = createSearchBuilder();
|
||||
tmpltTypeHyperSearch.and("templateType", tmpltTypeHyperSearch.entity().getTemplateType(), SearchCriteria.Op.EQ);
|
||||
tmpltTypeHyperSearch.and("hypervisor_type", tmpltTypeHyperSearch.entity().getHypervisorType(), SearchCriteria.Op.EQ);
|
||||
|
||||
tmpltTypeSearch = createSearchBuilder();
|
||||
tmpltTypeSearch.and("templateType", tmpltTypeSearch.entity().getTemplateType(), SearchCriteria.Op.EQ);
|
||||
|
||||
AccountIdSearch = createSearchBuilder();
|
||||
AccountIdSearch.and("accountId", AccountIdSearch.entity().getAccountId(), SearchCriteria.Op.EQ);
|
||||
AccountIdSearch.and("publicTemplate", AccountIdSearch.entity().isPublicTemplate(), SearchCriteria.Op.EQ);
|
||||
AccountIdSearch.done();
|
||||
|
||||
SearchBuilder<VMTemplateZoneVO> tmpltZoneSearch = _templateZoneDao.createSearchBuilder();
|
||||
tmpltZoneSearch.and("removed", tmpltZoneSearch.entity().getRemoved(), SearchCriteria.Op.NULL);
|
||||
tmpltZoneSearch.and("zoneId", tmpltZoneSearch.entity().getZoneId(), SearchCriteria.Op.EQ);
|
||||
|
||||
TmpltsInZoneSearch = createSearchBuilder();
|
||||
TmpltsInZoneSearch.and("removed", TmpltsInZoneSearch.entity().getRemoved(), SearchCriteria.Op.NULL);
|
||||
TmpltsInZoneSearch.join("tmpltzone", tmpltZoneSearch, tmpltZoneSearch.entity().getTemplateId(), TmpltsInZoneSearch.entity().getId());
|
||||
tmpltZoneSearch.done();
|
||||
TmpltsInZoneSearch.done();
|
||||
|
||||
_defaultHyperType = HypervisorType.getType(_configDao.getValue("hypervisor.type"));
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -330,29 +355,41 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
||||
@Override
|
||||
@DB
|
||||
public List<VMTemplateVO> listAllInZone(long dataCenterId) {
|
||||
Transaction txn = Transaction.currentTxn();
|
||||
txn.start();
|
||||
PreparedStatement pstmt = null;
|
||||
List<VMTemplateVO> result = new ArrayList<VMTemplateVO>();
|
||||
try {
|
||||
String sql = SELECT_ALL_IN_ZONE;
|
||||
pstmt = txn.prepareAutoCloseStatement(sql);
|
||||
pstmt.setLong(1, dataCenterId);
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
result.add(toEntityBean(rs, false));
|
||||
}
|
||||
txn.commit();
|
||||
} catch (SQLException sqle) {
|
||||
s_logger.warn("Exception: ",sqle);
|
||||
throw new CloudRuntimeException("Unable to list templates in zone", sqle);
|
||||
}
|
||||
|
||||
return result;
|
||||
SearchCriteria<VMTemplateVO> sc = TmpltsInZoneSearch.create();
|
||||
sc.setJoinParameters("tmpltzone", "zoneId", dataCenterId);
|
||||
return listBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VMTemplateVO findDefaultBuiltinTemplate() {
|
||||
return findById(TemplateConstants.DEFAULT_BUILTIN_VM_DB_ID);
|
||||
public List<VMTemplateVO> listDefaultBuiltinTemplates() {
|
||||
SearchCriteria<VMTemplateVO> sc = tmpltTypeSearch.create();
|
||||
sc.setParameters("templateType", Storage.TemplateType.BUILTIN);
|
||||
return listBy(sc);
|
||||
}
|
||||
|
||||
private VMTemplateVO findSystemVMTemplate() {
|
||||
SearchCriteria<VMTemplateVO> sc = tmpltTypeHyperSearch.create();
|
||||
sc.setParameters("templateType", Storage.TemplateType.SYSTEM);
|
||||
sc.setParameters("hypervisor_type", _defaultHyperType.toString());
|
||||
VMTemplateVO tmplt = findOneBy(sc);
|
||||
|
||||
if (tmplt == null) {
|
||||
/*Can't find it? We'd like to prefer xenserver */
|
||||
if (_defaultHyperType != HypervisorType.XenServer) {
|
||||
sc = tmpltTypeHyperSearch.create();
|
||||
sc.setParameters("templateType", Storage.TemplateType.SYSTEM);
|
||||
sc.setParameters("hypervisor_type", HypervisorType.XenServer);
|
||||
tmplt = findOneBy(sc);
|
||||
|
||||
/*Still can't find it? return a random one*/
|
||||
if (tmplt == null) {
|
||||
sc = tmpltTypeSearch.create();
|
||||
sc.setParameters("templateType", Storage.TemplateType.SYSTEM);
|
||||
tmplt = findOneBy(sc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return tmplt;
|
||||
}
|
||||
}
|
||||
|
||||
@ -358,6 +358,7 @@ public abstract class BaseCmd {
|
||||
TEMPLATE_NAME("templatename", BaseCmd.TYPE_STRING, "templateName"),
|
||||
TEMPLATE_DISPLAY_TEXT("templatedisplaytext", BaseCmd.TYPE_STRING, "templateDisplayText"),
|
||||
TEMPLATE_STATUS("templatestatus", BaseCmd.TYPE_STRING, "templateStatus"),
|
||||
TEMPLATE_Type("templatetype", BaseCmd.TYPE_STRING, "templateType"),
|
||||
TEMPLATE_TOTAL("templatetotal", BaseCmd.TYPE_INT, "templatetotal"),
|
||||
TIMEZONE("timezone", BaseCmd.TYPE_STRING, "timezone"),
|
||||
TIMEZONE_OFFSET("timezoneoffset", BaseCmd.TYPE_FLOAT, "timezoneOffset"),
|
||||
|
||||
@ -172,6 +172,7 @@ public class ListTemplatesCmd extends BaseCmd {
|
||||
templateData.add(new Pair<String, Object>(BaseCmd.Properties.PASSWORD_ENABLED.getName(), Boolean.valueOf(template.getEnablePassword()).toString()));
|
||||
templateData.add(new Pair<String, Object>(BaseCmd.Properties.CROSS_ZONES.getName(), Boolean.valueOf(template.isCrossZones()).toString()));
|
||||
templateData.add(new Pair<String, Object>(BaseCmd.Properties.FORMAT.getName(), template.getFormat()));
|
||||
templateData.add(new Pair<String, Object>(BaseCmd.Properties.TEMPLATE_Type.getName(), template.getTemplateType()));
|
||||
|
||||
GuestOS os = getManagementServer().findGuestOSById(template.getGuestOSId());
|
||||
if (os != null) {
|
||||
|
||||
@ -149,7 +149,7 @@ public class RegisterIsoCmd extends BaseCmd {
|
||||
|
||||
Long templateId;
|
||||
try {
|
||||
templateId = getManagementServer().createTemplate(userId, accountId, zoneId, name, displayText, isPublic.booleanValue(), featured.booleanValue(), ImageFormat.ISO.toString(), FileSystem.cdfs.toString(), url, null, true, 64 /*bits*/, false, guestOSId, bootable, HypervisorType.None);
|
||||
templateId = getManagementServer().createTemplate(userId, accountId, zoneId, name, displayText, isPublic.booleanValue(), featured.booleanValue(), ImageFormat.ISO.toString(), null, url, null, true, 64 /*bits*/, false, guestOSId, bootable, HypervisorType.None);
|
||||
} catch (Exception ex) {
|
||||
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, ex.getMessage());
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@ public class RegisterTemplateCmd extends BaseCmd {
|
||||
|
||||
Long templateId;
|
||||
try {
|
||||
templateId = getManagementServer().createTemplate(userId, accountId, zoneId, name, displayText, isPublic, featured, format, "ext3", url, null, requiresHVM, bits, passwordEnabled, guestOSId, true, hyperType);
|
||||
templateId = getManagementServer().createTemplate(userId, accountId, zoneId, name, displayText, isPublic, featured, format, null, url, null, requiresHVM, bits, passwordEnabled, guestOSId, true, hyperType);
|
||||
} catch (InvalidParameterValueException ipve) {
|
||||
throw new ServerApiException(BaseCmd.PARAM_ERROR, "Internal error registering template " + name + "; " + ipve.getMessage());
|
||||
} catch (IllegalArgumentException iae) {
|
||||
|
||||
@ -487,14 +487,14 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
||||
if ((tmplts != null) && !tmplts.isEmpty()) {
|
||||
TemplateInfo xenPVISO = tmplts.get("xs-tools");
|
||||
if (xenPVISO != null) {
|
||||
VMTemplateVO tmplt = _tmpltDao.findByName(xenPVISO.getTemplateName());
|
||||
VMTemplateVO tmplt = _tmpltDao.findByTemplateName(xenPVISO.getTemplateName());
|
||||
Long id;
|
||||
if (tmplt == null) {
|
||||
id = _tmpltDao.getNextInSequence(Long.class, "id");
|
||||
VMTemplateVO template = new VMTemplateVO(id, xenPVISO.getTemplateName(), xenPVISO.getTemplateName(), ImageFormat.ISO , true, true, FileSystem.cdfs, "/opt/xensource/packages/iso/xs-tools-5.5.0.iso", null, true, 64, Account.ACCOUNT_ID_SYSTEM, null, "xen-pv-drv-iso", false, 1, false, HypervisorType.None);
|
||||
VMTemplateVO template = new VMTemplateVO(id, xenPVISO.getTemplateName(), xenPVISO.getTemplateName(), ImageFormat.ISO , true, true, null, "/opt/xensource/packages/iso/xs-tools-5.5.0.iso", null, true, 64, Account.ACCOUNT_ID_SYSTEM, null, "xen-pv-drv-iso", false, 1, false, HypervisorType.None);
|
||||
_tmpltDao.persist(template);
|
||||
} else {
|
||||
id = _tmpltDao.findByName(xenPVISO.getTemplateName()).getId();
|
||||
id = _tmpltDao.findByTemplateName(xenPVISO.getTemplateName()).getId();
|
||||
}
|
||||
|
||||
VMTemplateHostVO tmpltHost = _vmTemplateHostDao.findByHostTemplate(Hostid, id);
|
||||
|
||||
@ -5012,11 +5012,6 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
throw new IllegalArgumentException("Image format is incorrect " + format + ". Supported formats are " + EnumUtils.listValues(ImageFormat.values()));
|
||||
}
|
||||
|
||||
FileSystem fileSystem = FileSystem.valueOf(diskType);
|
||||
if (fileSystem == null) {
|
||||
throw new IllegalArgumentException("File system is incorrect " + diskType + ". Supported file systems are " + EnumUtils.listValues(FileSystem.values()));
|
||||
}
|
||||
|
||||
URI uri = new URI(url);
|
||||
if ((uri.getScheme() == null) || (!uri.getScheme().equalsIgnoreCase("http") && !uri.getScheme().equalsIgnoreCase("https") && !uri.getScheme().equalsIgnoreCase("file"))) {
|
||||
throw new IllegalArgumentException("Unsupported scheme for url: " + url);
|
||||
@ -5060,7 +5055,7 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
throw new IllegalArgumentException("Cannot use reserved names for templates");
|
||||
}
|
||||
|
||||
return _tmpltMgr.create(userId, accountId, zoneId, name, displayText, isPublic, featured, imgfmt, fileSystem, uri, chksum, requiresHvm, bits, enablePassword, guestOSId, bootable, hyperType);
|
||||
return _tmpltMgr.create(userId, accountId, zoneId, name, displayText, isPublic, featured, imgfmt, null, uri, chksum, requiresHvm, bits, enablePassword, guestOSId, bootable, hyperType);
|
||||
} catch (URISyntaxException e) {
|
||||
throw new IllegalArgumentException("Invalid URL " + url);
|
||||
}
|
||||
|
||||
@ -420,14 +420,22 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
||||
|
||||
Set<VMTemplateVO> toBeDownloaded = new HashSet<VMTemplateVO>();
|
||||
List<VMTemplateVO> allTemplates = _templateDao.listAllInZone(storageHost.getDataCenterId());
|
||||
VMTemplateVO rtngTmplt = _templateDao.findRoutingTemplate();
|
||||
VMTemplateVO defaultBuiltin = _templateDao.findDefaultBuiltinTemplate();
|
||||
List<VMTemplateVO> rtngTmplts = _templateDao.listAllRoutingTemplates();
|
||||
List<VMTemplateVO> defaultBuiltin = _templateDao.listDefaultBuiltinTemplates();
|
||||
|
||||
if (rtngTmplt != null && !allTemplates.contains(rtngTmplt))
|
||||
if (rtngTmplts != null) {
|
||||
for (VMTemplateVO rtngTmplt : rtngTmplts) {
|
||||
if (!allTemplates.contains(rtngTmplt))
|
||||
allTemplates.add(rtngTmplt);
|
||||
}
|
||||
}
|
||||
|
||||
if (defaultBuiltin != null && !allTemplates.contains(defaultBuiltin)) {
|
||||
allTemplates.add(defaultBuiltin);
|
||||
if (defaultBuiltin != null) {
|
||||
for (VMTemplateVO builtinTmplt : defaultBuiltin) {
|
||||
if (!allTemplates.contains(builtinTmplt)) {
|
||||
allTemplates.add(builtinTmplt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (Iterator<VMTemplateVO> i = allTemplates.iterator();i.hasNext();) {
|
||||
|
||||
@ -29,7 +29,7 @@ import com.cloud.storage.StoragePoolVO;
|
||||
import com.cloud.storage.VMTemplateHostVO;
|
||||
import com.cloud.storage.VMTemplateStoragePoolVO;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.Storage.FileSystem;
|
||||
import com.cloud.storage.Storage.TemplateType;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.dao.VMTemplateDao.TemplateFilter;
|
||||
import com.cloud.user.Account;
|
||||
@ -64,7 +64,7 @@ public interface TemplateManager extends Manager {
|
||||
* @param bootable true if this template will represent a bootable ISO
|
||||
* @return id of the template created.
|
||||
*/
|
||||
Long create(long userId, long accountId, Long zoneId, String name, String displayText, boolean isPublic, boolean featured, ImageFormat format, FileSystem fs, URI url, String chksum, boolean requiresHvm, int bits, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType);
|
||||
Long create(long userId, long accountId, Long zoneId, String name, String displayText, boolean isPublic, boolean featured, ImageFormat format, TemplateType type, URI url, String chksum, boolean requiresHvm, int bits, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType);
|
||||
|
||||
/**
|
||||
* Creates a Template
|
||||
@ -84,7 +84,7 @@ public interface TemplateManager extends Manager {
|
||||
* @param bootable true if this template will represent a bootable ISO
|
||||
* @return id of the template created.
|
||||
*/
|
||||
Long createInZone(long zoneId, long userId, String displayText, boolean isPublic, boolean featured, ImageFormat format, FileSystem fs, URI url, String chksum, boolean requiresHvm, int bits, boolean enablePassword, long guestOSId, boolean bootable);
|
||||
Long createInZone(long zoneId, long userId, String displayText, boolean isPublic, boolean featured, ImageFormat format, TemplateType type, URI url, String chksum, boolean requiresHvm, int bits, boolean enablePassword, long guestOSId, boolean bootable);
|
||||
|
||||
/**
|
||||
* Prepares a template for vm creation for a certain storage pool.
|
||||
|
||||
@ -56,7 +56,7 @@ import com.cloud.storage.VMTemplateStoragePoolVO;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VMTemplateZoneVO;
|
||||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.Storage.FileSystem;
|
||||
import com.cloud.storage.Storage.TemplateType;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
|
||||
import com.cloud.storage.dao.SnapshotDao;
|
||||
@ -118,7 +118,7 @@ public class TemplateManagerImpl implements TemplateManager {
|
||||
|
||||
|
||||
@Override
|
||||
public Long create(long userId, long accountId, Long zoneId, String name, String displayText, boolean isPublic, boolean featured, ImageFormat format, FileSystem fs, URI url, String chksum, boolean requiresHvm, int bits, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType) {
|
||||
public Long create(long userId, long accountId, Long zoneId, String name, String displayText, boolean isPublic, boolean featured, ImageFormat format, TemplateType type, URI url, String chksum, boolean requiresHvm, int bits, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType) {
|
||||
Long id = _tmpltDao.getNextInSequence(Long.class, "id");
|
||||
|
||||
AccountVO account = _accountDao.findById(accountId);
|
||||
@ -126,7 +126,7 @@ public class TemplateManagerImpl implements TemplateManager {
|
||||
throw new IllegalArgumentException("Only admins can create templates in all zones");
|
||||
}
|
||||
|
||||
VMTemplateVO template = new VMTemplateVO(id, name, format, isPublic, featured, fs, url.toString(), requiresHvm, bits, accountId, chksum, displayText, enablePassword, guestOSId, bootable, hyperType);
|
||||
VMTemplateVO template = new VMTemplateVO(id, name, format, isPublic, featured, type, url.toString(), requiresHvm, bits, accountId, chksum, displayText, enablePassword, guestOSId, bootable, hyperType);
|
||||
if (zoneId == null) {
|
||||
List<DataCenterVO> dcs = _dcDao.listAllIncludingRemoved();
|
||||
|
||||
@ -597,14 +597,14 @@ public class TemplateManagerImpl implements TemplateManager {
|
||||
@Override
|
||||
public Long createInZone(long zoneId, long userId, String displayText,
|
||||
boolean isPublic, boolean featured, ImageFormat format,
|
||||
FileSystem fs, URI url, String chksum, boolean requiresHvm,
|
||||
TemplateType type, URI url, String chksum, boolean requiresHvm,
|
||||
int bits, boolean enablePassword, long guestOSId, boolean bootable) {
|
||||
Long id = _tmpltDao.getNextInSequence(Long.class, "id");
|
||||
|
||||
UserVO user = _userDao.findById(userId);
|
||||
long accountId = user.getAccountId();
|
||||
|
||||
VMTemplateVO template = new VMTemplateVO(id, displayText, format, isPublic, featured, fs, url.toString(), requiresHvm, bits, accountId, chksum, displayText, enablePassword, guestOSId, bootable, null);
|
||||
VMTemplateVO template = new VMTemplateVO(id, displayText, format, isPublic, featured, type, url.toString(), requiresHvm, bits, accountId, chksum, displayText, enablePassword, guestOSId, bootable, null);
|
||||
|
||||
Long templateId = _tmpltDao.addTemplateToZone(template, zoneId);
|
||||
UserAccount userAccount = _userAccountDao.findById(userId);
|
||||
|
||||
@ -2510,15 +2510,9 @@ public class UserVmManagerImpl implements UserVmManager {
|
||||
}
|
||||
|
||||
if ((origTemplate != null) && !Storage.ImageFormat.ISO.equals(origTemplate.getFormat())) {
|
||||
// We made a template from a root volume that was cloned from a
|
||||
// template
|
||||
privateTemplate.setFileSystem(origTemplate.getFileSystem());
|
||||
privateTemplate.setRequiresHvm(origTemplate.requiresHvm());
|
||||
privateTemplate.setBits(origTemplate.getBits());
|
||||
} else {
|
||||
// We made a template from a root volume that was not cloned
|
||||
// from a template, or a data volume
|
||||
privateTemplate.setFileSystem(Storage.FileSystem.Unknown);
|
||||
privateTemplate.setRequiresHvm(true);
|
||||
privateTemplate.setBits(64);
|
||||
}
|
||||
|
||||
@ -1,19 +1,22 @@
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (1, 'routing', 'SystemVM Template', 0, now(), 'ext3', 0, 64, 1, 'http://download.cloud.com/releases/2.0.0RC5/systemvm.vhd.bz2', '31cd7ce94fe68c973d5dc37c3349d02e', 0, 'SystemVM Template', 'VHD', 15, 0, 1, 'Xenserver');
|
||||
VALUES (1, 'routing', 'SystemVM Template', 0, now(), 'system', 0, 64, 1, 'http://download.cloud.com/releases/2.0.0RC5/systemvm.vhd.bz2', '31cd7ce94fe68c973d5dc37c3349d02e', 0, 'SystemVM Template', 'VHD', 15, 0, 1, 'Xenserver');
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (2, 'centos53-x86_64', 'CentOS 5.3(x86_64) no GUI', 1, now(), 'ext3', 0, 64, 1, 'http://download.cloud.com/templates/builtin/f59f18fb-ae94-4f97-afd2-f84755767aca.vhd.bz2', 'b63d854a9560c013142567bbae8d98cf', 0, 'CentOS 5.3(x86_64) no GUI', 'VHD', 11, 1, 1, 'Xenserver');
|
||||
VALUES (2, 'centos53-x86_64', 'CentOS 5.3(x86_64) no GUI', 1, now(), 'builtin', 0, 64, 1, 'http://download.cloud.com/templates/builtin/f59f18fb-ae94-4f97-afd2-f84755767aca.vhd.bz2', 'b63d854a9560c013142567bbae8d98cf', 0, 'CentOS 5.3(x86_64) no GUI', 'VHD', 11, 1, 1, 'Xenserver');
|
||||
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (3, 'routing_kvm', 'SystemVM Template (KVM)', 0, now(), 'system', 0, 64, 1, 'http://nfs1.lab.vmops.com/templates/routing/debian/systemvm.qcow2.bz2', '78c91a8d2b3441fc5d5129399fca2bb9', 0, 'SystemVM Template KVM', 'QCOW2', 15, 0, 1, 'KVM');
|
||||
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, display_text, enable_password, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (4, 'centos55-x86_64', 'CentOS 5.5(x86_64) no GUI', 1, now(), 'ext3', 0, 64, 1, 'http://download.cloud.com/templates/builtin/eec2209b-9875-3c8d-92be-c001bd8a0faf.qcow2.bz2', '1da20ae69b54f761f3f733dce97adcc0', 'CentOS 5.5(x86_64) no GUI', 0, 'QCOW2', 112, 1, 1, 'KVM');
|
||||
VALUES (4, 'centos55-x86_64', 'CentOS 5.5(x86_64) no GUI', 1, now(), 'builtin', 0, 64, 1, 'http://download.cloud.com/templates/builtin/eec2209b-9875-3c8d-92be-c001bd8a0faf.qcow2.bz2', '1da20ae69b54f761f3f733dce97adcc0', 'CentOS 5.5(x86_64) no GUI', 0, 'QCOW2', 112, 1, 1, 'KVM');
|
||||
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (5, 'blank', 'BlankVM', 1, now(), 'ext3', 0, 32, 1, 'http://nfs1.lab.vmops.com/templates/vmware/Blank.ova.bz2', '', 0, 'BlankVM', 'OVA', 47, 1, 1, 'VMware');
|
||||
VALUES (5, 'blank', 'BlankVM', 1, now(), 'builtin', 0, 32, 1, 'http://nfs1.lab.vmops.com/templates/vmware/Blank.ova.bz2', '', 0, 'BlankVM', 'OVA', 47, 1, 1, 'VMware');
|
||||
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (6, 'winxpsp3', 'WindowsXP-SP3', 1, now(), 'ntfs', 0, 32, 1, 'http://nfs1.lab.vmops.com/templates/vmware/WinXPSP3.ova.bz2', '', 0, 'WindowsXP-SP3', 'OVA', 58, 1, 1, 'VMware');
|
||||
VALUES (6, 'winxpsp3', 'WindowsXP-SP3', 1, now(), 'builtin', 0, 32, 1, 'http://nfs1.lab.vmops.com/templates/vmware/WinXPSP3.ova.bz2', '', 0, 'WindowsXP-SP3', 'OVA', 58, 1, 1, 'VMware');
|
||||
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (7, 'centos53-x64', 'centos53-x64', 1, now(), 'ext3', 0, 64, 1, 'http://nfs1.lab.vmops.com/templates/vmware/CentOS5.3-x86_64.ova.bz2', '', 0, 'centos53-x64', 'OVA', 112, 1, 1, 'VMware');
|
||||
VALUES (7, 'centos53-x64', 'centos53-x64', 1, now(), 'builtin', 0, 64, 1, 'http://nfs1.lab.vmops.com/templates/vmware/CentOS5.3-x86_64.ova.bz2', '', 0, 'centos53-x64', 'OVA', 112, 1, 1, 'VMware');
|
||||
|
||||
|
||||
INSERT INTO `cloud`.`guest_os_category` (id, name) VALUES (1, 'CentOS');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user