mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	make template download testable
This commit is contained in:
		
							parent
							
								
									164bedd5ae
								
							
						
					
					
						commit
						2384276536
					
				| @ -20,4 +20,5 @@ package org.apache.cloudstack.engine.subsystem.api.storage; | |||||||
| 
 | 
 | ||||||
| public interface TemplateInfo extends DataObject { | public interface TemplateInfo extends DataObject { | ||||||
|     public String getUniqueName(); |     public String getUniqueName(); | ||||||
|  |     public String getInstallPath(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -26,6 +26,7 @@ import com.cloud.agent.api.to.DataStoreTO; | |||||||
| 
 | 
 | ||||||
| public class TemplateObjectTO implements DataTO { | public class TemplateObjectTO implements DataTO { | ||||||
|     private  String path; |     private  String path; | ||||||
|  |     private String origUrl; | ||||||
|     private  String uuid; |     private  String uuid; | ||||||
|     private  DiskFormat diskType; |     private  DiskFormat diskType; | ||||||
|     private  DataStoreTO imageDataStore; |     private  DataStoreTO imageDataStore; | ||||||
| @ -35,8 +36,9 @@ public class TemplateObjectTO implements DataTO { | |||||||
|          |          | ||||||
|     } |     } | ||||||
|     public TemplateObjectTO(TemplateInfo template) { |     public TemplateObjectTO(TemplateInfo template) { | ||||||
|         this.path = template.getUri(); |         this.path = template.getInstallPath(); | ||||||
|         this.uuid = template.getUuid(); |         this.uuid = template.getUuid(); | ||||||
|  |         this.origUrl = template.getUri(); | ||||||
|         //this.diskType = template.getDiskType(); |         //this.diskType = template.getDiskType(); | ||||||
|         this.imageDataStore = template.getDataStore().getTO(); |         this.imageDataStore = template.getDataStore().getTO(); | ||||||
|         this.name = template.getUniqueName(); |         this.name = template.getUniqueName(); | ||||||
| @ -84,4 +86,10 @@ public class TemplateObjectTO implements DataTO { | |||||||
|     public void setName(String name) { |     public void setName(String name) { | ||||||
|         this.name = name; |         this.name = name; | ||||||
|     } |     } | ||||||
|  | 	public String getOrigUrl() { | ||||||
|  | 		return origUrl; | ||||||
|  | 	} | ||||||
|  | 	public void setOrigUrl(String origUrl) { | ||||||
|  | 		this.origUrl = origUrl; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -108,12 +108,9 @@ public class TemplateObject implements TemplateInfo { | |||||||
|     @Override |     @Override | ||||||
|     public String getUri() { |     public String getUri() { | ||||||
|         VMTemplateVO image = imageDao.findById(this.imageVO.getId()); |         VMTemplateVO image = imageDao.findById(this.imageVO.getId()); | ||||||
|         if (this.dataStore == null) { |         | ||||||
|             return image.getUrl(); |             return image.getUrl(); | ||||||
|         } else { |         | ||||||
|             DataObjectInStore obj = ojbectInStoreMgr.findObject(this, this.dataStore); |  | ||||||
|            return obj.getInstallPath(); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
| @ -218,4 +215,10 @@ public class TemplateObject implements TemplateInfo { | |||||||
| 
 | 
 | ||||||
|         return to; |         return to; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public String getInstallPath() { | ||||||
|  | 		 DataObjectInStore obj = ojbectInStoreMgr.findObject(this, this.dataStore); | ||||||
|  |          return obj.getInstallPath(); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -54,6 +54,7 @@ import com.cloud.dc.dao.DcDetailsDaoImpl; | |||||||
| import com.cloud.dc.dao.HostPodDaoImpl; | import com.cloud.dc.dao.HostPodDaoImpl; | ||||||
| import com.cloud.dc.dao.PodVlanDaoImpl; | import com.cloud.dc.dao.PodVlanDaoImpl; | ||||||
| import com.cloud.domain.dao.DomainDaoImpl; | import com.cloud.domain.dao.DomainDaoImpl; | ||||||
|  | import com.cloud.host.dao.HostDao; | ||||||
| import com.cloud.host.dao.HostDaoImpl; | import com.cloud.host.dao.HostDaoImpl; | ||||||
| import com.cloud.host.dao.HostDetailsDaoImpl; | import com.cloud.host.dao.HostDetailsDaoImpl; | ||||||
| import com.cloud.host.dao.HostTagsDaoImpl; | import com.cloud.host.dao.HostTagsDaoImpl; | ||||||
| @ -77,13 +78,16 @@ import com.cloud.storage.dao.VMTemplateZoneDaoImpl; | |||||||
| import com.cloud.storage.dao.VolumeDaoImpl; | import com.cloud.storage.dao.VolumeDaoImpl; | ||||||
| import com.cloud.storage.dao.VolumeHostDaoImpl; | import com.cloud.storage.dao.VolumeHostDaoImpl; | ||||||
| import com.cloud.storage.download.DownloadMonitor; | import com.cloud.storage.download.DownloadMonitor; | ||||||
|  | import com.cloud.storage.download.DownloadMonitorImpl; | ||||||
| import com.cloud.storage.s3.S3Manager; | import com.cloud.storage.s3.S3Manager; | ||||||
|  | import com.cloud.storage.secondary.SecondaryStorageVmManager; | ||||||
| import com.cloud.storage.snapshot.SnapshotManager; | import com.cloud.storage.snapshot.SnapshotManager; | ||||||
| import com.cloud.storage.swift.SwiftManager; | import com.cloud.storage.swift.SwiftManager; | ||||||
| import com.cloud.tags.dao.ResourceTagsDaoImpl; | import com.cloud.tags.dao.ResourceTagsDaoImpl; | ||||||
| import com.cloud.template.TemplateManager; | import com.cloud.template.TemplateManager; | ||||||
| import com.cloud.user.AccountManager; | import com.cloud.user.AccountManager; | ||||||
| import com.cloud.user.ResourceLimitService; | import com.cloud.user.ResourceLimitService; | ||||||
|  | import com.cloud.user.dao.AccountDaoImpl; | ||||||
| import com.cloud.user.dao.UserDaoImpl; | import com.cloud.user.dao.UserDaoImpl; | ||||||
| import com.cloud.utils.component.SpringComponentScanUtils; | import com.cloud.utils.component.SpringComponentScanUtils; | ||||||
| import com.cloud.vm.VirtualMachineManager; | import com.cloud.vm.VirtualMachineManager; | ||||||
| @ -93,6 +97,7 @@ import com.cloud.vm.dao.NicDaoImpl; | |||||||
| import com.cloud.vm.dao.SecondaryStorageVmDaoImpl; | import com.cloud.vm.dao.SecondaryStorageVmDaoImpl; | ||||||
| import com.cloud.vm.dao.UserVmDaoImpl; | import com.cloud.vm.dao.UserVmDaoImpl; | ||||||
| import com.cloud.vm.dao.UserVmDetailsDaoImpl; | import com.cloud.vm.dao.UserVmDetailsDaoImpl; | ||||||
|  | import com.cloud.vm.dao.VMInstanceDao; | ||||||
| import com.cloud.vm.dao.VMInstanceDaoImpl; | import com.cloud.vm.dao.VMInstanceDaoImpl; | ||||||
| import com.cloud.vm.snapshot.dao.VMSnapshotDaoImpl; | import com.cloud.vm.snapshot.dao.VMSnapshotDaoImpl; | ||||||
| @Configuration | @Configuration | ||||||
| @ -111,7 +116,6 @@ import com.cloud.vm.snapshot.dao.VMSnapshotDaoImpl; | |||||||
|         HostPodDaoImpl.class, |         HostPodDaoImpl.class, | ||||||
|         VMTemplateZoneDaoImpl.class, |         VMTemplateZoneDaoImpl.class, | ||||||
|         VMTemplateDetailsDaoImpl.class, |         VMTemplateDetailsDaoImpl.class, | ||||||
|         HostDaoImpl.class, |  | ||||||
|         HostDetailsDaoImpl.class, |         HostDetailsDaoImpl.class, | ||||||
|         HostTagsDaoImpl.class, |         HostTagsDaoImpl.class, | ||||||
|         HostTransferMapDaoImpl.class, |         HostTransferMapDaoImpl.class, | ||||||
| @ -137,15 +141,29 @@ import com.cloud.vm.snapshot.dao.VMSnapshotDaoImpl; | |||||||
|         UserDaoImpl.class, |         UserDaoImpl.class, | ||||||
|         DataCenterDaoImpl.class, |         DataCenterDaoImpl.class, | ||||||
|         StoragePoolDetailsDaoImpl.class, |         StoragePoolDetailsDaoImpl.class, | ||||||
|         DomainDaoImpl.class |         DomainDaoImpl.class, | ||||||
| 
 |         DownloadMonitorImpl.class, | ||||||
|  |         AccountDaoImpl.class | ||||||
| }, | }, | ||||||
| includeFilters={@Filter(value=Library.class, type=FilterType.CUSTOM)}, | includeFilters={@Filter(value=Library.class, type=FilterType.CUSTOM)}, | ||||||
| useDefaultFilters=false | useDefaultFilters=false | ||||||
| ) | ) | ||||||
| public class ChildTestConfiguration extends TestConfiguration { | public class ChildTestConfiguration extends TestConfiguration { | ||||||
| 	 | 	 | ||||||
|  | 	@Bean | ||||||
|  | 	public SecondaryStorageVmManager secondaryStoreageMgr() { | ||||||
|  | 		return Mockito.mock(SecondaryStorageVmManager.class); | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
|  | 	@Bean | ||||||
|  | 	public HostDao hostDao() { | ||||||
|  | 		return Mockito.spy(new HostDaoImpl()); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Bean | ||||||
|  | 	public EndPointSelector selector() { | ||||||
|  | 		return Mockito.mock(EndPointSelector.class); | ||||||
|  | 	} | ||||||
| 	@Bean | 	@Bean | ||||||
| 	public AgentManager agentMgr() { | 	public AgentManager agentMgr() { | ||||||
| 		return new DirectAgentManagerSimpleImpl(); | 		return new DirectAgentManagerSimpleImpl(); | ||||||
| @ -161,11 +179,6 @@ public class ChildTestConfiguration extends TestConfiguration { | |||||||
|         return Mockito.mock(ResourceLimitService.class); |         return Mockito.mock(ResourceLimitService.class); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     @Bean |  | ||||||
|     public DownloadMonitor downloadMonitor() { |  | ||||||
|         return Mockito.mock(DownloadMonitor.class); |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     @Bean |     @Bean | ||||||
|     public AccountManager acctMgt() { |     public AccountManager acctMgt() { | ||||||
|         return Mockito.mock(AccountManager.class); |         return Mockito.mock(AccountManager.class); | ||||||
|  | |||||||
| @ -35,6 +35,7 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { | |||||||
|     private String templateUrl; |     private String templateUrl; | ||||||
|     private String localStorageUuid; |     private String localStorageUuid; | ||||||
|     private String primaryStorageUrl; |     private String primaryStorageUrl; | ||||||
|  |     private String secondaryStorage; | ||||||
|     private Transaction txn; |     private Transaction txn; | ||||||
|      |      | ||||||
|     protected void injectMockito() { |     protected void injectMockito() { | ||||||
| @ -61,10 +62,10 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { | |||||||
|     @BeforeMethod(alwaysRun = true) |     @BeforeMethod(alwaysRun = true) | ||||||
|     @Parameters({"devcloud-host-uuid", "devcloud-host-gateway", "devcloud-host-cidr",  |     @Parameters({"devcloud-host-uuid", "devcloud-host-gateway", "devcloud-host-cidr",  | ||||||
|         "devcloud-host-ip", "template-url", "devcloud-local-storage-uuid",  |         "devcloud-host-ip", "template-url", "devcloud-local-storage-uuid",  | ||||||
|         "primary-storage-want-to-add"}) |         "primary-storage-want-to-add", "devcloud-secondary-storage"}) | ||||||
|     protected void setup(String hostuuid, String gateway, String cidr,  |     protected void setup(String hostuuid, String gateway, String cidr,  | ||||||
|             String hostIp, String templateUrl, String localStorageUuid, |             String hostIp, String templateUrl, String localStorageUuid, | ||||||
|             String primaryStorage) { |             String primaryStorage, String secondaryStorage) { | ||||||
|         this.hostGuid = hostuuid; |         this.hostGuid = hostuuid; | ||||||
|         this.hostGateway = gateway; |         this.hostGateway = gateway; | ||||||
|         this.hostCidr = cidr; |         this.hostCidr = cidr; | ||||||
| @ -72,6 +73,7 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { | |||||||
|         this.templateUrl = templateUrl; |         this.templateUrl = templateUrl; | ||||||
|         this.localStorageUuid = localStorageUuid; |         this.localStorageUuid = localStorageUuid; | ||||||
|         this.primaryStorageUrl = primaryStorage; |         this.primaryStorageUrl = primaryStorage; | ||||||
|  |         this.setSecondaryStorage(secondaryStorage); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     protected String getHostGuid() { |     protected String getHostGuid() { | ||||||
| @ -101,4 +103,12 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { | |||||||
|     protected String getPrimaryStorageUrl() { |     protected String getPrimaryStorageUrl() { | ||||||
|         return this.primaryStorageUrl; |         return this.primaryStorageUrl; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  | 	public String getSecondaryStorage() { | ||||||
|  | 		return secondaryStorage; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	public void setSecondaryStorage(String secondaryStorage) { | ||||||
|  | 		this.secondaryStorage = secondaryStorage; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,122 @@ | |||||||
|  | package org.apache.cloudstack.storage.test; | ||||||
|  | 
 | ||||||
|  | import java.util.UUID; | ||||||
|  | import java.util.concurrent.ExecutionException; | ||||||
|  | 
 | ||||||
|  | import javax.inject.Inject; | ||||||
|  | 
 | ||||||
|  | import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; | ||||||
|  | import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; | ||||||
|  | import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; | ||||||
|  | import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector; | ||||||
|  | import org.apache.cloudstack.engine.subsystem.api.storage.TemplateDataFactory; | ||||||
|  | import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo; | ||||||
|  | import org.apache.cloudstack.engine.subsystem.api.storage.TemplateService; | ||||||
|  | import org.apache.cloudstack.engine.subsystem.api.storage.TemplateService.TemplateApiResult; | ||||||
|  | import org.apache.cloudstack.framework.async.AsyncCallFuture; | ||||||
|  | import org.apache.cloudstack.storage.LocalHostEndpoint; | ||||||
|  | import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; | ||||||
|  | import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; | ||||||
|  | import org.mockito.Mockito; | ||||||
|  | import org.springframework.test.context.ContextConfiguration; | ||||||
|  | import org.testng.annotations.Test; | ||||||
|  | 
 | ||||||
|  | import com.cloud.dc.DataCenterVO; | ||||||
|  | import com.cloud.dc.DataCenter.NetworkType; | ||||||
|  | import com.cloud.dc.dao.DataCenterDao; | ||||||
|  | import com.cloud.storage.DataStoreRole; | ||||||
|  | import com.cloud.storage.Storage; | ||||||
|  | import com.cloud.storage.VMTemplateVO; | ||||||
|  | import com.cloud.storage.Storage.TemplateType; | ||||||
|  | import com.cloud.storage.dao.VMTemplateDao; | ||||||
|  | import com.cloud.storage.download.DownloadMonitor; | ||||||
|  | import com.cloud.storage.download.DownloadMonitorImpl; | ||||||
|  | import com.cloud.utils.component.ComponentContext; | ||||||
|  | 
 | ||||||
|  | @ContextConfiguration(locations={"classpath:/storageContext.xml"}) | ||||||
|  |   | ||||||
|  | public class TemplateTest extends CloudStackTestNGBase { | ||||||
|  | 	@Inject | ||||||
|  | 	DataCenterDao dcDao; | ||||||
|  | 	ImageStoreVO imageStore; | ||||||
|  | 	@Inject | ||||||
|  | 	ImageStoreDao imageStoreDao; | ||||||
|  | 	@Inject | ||||||
|  | 	TemplateService templateSvr; | ||||||
|  | 	@Inject | ||||||
|  | 	VMTemplateDao templateDao; | ||||||
|  | 	@Inject | ||||||
|  | 	TemplateDataFactory templateFactory; | ||||||
|  | 	@Inject | ||||||
|  | 	DataStoreManager dataStoreMgr; | ||||||
|  | 	@Inject | ||||||
|  | 	EndPointSelector epSelector; | ||||||
|  | 	@Inject | ||||||
|  | 	DownloadMonitorImpl downloadMonitor; | ||||||
|  | 	long dcId; | ||||||
|  | 	long templateId; | ||||||
|  | 	 | ||||||
|  | 	@Test(priority = -1) | ||||||
|  | 	public void setUp() { | ||||||
|  | 		ComponentContext.initComponentsLifeCycle(); | ||||||
|  | 		//create data center | ||||||
|  | 		DataCenterVO dc = new DataCenterVO(UUID.randomUUID().toString(), "test", "8.8.8.8", null, "10.0.0.1", null,  "10.0.0.1/24", | ||||||
|  | 				null, null, NetworkType.Basic, null, null, true,  true, null, null); | ||||||
|  | 		dc = dcDao.persist(dc); | ||||||
|  | 		dcId = dc.getId(); | ||||||
|  | 		 | ||||||
|  | 		imageStore = new ImageStoreVO(); | ||||||
|  | 		imageStore.setName("test"); | ||||||
|  | 		imageStore.setDataCenterId(dcId); | ||||||
|  | 		imageStore.setProviderName("CloudStack ImageStore Provider"); | ||||||
|  | 		imageStore.setRole(DataStoreRole.Image); | ||||||
|  | 		imageStore.setUrl(this.getSecondaryStorage()); | ||||||
|  | 		imageStore.setUuid(UUID.randomUUID().toString()); | ||||||
|  | 		imageStore.setProtocol("nfs"); | ||||||
|  | 		imageStore = imageStoreDao.persist(imageStore); | ||||||
|  | 		 | ||||||
|  | 		VMTemplateVO image = new VMTemplateVO(); | ||||||
|  | 		image.setTemplateType(TemplateType.USER); | ||||||
|  | 		image.setUrl(this.getTemplateUrl()); | ||||||
|  | 		image.setUniqueName(UUID.randomUUID().toString()); | ||||||
|  | 		image.setName(UUID.randomUUID().toString()); | ||||||
|  | 		image.setPublicTemplate(true); | ||||||
|  | 		image.setFeatured(true); | ||||||
|  | 		image.setRequiresHvm(true); | ||||||
|  | 		image.setBits(64); | ||||||
|  | 		image.setFormat(Storage.ImageFormat.VHD); | ||||||
|  | 		image.setEnablePassword(true); | ||||||
|  | 		image.setEnableSshKey(true); | ||||||
|  | 		image.setGuestOSId(1); | ||||||
|  | 		image.setBootable(true); | ||||||
|  | 		image.setPrepopulate(true); | ||||||
|  | 		image.setCrossZones(true); | ||||||
|  | 		image.setExtractable(true); | ||||||
|  | 
 | ||||||
|  | 		 | ||||||
|  | 		//image.setImageDataStoreId(storeId); | ||||||
|  | 		image = templateDao.persist(image); | ||||||
|  | 		templateId = image.getId(); | ||||||
|  | 		 | ||||||
|  | 		Mockito.when(epSelector.select(Mockito.any(DataObject.class))).thenReturn(new LocalHostEndpoint()); | ||||||
|  | 		//Mockito.when(downloadMonitor.isTemplateUpdateable(Mockito.anyLong(), Mockito.anyLong())).thenReturn(true); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Test | ||||||
|  | 	public void registerTemplate() { | ||||||
|  | 		TemplateInfo template = templateFactory.getTemplate(templateId); | ||||||
|  | 		DataStore store = dataStoreMgr.getImageStore(dcId); | ||||||
|  | 		AsyncCallFuture<TemplateApiResult> future = new AsyncCallFuture<TemplateApiResult>(); | ||||||
|  | 		templateSvr.createTemplateAsync(template, store, future); | ||||||
|  | 		try { | ||||||
|  | 			future.get(); | ||||||
|  | 		} catch (InterruptedException e) { | ||||||
|  | 			// TODO Auto-generated catch block | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} catch (ExecutionException e) { | ||||||
|  | 			// TODO Auto-generated catch block | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -21,6 +21,7 @@ package org.apache.cloudstack.storage.test; | |||||||
| import java.net.URI; | import java.net.URI; | ||||||
| import java.net.URISyntaxException; | import java.net.URISyntaxException; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  | import java.util.Date; | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @ -49,6 +50,8 @@ import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService.VolumeAp | |||||||
| import org.apache.cloudstack.engine.subsystem.api.storage.type.RootDisk; | import org.apache.cloudstack.engine.subsystem.api.storage.type.RootDisk; | ||||||
| import org.apache.cloudstack.framework.async.AsyncCallFuture; | import org.apache.cloudstack.framework.async.AsyncCallFuture; | ||||||
| import org.apache.cloudstack.storage.RemoteHostEndPoint; | import org.apache.cloudstack.storage.RemoteHostEndPoint; | ||||||
|  | import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; | ||||||
|  | import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; | ||||||
| import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; | import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; | ||||||
| import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; | import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; | ||||||
| import org.apache.cloudstack.storage.volume.db.VolumeDao2; | import org.apache.cloudstack.storage.volume.db.VolumeDao2; | ||||||
| @ -78,6 +81,7 @@ import com.cloud.storage.ScopeType; | |||||||
| import com.cloud.storage.Storage; | import com.cloud.storage.Storage; | ||||||
| import com.cloud.storage.Storage.StoragePoolType; | import com.cloud.storage.Storage.StoragePoolType; | ||||||
| import com.cloud.storage.Storage.TemplateType; | import com.cloud.storage.Storage.TemplateType; | ||||||
|  | import com.cloud.storage.VMTemplateStorageResourceAssoc; | ||||||
| import com.cloud.storage.VMTemplateVO; | import com.cloud.storage.VMTemplateVO; | ||||||
| import com.cloud.storage.dao.VMTemplateDao; | import com.cloud.storage.dao.VMTemplateDao; | ||||||
| import com.cloud.utils.component.ComponentContext; | import com.cloud.utils.component.ComponentContext; | ||||||
| @ -114,6 +118,9 @@ public class volumeServiceTest extends CloudStackTestNGBase { | |||||||
| 	TemplateDataFactory imageDataFactory; | 	TemplateDataFactory imageDataFactory; | ||||||
| 	@Inject | 	@Inject | ||||||
| 	VolumeDataFactory volumeFactory; | 	VolumeDataFactory volumeFactory; | ||||||
|  | 	@Inject | ||||||
|  | 	ImageStoreDao imageStoreDao; | ||||||
|  | 	ImageStoreVO imageStore; | ||||||
| 	Long dcId; | 	Long dcId; | ||||||
| 	Long clusterId; | 	Long clusterId; | ||||||
| 	Long podId; | 	Long podId; | ||||||
| @ -124,12 +131,7 @@ public class volumeServiceTest extends CloudStackTestNGBase { | |||||||
|     @Test(priority = -1) |     @Test(priority = -1) | ||||||
| 	public void setUp() { | 	public void setUp() { | ||||||
|         ComponentContext.initComponentsLifeCycle(); |         ComponentContext.initComponentsLifeCycle(); | ||||||
|        /* try { |    | ||||||
|             dataStoreProviderMgr.configure(null, new HashMap<String, Object>()); |  | ||||||
|         } catch (ConfigurationException e) { |  | ||||||
|             // TODO Auto-generated catch block |  | ||||||
|             e.printStackTrace(); |  | ||||||
|         }*/ |  | ||||||
|         host = hostDao.findByGuid(this.getHostGuid()); |         host = hostDao.findByGuid(this.getHostGuid()); | ||||||
|         if (host != null) { |         if (host != null) { | ||||||
|             dcId = host.getDataCenterId(); |             dcId = host.getDataCenterId(); | ||||||
| @ -171,6 +173,15 @@ public class volumeServiceTest extends CloudStackTestNGBase { | |||||||
| 		host.setClusterId(cluster.getId()); | 		host.setClusterId(cluster.getId()); | ||||||
| 
 | 
 | ||||||
| 		host = hostDao.persist(host); | 		host = hostDao.persist(host); | ||||||
|  | 		 | ||||||
|  | 		imageStore = new ImageStoreVO(); | ||||||
|  | 		imageStore.setName("test"); | ||||||
|  | 		imageStore.setDataCenterId(dcId); | ||||||
|  | 		imageStore.setProviderName("CloudStack ImageStore Provider"); | ||||||
|  | 		imageStore.setRole(DataStoreRole.Image); | ||||||
|  | 		imageStore.setUrl(this.getSecondaryStorage()); | ||||||
|  | 		imageStore.setUuid(UUID.randomUUID().toString()); | ||||||
|  | 		imageStore = imageStoreDao.persist(imageStore); | ||||||
| 
 | 
 | ||||||
| 		//primaryStore = createPrimaryDataStore(); | 		//primaryStore = createPrimaryDataStore(); | ||||||
| 
 | 
 | ||||||
| @ -227,8 +238,10 @@ public class volumeServiceTest extends CloudStackTestNGBase { | |||||||
| 		image.setCrossZones(true); | 		image.setCrossZones(true); | ||||||
| 		image.setExtractable(true); | 		image.setExtractable(true); | ||||||
| 
 | 
 | ||||||
|  | 		 | ||||||
| 		//image.setImageDataStoreId(storeId); | 		//image.setImageDataStoreId(storeId); | ||||||
| 		image = imageDataDao.persist(image); | 		image = imageDataDao.persist(image); | ||||||
|  | 		 | ||||||
| 
 | 
 | ||||||
| 		return image; | 		return image; | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -59,7 +59,6 @@ | |||||||
|   <bean id="dataMotionServiceImpl" class="org.apache.cloudstack.storage.motion.DataMotionServiceImpl" /> |   <bean id="dataMotionServiceImpl" class="org.apache.cloudstack.storage.motion.DataMotionServiceImpl" /> | ||||||
|   <bean id="dataObjectManagerImpl" class="org.apache.cloudstack.storage.datastore.DataObjectManagerImpl" /> |   <bean id="dataObjectManagerImpl" class="org.apache.cloudstack.storage.datastore.DataObjectManagerImpl" /> | ||||||
|   <bean id="dataStoreManagerImpl" class="org.apache.cloudstack.storage.datastore.DataStoreManagerImpl" /> |   <bean id="dataStoreManagerImpl" class="org.apache.cloudstack.storage.datastore.DataStoreManagerImpl" /> | ||||||
|   <bean id="defaultEndPointSelector" class="org.apache.cloudstack.storage.endpoint.DefaultEndPointSelector" /> |  | ||||||
|   <bean id="primaryDataStoreProviderManagerImpl" class="org.apache.cloudstack.storage.datastore.manager.PrimaryDataStoreProviderManagerImpl" /> |   <bean id="primaryDataStoreProviderManagerImpl" class="org.apache.cloudstack.storage.datastore.manager.PrimaryDataStoreProviderManagerImpl" /> | ||||||
|   <bean id="imageStoreProviderManagerImpl" class="org.apache.cloudstack.storage.image.manager.ImageStoreProviderManagerImpl" />   |   <bean id="imageStoreProviderManagerImpl" class="org.apache.cloudstack.storage.image.manager.ImageStoreProviderManagerImpl" />   | ||||||
|   <bean id="hypervsiorHostEndPointRpcServer" class="org.apache.cloudstack.storage.HypervsiorHostEndPointRpcServer" /> |   <bean id="hypervsiorHostEndPointRpcServer" class="org.apache.cloudstack.storage.HypervsiorHostEndPointRpcServer" /> | ||||||
| @ -88,5 +87,5 @@ | |||||||
|   <bean id="s3ImageStoreProviderImpl" class="org.apache.cloudstack.storage.datastore.provider.S3ImageStoreProviderImpl" /> |   <bean id="s3ImageStoreProviderImpl" class="org.apache.cloudstack.storage.datastore.provider.S3ImageStoreProviderImpl" /> | ||||||
|   <bean id="swiftImageStoreProviderImpl" class="org.apache.cloudstack.storage.datastore.provider.SwiftImageStoreProviderImpl" />   |   <bean id="swiftImageStoreProviderImpl" class="org.apache.cloudstack.storage.datastore.provider.SwiftImageStoreProviderImpl" />   | ||||||
|   <bean id="BAREMETAL" class="org.apache.cloudstack.storage.image.format.BAREMETAL" /> |   <bean id="BAREMETAL" class="org.apache.cloudstack.storage.image.format.BAREMETAL" /> | ||||||
| 
 |   <bean id="storagePoolAutomationImpl" class="com.cloud.storage.StoragePoolAutomationImpl" /> | ||||||
| </beans> | </beans> | ||||||
|  | |||||||
| @ -27,6 +27,7 @@ | |||||||
|   <parameter name="primary-storage-want-to-add" value="nfs://192.168.56.2/opt/storage/primarynfs"/> |   <parameter name="primary-storage-want-to-add" value="nfs://192.168.56.2/opt/storage/primarynfs"/> | ||||||
|   <parameter name="devcloud-local-storage-uuid" value="cd10cac1-4772-92e5-5da6-c2bc16b1ce1b"/> |   <parameter name="devcloud-local-storage-uuid" value="cd10cac1-4772-92e5-5da6-c2bc16b1ce1b"/> | ||||||
|   <parameter name="devcloud-host-uuid" value="759ee4c9-a15a-297b-67c6-ac267d8aa429"/> |   <parameter name="devcloud-host-uuid" value="759ee4c9-a15a-297b-67c6-ac267d8aa429"/> | ||||||
|  |   <parameter name="devcloud-secondary-storage" value="nfs://192.168.56.10/opt/storage/secondary"/> | ||||||
|   |   | ||||||
|    <listeners> |    <listeners> | ||||||
|     <listener class-name="org.apache.cloudstack.storage.test.TestNGAop" /> |     <listener class-name="org.apache.cloudstack.storage.test.TestNGAop" /> | ||||||
|  | |||||||
| @ -12,6 +12,7 @@ import com.cloud.agent.Listener; | |||||||
| import com.cloud.agent.api.Answer; | import com.cloud.agent.api.Answer; | ||||||
| import com.cloud.agent.api.Command; | import com.cloud.agent.api.Command; | ||||||
| import com.cloud.agent.api.storage.DownloadAnswer; | import com.cloud.agent.api.storage.DownloadAnswer; | ||||||
|  | import com.cloud.agent.api.storage.DownloadCommand; | ||||||
| import com.cloud.resource.ServerResource; | import com.cloud.resource.ServerResource; | ||||||
| import com.cloud.storage.download.DownloadListener; | import com.cloud.storage.download.DownloadListener; | ||||||
| import com.cloud.storage.resource.LocalNfsSecondaryStorageResource; | import com.cloud.storage.resource.LocalNfsSecondaryStorageResource; | ||||||
| @ -38,7 +39,7 @@ public class LocalHostEndpoint implements EndPoint { | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
| 	public Answer sendMessage(Command cmd) { | 	public Answer sendMessage(Command cmd) { | ||||||
| 		if (cmd instanceof CopyCommand) { | 		if ((cmd instanceof CopyCommand) || (cmd instanceof DownloadCommand)) { | ||||||
| 			return resource.executeRequest(cmd); | 			return resource.executeRequest(cmd); | ||||||
| 		} | 		} | ||||||
| 		// TODO Auto-generated method stub | 		// TODO Auto-generated method stub | ||||||
|  | |||||||
| @ -183,8 +183,8 @@ public class DownloadListener implements Listener { | |||||||
| 				if (this.object.getType() == DataObjectType.VOLUME) { | 				if (this.object.getType() == DataObjectType.VOLUME) { | ||||||
| 					dcmd.setResourceType(ResourceType.VOLUME); | 					dcmd.setResourceType(ResourceType.VOLUME); | ||||||
| 				} | 				} | ||||||
| 	            _downloadMonitor.send(_ssAgent.getId(), dcmd, this); | 	            _ssAgent.sendMessageAsyncWithListener(dcmd, this); | ||||||
|             } catch (AgentUnavailableException e) { |             } catch (Exception e) { | ||||||
|             	s_logger.debug("Send command failed", e); |             	s_logger.debug("Send command failed", e); | ||||||
| 				setDisconnected(); | 				setDisconnected(); | ||||||
|             } |             } | ||||||
|  | |||||||
| @ -97,14 +97,6 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor | |||||||
|     @Inject |     @Inject | ||||||
|     VolumeDataStoreDao _volumeStoreDao; |     VolumeDataStoreDao _volumeStoreDao; | ||||||
|     @Inject |     @Inject | ||||||
|     AlertManager _alertMgr; |  | ||||||
|     @Inject |  | ||||||
|     protected SwiftManager _swiftMgr; |  | ||||||
|     @Inject |  | ||||||
|     SecondaryStorageVmManager _ssvmMgr; |  | ||||||
|     @Inject |  | ||||||
|     StorageManager _storageMgr; |  | ||||||
|     @Inject |  | ||||||
|     VMTemplateDao _templateDao = null; |     VMTemplateDao _templateDao = null; | ||||||
|     @Inject |     @Inject | ||||||
|     private AgentManager _agentMgr; |     private AgentManager _agentMgr; | ||||||
| @ -113,18 +105,6 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor | |||||||
|     @Inject |     @Inject | ||||||
|     ConfigurationDao _configDao; |     ConfigurationDao _configDao; | ||||||
|     @Inject |     @Inject | ||||||
|     UserVmManager _vmMgr; |  | ||||||
| 
 |  | ||||||
|     @Inject |  | ||||||
|     TemplateManager templateMgr; |  | ||||||
| 
 |  | ||||||
|     @Inject |  | ||||||
|     protected ResourceLimitService _resourceLimitMgr; |  | ||||||
|     @Inject |  | ||||||
|     protected UserVmDao _userVmDao; |  | ||||||
|     @Inject |  | ||||||
|     protected AccountManager _accountMgr; |  | ||||||
|     @Inject |  | ||||||
|     EndPointSelector _epSelector; |     EndPointSelector _epSelector; | ||||||
|     @Inject |     @Inject | ||||||
|     TemplateDataFactory tmplFactory; |     TemplateDataFactory tmplFactory; | ||||||
| @ -144,9 +124,6 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor | |||||||
|     final Map<VolumeHostVO, DownloadListener> _listenerVolumeMap = new ConcurrentHashMap<VolumeHostVO, DownloadListener>(); |     final Map<VolumeHostVO, DownloadListener> _listenerVolumeMap = new ConcurrentHashMap<VolumeHostVO, DownloadListener>(); | ||||||
|     final Map<VolumeDataStoreVO, DownloadListener> _listenerVolMap = new ConcurrentHashMap<VolumeDataStoreVO, DownloadListener>(); |     final Map<VolumeDataStoreVO, DownloadListener> _listenerVolMap = new ConcurrentHashMap<VolumeDataStoreVO, DownloadListener>(); | ||||||
| 
 | 
 | ||||||
|     public void send(Long hostId, Command cmd, Listener listener) throws AgentUnavailableException { |  | ||||||
|         _agentMgr.send(hostId, new Commands(cmd), listener); |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public boolean configure(String name, Map<String, Object> params) { |     public boolean configure(String name, Map<String, Object> params) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user