This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch 4.15
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.15 by this push:
     new 8aa765a  server: delete template on storage over capacity threshold 
(#4691)
8aa765a is described below

commit 8aa765ac39be2afd839d17710d8ce4e8d0650e7c
Author: Abhishek Kumar <[email protected]>
AuthorDate: Thu Mar 11 13:15:40 2021 +0530

    server: delete template on storage over capacity threshold (#4691)
    
    * server: delete template on storage over capacity threshold
    
    While deleting template for a specific zone, check should be done only for 
writable secondary storages and not for storages with available capacity 
threshold.
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * fix for ISOs and refactor
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * remove writable store check
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * fix exception message
    
    Signed-off-by: Abhishek Kumar <[email protected]>
---
 .../cloud/template/HypervisorTemplateAdapter.java  | 35 ++++++++++------------
 1 file changed, 15 insertions(+), 20 deletions(-)

diff --git 
a/server/src/main/java/com/cloud/template/HypervisorTemplateAdapter.java 
b/server/src/main/java/com/cloud/template/HypervisorTemplateAdapter.java
index 055d48f..6cfe614 100644
--- a/server/src/main/java/com/cloud/template/HypervisorTemplateAdapter.java
+++ b/server/src/main/java/com/cloud/template/HypervisorTemplateAdapter.java
@@ -25,12 +25,6 @@ import java.util.concurrent.ExecutionException;
 
 import javax.inject.Inject;
 
-import com.cloud.configuration.Config;
-import com.cloud.deployasis.dao.TemplateDeployAsIsDetailsDao;
-import com.cloud.storage.dao.VMTemplateDetailsDao;
-import com.cloud.utils.db.Transaction;
-import com.cloud.utils.db.TransactionCallback;
-import com.cloud.utils.db.TransactionStatus;
 import org.apache.cloudstack.agent.directdownload.CheckUrlAnswer;
 import org.apache.cloudstack.agent.directdownload.CheckUrlCommand;
 import org.apache.cloudstack.api.command.user.iso.DeleteIsoCmd;
@@ -61,14 +55,17 @@ import 
org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
 import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity;
 import org.apache.cloudstack.utils.security.DigestHelper;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.api.Answer;
 import com.cloud.alert.AlertManager;
+import com.cloud.configuration.Config;
 import com.cloud.configuration.Resource.ResourceType;
 import com.cloud.dc.DataCenterVO;
 import com.cloud.dc.dao.DataCenterDao;
+import com.cloud.deployasis.dao.TemplateDeployAsIsDetailsDao;
 import com.cloud.event.EventTypes;
 import com.cloud.event.UsageEventUtils;
 import com.cloud.exception.InvalidParameterValueException;
@@ -86,6 +83,7 @@ import 
com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
 import com.cloud.storage.VMTemplateVO;
 import com.cloud.storage.VMTemplateZoneVO;
 import com.cloud.storage.dao.VMTemplateDao;
+import com.cloud.storage.dao.VMTemplateDetailsDao;
 import com.cloud.storage.dao.VMTemplateZoneDao;
 import com.cloud.storage.download.DownloadMonitor;
 import com.cloud.template.VirtualMachineTemplate.State;
@@ -94,6 +92,9 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.EntityManager;
+import com.cloud.utils.db.Transaction;
+import com.cloud.utils.db.TransactionCallback;
+import com.cloud.utils.db.TransactionStatus;
 import com.cloud.utils.exception.CloudRuntimeException;
 
 public class HypervisorTemplateAdapter extends TemplateAdapterBase {
@@ -157,6 +158,12 @@ public class HypervisorTemplateAdapter extends 
TemplateAdapterBase {
         return ans.getTemplateSize();
     }
 
+    private void checkZoneImageStores(final List<Long> zoneIdList) {
+        if (zoneIdList != null && 
CollectionUtils.isEmpty(storeMgr.getImageStoresByScope(new 
ZoneScope(zoneIdList.get(0))))) {
+            throw new InvalidParameterValueException("Failed to find a 
secondary storage in the specified zone.");
+        }
+    }
+
     @Override
     public TemplateProfile prepare(RegisterIsoCmd cmd) throws 
ResourceAllocationException {
         TemplateProfile profile = super.prepare(cmd);
@@ -613,29 +620,17 @@ public class HypervisorTemplateAdapter extends 
TemplateAdapterBase {
     public TemplateProfile prepareDelete(DeleteTemplateCmd cmd) {
         TemplateProfile profile = super.prepareDelete(cmd);
         VMTemplateVO template = profile.getTemplate();
-        List<Long> zoneIdList = profile.getZoneIdList();
-
         if (template.getTemplateType() == TemplateType.SYSTEM) {
             throw new InvalidParameterValueException("The DomR template cannot 
be deleted.");
         }
-
-        if (zoneIdList != null && 
(storeMgr.getImageStoreWithFreeCapacity(zoneIdList.get(0)) == null)) {
-            throw new InvalidParameterValueException("Failed to find a 
secondary storage in the specified zone.");
-        }
-
+        checkZoneImageStores(profile.getZoneIdList());
         return profile;
     }
 
     @Override
     public TemplateProfile prepareDelete(DeleteIsoCmd cmd) {
         TemplateProfile profile = super.prepareDelete(cmd);
-        List<Long> zoneIdList = profile.getZoneIdList();
-
-        if (zoneIdList != null &&
-                (storeMgr.getImageStoreWithFreeCapacity(zoneIdList.get(0)) == 
null)) {
-            throw new InvalidParameterValueException("Failed to find a 
secondary storage in the specified zone.");
-        }
-
+        checkZoneImageStores(profile.getZoneIdList());
         return profile;
     }
 }

Reply via email to