diff --git a/api/src/com/cloud/storage/Upload.java b/api/src/com/cloud/storage/Upload.java index ac3836caf55..69e10418a27 100755 --- a/api/src/com/cloud/storage/Upload.java +++ b/api/src/com/cloud/storage/Upload.java @@ -35,7 +35,7 @@ public interface Upload extends InternalIdentity, Identity { FTP_UPLOAD, HTTP_DOWNLOAD } - long getHostId(); + long getDataStoreId(); Date getCreated(); diff --git a/core/src/com/cloud/storage/UploadVO.java b/core/src/com/cloud/storage/UploadVO.java index d761bf17e3b..fe8b81280fd 100755 --- a/core/src/com/cloud/storage/UploadVO.java +++ b/core/src/com/cloud/storage/UploadVO.java @@ -32,7 +32,6 @@ import javax.persistence.TemporalType; import com.cloud.utils.NumbersUtil; import com.cloud.utils.db.GenericDaoBase; -import org.apache.cloudstack.api.InternalIdentity; @Entity @Table(name="upload") @@ -45,7 +44,7 @@ public class UploadVO implements Upload { private String uuid; @Column(name="host_id") - private long hostId; + private long storeId; @Column(name="type_id") private long typeId; @@ -85,12 +84,12 @@ public class UploadVO implements Upload { private String installPath; @Override - public long getHostId() { - return hostId; + public long getDataStoreId() { + return storeId; } - public void setHostId(long hostId) { - this.hostId = hostId; + public void setDataStoreId(long hostId) { + this.storeId = hostId; } @Override @@ -99,7 +98,8 @@ public class UploadVO implements Upload { } - public String getUuid() { + @Override + public String getUuid() { return uuid; } @@ -119,7 +119,7 @@ public class UploadVO implements Upload { public UploadVO(long hostId, long templateId) { super(); - this.hostId = hostId; + this.storeId = hostId; this.typeId = templateId; this.uuid = UUID.randomUUID().toString(); } @@ -128,7 +128,7 @@ public class UploadVO implements Upload { Status uploadState, Type type, String uploadUrl, Mode mode) { super(); - this.hostId = hostId; + this.storeId = hostId; this.typeId = typeId; this.lastUpdated = lastUpdated; this.uploadState = uploadState; @@ -142,7 +142,7 @@ public class UploadVO implements Upload { Status uploadState, int uploadPercent, Type type, Mode mode) { super(); - this.hostId = hostId; + this.storeId = hostId; this.typeId = typeId; this.lastUpdated = lastUpdated; this.uploadState = uploadState; @@ -182,7 +182,7 @@ public class UploadVO implements Upload { public boolean equals(Object obj) { if (obj instanceof UploadVO) { UploadVO other = (UploadVO)obj; - return (this.typeId==other.getTypeId() && this.hostId==other.getHostId() && this.type == other.getType()); + return (this.typeId==other.getTypeId() && this.storeId==other.getDataStoreId() && this.type == other.getType()); } return false; } diff --git a/server/src/com/cloud/storage/dao/UploadDaoImpl.java b/server/src/com/cloud/storage/dao/UploadDaoImpl.java index 31fad43e257..4c6da393eb3 100755 --- a/server/src/com/cloud/storage/dao/UploadDaoImpl.java +++ b/server/src/com/cloud/storage/dao/UploadDaoImpl.java @@ -54,7 +54,7 @@ public class UploadDaoImpl extends GenericDaoBase implements Upl typeUploadStatusSearch.done(); typeHostAndUploadStatusSearch = createSearchBuilder(); - typeHostAndUploadStatusSearch.and("host_id", typeHostAndUploadStatusSearch.entity().getHostId(), SearchCriteria.Op.EQ); + typeHostAndUploadStatusSearch.and("host_id", typeHostAndUploadStatusSearch.entity().getDataStoreId(), SearchCriteria.Op.EQ); typeHostAndUploadStatusSearch.and("upload_state", typeHostAndUploadStatusSearch.entity().getUploadState(), SearchCriteria.Op.EQ); typeHostAndUploadStatusSearch.done(); diff --git a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java index 0d0883e4859..9eac22730ce 100755 --- a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java +++ b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java @@ -282,7 +282,7 @@ public class UploadMonitorImpl extends ManagerBase implements UploadMonitor { // Create Symlink at ssvm String uuid = UUID.randomUUID().toString() + path.substring(path.length() - 4) ; // last 4 characters of the path specify the format like .vhd - DataStore secStore = this.storeMgr.getDataStore(ApiDBUtils.findUploadById(uploadId).getHostId(), DataStoreRole.Image); + DataStore secStore = this.storeMgr.getDataStore(ApiDBUtils.findUploadById(uploadId).getDataStoreId(), DataStoreRole.Image); EndPoint ep = _epSelector.select(secStore); if( ep == null ) { errorString = "There is no secondary storage VM for secondary storage host " + secStore.getName(); @@ -459,14 +459,14 @@ public class UploadMonitorImpl extends ManagerBase implements UploadMonitor { for (UploadVO extractJob : extractJobs){ if( getTimeDiff(extractJob.getLastUpdated()) > EXTRACT_URL_LIFE_LIMIT_IN_SECONDS ){ String path = extractJob.getInstallPath(); - DataStore secStore = this.storeMgr.getDataStore(extractJob.getHostId(), DataStoreRole.Image); + DataStore secStore = this.storeMgr.getDataStore(extractJob.getDataStoreId(), DataStoreRole.Image); // Would delete the symlink for the Type and if Type == VOLUME then also the volume DeleteEntityDownloadURLCommand cmd = new DeleteEntityDownloadURLCommand(path, extractJob.getType(),extractJob.getUploadUrl(), ((ImageStoreVO)secStore).getParent()); EndPoint ep = _epSelector.select(secStore); if( ep == null ) { - s_logger.warn("UploadMonitor cleanup: There is no secondary storage VM for secondary storage host " + extractJob.getHostId()); + s_logger.warn("UploadMonitor cleanup: There is no secondary storage VM for secondary storage host " + extractJob.getDataStoreId()); continue; //TODO: why continue? why not break? } if (s_logger.isDebugEnabled()) { diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql index 9519266e7f5..7e3704dfd96 100644 --- a/setup/db/db/schema-410to420.sql +++ b/setup/db/db/schema-410to420.sql @@ -136,7 +136,7 @@ CREATE TABLE `cloud`.`template_store_ref` ( `destroyed` tinyint(1) COMMENT 'indicates whether the template_store entry was destroyed by the user or not', `is_copy` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'indicates whether this was copied ', PRIMARY KEY (`id`), --- CONSTRAINT `fk_template_store_ref__store_id` FOREIGN KEY `fk_template_store_ref__store_id` (`store_id`) REFERENCES `image_data_store` (`id`) ON DELETE CASCADE, +-- CONSTRAINT `fk_template_store_ref__store_id` FOREIGN KEY `fk_template_store_ref__store_id` (`store_id`) REFERENCES `image_store` (`id`) ON DELETE CASCADE, INDEX `i_template_store_ref__store_id`(`store_id`), CONSTRAINT `fk_template_store_ref__template_id` FOREIGN KEY `fk_template_store_ref__template_id` (`template_id`) REFERENCES `vm_template` (`id`), INDEX `i_template_store_ref__template_id`(`template_id`) @@ -149,6 +149,10 @@ CREATE TABLE `cloud`.`template_store_ref` ( -- ALTER TABLE `cloud`.`snapshots` DROP COLUMN `s3_id`; -- ALTER TABLE `cloud`.`snapshots` DROP COLUMN `sechost_id`; +-- change upload host_id FK to point to image_store table +ALTER TABLE `cloud`.`upload` DROP FOREIGN KEY `fk_upload__host_id`; +ALTER TABLE `cloud`.`upload` ADD CONSTRAINT `fk_upload__store_id` FOREIGN KEY(`host_id`) REFERENCES `image_store` (`id`) ON DELETE CASCADE; + CREATE TABLE `cloud`.`snapshot_store_ref` ( `id` bigint unsigned NOT NULL auto_increment, `store_id` bigint unsigned NOT NULL, @@ -162,7 +166,7 @@ CREATE TABLE `cloud`.`snapshot_store_ref` ( `state` varchar(255) NOT NULL, `destroyed` tinyint(1) COMMENT 'indicates whether the snapshot_store entry was destroyed by the user or not', PRIMARY KEY (`id`), - CONSTRAINT `fk_snapshot_store_ref__store_id` FOREIGN KEY `fk_snapshot_store_ref__store_id` (`store_id`) REFERENCES `image_data_store` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_snapshot_store_ref__store_id` FOREIGN KEY `fk_snapshot_store_ref__store_id` (`store_id`) REFERENCES `image_store` (`id`) ON DELETE CASCADE, INDEX `i_snapshot_store_ref__store_id`(`store_id`), CONSTRAINT `fk_snapshot_store_ref__snapshot_id` FOREIGN KEY `fk_snapshot_store_ref__snapshot_id` (`snapshot_id`) REFERENCES `snapshots` (`id`), INDEX `i_snapshot_store_ref__snapshot_id`(`snapshot_id`) @@ -189,7 +193,7 @@ CREATE TABLE `cloud`.`volume_store_ref` ( `format` varchar(32) NOT NULL COMMENT 'format for the volume', `destroyed` tinyint(1) COMMENT 'indicates whether the volume_host entry was destroyed by the user or not', PRIMARY KEY (`id`), - CONSTRAINT `fk_volume_store_ref__store_id` FOREIGN KEY `fk_volume_store_ref__store_id` (`store_id`) REFERENCES `image_data_store` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_volume_store_ref__store_id` FOREIGN KEY `fk_volume_store_ref__store_id` (`store_id`) REFERENCES `image_store` (`id`) ON DELETE CASCADE, INDEX `i_volume_store_ref__store_id`(`store_id`), CONSTRAINT `fk_volume_store_ref__volume_id` FOREIGN KEY `fk_volume_store_ref__volume_id` (`volume_id`) REFERENCES `volumes` (`id`), INDEX `i_volume_store_ref__volume_id`(`volume_id`)