From 29109b43328e014dfe6c8ccae8a3a1779fd7df6b Mon Sep 17 00:00:00 2001 From: davidjumani Date: Fri, 25 Jun 2021 01:20:31 +0530 Subject: [PATCH] db: Cleanup obsolete tables (#5002) * db: Cleanup unused tables * Removing volume_host_ref references * Removing template_host_ref references * fix space issue * Fix fk constraint * Removing certificate table * Revert "Removing certificate table" This reverts commit fa24e6483f339903ce895e26e3409a1751620a3f. * Addressing comments --- .../com/cloud/template/TemplateManager.java | 3 - .../com/cloud/storage/VMTemplateHostVO.java | 334 ------------ .../java/com/cloud/storage/VolumeHostVO.java | 346 ------------- .../com/cloud/storage/dao/VMTemplateDao.java | 4 - .../cloud/storage/dao/VMTemplateDaoImpl.java | 445 ---------------- .../cloud/storage/dao/VMTemplateHostDao.java | 68 --- .../storage/dao/VMTemplateHostDaoImpl.java | 431 ---------------- .../storage/dao/VMTemplatePoolDaoImpl.java | 2 +- .../com/cloud/storage/dao/VolumeHostDao.java | 41 -- .../cloud/storage/dao/VolumeHostDaoImpl.java | 181 ------- .../usage/ExternalPublicIpStatisticsVO.java | 98 ---- .../dao/ExternalPublicIpStatisticsDao.java | 32 -- .../ExternalPublicIpStatisticsDaoImpl.java | 76 --- .../cloudstack/region/RegionSyncVO.java | 96 ---- ...spring-engine-schema-core-daos-context.xml | 3 - .../META-INF/db/schema-41510to41600.sql | 16 +- .../storage/image/store/TemplateObject.java | 18 - .../storage/test/ChildTestConfiguration.java | 4 +- .../cloud/resource/SimulatorDiscoverer.java | 19 - .../IntegrationTestConfiguration.java | 6 +- .../impl/UserConcentratedAllocator.java | 11 - .../api/query/dao/TemplateJoinDaoImpl.java | 9 +- .../api/query/dao/VolumeJoinDaoImpl.java | 10 +- .../com/cloud/storage/StorageManagerImpl.java | 1 - .../storage/download/DownloadListener.java | 3 +- .../cloud/template/TemplateManagerImpl.java | 39 -- server/src/test/async-job-component.xml | 40 +- .../com/cloud/vpc/VpcTestConfiguration.java | 3 +- .../storage/template/DownloadManager.java | 4 +- .../storage/template/DownloadManagerImpl.java | 23 +- test/metadata/func/templates_sync.xml | 482 +++--------------- 31 files changed, 138 insertions(+), 2710 deletions(-) delete mode 100644 engine/schema/src/main/java/com/cloud/storage/VMTemplateHostVO.java delete mode 100644 engine/schema/src/main/java/com/cloud/storage/VolumeHostVO.java delete mode 100644 engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateHostDao.java delete mode 100644 engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateHostDaoImpl.java delete mode 100644 engine/schema/src/main/java/com/cloud/storage/dao/VolumeHostDao.java delete mode 100644 engine/schema/src/main/java/com/cloud/storage/dao/VolumeHostDaoImpl.java delete mode 100644 engine/schema/src/main/java/com/cloud/usage/ExternalPublicIpStatisticsVO.java delete mode 100644 engine/schema/src/main/java/com/cloud/usage/dao/ExternalPublicIpStatisticsDao.java delete mode 100644 engine/schema/src/main/java/com/cloud/usage/dao/ExternalPublicIpStatisticsDaoImpl.java delete mode 100644 engine/schema/src/main/java/org/apache/cloudstack/region/RegionSyncVO.java diff --git a/engine/components-api/src/main/java/com/cloud/template/TemplateManager.java b/engine/components-api/src/main/java/com/cloud/template/TemplateManager.java index 35fed56ac8e..7207a96a9ef 100644 --- a/engine/components-api/src/main/java/com/cloud/template/TemplateManager.java +++ b/engine/components-api/src/main/java/com/cloud/template/TemplateManager.java @@ -30,7 +30,6 @@ import com.cloud.dc.DataCenterVO; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.StorageUnavailableException; import com.cloud.storage.StoragePool; -import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStoragePoolVO; import com.cloud.storage.VMTemplateVO; import com.cloud.utils.Pair; @@ -102,8 +101,6 @@ public interface TemplateManager { */ void evictTemplateFromStoragePool(VMTemplateStoragePoolVO templatePoolVO); - boolean templateIsDeleteable(VMTemplateHostVO templateHostRef); - boolean templateIsDeleteable(long templateId); Pair getAbsoluteIsoPath(long templateId, long dataCenterId); diff --git a/engine/schema/src/main/java/com/cloud/storage/VMTemplateHostVO.java b/engine/schema/src/main/java/com/cloud/storage/VMTemplateHostVO.java deleted file mode 100644 index fc4d9c1599e..00000000000 --- a/engine/schema/src/main/java/com/cloud/storage/VMTemplateHostVO.java +++ /dev/null @@ -1,334 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.storage; - -import java.util.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; - -import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; - -import com.cloud.utils.db.GenericDaoBase; - -/** - * Join table for storage hosts and templates - * - */ -@Entity -@Table(name = "template_host_ref") -public class VMTemplateHostVO implements VMTemplateStorageResourceAssoc, DataObjectInStore { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - Long id; - - @Column(name = "host_id") - private long hostId; - - @Column(name = "template_id") - private long templateId; - - @Column(name = GenericDaoBase.CREATED_COLUMN) - private Date created = null; - - @Column(name = "last_updated") - @Temporal(value = TemporalType.TIMESTAMP) - private Date lastUpdated = null; - - @Column(name = "download_pct") - private int downloadPercent; - - @Column(name = "size") - private long size; - - @Column(name = "physical_size") - private long physicalSize; - - @Column(name = "download_state") - @Enumerated(EnumType.STRING) - private Status downloadState; - - @Column(name = "local_path") - private String localDownloadPath; - - @Column(name = "error_str") - private String errorString; - - @Column(name = "job_id") - private String jobId; - - @Column(name = "install_path") - private String installPath; - - @Column(name = "url", length = 2048) - private String downloadUrl; - - @Column(name = "is_copy") - private boolean isCopy = false; - - @Column(name = "destroyed") - boolean destroyed = false; - - @Column(name = "update_count", updatable = true, nullable = false) - protected long updatedCount; - - @Column(name = "updated") - @Temporal(value = TemporalType.TIMESTAMP) - Date updated; - - @Column(name = "state") - @Enumerated(EnumType.STRING) - ObjectInDataStoreStateMachine.State state; - - @Override - public String getInstallPath() { - return installPath; - } - - public long getHostId() { - return hostId; - } - - public void setHostId(long hostId) { - this.hostId = hostId; - } - - @Override - public long getTemplateId() { - return templateId; - } - - @Override - public void setTemplateId(long templateId) { - this.templateId = templateId; - } - - @Override - public int getDownloadPercent() { - return downloadPercent; - } - - @Override - public void setDownloadPercent(int downloadPercent) { - this.downloadPercent = downloadPercent; - } - - @Override - public void setDownloadState(Status downloadState) { - this.downloadState = downloadState; - } - - @Override - public long getId() { - return id; - } - - @Override - public Date getCreated() { - return created; - } - - @Override - public Date getLastUpdated() { - return lastUpdated; - } - - @Override - public void setLastUpdated(Date date) { - lastUpdated = date; - } - - @Override - public void setInstallPath(String installPath) { - this.installPath = installPath; - } - - @Override - public Status getDownloadState() { - return downloadState; - } - - public VMTemplateHostVO(long hostId, long templateId) { - super(); - this.hostId = hostId; - this.templateId = templateId; - this.state = ObjectInDataStoreStateMachine.State.Allocated; - } - - public VMTemplateHostVO(long hostId, long templateId, Date lastUpdated, int downloadPercent, Status downloadState, String localDownloadPath, String errorString, - String jobId, String installPath, String downloadUrl) { - super(); - this.hostId = hostId; - this.templateId = templateId; - this.lastUpdated = lastUpdated; - this.downloadPercent = downloadPercent; - this.downloadState = downloadState; - this.localDownloadPath = localDownloadPath; - this.errorString = errorString; - this.jobId = jobId; - this.installPath = installPath; - this.setDownloadUrl(downloadUrl); - } - - protected VMTemplateHostVO() { - - } - - @Override - public void setLocalDownloadPath(String localPath) { - this.localDownloadPath = localPath; - } - - @Override - public String getLocalDownloadPath() { - return localDownloadPath; - } - - @Override - public void setErrorString(String errorString) { - this.errorString = errorString; - } - - @Override - public String getErrorString() { - return errorString; - } - - @Override - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public String getJobId() { - return jobId; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof VMTemplateHostVO) { - VMTemplateHostVO other = (VMTemplateHostVO)obj; - return (this.templateId == other.getTemplateId() && this.hostId == other.getHostId()); - } - return false; - } - - @Override - public int hashCode() { - Long tid = new Long(templateId); - Long hid = new Long(hostId); - return tid.hashCode() + hid.hashCode(); - } - - public void setSize(long size) { - this.size = size; - } - - public long getSize() { - return size; - } - - public void setPhysicalSize(long physicalSize) { - this.physicalSize = physicalSize; - } - - public long getPhysicalSize() { - return physicalSize; - } - - public void setDestroyed(boolean destroyed) { - this.destroyed = destroyed; - } - - public boolean getDestroyed() { - return destroyed; - } - - public void setDownloadUrl(String downloadUrl) { - this.downloadUrl = downloadUrl; - } - - public String getDownloadUrl() { - return downloadUrl; - } - - public void setCopy(boolean isCopy) { - this.isCopy = isCopy; - } - - public boolean isCopy() { - return isCopy; - } - - @Override - public long getTemplateSize() { - return -1; - } - - @Override - public String toString() { - return new StringBuilder("TmplHost[").append(id).append("-").append(templateId).append("-").append(hostId).append(installPath).append("]").toString(); - } - - @Override - public ObjectInDataStoreStateMachine.State getState() { - // TODO Auto-generated method stub - return this.state; - } - - public long getUpdatedCount() { - return this.updatedCount; - } - - public void incrUpdatedCount() { - this.updatedCount++; - } - - public void decrUpdatedCount() { - this.updatedCount--; - } - - public Date getUpdated() { - return updated; - } - - @Override - public long getObjectId() { - return this.getTemplateId(); - } - - @Override - public long getDataStoreId() { - return this.getHostId(); - } - - @Override - public State getObjectInStoreState() { - return this.state; - } - -} diff --git a/engine/schema/src/main/java/com/cloud/storage/VolumeHostVO.java b/engine/schema/src/main/java/com/cloud/storage/VolumeHostVO.java deleted file mode 100644 index d086f2dd0aa..00000000000 --- a/engine/schema/src/main/java/com/cloud/storage/VolumeHostVO.java +++ /dev/null @@ -1,346 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.storage; - -import java.util.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; - -import org.apache.cloudstack.api.InternalIdentity; -import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; - -import com.cloud.storage.Storage.ImageFormat; -import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; -import com.cloud.utils.db.GenericDaoBase; - -/** - * Join table for storage hosts and volumes - * - */ -@Entity -@Table(name = "volume_host_ref") -public class VolumeHostVO implements InternalIdentity, DataObjectInStore { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - Long id; - - @Column(name = "host_id") - private long hostId; - - @Column(name = "volume_id") - private long volumeId; - - @Column(name = "zone_id") - private long zoneId; - - @Column(name = GenericDaoBase.CREATED_COLUMN) - private Date created = null; - - @Column(name = "last_updated") - @Temporal(value = TemporalType.TIMESTAMP) - private Date lastUpdated = null; - - @Column(name = "download_pct") - private int downloadPercent; - - @Column(name = "size") - private long size; - - @Column(name = "physical_size") - private long physicalSize; - - @Column(name = "download_state") - @Enumerated(EnumType.STRING) - private Status downloadState; - - @Column(name = "checksum") - private String checksum; - - @Column(name = "local_path") - private String localDownloadPath; - - @Column(name = "error_str") - private String errorString; - - @Column(name = "job_id") - private String jobId; - - @Column(name = "install_path") - private String installPath; - - @Column(name = "url", length = 2048) - private String downloadUrl; - - @Column(name = "format") - private Storage.ImageFormat format; - - @Column(name = "destroyed") - boolean destroyed = false; - - @Column(name = "update_count", updatable = true, nullable = false) - protected long updatedCount; - - @Column(name = "updated") - @Temporal(value = TemporalType.TIMESTAMP) - Date updated; - - @Column(name = "state") - @Enumerated(EnumType.STRING) - ObjectInDataStoreStateMachine.State state; - - @Override - public String getInstallPath() { - return installPath; - } - - public long getHostId() { - return hostId; - } - - public void setHostId(long hostId) { - this.hostId = hostId; - } - - public long getVolumeId() { - return volumeId; - } - - public void setVolumeId(long volumeId) { - this.volumeId = volumeId; - } - - public long getZoneId() { - return zoneId; - } - - public void setZoneId(long zoneId) { - this.zoneId = zoneId; - } - - public int getDownloadPercent() { - return downloadPercent; - } - - public void setDownloadPercent(int downloadPercent) { - this.downloadPercent = downloadPercent; - } - - public void setDownloadState(Status downloadState) { - this.downloadState = downloadState; - } - - @Override - public long getId() { - return id; - } - - public Date getCreated() { - return created; - } - - public Date getLastUpdated() { - return lastUpdated; - } - - public void setLastUpdated(Date date) { - lastUpdated = date; - } - - @Override - public void setInstallPath(String installPath) { - this.installPath = installPath; - } - - public Status getDownloadState() { - return downloadState; - } - - public String getChecksum() { - return checksum; - } - - public void setChecksum(String checksum) { - this.checksum = checksum; - } - - public VolumeHostVO(long hostId, long volumeId) { - super(); - this.hostId = hostId; - this.volumeId = volumeId; - this.state = ObjectInDataStoreStateMachine.State.Allocated; - } - - public VolumeHostVO(long hostId, long volumeId, long zoneId, Date lastUpdated, int downloadPercent, Status downloadState, String localDownloadPath, - String errorString, String jobId, String installPath, String downloadUrl, String checksum, ImageFormat format) { - // super(); - this.hostId = hostId; - this.volumeId = volumeId; - this.zoneId = zoneId; - this.lastUpdated = lastUpdated; - this.downloadPercent = downloadPercent; - this.downloadState = downloadState; - this.localDownloadPath = localDownloadPath; - this.errorString = errorString; - this.jobId = jobId; - this.installPath = installPath; - this.setDownloadUrl(downloadUrl); - this.checksum = checksum; - this.format = format; - } - - protected VolumeHostVO() { - - } - - public void setLocalDownloadPath(String localPath) { - this.localDownloadPath = localPath; - } - - public String getLocalDownloadPath() { - return localDownloadPath; - } - - public void setErrorString(String errorString) { - this.errorString = errorString; - } - - public String getErrorString() { - return errorString; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobId() { - return jobId; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof VolumeHostVO) { - VolumeHostVO other = (VolumeHostVO)obj; - return (this.volumeId == other.getVolumeId() && this.hostId == other.getHostId()); - } - return false; - } - - @Override - public int hashCode() { - Long tid = new Long(volumeId); - Long hid = new Long(hostId); - return tid.hashCode() + hid.hashCode(); - } - - public void setSize(long size) { - this.size = size; - } - - public long getSize() { - return size; - } - - public void setPhysicalSize(long physicalSize) { - this.physicalSize = physicalSize; - } - - public long getPhysicalSize() { - return physicalSize; - } - - public void setDestroyed(boolean destroyed) { - this.destroyed = destroyed; - } - - public boolean getDestroyed() { - return destroyed; - } - - public void setDownloadUrl(String downloadUrl) { - this.downloadUrl = downloadUrl; - } - - public String getDownloadUrl() { - return downloadUrl; - } - - public Storage.ImageFormat getFormat() { - return format; - } - - public void setFormat(Storage.ImageFormat format) { - this.format = format; - } - - public long getVolumeSize() { - return -1; - } - - @Override - public String toString() { - return new StringBuilder("VolumeHost[").append(id).append("-").append(volumeId).append("-").append(hostId).append(installPath).append("]").toString(); - } - - public long getUpdatedCount() { - return this.updatedCount; - } - - public void incrUpdatedCount() { - this.updatedCount++; - } - - public void decrUpdatedCount() { - this.updatedCount--; - } - - public Date getUpdated() { - return updated; - } - - @Override - public ObjectInDataStoreStateMachine.State getState() { - // TODO Auto-generated method stub - return this.state; - } - - @Override - public long getObjectId() { - return this.getVolumeId(); - } - - @Override - public long getDataStoreId() { - return this.getHostId(); - } - - @Override - public State getObjectInStoreState() { - return this.state; - } - -} diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDao.java b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDao.java index 95195372ee9..699336bc2c7 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDao.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDao.java @@ -72,14 +72,10 @@ public interface VMTemplateDao extends GenericDao, StateDao< VMTemplateVO findRoutingTemplate(HypervisorType type, String templateName); - List listPrivateTemplatesByHost(Long hostId); - public Long countTemplatesForAccount(long accountId); public List listUnRemovedTemplatesByStates(VirtualMachineTemplate.State ...states); - List findTemplatesToSyncToS3(); - void loadDetails(VMTemplateVO tmpl); void saveDetails(VMTemplateVO tmpl); diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java index 79954307d44..b7e55b69b45 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java @@ -16,9 +16,6 @@ // under the License. package com.cloud.storage.dao; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -79,13 +76,6 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem @Inject TemplateDataStoreDao _templateDataStoreDao; - private static final String SELECT_S3_CANDIDATE_TEMPLATES = "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, t.hypervisor_type " - + "FROM vm_template t JOIN template_host_ref r ON t.id=r.template_id JOIN host h ON h.id=r.host_id " - + "WHERE t.hypervisor_type IN (SELECT hypervisor_type FROM host) AND r.download_state = 'DOWNLOADED' AND " - + "r.template_id NOT IN (SELECT template_id FROM template_s3_ref) AND r.destroyed = 0 AND t.type <> 'PERHOST'"; - protected SearchBuilder TemplateNameSearch; protected SearchBuilder UniqueNameSearch; protected SearchBuilder tmpltTypeSearch; @@ -231,31 +221,6 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem return listBy(sc, filter); } - @Override - public List listPrivateTemplatesByHost(Long hostId) { - - String sql = - "select * from template_host_ref as thr INNER JOIN vm_template as t ON t.id=thr.template_id " - + "where thr.host_id=? and t.public=0 and t.featured=0 and t.type='USER' and t.state='Active'"; - - List l = new ArrayList(); - - TransactionLegacy txn = TransactionLegacy.currentTxn(); - - PreparedStatement pstmt = null; - try { - pstmt = txn.prepareAutoCloseStatement(sql); - pstmt.setLong(1, hostId); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) { - l.add(rs.getLong(1)); - } - } catch (SQLException e) { - s_logger.debug("Exception: ", e); - } - return l; - } - @Override public List listReadyTemplates() { SearchCriteria sc = createSearchCriteria(); @@ -466,320 +431,6 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem _templateDetailsDao.saveDetails(details); } - /* - * @Override public Set> searchSwiftTemplates(String name, - * String keyword, TemplateFilter templateFilter, boolean isIso, - * List hypers, Boolean bootable, DomainVO domain, Long - * pageSize, Long startIndex, Long zoneId, HypervisorType hyperType, boolean - * onlyReady, boolean showDomr, List permittedAccounts, Account - * caller, Map tags) { - * - * StringBuilder builder = new StringBuilder(); if - * (!permittedAccounts.isEmpty()) { for (Account permittedAccount : - * permittedAccounts) { builder.append(permittedAccount.getAccountId() + - * ","); } } - * - * String permittedAccountsStr = builder.toString(); - * - * if (permittedAccountsStr.length() > 0) { // chop the "," off - * permittedAccountsStr = permittedAccountsStr.substring(0, - * permittedAccountsStr.length() - 1); } - * - * TransactionLegacy txn = TransactionLegacy.currentTxn(); txn.start(); - * - * Set> templateZonePairList = new HashSet>(); PreparedStatement pstmt = null; ResultSet rs = null; String sql - * = SELECT_TEMPLATE_SWIFT_REF; try { String joinClause = ""; String - * whereClause = " WHERE t.removed IS NULL"; - * - * if (isIso) { whereClause += " AND t.format = 'ISO'"; if - * (!hyperType.equals(HypervisorType.None)) { joinClause = - * " INNER JOIN guest_os guestOS on (guestOS.id = t.guest_os_id) INNER JOIN guest_os_hypervisor goh on ( goh.guest_os_id = guestOS.id) " - * ; whereClause += " AND goh.hypervisor_type = '" + hyperType.toString() + - * "'"; } } else { whereClause += " AND t.format <> 'ISO'"; if - * (hypers.isEmpty()) { return templateZonePairList; } else { StringBuilder - * relatedHypers = new StringBuilder(); for (HypervisorType hyper : hypers) - * { relatedHypers.append("'"); relatedHypers.append(hyper.toString()); - * relatedHypers.append("'"); relatedHypers.append(","); } - * relatedHypers.setLength(relatedHypers.length() - 1); whereClause += - * " AND t.hypervisor_type IN (" + relatedHypers + ")"; } } joinClause += - * " INNER JOIN template_swift_ref tsr on (t.id = tsr.template_id)"; if - * (keyword != null) { whereClause += " AND t.name LIKE \"%" + keyword + - * "%\""; } else if (name != null) { whereClause += " AND t.name LIKE \"%" + - * name + "%\""; } - * - * if (bootable != null) { whereClause += " AND t.bootable = " + bootable; } - * - * if (!showDomr) { whereClause += " AND t.type != '" + - * Storage.TemplateType.SYSTEM.toString() + "'"; } - * - * if (templateFilter == TemplateFilter.featured) { whereClause += - * " AND t.public = 1 AND t.featured = 1"; } else if ((templateFilter == - * TemplateFilter.self || templateFilter == TemplateFilter.selfexecutable) - * && caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { if (caller.getType() - * == Account.ACCOUNT_TYPE_DOMAIN_ADMIN || caller.getType() == - * Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) { joinClause += - * " INNER JOIN account a on (t.account_id = a.id) INNER JOIN domain d on (a.domain_id = d.id)" - * ; whereClause += " AND d.path LIKE '" + domain.getPath() + "%'"; } else - * { whereClause += " AND t.account_id IN (" + permittedAccountsStr + ")"; } - * } else if ((templateFilter == TemplateFilter.shared || templateFilter == - * TemplateFilter.sharedexecutable) && caller.getType() != - * Account.ACCOUNT_TYPE_ADMIN) { if (caller.getType() == - * Account.ACCOUNT_TYPE_NORMAL) { joinClause += - * " LEFT JOIN launch_permission lp ON t.id = lp.template_id WHERE" + - * " (t.account_id IN (" + permittedAccountsStr + ") OR" + - * " lp.account_id IN (" + permittedAccountsStr + "))"; } else { joinClause - * += " INNER JOIN account a on (t.account_id = a.id) "; } } else if - * (templateFilter == TemplateFilter.executable && - * !permittedAccounts.isEmpty()) { whereClause += - * " AND (t.public = 1 OR t.account_id IN (" + permittedAccountsStr + "))"; - * } else if (templateFilter == TemplateFilter.community) { whereClause += - * " AND t.public = 1 AND t.featured = 0"; } else if (templateFilter == - * TemplateFilter.all && caller.getType() == Account.ACCOUNT_TYPE_ADMIN) { } - * else if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { return - * templateZonePairList; } - * - * sql += joinClause + whereClause + getOrderByLimit(pageSize, startIndex); - * pstmt = txn.prepareStatement(sql); rs = pstmt.executeQuery(); while - * (rs.next()) { Pair templateZonePair = new Pair(rs.getLong(1), -1L); templateZonePairList.add(templateZonePair); } - * - * } catch (Exception e) { s_logger.warn("Error listing templates", e); } - * finally { try { if (rs != null) { rs.close(); } if (pstmt != null) { - * pstmt.close(); } txn.commit(); } catch (SQLException sqle) { - * s_logger.warn("Error in cleaning up", sqle); } } - * - * return templateZonePairList; } - * - * - * @Override public Set> searchTemplates(String name, - * String keyword, TemplateFilter templateFilter, boolean isIso, - * List hypers, Boolean bootable, DomainVO domain, Long - * pageSize, Long startIndex, Long zoneId, HypervisorType hyperType, boolean - * onlyReady, boolean showDomr,List permittedAccounts, Account - * caller, ListProjectResourcesCriteria listProjectResourcesCriteria, - * Map tags, String zoneType) { StringBuilder builder = new - * StringBuilder(); if (!permittedAccounts.isEmpty()) { for (Account - * permittedAccount : permittedAccounts) { - * builder.append(permittedAccount.getAccountId() + ","); } } - * - * String permittedAccountsStr = builder.toString(); - * - * if (permittedAccountsStr.length() > 0) { //chop the "," off - * permittedAccountsStr = permittedAccountsStr.substring(0, - * permittedAccountsStr.length()-1); } - * - * TransactionLegacy txn = TransactionLegacy.currentTxn(); txn.start(); - * - * // Use LinkedHashSet here to guarantee iteration order Set> templateZonePairList = new LinkedHashSet>(); - * PreparedStatement pstmt = null; ResultSet rs = null; StringBuilder - * relatedDomainIds = new StringBuilder(); String sql = - * SELECT_TEMPLATE_ZONE_REF; String groupByClause = ""; try { //short - * accountType; //String accountId = null; String guestOSJoin = ""; - * StringBuilder templateHostRefJoin = new StringBuilder(); String - * dataCenterJoin = "", lpjoin = ""; String tagsJoin = ""; - * - * if (isIso && !hyperType.equals(HypervisorType.None)) { guestOSJoin = - * " INNER JOIN guest_os guestOS on (guestOS.id = t.guest_os_id) INNER JOIN guest_os_hypervisor goh on ( goh.guest_os_id = guestOS.id) " - * ; } if (onlyReady){ templateHostRefJoin.append( - * " INNER JOIN template_host_ref thr on (t.id = thr.template_id) INNER JOIN host h on (thr.host_id = h.id)" - * ); sql = SELECT_TEMPLATE_HOST_REF; groupByClause = - * " GROUP BY t.id, h.data_center_id "; } if ((templateFilter == - * TemplateFilter.featured) || (templateFilter == TemplateFilter.community)) - * { dataCenterJoin = - * " INNER JOIN data_center dc on (h.data_center_id = dc.id)"; } - * - * if (zoneType != null) { dataCenterJoin = - * " INNER JOIN template_host_ref thr on (t.id = thr.template_id) INNER JOIN host h on (thr.host_id = h.id)" - * ; dataCenterJoin += - * " INNER JOIN data_center dc on (h.data_center_id = dc.id)"; } - * - * if (templateFilter == TemplateFilter.sharedexecutable || templateFilter - * == TemplateFilter.shared ){ lpjoin = - * " INNER JOIN launch_permission lp ON t.id = lp.template_id "; } - * - * if (tags != null && !tags.isEmpty()) { tagsJoin = - * " INNER JOIN resource_tags r ON t.id = r.resource_id "; } - * - * sql += guestOSJoin + templateHostRefJoin + dataCenterJoin + lpjoin + - * tagsJoin; String whereClause = ""; - * - * //All joins have to be made before we start setting the condition - * settings if ((listProjectResourcesCriteria == - * ListProjectResourcesCriteria.SkipProjectResources || - * (!permittedAccounts.isEmpty() && !(templateFilter == - * TemplateFilter.community || templateFilter == TemplateFilter.featured))) - * && !(caller.getType() != Account.ACCOUNT_TYPE_NORMAL && templateFilter == - * TemplateFilter.all)) { whereClause += - * " INNER JOIN account a on (t.account_id = a.id)"; if ((templateFilter == - * TemplateFilter.self || templateFilter == TemplateFilter.selfexecutable) - * && (caller.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN || - * caller.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN)) { - * whereClause += - * " INNER JOIN domain d on (a.domain_id = d.id) WHERE d.path LIKE '" + - * domain.getPath() + "%'"; if (listProjectResourcesCriteria == - * ListProjectResourcesCriteria.SkipProjectResources) { whereClause += - * " AND a.type != " + Account.ACCOUNT_TYPE_PROJECT; } } else if - * (listProjectResourcesCriteria == - * ListProjectResourcesCriteria.SkipProjectResources) { whereClause += - * " WHERE a.type != " + Account.ACCOUNT_TYPE_PROJECT; } } - * - * if (!permittedAccounts.isEmpty()) { for (Account account : - * permittedAccounts) { //accountType = account.getType(); //accountId = - * Long.toString(account.getId()); DomainVO accountDomain = - * _domainDao.findById(account.getDomainId()); - * - * // get all parent domain ID's all the way till root domain DomainVO - * domainTreeNode = accountDomain; while (true) { - * relatedDomainIds.append(domainTreeNode.getId()); - * relatedDomainIds.append(","); if (domainTreeNode.getParent() != null) { - * domainTreeNode = _domainDao.findById(domainTreeNode.getParent()); } else - * { break; } } - * - * // get all child domain ID's if (isAdmin(account.getType()) ) { - * List allChildDomains = - * _domainDao.findAllChildren(accountDomain.getPath(), - * accountDomain.getId()); for (DomainVO childDomain : allChildDomains) { - * relatedDomainIds.append(childDomain.getId()); - * relatedDomainIds.append(","); } } - * relatedDomainIds.setLength(relatedDomainIds.length()-1); } } - * - * String attr = " AND "; if (whereClause.endsWith(" WHERE ")) { attr += - * " WHERE "; } - * - * if (!isIso) { if ( hypers.isEmpty() ) { return templateZonePairList; } - * else { StringBuilder relatedHypers = new StringBuilder(); for - * (HypervisorType hyper : hypers ) { relatedHypers.append("'"); - * relatedHypers.append(hyper.toString()); relatedHypers.append("'"); - * relatedHypers.append(","); } - * relatedHypers.setLength(relatedHypers.length()-1); whereClause += attr + - * " t.hypervisor_type IN (" + relatedHypers + ")"; } } - * - * if (!permittedAccounts.isEmpty() && !(templateFilter == - * TemplateFilter.featured || templateFilter == TemplateFilter.community || - * templateFilter == TemplateFilter.executable || templateFilter == - * TemplateFilter.shared || templateFilter == - * TemplateFilter.sharedexecutable) && !isAdmin(caller.getType()) ) { - * whereClause += attr + "t.account_id IN (" + permittedAccountsStr + ")"; } - * - * if (templateFilter == TemplateFilter.featured) { whereClause += attr + - * "t.public = 1 AND t.featured = 1"; if (!permittedAccounts.isEmpty()) { - * whereClause += attr + "(dc.domain_id IN (" + relatedDomainIds + - * ") OR dc.domain_id is NULL)"; } } else if (templateFilter == - * TemplateFilter.self || templateFilter == TemplateFilter.selfexecutable) { - * whereClause += " AND t.account_id IN (" + permittedAccountsStr + ")"; } - * else if (templateFilter == TemplateFilter.sharedexecutable || - * templateFilter == TemplateFilter.shared ) { whereClause += " AND " + - * " (t.account_id IN (" + permittedAccountsStr + ") OR" + - * " lp.account_id IN (" + permittedAccountsStr + "))"; } else if - * (templateFilter == TemplateFilter.executable && - * !permittedAccounts.isEmpty()) { whereClause += attr + - * "(t.public = 1 OR t.account_id IN (" + permittedAccountsStr + "))"; } - * else if (templateFilter == TemplateFilter.community) { whereClause += - * attr + "t.public = 1 AND t.featured = 0"; if - * (!permittedAccounts.isEmpty()) { whereClause += attr + - * "(dc.domain_id IN (" + relatedDomainIds + ") OR dc.domain_id is NULL)"; } - * } else if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN && !isIso) { - * return templateZonePairList; } - * - * if (tags != null && !tags.isEmpty()) { whereClause += " AND ("; boolean - * first = true; for (String key : tags.keySet()) { if (!first) { - * whereClause += " OR "; } whereClause += "(r.key=\"" + key + - * "\" and r.value=\"" + tags.get(key) + "\")"; first = false; } whereClause - * += ")"; } - * - * if (whereClause.equals("")) { whereClause += " WHERE "; } else if - * (!whereClause.equals(" WHERE ")) { whereClause += " AND "; } - * - * sql += whereClause + getExtrasWhere(templateFilter, name, keyword, isIso, - * bootable, hyperType, zoneId, onlyReady, showDomr, zoneType) + - * groupByClause + getOrderByLimit(pageSize, startIndex); - * - * pstmt = txn.prepareStatement(sql); rs = pstmt.executeQuery(); - * - * while (rs.next()) { Pair templateZonePair = new Pair(rs.getLong(1), rs.getLong(2)); - * templateZonePairList.add(templateZonePair); } //for now, defaulting - * pageSize to a large val if null; may need to revisit post 2.2RC2 if(isIso - * && templateZonePairList.size() < (pageSize != null ? pageSize : 500) && - * templateFilter != TemplateFilter.community && !(templateFilter == - * TemplateFilter.self && !BaseCmd.isRootAdmin(caller.getType())) ){ - * //evaluates to true If root admin and filter=self - * - * List publicIsos = publicIsoSearch(bootable, false, tags); - * List userIsos = userIsoSearch(false); - * - * //Listing the ISOs according to the page size.Restricting the total no. - * of ISOs on a page //to be less than or equal to the pageSize parameter - * - * int i=0; - * - * if (startIndex > userIsos.size()) { i=(int) (startIndex - - * userIsos.size()); } - * - * for (; i < publicIsos.size(); i++) { if(templateZonePairList.size() >= - * pageSize){ break; } else { if (keyword != null && - * publicIsos.get(i).getName().contains(keyword)) { - * templateZonePairList.add(new Pair(publicIsos.get(i).getId(), - * null)); continue; } else if (name != null && - * publicIsos.get(i).getName().contains(name)) { - * templateZonePairList.add(new Pair(publicIsos.get(i).getId(), - * null)); continue; } else if (keyword == null && name == null){ - * templateZonePairList.add(new Pair(publicIsos.get(i).getId(), - * null)); } } } } } catch (Exception e) { - * s_logger.warn("Error listing templates", e); } finally { try { if (rs != - * null) { rs.close(); } if (pstmt != null) { pstmt.close(); } txn.commit(); - * } catch( SQLException sqle) { s_logger.warn("Error in cleaning up", - * sqle); } } - * - * return templateZonePairList; } - */ - - /* - * private String getExtrasWhere(TemplateFilter templateFilter, String name, - * String keyword, boolean isIso, Boolean bootable, HypervisorType - * hyperType, Long zoneId, boolean onlyReady, boolean showDomr, String - * zoneType) { String sql = ""; if (keyword != null) { sql += - * " t.name LIKE \"%" + keyword + "%\" AND"; } else if (name != null) { sql - * += " t.name LIKE \"%" + name + "%\" AND"; } - * - * if (isIso) { sql += " t.format = 'ISO'"; if - * (!hyperType.equals(HypervisorType.None)) { sql += - * " AND goh.hypervisor_type = '" + hyperType.toString() + "'"; } } else { - * sql += " t.format <> 'ISO'"; if (!hyperType.equals(HypervisorType.None)) - * { sql += " AND t.hypervisor_type = '" + hyperType.toString() + "'"; } } - * - * if (bootable != null) { sql += " AND t.bootable = " + bootable; } - * - * if (onlyReady){ sql += " AND thr.download_state = '" - * +Status.DOWNLOADED.toString() + "'" + " AND thr.destroyed=0 "; if (zoneId - * != null){ sql += " AND h.data_center_id = " +zoneId; } }else if (zoneId - * != null){ sql += " AND tzr.zone_id = " +zoneId+ - * " AND tzr.removed is null" ; }else{ sql += " AND tzr.removed is null "; } - * - * if (zoneType != null){ sql += " AND dc.networktype = '" + zoneType + "'"; - * } - * - * if (!showDomr){ sql += " AND t.type != '" - * +Storage.TemplateType.SYSTEM.toString() + "'"; } - * - * sql += " AND t.removed IS NULL"; - * - * return sql; } - * - * private String getOrderByLimit(Long pageSize, Long startIndex) { Boolean - * isAscending = - * Boolean.parseBoolean(_configDao.getValue("sortkey.algorithm")); - * isAscending = (isAscending == null ? true : isAscending); - * - * String sql; if (isAscending) { sql = " ORDER BY t.sort_key ASC"; } else { - * sql = " ORDER BY t.sort_key DESC"; } - * - * if ((pageSize != null) && (startIndex != null)) { sql += " LIMIT " + - * startIndex.toString() + "," + pageSize.toString(); } return sql; } - */ - @SuppressWarnings("unchecked") @Override @DB @@ -973,102 +624,6 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem return result; } - @Override - public List findTemplatesToSyncToS3() { - return executeList(SELECT_S3_CANDIDATE_TEMPLATES, new Object[] {}); - } - - /* - * @Override public Set> searchS3Templates(final String - * name, final String keyword, final TemplateFilter templateFilter, final - * boolean isIso, final List hypers, final Boolean bootable, - * final DomainVO domain, final Long pageSize, final Long startIndex, final - * Long zoneId, final HypervisorType hyperType, final boolean onlyReady, - * final boolean showDomr, final List permittedAccounts, final - * Account caller, final Map tags) { - * - * final String permittedAccountsStr = join(",", permittedAccounts); - * - * final TransactionLegacy txn = TransactionLegacy.currentTxn(); txn.start(); - * - * Set> templateZonePairList = new HashSet>(); PreparedStatement pstmt = null; ResultSet rs = null; try { - * - * final StringBuilder joinClause = new StringBuilder(); final StringBuilder - * whereClause = new StringBuilder(" WHERE t.removed IS NULL"); - * - * if (isIso) { whereClause.append(" AND t.format = 'ISO'"); if - * (!hyperType.equals(HypervisorType.None)) { joinClause.append( - * " INNER JOIN guest_os guestOS on (guestOS.id = t.guest_os_id) INNER JOIN guest_os_hypervisor goh on ( goh.guest_os_id = guestOS.id) " - * ); whereClause.append(" AND goh.hypervisor_type = '"); - * whereClause.append(hyperType); whereClause.append("'"); } } else { - * whereClause.append(" AND t.format <> 'ISO'"); if (hypers.isEmpty()) { - * return templateZonePairList; } else { final StringBuilder relatedHypers = - * new StringBuilder(); for (HypervisorType hyper : hypers) { - * relatedHypers.append("'"); relatedHypers.append(hyper.toString()); - * relatedHypers.append("'"); relatedHypers.append(","); } - * relatedHypers.setLength(relatedHypers.length() - 1); - * whereClause.append(" AND t.hypervisor_type IN ("); - * whereClause.append(relatedHypers); whereClause.append(")"); } } - * - * joinClause.append( - * " INNER JOIN template_s3_ref tsr on (t.id = tsr.template_id)"); - * - * whereClause.append("AND t.name LIKE \"%"); whereClause.append(keyword == - * null ? keyword : name); whereClause.append("%\""); - * - * if (bootable != null) { whereClause.append(" AND t.bootable = "); - * whereClause.append(bootable); } - * - * if (!showDomr) { whereClause.append(" AND t.type != '"); - * whereClause.append(Storage.TemplateType.SYSTEM); whereClause.append("'"); - * } - * - * if (templateFilter == TemplateFilter.featured) { - * whereClause.append(" AND t.public = 1 AND t.featured = 1"); } else if - * ((templateFilter == TemplateFilter.self || templateFilter == - * TemplateFilter.selfexecutable) && caller.getType() != - * Account.ACCOUNT_TYPE_ADMIN) { if (caller.getType() == - * Account.ACCOUNT_TYPE_DOMAIN_ADMIN || caller.getType() == - * Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) { joinClause.append( - * " INNER JOIN account a on (t.account_id = a.id) INNER JOIN domain d on (a.domain_id = d.id)" - * ); whereClause.append(" AND d.path LIKE '"); - * whereClause.append(domain.getPath()); whereClause.append("%'"); } else { - * whereClause.append(" AND t.account_id IN ("); - * whereClause.append(permittedAccountsStr); whereClause.append(")"); } } - * else if (templateFilter == TemplateFilter.sharedexecutable && - * caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { if (caller.getType() == - * Account.ACCOUNT_TYPE_NORMAL) { joinClause.append( - * " LEFT JOIN launch_permission lp ON t.id = lp.template_id WHERE (t.account_id IN (" - * ); joinClause.append(permittedAccountsStr); - * joinClause.append(") OR lp.account_id IN ("); - * joinClause.append(permittedAccountsStr); joinClause.append("))"); } else - * { joinClause.append(" INNER JOIN account a on (t.account_id = a.id) "); } - * } else if (templateFilter == TemplateFilter.executable && - * !permittedAccounts.isEmpty()) { - * whereClause.append(" AND (t.public = 1 OR t.account_id IN ("); - * whereClause.append(permittedAccountsStr); whereClause.append("))"); } - * else if (templateFilter == TemplateFilter.community) { - * whereClause.append(" AND t.public = 1 AND t.featured = 0"); } else if - * (templateFilter == TemplateFilter.all && caller.getType() == - * Account.ACCOUNT_TYPE_ADMIN) { } else if (caller.getType() != - * Account.ACCOUNT_TYPE_ADMIN) { return templateZonePairList; } - * - * final StringBuilder sql = new StringBuilder(SELECT_TEMPLATE_S3_REF); - * sql.append(joinClause); sql.append(whereClause); - * sql.append(getOrderByLimit(pageSize, startIndex)); - * - * pstmt = txn.prepareStatement(sql.toString()); rs = pstmt.executeQuery(); - * while (rs.next()) { final Pair templateZonePair = new - * Pair( rs.getLong(1), -1L); - * templateZonePairList.add(templateZonePair); } txn.commit(); } catch - * (Exception e) { s_logger.warn("Error listing S3 templates", e); if (txn - * != null) { txn.rollback(); } } finally { closeResources(pstmt, rs); if - * (txn != null) { txn.close(); } } - * - * return templateZonePairList; } - */ - @Override public boolean updateState( com.cloud.template.VirtualMachineTemplate.State currentState, diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateHostDao.java b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateHostDao.java deleted file mode 100644 index 7190d1c1611..00000000000 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateHostDao.java +++ /dev/null @@ -1,68 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.storage.dao; - -import java.util.List; - -import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; - -import com.cloud.storage.VMTemplateHostVO; -import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; -import com.cloud.utils.db.GenericDao; -import com.cloud.utils.fsm.StateDao; - -public interface VMTemplateHostDao extends GenericDao, - StateDao { - List listByHostId(long id); - - List listByTemplateId(long templateId); - - List listByOnlyTemplateId(long templateId); - - VMTemplateHostVO findByHostTemplate(long hostId, long templateId); - - VMTemplateHostVO findByTemplateId(long templateId); - - VMTemplateHostVO findByHostTemplate(long hostId, long templateId, boolean lock); - - List listByHostTemplate(long hostId, long templateId); - - void update(VMTemplateHostVO instance); - - List listByTemplateStatus(long templateId, VMTemplateHostVO.Status downloadState); - - List listByTemplateStatus(long templateId, long datacenterId, VMTemplateHostVO.Status downloadState); - - List listByTemplateStatus(long templateId, long datacenterId, long podId, VMTemplateHostVO.Status downloadState); - - List listByTemplateStates(long templateId, VMTemplateHostVO.Status... states); - - List listDestroyed(long hostId); - - boolean templateAvailable(long templateId, long hostId); - - List listByZoneTemplate(long dcId, long templateId, boolean readyOnly); - - void deleteByHost(Long hostId); - - VMTemplateHostVO findLocalSecondaryStorageByHostTemplate(long hostId, long templateId); - - List listByTemplateHostStatus(long templateId, long hostId, Status... states); - - List listByState(Status state); -} diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateHostDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateHostDaoImpl.java deleted file mode 100644 index 5f7a2d78e2c..00000000000 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateHostDaoImpl.java +++ /dev/null @@ -1,431 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.storage.dao; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.TimeZone; - -import javax.inject.Inject; -import javax.naming.ConfigurationException; - -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; - -import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; - -import com.cloud.host.Host; -import com.cloud.host.HostVO; -import com.cloud.host.dao.HostDao; -import com.cloud.storage.VMTemplateHostVO; -import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; -import com.cloud.utils.DateUtil; -import com.cloud.utils.db.GenericDaoBase; -import com.cloud.utils.db.JoinBuilder; -import com.cloud.utils.db.SearchBuilder; -import com.cloud.utils.db.SearchCriteria; -import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.TransactionLegacy; -import com.cloud.utils.db.UpdateBuilder; - -@Component -public class VMTemplateHostDaoImpl extends GenericDaoBase implements VMTemplateHostDao { - public static final Logger s_logger = Logger.getLogger(VMTemplateHostDaoImpl.class.getName()); - @Inject - HostDao _hostDao; - protected final SearchBuilder HostSearch; - protected final SearchBuilder TemplateSearch; - protected final SearchBuilder HostTemplateSearch; - protected final SearchBuilder HostTemplateStateSearch; - protected final SearchBuilder HostDestroyedSearch; - protected final SearchBuilder TemplateStatusSearch; - protected final SearchBuilder TemplateStatesSearch; - protected final SearchBuilder updateStateSearch; - protected SearchBuilder ZoneTemplateSearch; - protected SearchBuilder LocalSecondaryStorageSearch; - - protected static final String UPDATE_TEMPLATE_HOST_REF = "UPDATE template_host_ref SET download_state = ?, download_pct= ?, last_updated = ? " - + ", error_str = ?, local_path = ?, job_id = ? " + "WHERE host_id = ? and type_id = ?"; - - protected static final String DOWNLOADS_STATE_DC = "SELECT t.id, t.host_id, t.template_id, t.created, t.last_updated, t.job_id, " - + "t.download_pct, t.size, t.physical_size, t.download_state, t.error_str, t.local_path, " - + "t.install_path, t.url, t.destroyed, t.is_copy FROM template_host_ref t, host h " + "where t.host_id = h.id and h.data_center_id=? " - + " and t.template_id=? and t.download_state = ?"; - - protected static final String DOWNLOADS_STATE_DC_POD = "SELECT * FROM template_host_ref t, host h where t.host_id = h.id and h.data_center_id=? and h.pod_id=? " - + " and t.template_id=? and t.download_state=?"; - - protected static final String DOWNLOADS_STATE = "SELECT * FROM template_host_ref t " + " where t.template_id=? and t.download_state=?"; - - public VMTemplateHostDaoImpl() { - HostSearch = createSearchBuilder(); - HostSearch.and("host_id", HostSearch.entity().getHostId(), SearchCriteria.Op.EQ); - HostSearch.done(); - - TemplateSearch = createSearchBuilder(); - TemplateSearch.and("template_id", TemplateSearch.entity().getTemplateId(), SearchCriteria.Op.EQ); - TemplateSearch.and("destroyed", TemplateSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - TemplateSearch.done(); - - HostTemplateSearch = createSearchBuilder(); - HostTemplateSearch.and("host_id", HostTemplateSearch.entity().getHostId(), SearchCriteria.Op.EQ); - HostTemplateSearch.and("template_id", HostTemplateSearch.entity().getTemplateId(), SearchCriteria.Op.EQ); - HostTemplateSearch.and("destroyed", HostTemplateSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - HostTemplateSearch.done(); - - HostDestroyedSearch = createSearchBuilder(); - HostDestroyedSearch.and("host_id", HostDestroyedSearch.entity().getHostId(), SearchCriteria.Op.EQ); - HostDestroyedSearch.and("destroyed", HostDestroyedSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - HostDestroyedSearch.done(); - - TemplateStatusSearch = createSearchBuilder(); - TemplateStatusSearch.and("template_id", TemplateStatusSearch.entity().getTemplateId(), SearchCriteria.Op.EQ); - TemplateStatusSearch.and("download_state", TemplateStatusSearch.entity().getDownloadState(), SearchCriteria.Op.EQ); - TemplateStatusSearch.and("destroyed", TemplateStatusSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - TemplateStatusSearch.done(); - - TemplateStatesSearch = createSearchBuilder(); - TemplateStatesSearch.and("template_id", TemplateStatesSearch.entity().getTemplateId(), SearchCriteria.Op.EQ); - TemplateStatesSearch.and("states", TemplateStatesSearch.entity().getDownloadState(), SearchCriteria.Op.IN); - TemplateStatesSearch.and("destroyed", TemplateStatesSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - TemplateStatesSearch.done(); - - HostTemplateStateSearch = createSearchBuilder(); - HostTemplateStateSearch.and("template_id", HostTemplateStateSearch.entity().getTemplateId(), SearchCriteria.Op.EQ); - HostTemplateStateSearch.and("host_id", HostTemplateStateSearch.entity().getHostId(), SearchCriteria.Op.EQ); - HostTemplateStateSearch.and("states", HostTemplateStateSearch.entity().getDownloadState(), SearchCriteria.Op.IN); - HostTemplateStateSearch.and("destroyed", HostTemplateStateSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - HostTemplateStateSearch.done(); - - updateStateSearch = this.createSearchBuilder(); - updateStateSearch.and("id", updateStateSearch.entity().getId(), Op.EQ); - updateStateSearch.and("state", updateStateSearch.entity().getState(), Op.EQ); - updateStateSearch.and("updatedCount", updateStateSearch.entity().getUpdatedCount(), Op.EQ); - updateStateSearch.done(); - - } - - @Override - public boolean configure(String name, Map params) throws ConfigurationException { - boolean result = super.configure(name, params); - ZoneTemplateSearch = createSearchBuilder(); - ZoneTemplateSearch.and("template_id", ZoneTemplateSearch.entity().getTemplateId(), SearchCriteria.Op.EQ); - ZoneTemplateSearch.and("state", ZoneTemplateSearch.entity().getDownloadState(), SearchCriteria.Op.EQ); - SearchBuilder hostSearch = _hostDao.createSearchBuilder(); - hostSearch.and("zone_id", hostSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); - ZoneTemplateSearch.join("tmplHost", hostSearch, hostSearch.entity().getId(), ZoneTemplateSearch.entity().getHostId(), JoinBuilder.JoinType.INNER); - ZoneTemplateSearch.done(); - - LocalSecondaryStorageSearch = createSearchBuilder(); - LocalSecondaryStorageSearch.and("template_id", LocalSecondaryStorageSearch.entity().getTemplateId(), SearchCriteria.Op.EQ); - LocalSecondaryStorageSearch.and("state", LocalSecondaryStorageSearch.entity().getDownloadState(), SearchCriteria.Op.EQ); - SearchBuilder localSecondaryHost = _hostDao.createSearchBuilder(); - localSecondaryHost.and("private_ip_address", localSecondaryHost.entity().getPrivateIpAddress(), SearchCriteria.Op.EQ); - localSecondaryHost.and("state", localSecondaryHost.entity().getStatus(), SearchCriteria.Op.EQ); - localSecondaryHost.and("data_center_id", localSecondaryHost.entity().getDataCenterId(), SearchCriteria.Op.EQ); - localSecondaryHost.and("type", localSecondaryHost.entity().getType(), SearchCriteria.Op.EQ); - LocalSecondaryStorageSearch.join("host", localSecondaryHost, localSecondaryHost.entity().getId(), LocalSecondaryStorageSearch.entity().getHostId(), - JoinBuilder.JoinType.INNER); - LocalSecondaryStorageSearch.done(); - - return result; - } - - @Override - public void update(VMTemplateHostVO instance) { - TransactionLegacy txn = TransactionLegacy.currentTxn(); - PreparedStatement pstmt = null; - try { - Date now = new Date(); - String sql = UPDATE_TEMPLATE_HOST_REF; - pstmt = txn.prepareAutoCloseStatement(sql); - pstmt.setString(1, instance.getDownloadState().toString()); - pstmt.setInt(2, instance.getDownloadPercent()); - pstmt.setString(3, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), now)); - pstmt.setString(4, instance.getErrorString()); - pstmt.setString(5, instance.getLocalDownloadPath()); - pstmt.setString(6, instance.getJobId()); - pstmt.setLong(7, instance.getHostId()); - pstmt.setLong(8, instance.getTemplateId()); - pstmt.executeUpdate(); - } catch (Exception e) { - s_logger.warn("Exception: ", e); - } - } - - @Override - public List listByHostId(long id) { - SearchCriteria sc = HostSearch.create(); - sc.setParameters("host_id", id); - return listIncludingRemovedBy(sc); - } - - @Override - public List listByTemplateId(long templateId) { - SearchCriteria sc = TemplateSearch.create(); - sc.setParameters("template_id", templateId); - sc.setParameters("destroyed", false); - return listIncludingRemovedBy(sc); - } - - @Override - public List listByOnlyTemplateId(long templateId) { - SearchCriteria sc = TemplateSearch.create(); - sc.setParameters("template_id", templateId); - sc.setParameters("destroyed", false); - return listIncludingRemovedBy(sc); - } - - @Override - public VMTemplateHostVO findByHostTemplate(long hostId, long templateId) { - SearchCriteria sc = HostTemplateSearch.create(); - sc.setParameters("host_id", hostId); - sc.setParameters("template_id", templateId); - sc.setParameters("destroyed", false); - return findOneIncludingRemovedBy(sc); - } - - @Override - public VMTemplateHostVO findByTemplateId(long templateId) { - SearchCriteria sc = HostTemplateSearch.create(); - sc.setParameters("template_id", templateId); - sc.setParameters("destroyed", false); - return findOneIncludingRemovedBy(sc); - } - - @Override - public List listByTemplateStatus(long templateId, VMTemplateHostVO.Status downloadState) { - SearchCriteria sc = TemplateStatusSearch.create(); - sc.setParameters("template_id", templateId); - sc.setParameters("download_state", downloadState.toString()); - sc.setParameters("destroyed", false); - return listIncludingRemovedBy(sc); - } - - @Override - public List listByTemplateStatus(long templateId, long datacenterId, VMTemplateHostVO.Status downloadState) { - TransactionLegacy txn = TransactionLegacy.currentTxn(); - PreparedStatement pstmt = null; - List result = new ArrayList(); - try { - String sql = DOWNLOADS_STATE_DC; - pstmt = txn.prepareAutoCloseStatement(sql); - pstmt.setLong(1, datacenterId); - pstmt.setLong(2, templateId); - pstmt.setString(3, downloadState.toString()); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) { - result.add(toEntityBean(rs, false)); - } - } catch (Exception e) { - s_logger.warn("Exception: ", e); - } - return result; - } - - @Override - public List listByTemplateHostStatus(long templateId, long hostId, VMTemplateHostVO.Status... states) { - SearchCriteria sc = HostTemplateStateSearch.create(); - sc.setParameters("template_id", templateId); - sc.setParameters("host_id", hostId); - sc.setParameters("states", (Object[])states); - return search(sc, null); - } - - @Override - public List listByTemplateStatus(long templateId, long datacenterId, long podId, VMTemplateHostVO.Status downloadState) { - TransactionLegacy txn = TransactionLegacy.currentTxn(); - List result = new ArrayList(); - String sql = DOWNLOADS_STATE_DC_POD; - try(PreparedStatement pstmt = txn.prepareStatement(sql);) { - pstmt.setLong(1, datacenterId); - pstmt.setLong(2, podId); - pstmt.setLong(3, templateId); - pstmt.setString(4, downloadState.toString()); - try(ResultSet rs = pstmt.executeQuery();) { - while (rs.next()) { - // result.add(toEntityBean(rs, false)); TODO: this is buggy in - // GenericDaoBase for hand constructed queries - long id = rs.getLong(1); // ID column - result.add(findById(id)); - } - }catch (SQLException e) { - s_logger.warn("listByTemplateStatus:Exception: "+e.getMessage(), e); - } - } catch (Exception e) { - s_logger.warn("listByTemplateStatus:Exception: "+e.getMessage(), e); - } - return result; - - } - - @Override - public boolean templateAvailable(long templateId, long hostId) { - VMTemplateHostVO tmpltHost = findByHostTemplate(hostId, templateId); - if (tmpltHost == null) - return false; - - return tmpltHost.getDownloadState() == Status.DOWNLOADED; - } - - @Override - public List listByTemplateStates(long templateId, VMTemplateHostVO.Status... states) { - SearchCriteria sc = TemplateStatesSearch.create(); - sc.setParameters("states", (Object[])states); - sc.setParameters("template_id", templateId); - sc.setParameters("destroyed", false); - return search(sc, null); - } - - @Override - public List listByState(VMTemplateHostVO.Status state) { - SearchCriteria sc = createSearchCriteria(); - sc.addAnd("downloadState", SearchCriteria.Op.EQ, state); - sc.addAnd("destroyed", SearchCriteria.Op.EQ, false); - return search(sc, null); - } - - @Override - public List listByHostTemplate(long hostId, long templateId) { - SearchCriteria sc = HostTemplateSearch.create(); - sc.setParameters("host_id", hostId); - sc.setParameters("template_id", templateId); - sc.setParameters("destroyed", false); - return listIncludingRemovedBy(sc); - } - - @Override - public List listByZoneTemplate(long dcId, long templateId, boolean readyOnly) { - SearchCriteria sc = ZoneTemplateSearch.create(); - sc.setParameters("template_id", templateId); - sc.setJoinParameters("tmplHost", "zone_id", dcId); - if (readyOnly) { - sc.setParameters("state", VMTemplateHostVO.Status.DOWNLOADED); - } - return listBy(sc); - } - - @Override - public List listDestroyed(long hostId) { - SearchCriteria sc = HostDestroyedSearch.create(); - sc.setParameters("host_id", hostId); - sc.setParameters("destroyed", true); - return listIncludingRemovedBy(sc); - } - - @Override - public VMTemplateHostVO findByHostTemplate(long hostId, long templateId, boolean lock) { - SearchCriteria sc = HostTemplateSearch.create(); - sc.setParameters("host_id", hostId); - sc.setParameters("template_id", templateId); - sc.setParameters("destroyed", false); - if (!lock) - return findOneIncludingRemovedBy(sc); - else - return lockOneRandomRow(sc, true); - } - - // Based on computing node host id, and template id, find out the - // corresponding template_host_ref, assuming local secondary storage and - // computing node is in the same zone, and private ip - @Override - public VMTemplateHostVO findLocalSecondaryStorageByHostTemplate(long hostId, long templateId) { - HostVO computingHost = _hostDao.findById(hostId); - SearchCriteria sc = LocalSecondaryStorageSearch.create(); - sc.setJoinParameters("host", "private_ip_address", computingHost.getPrivateIpAddress()); - sc.setJoinParameters("host", "state", com.cloud.host.Status.Up); - sc.setJoinParameters("host", "data_center_id", computingHost.getDataCenterId()); - sc.setJoinParameters("host", "type", Host.Type.LocalSecondaryStorage); - sc.setParameters("template_id", templateId); - sc.setParameters("state", VMTemplateHostVO.Status.DOWNLOADED); - sc.setParameters("destroyed", false); - return findOneBy(sc); - } - - @Override - public void deleteByHost(Long hostId) { - List tmpltHosts = listByHostId(hostId); - for (VMTemplateHostVO tmpltHost : tmpltHosts) { - remove(tmpltHost.getId()); - } - } - - @Override - public boolean updateState(State currentState, Event event, State nextState, DataObjectInStore vo, Object data) { - VMTemplateHostVO templateHost = (VMTemplateHostVO)vo; - Long oldUpdated = templateHost.getUpdatedCount(); - Date oldUpdatedTime = templateHost.getUpdated(); - - SearchCriteria sc = updateStateSearch.create(); - sc.setParameters("id", templateHost.getId()); - sc.setParameters("state", currentState); - sc.setParameters("updatedCount", templateHost.getUpdatedCount()); - - templateHost.incrUpdatedCount(); - - UpdateBuilder builder = getUpdateBuilder(vo); - builder.set(vo, "state", nextState); - builder.set(vo, "updated", new Date()); - - int rows = update((VMTemplateHostVO)vo, sc); - if (rows == 0 && s_logger.isDebugEnabled()) { - VMTemplateHostVO dbVol = findByIdIncludingRemoved(templateHost.getId()); - if (dbVol != null) { - StringBuilder str = new StringBuilder("Unable to update ").append(vo.toString()); - str.append(": DB Data={id=") - .append(dbVol.getId()) - .append("; state=") - .append(dbVol.getState()) - .append("; updatecount=") - .append(dbVol.getUpdatedCount()) - .append(";updatedTime=") - .append(dbVol.getUpdated()); - str.append(": New Data={id=") - .append(templateHost.getId()) - .append("; state=") - .append(nextState) - .append("; event=") - .append(event) - .append("; updatecount=") - .append(templateHost.getUpdatedCount()) - .append("; updatedTime=") - .append(templateHost.getUpdated()); - str.append(": stale Data={id=") - .append(templateHost.getId()) - .append("; state=") - .append(currentState) - .append("; event=") - .append(event) - .append("; updatecount=") - .append(oldUpdated) - .append("; updatedTime=") - .append(oldUpdatedTime); - } else { - s_logger.debug("Unable to update objectIndatastore: id=" + templateHost.getId() + ", as there is no such object exists in the database anymore"); - } - } - return rows > 0; - } - -} diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java index 998df5e7987..c9bd769bc5b 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java @@ -62,7 +62,7 @@ public class VMTemplatePoolDaoImpl extends GenericDaoBase updateStateSearch; protected final SearchBuilder templatePathSearch; - protected static final String UPDATE_TEMPLATE_HOST_REF = "UPDATE template_spool_ref SET download_state = ?, download_pct= ?, last_updated = ? " + protected static final String UPDATE_TEMPLATE_SPOOL_HOST_REF = "UPDATE template_spool_ref SET download_state = ?, download_pct= ?, last_updated = ? " + ", error_str = ?, local_path = ?, job_id = ? " + "WHERE pool_id = ? and template_id = ?"; protected static final String DOWNLOADS_STATE_DC = "SELECT * FROM template_spool_ref t, storage_pool p where t.pool_id = p.id and p.data_center_id=? " diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VolumeHostDao.java b/engine/schema/src/main/java/com/cloud/storage/dao/VolumeHostDao.java deleted file mode 100644 index ccb276b47f9..00000000000 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VolumeHostDao.java +++ /dev/null @@ -1,41 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.storage.dao; - -import java.util.List; - -import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; - -import com.cloud.storage.VolumeHostVO; -import com.cloud.utils.db.GenericDao; -import com.cloud.utils.fsm.StateDao; - -public interface VolumeHostDao extends GenericDao, - StateDao { - - VolumeHostVO findByHostVolume(long hostId, long volumeId); - - VolumeHostVO findByVolumeId(long volumeId); - - List listBySecStorage(long sserverId); - - List listDestroyed(long hostId); - - VolumeHostVO findVolumeByZone(long zoneId, long volumeId); - -} diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VolumeHostDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/VolumeHostDaoImpl.java deleted file mode 100644 index ce2251300a2..00000000000 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VolumeHostDaoImpl.java +++ /dev/null @@ -1,181 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.storage.dao; - -import java.util.Date; -import java.util.List; - - -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; - -import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; - -import com.cloud.storage.VolumeHostVO; -import com.cloud.utils.db.GenericDaoBase; -import com.cloud.utils.db.SearchBuilder; -import com.cloud.utils.db.SearchCriteria; -import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.UpdateBuilder; - -@Component -public class VolumeHostDaoImpl extends GenericDaoBase implements VolumeHostDao { - private static final Logger s_logger = Logger.getLogger(VolumeHostDaoImpl.class); - protected final SearchBuilder HostVolumeSearch; - protected final SearchBuilder ZoneVolumeSearch; - protected final SearchBuilder VolumeSearch; - protected final SearchBuilder HostSearch; - protected final SearchBuilder HostDestroyedSearch; - protected final SearchBuilder updateStateSearch; - - public VolumeHostDaoImpl() { - HostVolumeSearch = createSearchBuilder(); - HostVolumeSearch.and("host_id", HostVolumeSearch.entity().getHostId(), SearchCriteria.Op.EQ); - HostVolumeSearch.and("volume_id", HostVolumeSearch.entity().getVolumeId(), SearchCriteria.Op.EQ); - HostVolumeSearch.and("destroyed", HostVolumeSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - HostVolumeSearch.done(); - - ZoneVolumeSearch = createSearchBuilder(); - ZoneVolumeSearch.and("zone_id", ZoneVolumeSearch.entity().getZoneId(), SearchCriteria.Op.EQ); - ZoneVolumeSearch.and("volume_id", ZoneVolumeSearch.entity().getVolumeId(), SearchCriteria.Op.EQ); - ZoneVolumeSearch.and("destroyed", ZoneVolumeSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - ZoneVolumeSearch.done(); - - HostSearch = createSearchBuilder(); - HostSearch.and("host_id", HostSearch.entity().getHostId(), SearchCriteria.Op.EQ); - HostSearch.and("destroyed", HostSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - HostSearch.done(); - - VolumeSearch = createSearchBuilder(); - VolumeSearch.and("volume_id", VolumeSearch.entity().getVolumeId(), SearchCriteria.Op.EQ); - VolumeSearch.and("destroyed", VolumeSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - VolumeSearch.done(); - - HostDestroyedSearch = createSearchBuilder(); - HostDestroyedSearch.and("host_id", HostDestroyedSearch.entity().getHostId(), SearchCriteria.Op.EQ); - HostDestroyedSearch.and("destroyed", HostDestroyedSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); - HostDestroyedSearch.done(); - - updateStateSearch = this.createSearchBuilder(); - updateStateSearch.and("id", updateStateSearch.entity().getId(), Op.EQ); - updateStateSearch.and("state", updateStateSearch.entity().getState(), Op.EQ); - updateStateSearch.and("updatedCount", updateStateSearch.entity().getUpdatedCount(), Op.EQ); - updateStateSearch.done(); - } - - @Override - public VolumeHostVO findByHostVolume(long hostId, long volumeId) { - SearchCriteria sc = HostVolumeSearch.create(); - sc.setParameters("host_id", hostId); - sc.setParameters("volume_id", volumeId); - sc.setParameters("destroyed", false); - return findOneIncludingRemovedBy(sc); - } - - @Override - public VolumeHostVO findVolumeByZone(long volumeId, long zoneId) { - SearchCriteria sc = ZoneVolumeSearch.create(); - sc.setParameters("zone_id", zoneId); - sc.setParameters("volume_id", volumeId); - sc.setParameters("destroyed", false); - return findOneIncludingRemovedBy(sc); - } - - @Override - public VolumeHostVO findByVolumeId(long volumeId) { - SearchCriteria sc = VolumeSearch.create(); - sc.setParameters("volume_id", volumeId); - sc.setParameters("destroyed", false); - return findOneBy(sc); - } - - @Override - public List listBySecStorage(long ssHostId) { - SearchCriteria sc = HostSearch.create(); - sc.setParameters("host_id", ssHostId); - sc.setParameters("destroyed", false); - return listAll(); - } - - @Override - public List listDestroyed(long hostId) { - SearchCriteria sc = HostDestroyedSearch.create(); - sc.setParameters("host_id", hostId); - sc.setParameters("destroyed", true); - return listIncludingRemovedBy(sc); - } - - @Override - public boolean updateState(State currentState, Event event, State nextState, DataObjectInStore vo, Object data) { - VolumeHostVO volHost = (VolumeHostVO)vo; - Long oldUpdated = volHost.getUpdatedCount(); - Date oldUpdatedTime = volHost.getUpdated(); - - SearchCriteria sc = updateStateSearch.create(); - sc.setParameters("id", volHost.getId()); - sc.setParameters("state", currentState); - sc.setParameters("updatedCount", volHost.getUpdatedCount()); - - volHost.incrUpdatedCount(); - - UpdateBuilder builder = getUpdateBuilder(vo); - builder.set(vo, "state", nextState); - builder.set(vo, "updated", new Date()); - - int rows = update((VolumeHostVO)vo, sc); - if (rows == 0 && s_logger.isDebugEnabled()) { - VolumeHostVO dbVol = findByIdIncludingRemoved(volHost.getId()); - if (dbVol != null) { - StringBuilder str = new StringBuilder("Unable to update ").append(vo.toString()); - str.append(": DB Data={id=") - .append(dbVol.getId()) - .append("; state=") - .append(dbVol.getState()) - .append("; updatecount=") - .append(dbVol.getUpdatedCount()) - .append(";updatedTime=") - .append(dbVol.getUpdated()); - str.append(": New Data={id=") - .append(volHost.getId()) - .append("; state=") - .append(nextState) - .append("; event=") - .append(event) - .append("; updatecount=") - .append(volHost.getUpdatedCount()) - .append("; updatedTime=") - .append(volHost.getUpdated()); - str.append(": stale Data={id=") - .append(volHost.getId()) - .append("; state=") - .append(currentState) - .append("; event=") - .append(event) - .append("; updatecount=") - .append(oldUpdated) - .append("; updatedTime=") - .append(oldUpdatedTime); - } else { - s_logger.debug("Unable to update objectIndatastore: id=" + volHost.getId() + ", as there is no such object exists in the database anymore"); - } - } - return rows > 0; - } - -} diff --git a/engine/schema/src/main/java/com/cloud/usage/ExternalPublicIpStatisticsVO.java b/engine/schema/src/main/java/com/cloud/usage/ExternalPublicIpStatisticsVO.java deleted file mode 100644 index 4337d00b04f..00000000000 --- a/engine/schema/src/main/java/com/cloud/usage/ExternalPublicIpStatisticsVO.java +++ /dev/null @@ -1,98 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.usage; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.PrimaryKeyJoinColumn; -import javax.persistence.Table; - -import org.apache.cloudstack.api.InternalIdentity; - -@Entity -@Table(name = "external_public_ip_statistics") -@PrimaryKeyJoinColumn(name = "id") -public class ExternalPublicIpStatisticsVO implements InternalIdentity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - private Long id; - - @Column(name = "data_center_id", updatable = false) - private long zoneId; - - @Column(name = "account_id", updatable = false) - private long accountId; - - @Column(name = "public_ip_address") - private String publicIpAddress; - - @Column(name = "current_bytes_received") - private long currentBytesReceived; - - @Column(name = "current_bytes_sent") - private long currentBytesSent; - - protected ExternalPublicIpStatisticsVO() { - } - - public ExternalPublicIpStatisticsVO(long zoneId, long accountId, String publicIpAddress) { - this.zoneId = zoneId; - this.accountId = accountId; - this.publicIpAddress = publicIpAddress; - this.currentBytesReceived = 0; - this.currentBytesSent = 0; - } - - @Override - public long getId() { - return id; - } - - public long getZoneId() { - return zoneId; - } - - public long getAccountId() { - return accountId; - } - - public String getPublicIpAddress() { - return publicIpAddress; - } - - public long getCurrentBytesReceived() { - return currentBytesReceived; - } - - public void setCurrentBytesReceived(long currentBytesReceived) { - this.currentBytesReceived = currentBytesReceived; - } - - public long getCurrentBytesSent() { - return currentBytesSent; - } - - public void setCurrentBytesSent(long currentBytesSent) { - this.currentBytesSent = currentBytesSent; - } - -} diff --git a/engine/schema/src/main/java/com/cloud/usage/dao/ExternalPublicIpStatisticsDao.java b/engine/schema/src/main/java/com/cloud/usage/dao/ExternalPublicIpStatisticsDao.java deleted file mode 100644 index da770fd6926..00000000000 --- a/engine/schema/src/main/java/com/cloud/usage/dao/ExternalPublicIpStatisticsDao.java +++ /dev/null @@ -1,32 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.usage.dao; - -import java.util.List; - -import com.cloud.usage.ExternalPublicIpStatisticsVO; -import com.cloud.utils.db.GenericDao; - -public interface ExternalPublicIpStatisticsDao extends GenericDao { - - ExternalPublicIpStatisticsVO lock(long accountId, long zoneId, String publicIpAddress); - - ExternalPublicIpStatisticsVO findBy(long accountId, long zoneId, String publicIpAddress); - - List listBy(long accountId, long zoneId); - -} diff --git a/engine/schema/src/main/java/com/cloud/usage/dao/ExternalPublicIpStatisticsDaoImpl.java b/engine/schema/src/main/java/com/cloud/usage/dao/ExternalPublicIpStatisticsDaoImpl.java deleted file mode 100644 index 67b135b64ef..00000000000 --- a/engine/schema/src/main/java/com/cloud/usage/dao/ExternalPublicIpStatisticsDaoImpl.java +++ /dev/null @@ -1,76 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.usage.dao; - -import java.util.List; - - -import org.springframework.stereotype.Component; - -import com.cloud.usage.ExternalPublicIpStatisticsVO; -import com.cloud.utils.db.GenericDaoBase; -import com.cloud.utils.db.SearchBuilder; -import com.cloud.utils.db.SearchCriteria; - -@Component -public class ExternalPublicIpStatisticsDaoImpl extends GenericDaoBase implements ExternalPublicIpStatisticsDao { - - private final SearchBuilder AccountZoneSearch; - private final SearchBuilder SingleRowSearch; - - public ExternalPublicIpStatisticsDaoImpl() { - AccountZoneSearch = createSearchBuilder(); - AccountZoneSearch.and("accountId", AccountZoneSearch.entity().getAccountId(), SearchCriteria.Op.EQ); - AccountZoneSearch.and("zoneId", AccountZoneSearch.entity().getZoneId(), SearchCriteria.Op.EQ); - AccountZoneSearch.done(); - - SingleRowSearch = createSearchBuilder(); - SingleRowSearch.and("accountId", SingleRowSearch.entity().getAccountId(), SearchCriteria.Op.EQ); - SingleRowSearch.and("zoneId", SingleRowSearch.entity().getZoneId(), SearchCriteria.Op.EQ); - SingleRowSearch.and("publicIp", SingleRowSearch.entity().getPublicIpAddress(), SearchCriteria.Op.EQ); - SingleRowSearch.done(); - } - - @Override - public ExternalPublicIpStatisticsVO lock(long accountId, long zoneId, String publicIpAddress) { - SearchCriteria sc = getSingleRowSc(accountId, zoneId, publicIpAddress); - return lockOneRandomRow(sc, true); - } - - @Override - public ExternalPublicIpStatisticsVO findBy(long accountId, long zoneId, String publicIpAddress) { - SearchCriteria sc = getSingleRowSc(accountId, zoneId, publicIpAddress); - return findOneBy(sc); - } - - private SearchCriteria getSingleRowSc(long accountId, long zoneId, String publicIpAddress) { - SearchCriteria sc = SingleRowSearch.create(); - sc.setParameters("accountId", accountId); - sc.setParameters("zoneId", zoneId); - sc.setParameters("publicIp", publicIpAddress); - return sc; - } - - @Override - public List listBy(long accountId, long zoneId) { - SearchCriteria sc = AccountZoneSearch.create(); - sc.setParameters("accountId", accountId); - sc.setParameters("zoneId", zoneId); - return search(sc, null); - } - -} diff --git a/engine/schema/src/main/java/org/apache/cloudstack/region/RegionSyncVO.java b/engine/schema/src/main/java/org/apache/cloudstack/region/RegionSyncVO.java deleted file mode 100644 index bb92b666af7..00000000000 --- a/engine/schema/src/main/java/org/apache/cloudstack/region/RegionSyncVO.java +++ /dev/null @@ -1,96 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package org.apache.cloudstack.region; - -import java.util.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -import com.cloud.utils.db.GenericDao; - -@Entity -@Table(name = "region_sync") -public class RegionSyncVO implements RegionSync { - - @Id - @Column(name = "id") - private long id; - - @Column(name = "region_id") - private int regionId; - - @Column(name = "api") - private String api; - - @Column(name = GenericDao.CREATED_COLUMN) - private Date createDate; - - @Column(name = "processed") - boolean processed; - - public RegionSyncVO() { - } - - public RegionSyncVO(int regionId, String api) { - this.regionId = regionId; - this.api = api; - } - - @Override - public int getRegionId() { - return regionId; - } - - public void setRegionId(int regionId) { - this.regionId = regionId; - } - - @Override - public String getApi() { - return api; - } - - public void setApi(String api) { - this.api = api; - } - - @Override - public Date getCreateDate() { - return createDate; - } - - public void setCreateDate(Date createDate) { - this.createDate = createDate; - } - - public boolean isProcessed() { - return processed; - } - - public void setProcessed(boolean processed) { - this.processed = processed; - } - - @Override - public long getId() { - return id; - } - -} diff --git a/engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml b/engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml index 67b40101d55..362054ece34 100644 --- a/engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml +++ b/engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml @@ -87,7 +87,6 @@ - @@ -240,14 +239,12 @@ - - diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41510to41600.sql b/engine/schema/src/main/resources/META-INF/db/schema-41510to41600.sql index f7a7c4aeb37..2e1a592ced5 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-41510to41600.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-41510to41600.sql @@ -404,4 +404,18 @@ UPDATE `cloud`.`configuration` SET name='denied.routes', description='Routes tha -- Rename 'master_node_count' to 'control_node_count' in kubernetes_cluster table ALTER TABLE `cloud`.`kubernetes_cluster` CHANGE master_node_count control_node_count bigint NOT NULL default '0' COMMENT 'the number of the control nodes deployed for this Kubernetes cluster'; -UPDATE `cloud`.`domain_router` SET redundant_state = 'PRIMARY' WHERE redundant_state = 'MASTER'; \ No newline at end of file +UPDATE `cloud`.`domain_router` SET redundant_state = 'PRIMARY' WHERE redundant_state = 'MASTER'; + +DROP TABLE IF EXISTS `cloud`.`external_bigswitch_vns_devices`; +DROP TABLE IF EXISTS `cloud`.`template_s3_ref`; +DROP TABLE IF EXISTS `cloud`.`template_swift_ref`; +DROP TABLE IF EXISTS `cloud`.`template_ovf_properties`; +DROP TABLE IF EXISTS `cloud`.`op_host_upgrade`; +DROP TABLE IF EXISTS `cloud`.`stack_maid`; +DROP TABLE IF EXISTS `cloud`.`volume_host_ref`; +DROP TABLE IF EXISTS `cloud`.`template_host_ref`; +DROP TABLE IF EXISTS `cloud`.`swift`; + +ALTER TABLE `cloud`.`snapshots` DROP FOREIGN KEY `fk_snapshots__s3_id` ; +ALTER TABLE `cloud`.`snapshots` DROP COLUMN `s3_id` ; +DROP TABLE IF EXISTS `cloud`.`s3`; diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java index d96b6183de1..c8b78aa9c91 100644 --- a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java +++ b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java @@ -137,24 +137,6 @@ public class TemplateObject implements TemplateInfo { if (dataStore == null) { return imageVO.getSize(); } - - /* - * - * // If the template that was passed into this allocator is not - * installed in the storage pool, // add 3 * (template size on secondary - * storage) to the running total VMTemplateHostVO templateHostVO = - * _storageMgr.findVmTemplateHost(templateForVmCreation.getId(), null); - * - * if (templateHostVO == null) { VMTemplateSwiftVO templateSwiftVO = - * _swiftMgr.findByTmpltId(templateForVmCreation.getId()); if - * (templateSwiftVO != null) { long templateSize = - * templateSwiftVO.getPhysicalSize(); if (templateSize == 0) { - * templateSize = templateSwiftVO.getSize(); } totalAllocatedSize += - * (templateSize + _extraBytesPerVolume); } } else { long templateSize = - * templateHostVO.getPhysicalSize(); if ( templateSize == 0 ){ - * templateSize = templateHostVO.getSize(); } totalAllocatedSize += - * (templateSize + _extraBytesPerVolume); } - */ VMTemplateVO image = imageDao.findById(imageVO.getId()); return image.getSize(); } diff --git a/engine/storage/integration-test/src/test/java/org/apache/cloudstack/storage/test/ChildTestConfiguration.java b/engine/storage/integration-test/src/test/java/org/apache/cloudstack/storage/test/ChildTestConfiguration.java index 3af7df7ecfc..51156246b37 100644 --- a/engine/storage/integration-test/src/test/java/org/apache/cloudstack/storage/test/ChildTestConfiguration.java +++ b/engine/storage/integration-test/src/test/java/org/apache/cloudstack/storage/test/ChildTestConfiguration.java @@ -73,11 +73,9 @@ import com.cloud.storage.dao.StoragePoolHostDaoImpl; import com.cloud.storage.dao.StoragePoolWorkDaoImpl; import com.cloud.storage.dao.VMTemplateDaoImpl; import com.cloud.storage.dao.VMTemplateDetailsDaoImpl; -import com.cloud.storage.dao.VMTemplateHostDaoImpl; import com.cloud.storage.dao.VMTemplatePoolDaoImpl; import com.cloud.storage.dao.VMTemplateZoneDaoImpl; import com.cloud.storage.dao.VolumeDaoImpl; -import com.cloud.storage.dao.VolumeHostDaoImpl; import com.cloud.storage.download.DownloadMonitorImpl; import com.cloud.tags.dao.ResourceTagsDaoImpl; import com.cloud.template.TemplateManager; @@ -96,7 +94,7 @@ import com.cloud.vm.dao.VMInstanceDaoImpl; import com.cloud.vm.snapshot.dao.VMSnapshotDaoImpl; @Configuration -@ComponentScan(basePackageClasses = {NicDaoImpl.class, VMInstanceDaoImpl.class, VMTemplateHostDaoImpl.class, VolumeHostDaoImpl.class, VolumeDaoImpl.class, +@ComponentScan(basePackageClasses = {NicDaoImpl.class, VMInstanceDaoImpl.class, VolumeDaoImpl.class, VMTemplatePoolDaoImpl.class, ResourceTagsDaoImpl.class, VMTemplateDaoImpl.class, MockStorageMotionStrategy.class, ConfigurationDaoImpl.class, ClusterDaoImpl.class, HostPodDaoImpl.class, VMTemplateZoneDaoImpl.class, VMTemplateDetailsDaoImpl.class, HostDetailsDaoImpl.class, HostTagsDaoImpl.class, HostTransferMapDaoImpl.class, DataCenterIpAddressDaoImpl.class, DataCenterLinkLocalIpAddressDaoImpl.class, diff --git a/plugins/hypervisors/simulator/src/main/java/com/cloud/resource/SimulatorDiscoverer.java b/plugins/hypervisors/simulator/src/main/java/com/cloud/resource/SimulatorDiscoverer.java index c942c8ff55c..8f1b07f027b 100644 --- a/plugins/hypervisors/simulator/src/main/java/com/cloud/resource/SimulatorDiscoverer.java +++ b/plugins/hypervisors/simulator/src/main/java/com/cloud/resource/SimulatorDiscoverer.java @@ -251,25 +251,6 @@ public class SimulatorDiscoverer extends DiscovererBase implements Discoverer, L @Override public void processConnect(Host host, StartupCommand cmd, boolean forRebalance) throws ConnectionException { - - /*if(forRebalance) - return; - if ( Host.Type.SecondaryStorage == host.getType() ) { - List tmplts = _vmTemplateDao.listAll(); - for( VMTemplateVO tmplt : tmplts ) { - VMTemplateHostVO vmTemplateHost = _vmTemplateHostDao.findByHostTemplate(host.getId(), tmplt.getId()); - if (vmTemplateHost == null) { - vmTemplateHost = new VMTemplateHostVO(host.getId(), tmplt.getId(), new Date(), 100, - com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED, null, null, null, null, tmplt.getUrl()); - _vmTemplateHostDao.persist(vmTemplateHost); - } else { - vmTemplateHost.setDownloadState(com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED); - vmTemplateHost.setDownloadPercent(100); - _vmTemplateHostDao.update(vmTemplateHost.getId(), vmTemplateHost); - } - } - }*/ - } @Override diff --git a/plugins/network-elements/juniper-contrail/src/test/java/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java b/plugins/network-elements/juniper-contrail/src/test/java/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java index 4105a617e6c..989d74b6c95 100644 --- a/plugins/network-elements/juniper-contrail/src/test/java/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java +++ b/plugins/network-elements/juniper-contrail/src/test/java/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java @@ -256,10 +256,8 @@ import com.cloud.storage.dao.StoragePoolHostDaoImpl; import com.cloud.storage.dao.UploadDaoImpl; import com.cloud.storage.dao.VMTemplateDaoImpl; import com.cloud.storage.dao.VMTemplateDetailsDaoImpl; -import com.cloud.storage.dao.VMTemplateHostDaoImpl; import com.cloud.storage.dao.VMTemplateZoneDaoImpl; import com.cloud.storage.dao.VolumeDaoImpl; -import com.cloud.storage.dao.VolumeHostDaoImpl; import com.cloud.storage.snapshot.SnapshotApiService; import com.cloud.storage.snapshot.SnapshotManager; import com.cloud.tags.dao.ResourceTagDao; @@ -332,8 +330,8 @@ import com.cloud.vm.snapshot.dao.VMSnapshotDaoImpl; StoragePoolJoinDaoImpl.class, SyncQueueItemDaoImpl.class, TemplateDataStoreDaoImpl.class, TemplateJoinDaoImpl.class, UploadDaoImpl.class, UsageEventDaoImpl.class, UserAccountJoinDaoImpl.class, UserDaoImpl.class, UserIpv6AddressDaoImpl.class, UserStatisticsDaoImpl.class, UserStatsLogDaoImpl.class, UserVmCloneSettingDaoImpl.class, UserVmDaoImpl.class, UserVmDetailsDaoImpl.class, UserVmJoinDaoImpl.class, UserVmManagerImpl.class, VMInstanceDaoImpl.class, VMSnapshotDaoImpl.class, - VMTemplateDaoImpl.class, VMTemplateDetailsDaoImpl.class, VMTemplateHostDaoImpl.class, VMTemplateZoneDaoImpl.class, VirtualMachineManagerImpl.class, VirtualRouterProviderDaoImpl.class, - VlanDaoImpl.class, VmDiskStatisticsDaoImpl.class, VmRulesetLogDaoImpl.class, VolumeDaoImpl.class, VolumeHostDaoImpl.class, VolumeJoinDaoImpl.class, VpcDaoImpl.class, + VMTemplateDaoImpl.class, VMTemplateDetailsDaoImpl.class, VMTemplateZoneDaoImpl.class, VirtualMachineManagerImpl.class, VirtualRouterProviderDaoImpl.class, + VlanDaoImpl.class, VmDiskStatisticsDaoImpl.class, VmRulesetLogDaoImpl.class, VolumeDaoImpl.class, VolumeJoinDaoImpl.class, VpcDaoImpl.class, VpcGatewayDaoImpl.class, VpcManagerImpl.class, VpcOfferingDaoImpl.class, VpcOfferingServiceMapDaoImpl.class, VpcServiceMapDaoImpl.class, VpcVirtualNetworkApplianceManagerImpl.class, VpnUserDaoImpl.class, XenServerGuru.class}, includeFilters = {@Filter(value = IntegrationTestConfiguration.ComponentFilter.class, type = FilterType.CUSTOM)}, useDefaultFilters = false) diff --git a/server/src/main/java/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java b/server/src/main/java/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java index e71636bed62..224514e856d 100644 --- a/server/src/main/java/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java +++ b/server/src/main/java/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java @@ -282,17 +282,6 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat private boolean templateAvailableInPod(long templateId, long dcId, long podId) { return true; - /* - * List thvoList = _templateHostDao.listByTemplateStatus(templateId, dcId, podId, Status.DOWNLOADED); - * List tpvoList = _templatePoolDao.listByTemplateStatus(templateId, dcId, podId, - * Status.DOWNLOADED); - * - * if (thvoList != null && thvoList.size() > 0) { if (s_logger.isDebugEnabled()) { s_logger.debug("Found " + - * thvoList.size() + " storage hosts in pod " + podId + " with template " + templateId); } return true; } else if - * (tpvoList != null && tpvoList.size() > 0) { if (s_logger.isDebugEnabled()) { s_logger.debug("Found " + - * tpvoList.size() + " storage pools in pod " + podId + " with template " + templateId); } return true; }else { return - * false; } - */ } @Override diff --git a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java index a9a971cb341..8527ac0ece9 100644 --- a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java @@ -53,7 +53,6 @@ import com.cloud.api.query.vo.TemplateJoinVO; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.storage.Storage; import com.cloud.storage.Storage.TemplateType; -import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.dao.VMTemplateDao; @@ -134,7 +133,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBaseWithTagInformation HostTemplateStatesSearch; protected GenericSearchBuilder UpHostsInPoolSearch; protected SearchBuilder StoragePoolSearch; protected SearchBuilder LocalStorageSearch; diff --git a/server/src/main/java/com/cloud/storage/download/DownloadListener.java b/server/src/main/java/com/cloud/storage/download/DownloadListener.java index 25dffb3e8af..9f528195bfa 100644 --- a/server/src/main/java/com/cloud/storage/download/DownloadListener.java +++ b/server/src/main/java/com/cloud/storage/download/DownloadListener.java @@ -55,7 +55,6 @@ import com.cloud.exception.ConnectionException; import com.cloud.host.Host; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.resource.ResourceManager; -import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.download.DownloadState.DownloadEvent; import com.cloud.storage.upload.UploadListener; @@ -157,7 +156,7 @@ public class DownloadListener implements Listener { return _callback; } - public void setCurrState(VMTemplateHostVO.Status currState) { + public void setCurrState(Status currState) { _currState = getState(currState.toString()); } diff --git a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java index 3ca0807e622..cea51d6366f 100755 --- a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java @@ -157,7 +157,6 @@ import com.cloud.storage.StoragePoolHostVO; import com.cloud.storage.StoragePoolStatus; import com.cloud.storage.TemplateProfile; import com.cloud.storage.Upload; -import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStoragePoolVO; import com.cloud.storage.VMTemplateStorageResourceAssoc; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; @@ -1094,44 +1093,6 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, protected TemplateManagerImpl() { } - @Override - public boolean templateIsDeleteable(VMTemplateHostVO templateHostRef) { - VMTemplateVO template = _tmpltDao.findByIdIncludingRemoved(templateHostRef.getTemplateId()); - long templateId = template.getId(); - HostVO secondaryStorageHost = _hostDao.findById(templateHostRef.getHostId()); - long zoneId = secondaryStorageHost.getDataCenterId(); - DataCenterVO zone = _dcDao.findById(zoneId); - - // Check if there are VMs running in the template host ref's zone that - // use the template - List nonExpungedVms = _vmInstanceDao.listNonExpungedByZoneAndTemplate(zoneId, templateId); - - if (!nonExpungedVms.isEmpty()) { - s_logger.debug("Template " + template.getName() + " in zone " + zone.getName() + - " is not deleteable because there are non-expunged VMs deployed from this template."); - return false; - } - List userVmUsingIso = _userVmDao.listByIsoId(templateId); - // check if there is any VM using this ISO. - if (!userVmUsingIso.isEmpty()) { - s_logger.debug("ISO " + template.getName() + " in zone " + zone.getName() + " is not deleteable because it is attached to " + userVmUsingIso.size() + " VMs"); - return false; - } - // Check if there are any snapshots for the template in the template - // host ref's zone - List volumes = _volumeDao.findByTemplateAndZone(templateId, zoneId); - for (VolumeVO volume : volumes) { - List snapshots = _snapshotDao.listByVolumeIdVersion(volume.getId(), "2.1"); - if (!snapshots.isEmpty()) { - s_logger.debug("Template " + template.getName() + " in zone " + zone.getName() + - " is not deleteable because there are 2.1 snapshots using this template."); - return false; - } - } - - return true; - } - @Override public boolean templateIsDeleteable(long templateId) { List userVmUsingIso = _userVmJoinDao.listActiveByIsoId(templateId); diff --git a/server/src/test/async-job-component.xml b/server/src/test/async-job-component.xml index 6bc99c26042..fbe1015cbee 100644 --- a/server/src/test/async-job-component.xml +++ b/server/src/test/async-job-component.xml @@ -1,24 +1,24 @@ - - @@ -77,8 +77,6 @@ - - diff --git a/server/src/test/java/com/cloud/vpc/VpcTestConfiguration.java b/server/src/test/java/com/cloud/vpc/VpcTestConfiguration.java index dcc44d6dc83..2dfbb3799b8 100644 --- a/server/src/test/java/com/cloud/vpc/VpcTestConfiguration.java +++ b/server/src/test/java/com/cloud/vpc/VpcTestConfiguration.java @@ -86,7 +86,6 @@ import com.cloud.service.dao.ServiceOfferingDaoImpl; import com.cloud.storage.dao.SnapshotDaoImpl; import com.cloud.storage.dao.VMTemplateDaoImpl; import com.cloud.storage.dao.VMTemplateDetailsDaoImpl; -import com.cloud.storage.dao.VMTemplateHostDaoImpl; import com.cloud.storage.dao.VMTemplateZoneDaoImpl; import com.cloud.storage.dao.VolumeDaoImpl; import com.cloud.tags.dao.ResourceTagsDaoImpl; @@ -116,7 +115,7 @@ import com.cloud.vpc.dao.MockVpcOfferingServiceMapDaoImpl; UserStatisticsDaoImpl.class, PhysicalNetworkTrafficTypeDaoImpl.class, FirewallRulesCidrsDaoImpl.class, ResourceLimitManagerImpl.class, ResourceLimitDaoImpl.class, ResourceCountDaoImpl.class, DomainDaoImpl.class, UserVmDaoImpl.class, UserVmDetailsDaoImpl.class, NicDaoImpl.class, SnapshotDaoImpl.class, VMInstanceDaoImpl.class, VolumeDaoImpl.class, UserIpv6AddressDaoImpl.class, NicSecondaryIpDaoImpl.class, - VpcServiceMapDaoImpl.class, ServiceOfferingDaoImpl.class, VMTemplateHostDaoImpl.class, MockVpcDaoImpl.class, VMTemplateDaoImpl.class, + VpcServiceMapDaoImpl.class, ServiceOfferingDaoImpl.class, MockVpcDaoImpl.class, VMTemplateDaoImpl.class, VMTemplateZoneDaoImpl.class, VMTemplateDetailsDaoImpl.class, DataCenterDaoImpl.class, DataCenterIpAddressDaoImpl.class, DataCenterLinkLocalIpAddressDaoImpl.class, DataCenterVnetDaoImpl.class, PodVlanDaoImpl.class, DataCenterDetailsDaoImpl.class, MockNetworkManagerImpl.class, MockVpcVirtualNetworkApplianceManager.class, EntityManagerImpl.class, LoadBalancerDaoImpl.class, diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManager.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManager.java index 78190af0598..48093f2cf1f 100644 --- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManager.java +++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManager.java @@ -27,9 +27,9 @@ import com.cloud.agent.api.storage.DownloadAnswer; import com.cloud.utils.net.Proxy; import com.cloud.agent.api.to.S3TO; import com.cloud.storage.Storage.ImageFormat; -import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.template.TemplateDownloader; import com.cloud.storage.template.TemplateProp; +import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.utils.component.Manager; public interface DownloadManager extends Manager { @@ -67,7 +67,7 @@ public interface DownloadManager extends Manager { * @param jobId job Id * @return status of the download job */ - public VMTemplateHostVO.Status getDownloadStatus2(String jobId); + public Status getDownloadStatus2(String jobId); /** * Get the download percent of a download job diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java index 7ce252a8ed7..a3595a24d87 100644 --- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java +++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java @@ -72,7 +72,6 @@ import com.cloud.agent.api.to.S3TO; import com.cloud.exception.InternalErrorException; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.StorageLayer; -import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStorageResourceAssoc; import com.cloud.storage.template.Processor.FormatInfo; import com.cloud.storage.template.TemplateDownloader.DownloadCompleteCallback; @@ -701,31 +700,31 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager return 0; } - public static VMTemplateHostVO.Status convertStatus(Status tds) { + public static VMTemplateStorageResourceAssoc.Status convertStatus(Status tds) { switch (tds) { case ABORTED: - return VMTemplateHostVO.Status.NOT_DOWNLOADED; + return VMTemplateStorageResourceAssoc.Status.NOT_DOWNLOADED; case DOWNLOAD_FINISHED: - return VMTemplateHostVO.Status.DOWNLOAD_IN_PROGRESS; + return VMTemplateStorageResourceAssoc.Status.DOWNLOAD_IN_PROGRESS; case IN_PROGRESS: - return VMTemplateHostVO.Status.DOWNLOAD_IN_PROGRESS; + return VMTemplateStorageResourceAssoc.Status.DOWNLOAD_IN_PROGRESS; case NOT_STARTED: - return VMTemplateHostVO.Status.NOT_DOWNLOADED; + return VMTemplateStorageResourceAssoc.Status.NOT_DOWNLOADED; case RECOVERABLE_ERROR: - return VMTemplateHostVO.Status.NOT_DOWNLOADED; + return VMTemplateStorageResourceAssoc.Status.NOT_DOWNLOADED; case UNKNOWN: - return VMTemplateHostVO.Status.UNKNOWN; + return VMTemplateStorageResourceAssoc.Status.UNKNOWN; case UNRECOVERABLE_ERROR: - return VMTemplateHostVO.Status.DOWNLOAD_ERROR; + return VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR; case POST_DOWNLOAD_FINISHED: - return VMTemplateHostVO.Status.DOWNLOADED; + return VMTemplateStorageResourceAssoc.Status.DOWNLOADED; default: - return VMTemplateHostVO.Status.UNKNOWN; + return VMTemplateStorageResourceAssoc.Status.UNKNOWN; } } @Override - public com.cloud.storage.VMTemplateHostVO.Status getDownloadStatus2(String jobId) { + public com.cloud.storage.VMTemplateStorageResourceAssoc.Status getDownloadStatus2(String jobId) { return convertStatus(getDownloadStatus(jobId)); } diff --git a/test/metadata/func/templates_sync.xml b/test/metadata/func/templates_sync.xml index 034ddb9cc21..a03e4bf93b5 100644 --- a/test/metadata/func/templates_sync.xml +++ b/test/metadata/func/templates_sync.xml @@ -20,7 +20,7 @@ under the License. - - + deployVirtualMachine Deploy a VM @@ -69,7 +69,7 @@ under the License. diskofferingid globaldiskofferingid - + templateid globaltemplateid @@ -102,7 +102,7 @@ under the License. - + select id from volumes true @@ -120,7 +120,7 @@ under the License. - + stopVirtualMachine Stop the Virtual Machine @@ -131,8 +131,8 @@ under the License. - - + + createTemplate Create template @@ -169,45 +169,6 @@ under the License. - - - select download_state from template_host_ref - true - Getting volume path for the vm DATADISK volume - - - template_id - privatetemplateid - - - - - download_state - DOWNLOADED - - - - - - - select install_path from template_host_ref - true - Getting install_path from the template - - - template_id - privatetemplateid - - - - - install_path - template_path - - - - - listtemplate.sh @@ -226,8 +187,8 @@ under the License. template_path - - + + removetemplate.sh @@ -247,8 +208,8 @@ under the License. - - + + ms.sh @@ -264,7 +225,7 @@ under the License. - + ms.sh @@ -280,8 +241,8 @@ under the License. - - + + sleep.sh @@ -292,29 +253,9 @@ under the License. 240 - - - - select download_state from template_host_ref - true - Checking download state of the template in the DB after the template was deleted on secondary storage and management server process was restarted - - - template_id - privatetemplateid - - - - - download_state - DOWNLOAD_ERROR - - - - - - + + createTemplate Create template @@ -351,45 +292,7 @@ under the License. - - - select download_state from template_host_ref - true - Getting volume path for the vm DATADISK volume - - - template_id - privatetemplateid - - - - - download_state - DOWNLOADED - - - - - - - select install_path from template_host_ref - true - Getting install_path from the template - - - template_id - privatetemplateid - - - - - install_path - template_path - - - - - + listtemplate.sh @@ -408,8 +311,8 @@ under the License. template_path - - + + corrupttemplate.sh @@ -433,8 +336,8 @@ under the License. - - + + ms.sh @@ -450,7 +353,7 @@ under the License. - + ms.sh @@ -466,8 +369,8 @@ under the License. - - + + sleep.sh @@ -478,26 +381,8 @@ under the License. 240 - - - - select download_state from template_host_ref - true - Checking download state of the template in the DB after the template was deleted on secondary storage and management server process was restarted - - - template_id - privatetemplateid - - - - - download_state - DOWNLOAD_ERROR - - - - + + listtemplate.sh @@ -517,9 +402,9 @@ under the License. template_path - - - + + + createTemplate @@ -557,45 +442,7 @@ under the License. - - - select download_state from template_host_ref - true - Getting volume path for the vm DATADISK volume - - - template_id - privatetemplateid - - - - - download_state - DOWNLOADED - - - - - - - select install_path from template_host_ref - true - Getting install_path from the template - - - template_id - privatetemplateid - - - - - install_path - template_path - - - - - + listtemplate.sh @@ -614,8 +461,8 @@ under the License. template_path - - + + createfaketemplate.sh @@ -643,8 +490,8 @@ under the License. - - + + ms.sh @@ -660,7 +507,7 @@ under the License. - + ms.sh @@ -676,8 +523,8 @@ under the License. - - + + sleep.sh @@ -688,8 +535,8 @@ under the License. 240 - - + + listtemplate.sh @@ -709,10 +556,10 @@ under the License. /template/tmpl/1/300556/template.properties - + - - + + createTemplate Create template @@ -749,45 +596,7 @@ under the License. - - - select download_state from template_host_ref - true - Getting volume path for the vm DATADISK volume - - - template_id - privatetemplateid - - - - - download_state - DOWNLOADED - - - - - - - select install_path from template_host_ref - true - Getting install_path from the template - - - template_id - privatetemplateid - - - - - install_path - template_path - - - - - + listtemplate.sh @@ -806,8 +615,8 @@ under the License. template_path - - + + removetemplate.sh @@ -827,8 +636,8 @@ under the License. - - + + ms.sh @@ -844,7 +653,7 @@ under the License. - + ms.sh @@ -860,8 +669,8 @@ under the License. - - + + ms.sh @@ -877,7 +686,7 @@ under the License. - + ms.sh @@ -893,7 +702,7 @@ under the License. - + sleep.sh @@ -904,29 +713,9 @@ under the License. 240 - - - - select download_state from template_host_ref - true - Checking download state of the template in the DB after the template was deleted on secondary storage and management server process was restarted - - - template_id - privatetemplateid - - - - - download_state - DOWNLOAD_ERROR - - - - - - + + createTemplate Create template @@ -963,45 +752,7 @@ under the License. - - - select download_state from template_host_ref - true - Getting volume path for the vm DATADISK volume - - - template_id - privatetemplateid - - - - - download_state - DOWNLOADED - - - - - - - select install_path from template_host_ref - true - Getting install_path from the template - - - template_id - privatetemplateid - - - - - install_path - template_path - - - - - + listtemplate.sh @@ -1020,8 +771,8 @@ under the License. template_path - - + + ms.sh @@ -1037,7 +788,7 @@ under the License. - + ms.sh @@ -1053,8 +804,8 @@ under the License. - - + + sleep.sh @@ -1065,27 +816,8 @@ under the License. 240 - - - - select download_state from template_host_ref - true - Checking download state of the template in the DB after the template was deleted on secondary storage and management server process was restarted - - - template_id - privatetemplateid - - - - - download_state - DOWNLOADED - - - - + deployVirtualMachine Deploy vm from private template after management server was rebooted @@ -1101,7 +833,7 @@ under the License. diskofferingid globaldiskofferingid - + templateid privatetemplateid @@ -1125,7 +857,7 @@ under the License. networkids globalnetworkid - + @@ -1134,8 +866,8 @@ under the License. - - + + registerTemplate @@ -1180,8 +912,8 @@ under the License. privatetemplateid - - + + sleep.sh @@ -1192,47 +924,8 @@ under the License. 300 - - - - - select download_state from template_host_ref - true - Getting volume path for the vm DATADISK volume - - - template_id - privatetemplateid - - - - - download_state - DOWNLOADED - - - - - - select install_path from template_host_ref - true - Getting install_path from the template - - - template_id - privatetemplateid - - - - - install_path - template_path - - - - - + listtemplate.sh @@ -1251,8 +944,8 @@ under the License. template_path - - + + removetemplate.sh @@ -1272,8 +965,8 @@ under the License. - - + + ms.sh @@ -1289,7 +982,7 @@ under the License. - + ms.sh @@ -1305,8 +998,8 @@ under the License. - - + + ms.sh @@ -1322,7 +1015,7 @@ under the License. - + ms.sh @@ -1338,7 +1031,7 @@ under the License. - + sleep.sh @@ -1349,26 +1042,7 @@ under the License. 15 - - - - select download_state from template_host_ref - true - Checking download state of the template in the DB after the template was deleted on secondary storage and management server process was restarted - - - template_id - privatetemplateid - - - - - download_state - DOWNLOAD_IN_PROGRESS - - -