Skip to content

Commit 5393387

Browse files
committed
CLOUDSTACK-6599:
1. Adding the missing Template/Volume URLs expiration functionality 2. Improvement - While deleting the volume during expiration use rm -rf as vmware now contains directoy 3. Improvement - Use standard Answer so that the error gets logged in case deletion of expiration link didnt work fine. 4. Improvement - In case of domain change, expire the old urls
1 parent bdde533 commit 5393387

22 files changed

Lines changed: 269 additions & 48 deletions

File tree

core/src/com/cloud/agent/api/storage/DeleteEntityDownloadURLAnswer.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

engine/api/src/org/apache/cloudstack/storage/image/datastore/ImageStoreEntity.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import java.util.Set;
2222

23+
import com.cloud.storage.Upload;
2324
import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
2425
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
2526
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotInfo;
@@ -43,4 +44,6 @@ public interface ImageStoreEntity extends DataStore, ImageStore {
4344
String getMountPoint(); // get the mount point on ssvm.
4445

4546
String createEntityExtractUrl(String installPath, ImageFormat format, DataObject dataObject); // get the entity download URL
47+
48+
void deleteExtractUrl(String installPath, String url, Upload.Type volume);
4649
}

engine/schema/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,6 @@ public interface TemplateDataStoreDao extends GenericDao<TemplateDataStoreVO, Lo
7474
List<TemplateDataStoreVO> listOnCache(long templateId);
7575

7676
void updateStoreRoleToCachce(long storeId);
77+
78+
List<TemplateDataStoreVO> listTemplateDownloadUrls();
7779
}

engine/schema/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreVO.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,13 @@ public class TemplateDataStoreVO implements StateObject<ObjectInDataStoreStateMa
9898
@Column(name = "url")
9999
private String downloadUrl;
100100

101+
@Column(name = "download_url")
102+
private String extractUrl;
103+
104+
@Column(name = "download_url_created")
105+
@Temporal(value = TemporalType.TIMESTAMP)
106+
private Date extractUrlCreated = null;
107+
101108
@Column(name = "is_copy")
102109
private boolean isCopy = false;
103110

@@ -379,4 +386,20 @@ public void decrRefCnt() {
379386
}
380387
}
381388

389+
public String getExtractUrl() {
390+
return extractUrl;
391+
}
392+
393+
public void setExtractUrl(String extractUrl) {
394+
this.extractUrl = extractUrl;
395+
}
396+
397+
public Date getExtractUrlCreated() {
398+
return extractUrlCreated;
399+
}
400+
401+
public void setExtractUrlCreated(Date extractUrlCreated) {
402+
this.extractUrlCreated = extractUrlCreated;
403+
}
404+
382405
}

engine/schema/src/org/apache/cloudstack/storage/datastore/db/VolumeDataStoreDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,6 @@ public interface VolumeDataStoreDao extends GenericDao<VolumeDataStoreVO, Long>,
4242
List<VolumeDataStoreVO> listDestroyed(long storeId);
4343

4444
void duplicateCacheRecordsOnRegionStore(long storeId);
45+
46+
List<VolumeDataStoreVO> listVolumeDownloadUrls();
4547
}

engine/schema/src/org/apache/cloudstack/storage/datastore/db/VolumeDataStoreVO.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ public class VolumeDataStoreVO implements StateObject<ObjectInDataStoreStateMach
102102
@Column(name = "download_url")
103103
private String extractUrl;
104104

105+
@Column(name = "download_url_created")
106+
@Temporal(value = TemporalType.TIMESTAMP)
107+
private Date extractUrlCreated = null;
108+
105109
@Column(name = "destroyed")
106110
boolean destroyed = false;
107111

@@ -369,4 +373,12 @@ public String getExtractUrl() {
369373
public void setExtractUrl(String extractUrl) {
370374
this.extractUrl = extractUrl;
371375
}
376+
377+
public Date getExtractUrlCreated() {
378+
return extractUrlCreated;
379+
}
380+
381+
public void setExtractUrlCreated(Date extractUrlCreated) {
382+
this.extractUrlCreated = extractUrlCreated;
383+
}
372384
}

engine/storage/image/src/org/apache/cloudstack/storage/image/store/ImageStoreImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import javax.inject.Inject;
2626

27+
import com.cloud.storage.Upload;
2728
import org.apache.log4j.Logger;
2829

2930
import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
@@ -203,4 +204,10 @@ public String createEntityExtractUrl(String installPath, ImageFormat format, Dat
203204
return driver.createEntityExtractUrl(this, installPath, format, dataObject);
204205
}
205206

207+
@Override
208+
public void deleteExtractUrl(String installPath, String url, Upload.Type entityType) {
209+
driver.deleteEntityExtractUrl(this, installPath, url, entityType);
210+
}
211+
212+
206213
}

engine/storage/src/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import javax.inject.Inject;
2727

28+
import com.cloud.storage.Upload;
2829
import org.apache.log4j.Logger;
2930

3031
import org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult;
@@ -271,4 +272,8 @@ public boolean canCopy(DataObject srcData, DataObject destData) {
271272
@Override
272273
public void resize(DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) {
273274
}
275+
276+
@Override
277+
public void deleteEntityExtractUrl(DataStore store, String installPath, String url, Upload.Type entityType){
278+
}
274279
}

engine/storage/src/org/apache/cloudstack/storage/image/ImageStoreDriver.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.apache.cloudstack.storage.image;
2020

21+
import com.cloud.storage.Upload;
2122
import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
2223
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
2324
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver;
@@ -26,4 +27,6 @@
2627

2728
public interface ImageStoreDriver extends DataStoreDriver {
2829
String createEntityExtractUrl(DataStore store, String installPath, ImageFormat format, DataObject dataObject);
30+
31+
void deleteEntityExtractUrl(DataStore store, String installPath, String url, Upload.Type entityType);
2932
}

engine/storage/src/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class TemplateDataStoreDaoImpl extends GenericDaoBase<TemplateDataStoreVO
6363
private SearchBuilder<TemplateDataStoreVO> storeTemplateSearch;
6464
private SearchBuilder<TemplateDataStoreVO> storeTemplateStateSearch;
6565
private SearchBuilder<TemplateDataStoreVO> storeTemplateDownloadStatusSearch;
66+
private SearchBuilder<TemplateDataStoreVO> downloadTemplateSearch;
6667

6768
@Inject
6869
private DataStoreManager _storeMgr;
@@ -131,6 +132,11 @@ public boolean configure(String name, Map<String, Object> params) throws Configu
131132
storeTemplateSearch.and("destroyed", storeTemplateSearch.entity().getDestroyed(), SearchCriteria.Op.EQ);
132133
storeTemplateSearch.done();
133134

135+
downloadTemplateSearch = createSearchBuilder();
136+
downloadTemplateSearch.and("download_url", downloadTemplateSearch.entity().getExtractUrl(), Op.NNULL);
137+
downloadTemplateSearch.and("destroyed", downloadTemplateSearch.entity().getDestroyed(), SearchCriteria.Op.EQ);
138+
downloadTemplateSearch.done();
139+
134140
return true;
135141
}
136142

@@ -488,4 +494,11 @@ public void updateStoreRoleToCachce(long storeId) {
488494

489495
}
490496

497+
@Override
498+
public List<TemplateDataStoreVO> listTemplateDownloadUrls() {
499+
SearchCriteria<TemplateDataStoreVO> sc = downloadTemplateSearch.create();
500+
sc.setParameters("destroyed", false);
501+
return listBy(sc);
502+
}
503+
491504
}

0 commit comments

Comments
 (0)