|
25 | 25 |
|
26 | 26 | import javax.inject.Inject; |
27 | 27 |
|
28 | | -import com.cloud.configuration.Config; |
29 | | -import com.cloud.deployasis.dao.TemplateDeployAsIsDetailsDao; |
30 | | -import com.cloud.storage.dao.VMTemplateDetailsDao; |
31 | | -import com.cloud.utils.db.Transaction; |
32 | | -import com.cloud.utils.db.TransactionCallback; |
33 | | -import com.cloud.utils.db.TransactionStatus; |
34 | 28 | import org.apache.cloudstack.agent.directdownload.CheckUrlAnswer; |
35 | 29 | import org.apache.cloudstack.agent.directdownload.CheckUrlCommand; |
36 | 30 | import org.apache.cloudstack.api.command.user.iso.DeleteIsoCmd; |
|
61 | 55 | import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO; |
62 | 56 | import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity; |
63 | 57 | import org.apache.cloudstack.utils.security.DigestHelper; |
| 58 | +import org.apache.commons.collections.CollectionUtils; |
64 | 59 | import org.apache.log4j.Logger; |
65 | 60 |
|
66 | 61 | import com.cloud.agent.AgentManager; |
67 | 62 | import com.cloud.agent.api.Answer; |
68 | 63 | import com.cloud.alert.AlertManager; |
| 64 | +import com.cloud.configuration.Config; |
69 | 65 | import com.cloud.configuration.Resource.ResourceType; |
70 | 66 | import com.cloud.dc.DataCenterVO; |
71 | 67 | import com.cloud.dc.dao.DataCenterDao; |
| 68 | +import com.cloud.deployasis.dao.TemplateDeployAsIsDetailsDao; |
72 | 69 | import com.cloud.event.EventTypes; |
73 | 70 | import com.cloud.event.UsageEventUtils; |
74 | 71 | import com.cloud.exception.InvalidParameterValueException; |
|
86 | 83 | import com.cloud.storage.VMTemplateVO; |
87 | 84 | import com.cloud.storage.VMTemplateZoneVO; |
88 | 85 | import com.cloud.storage.dao.VMTemplateDao; |
| 86 | +import com.cloud.storage.dao.VMTemplateDetailsDao; |
89 | 87 | import com.cloud.storage.dao.VMTemplateZoneDao; |
90 | 88 | import com.cloud.storage.download.DownloadMonitor; |
91 | 89 | import com.cloud.template.VirtualMachineTemplate.State; |
|
94 | 92 | import com.cloud.utils.UriUtils; |
95 | 93 | import com.cloud.utils.db.DB; |
96 | 94 | import com.cloud.utils.db.EntityManager; |
| 95 | +import com.cloud.utils.db.Transaction; |
| 96 | +import com.cloud.utils.db.TransactionCallback; |
| 97 | +import com.cloud.utils.db.TransactionStatus; |
97 | 98 | import com.cloud.utils.exception.CloudRuntimeException; |
98 | 99 |
|
99 | 100 | public class HypervisorTemplateAdapter extends TemplateAdapterBase { |
@@ -157,6 +158,12 @@ private Long performDirectDownloadUrlValidation(final String url) { |
157 | 158 | return ans.getTemplateSize(); |
158 | 159 | } |
159 | 160 |
|
| 161 | + private void checkZoneImageStores(final List<Long> zoneIdList) { |
| 162 | + if (zoneIdList != null && CollectionUtils.isEmpty(storeMgr.getImageStoresByScope(new ZoneScope(zoneIdList.get(0))))) { |
| 163 | + throw new InvalidParameterValueException("Failed to find a secondary storage in the specified zone."); |
| 164 | + } |
| 165 | + } |
| 166 | + |
160 | 167 | @Override |
161 | 168 | public TemplateProfile prepare(RegisterIsoCmd cmd) throws ResourceAllocationException { |
162 | 169 | TemplateProfile profile = super.prepare(cmd); |
@@ -613,29 +620,17 @@ public boolean delete(TemplateProfile profile) { |
613 | 620 | public TemplateProfile prepareDelete(DeleteTemplateCmd cmd) { |
614 | 621 | TemplateProfile profile = super.prepareDelete(cmd); |
615 | 622 | VMTemplateVO template = profile.getTemplate(); |
616 | | - List<Long> zoneIdList = profile.getZoneIdList(); |
617 | | - |
618 | 623 | if (template.getTemplateType() == TemplateType.SYSTEM) { |
619 | 624 | throw new InvalidParameterValueException("The DomR template cannot be deleted."); |
620 | 625 | } |
621 | | - |
622 | | - if (zoneIdList != null && (storeMgr.getImageStoreWithFreeCapacity(zoneIdList.get(0)) == null)) { |
623 | | - throw new InvalidParameterValueException("Failed to find a secondary storage in the specified zone."); |
624 | | - } |
625 | | - |
| 626 | + checkZoneImageStores(profile.getZoneIdList()); |
626 | 627 | return profile; |
627 | 628 | } |
628 | 629 |
|
629 | 630 | @Override |
630 | 631 | public TemplateProfile prepareDelete(DeleteIsoCmd cmd) { |
631 | 632 | TemplateProfile profile = super.prepareDelete(cmd); |
632 | | - List<Long> zoneIdList = profile.getZoneIdList(); |
633 | | - |
634 | | - if (zoneIdList != null && |
635 | | - (storeMgr.getImageStoreWithFreeCapacity(zoneIdList.get(0)) == null)) { |
636 | | - throw new InvalidParameterValueException("Failed to find a secondary storage in the specified zone."); |
637 | | - } |
638 | | - |
| 633 | + checkZoneImageStores(profile.getZoneIdList()); |
639 | 634 | return profile; |
640 | 635 | } |
641 | 636 | } |
0 commit comments