diff --git a/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml b/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml index 117370720da..8b7a604979e 100644 --- a/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml +++ b/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml @@ -270,7 +270,6 @@ - diff --git a/engine/storage/integration-test/test/resource/fakeDriverTestContext.xml b/engine/storage/integration-test/test/resource/fakeDriverTestContext.xml index 48a99e64355..944196da1fc 100644 --- a/engine/storage/integration-test/test/resource/fakeDriverTestContext.xml +++ b/engine/storage/integration-test/test/resource/fakeDriverTestContext.xml @@ -43,7 +43,6 @@ - diff --git a/engine/storage/integration-test/test/resources/storageContext.xml b/engine/storage/integration-test/test/resources/storageContext.xml index 9154edafb95..abf08767d9d 100644 --- a/engine/storage/integration-test/test/resources/storageContext.xml +++ b/engine/storage/integration-test/test/resources/storageContext.xml @@ -43,7 +43,6 @@ - diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDao.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDao.java deleted file mode 100644 index 1827edfe861..00000000000 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDao.java +++ /dev/null @@ -1,31 +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.storage.volume.db; - -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; - -import com.cloud.utils.db.GenericDao; -import com.cloud.utils.fsm.StateDao; - -public interface TemplatePrimaryDataStoreDao extends GenericDao, - StateDao { - public TemplatePrimaryDataStoreVO findByTemplateIdAndPoolId(long templateId, long poolId); - - public TemplatePrimaryDataStoreVO findByTemplateIdAndPoolIdAndReady(long templateId, long poolId); -} diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java deleted file mode 100644 index 75838b02581..00000000000 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java +++ /dev/null @@ -1,123 +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.storage.volume.db; - -import java.util.Date; - -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; - -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; - -import com.cloud.utils.db.GenericDaoBase; -import com.cloud.utils.db.QueryBuilder; -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 TemplatePrimaryDataStoreDaoImpl extends GenericDaoBase implements TemplatePrimaryDataStoreDao { - private static final Logger s_logger = Logger.getLogger(TemplatePrimaryDataStoreDaoImpl.class); - protected final SearchBuilder updateSearchBuilder; - - public TemplatePrimaryDataStoreDaoImpl() { - updateSearchBuilder = createSearchBuilder(); - updateSearchBuilder.and("id", updateSearchBuilder.entity().getId(), Op.EQ); - updateSearchBuilder.and("state", updateSearchBuilder.entity().getState(), Op.EQ); - updateSearchBuilder.and("updatedCount", updateSearchBuilder.entity().getUpdatedCount(), Op.EQ); - updateSearchBuilder.done(); - } - - @Override - public TemplatePrimaryDataStoreVO findByTemplateIdAndPoolId(long templateId, long poolId) { - QueryBuilder sc = QueryBuilder.create(TemplatePrimaryDataStoreVO.class); - sc.and(sc.entity().getTemplateId(), Op.EQ, templateId); - sc.and(sc.entity().getPoolId(), Op.EQ, poolId); - return sc.find(); - } - - @Override - public TemplatePrimaryDataStoreVO findByTemplateIdAndPoolIdAndReady(long templateId, long poolId) { - QueryBuilder sc = QueryBuilder.create(TemplatePrimaryDataStoreVO.class); - sc.and(sc.entity().getTemplateId(), Op.EQ, templateId); - sc.and(sc.entity().getPoolId(), Op.EQ, poolId); - sc.and(sc.entity().getState(), Op.EQ, ObjectInDataStoreStateMachine.State.Ready); - return sc.find(); - } - - @Override - public boolean updateState(State currentState, Event event, State nextState, TemplatePrimaryDataStoreVO vo, Object data) { - Long oldUpdated = vo.getUpdatedCount(); - Date oldUpdatedTime = vo.getLastUpdated(); - - SearchCriteria sc = updateSearchBuilder.create(); - sc.setParameters("id", vo.getId()); - sc.setParameters("state", currentState); - sc.setParameters("updatedCount", vo.getUpdatedCount()); - - vo.incrUpdatedCount(); - - UpdateBuilder builder = getUpdateBuilder(vo); - builder.set(vo, "state", nextState); - builder.set(vo, "lastUpdated", new Date()); - - int rows = update(vo, sc); - if (rows == 0 && s_logger.isDebugEnabled()) { - TemplatePrimaryDataStoreVO template = findByIdIncludingRemoved(vo.getId()); - if (template != null) { - StringBuilder str = new StringBuilder("Unable to update ").append(vo.toString()); - str.append(": DB Data={id=") - .append(template.getId()) - .append("; state=") - .append(template.getState()) - .append("; updatecount=") - .append(template.getUpdatedCount()) - .append(";updatedTime=") - .append(template.getLastUpdated()); - str.append(": New Data={id=") - .append(vo.getId()) - .append("; state=") - .append(nextState) - .append("; event=") - .append(event) - .append("; updatecount=") - .append(vo.getUpdatedCount()) - .append("; updatedTime=") - .append(vo.getLastUpdated()); - str.append(": stale Data={id=") - .append(vo.getId()) - .append("; state=") - .append(currentState) - .append("; event=") - .append(event) - .append("; updatecount=") - .append(oldUpdated) - .append("; updatedTime=") - .append(oldUpdatedTime); - } else { - s_logger.debug("Unable to update template: id=" + vo.getId() + ", as there is no such template exists in the database anymore"); - } - } - return rows > 0; - } - -} diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreVO.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreVO.java deleted file mode 100644 index 9635729442b..00000000000 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreVO.java +++ /dev/null @@ -1,262 +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.storage.volume.db; - -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.ObjectInDataStoreStateMachine; - -import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; -import com.cloud.utils.db.GenericDaoBase; -import com.cloud.utils.fsm.StateObject; - -@Entity -@Table(name = "template_spool_ref") -public class TemplatePrimaryDataStoreVO implements StateObject { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - long id; - - @Column(name = "pool_id") - private long poolId; - - @Column(name = "template_id") - long templateId; - - @Column(name = GenericDaoBase.CREATED_COLUMN) - Date created = null; - - @Column(name = "last_updated") - @Temporal(value = TemporalType.TIMESTAMP) - Date lastUpdated = null; - - @Column(name = "download_pct") - int downloadPercent; - - @Column(name = "download_state") - @Enumerated(EnumType.STRING) - Status downloadState; - - @Column(name = "local_path") - String localDownloadPath; - - @Column(name = "error_str") - String errorString; - - @Column(name = "job_id") - String jobId; - - @Column(name = "install_path") - String installPath; - - @Column(name = "template_size") - long templateSize; - - @Column(name = "marked_for_gc") - boolean markedForGC; - - @Column(name = "state") - @Enumerated(EnumType.STRING) - ObjectInDataStoreStateMachine.State state; - - @Column(name = "update_count", updatable = true, nullable = false) - protected long updatedCount; - - public long getUpdatedCount() { - return this.updatedCount; - } - - public void incrUpdatedCount() { - this.updatedCount++; - } - - public void decrUpdatedCount() { - this.updatedCount--; - } - - public String getInstallPath() { - return installPath; - } - - public long getTemplateSize() { - return templateSize; - } - - public long getPoolId() { - return poolId; - } - - public void setpoolId(long poolId) { - this.poolId = poolId; - } - - public long getTemplateId() { - return templateId; - } - - public void setTemplateId(long templateId) { - this.templateId = templateId; - } - - public int getDownloadPercent() { - return downloadPercent; - } - - public void setDownloadPercent(int downloadPercent) { - this.downloadPercent = downloadPercent; - } - - public void setDownloadState(Status downloadState) { - this.downloadState = downloadState; - } - - public long getId() { - return id; - } - - public Date getCreated() { - return created; - } - - public Date getLastUpdated() { - return lastUpdated; - } - - public void setLastUpdated(Date date) { - lastUpdated = date; - } - - public void setInstallPath(String installPath) { - this.installPath = installPath; - } - - public Status getDownloadState() { - return downloadState; - } - - public TemplatePrimaryDataStoreVO(long poolId, long templateId) { - super(); - this.poolId = poolId; - this.templateId = templateId; - this.downloadState = Status.NOT_DOWNLOADED; - this.state = ObjectInDataStoreStateMachine.State.Allocated; - this.markedForGC = false; - } - - public TemplatePrimaryDataStoreVO(long poolId, long templateId, Date lastUpdated, int downloadPercent, Status downloadState, String localDownloadPath, - String errorString, String jobId, String installPath, long templateSize) { - super(); - this.poolId = poolId; - 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.templateSize = templateSize; - } - - protected TemplatePrimaryDataStoreVO() { - - } - - 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; - } - - public void setTemplateSize(long templateSize) { - this.templateSize = templateSize; - } - - public boolean getMarkedForGC() { - return markedForGC; - } - - public void setMarkedForGC(boolean markedForGC) { - this.markedForGC = markedForGC; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof TemplatePrimaryDataStoreVO) { - TemplatePrimaryDataStoreVO other = (TemplatePrimaryDataStoreVO)obj; - return (this.templateId == other.getTemplateId() && this.poolId == other.getPoolId()); - } - return false; - } - - @Override - public int hashCode() { - Long tid = new Long(templateId); - Long hid = new Long(poolId); - return tid.hashCode() + hid.hashCode(); - } - - @Override - public String toString() { - return new StringBuilder("TmplPool[").append(id) - .append("-") - .append(templateId) - .append("-") - .append("poolId") - .append("-") - .append(installPath) - .append("]") - .toString(); - } - - @Override - public ObjectInDataStoreStateMachine.State getState() { - return this.state; - } - -} \ No newline at end of file