mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
create volume from template unit test is passed
This commit is contained in:
parent
d4cb74c77b
commit
e436d4327f
@ -27,10 +27,14 @@ import org.apache.cloudstack.storage.volume.db.VolumeVO;
|
|||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import com.cloud.dao.EntityManager;
|
||||||
import com.cloud.host.HostVO;
|
import com.cloud.host.HostVO;
|
||||||
import com.cloud.host.dao.HostDao;
|
import com.cloud.host.dao.HostDao;
|
||||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||||
import com.cloud.utils.component.ComponentInject;
|
import com.cloud.utils.component.ComponentInject;
|
||||||
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
|
import com.cloud.utils.db.SearchCriteria2;
|
||||||
|
import com.cloud.utils.db.SearchCriteriaService;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
|
|
||||||
import edu.emory.mathcs.backport.java.util.Collections;
|
import edu.emory.mathcs.backport.java.util.Collections;
|
||||||
@ -42,8 +46,8 @@ public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore {
|
|||||||
protected PrimaryDataStoreInfo pdsInfo;
|
protected PrimaryDataStoreInfo pdsInfo;
|
||||||
@Inject
|
@Inject
|
||||||
private VolumeDao volumeDao;
|
private VolumeDao volumeDao;
|
||||||
//@Inject
|
@Inject
|
||||||
private HostDao hostDao;
|
HostDao hostDao;
|
||||||
@Inject
|
@Inject
|
||||||
TemplatePrimaryDataStoreManager templatePrimaryStoreMgr;
|
TemplatePrimaryDataStoreManager templatePrimaryStoreMgr;
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,6 @@ import com.cloud.utils.db.SearchCriteria.Func;
|
|||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
|
|
||||||
@Component
|
|
||||||
public class PrimaryDataStoreDaoImpl extends GenericDaoBase<PrimaryDataStoreVO, Long> implements PrimaryDataStoreDao {
|
public class PrimaryDataStoreDaoImpl extends GenericDaoBase<PrimaryDataStoreVO, Long> implements PrimaryDataStoreDao {
|
||||||
protected final SearchBuilder<PrimaryDataStoreVO> AllFieldSearch;
|
protected final SearchBuilder<PrimaryDataStoreVO> AllFieldSearch;
|
||||||
protected final SearchBuilder<PrimaryDataStoreVO> DcPodSearch;
|
protected final SearchBuilder<PrimaryDataStoreVO> DcPodSearch;
|
||||||
@ -60,7 +59,7 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<PrimaryDataStoreVO,
|
|||||||
private final String DetailsSqlSuffix = ") GROUP BY storage_pool_details.pool_id HAVING COUNT(storage_pool_details.name) >= ?";
|
private final String DetailsSqlSuffix = ") GROUP BY storage_pool_details.pool_id HAVING COUNT(storage_pool_details.name) >= ?";
|
||||||
private final String FindPoolTagDetails = "SELECT storage_pool_details.name FROM storage_pool_details WHERE pool_id = ? and value = ?";
|
private final String FindPoolTagDetails = "SELECT storage_pool_details.name FROM storage_pool_details WHERE pool_id = ? and value = ?";
|
||||||
|
|
||||||
protected PrimaryDataStoreDaoImpl() {
|
public PrimaryDataStoreDaoImpl() {
|
||||||
AllFieldSearch = createSearchBuilder();
|
AllFieldSearch = createSearchBuilder();
|
||||||
AllFieldSearch.and("name", AllFieldSearch.entity().getName(), SearchCriteria.Op.EQ);
|
AllFieldSearch.and("name", AllFieldSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
AllFieldSearch.and("uuid", AllFieldSearch.entity().getUuid(), SearchCriteria.Op.EQ);
|
AllFieldSearch.and("uuid", AllFieldSearch.entity().getUuid(), SearchCriteria.Op.EQ);
|
||||||
|
|||||||
@ -93,7 +93,7 @@ public class DefaultPrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver
|
|||||||
VolumeTO vol = new VolumeTO(volume);
|
VolumeTO vol = new VolumeTO(volume);
|
||||||
ImageOnPrimayDataStoreTO image = new ImageOnPrimayDataStoreTO(template);
|
ImageOnPrimayDataStoreTO image = new ImageOnPrimayDataStoreTO(template);
|
||||||
CreateVolumeFromBaseImageCommand cmd = new CreateVolumeFromBaseImageCommand(vol, image);
|
CreateVolumeFromBaseImageCommand cmd = new CreateVolumeFromBaseImageCommand(vol, image);
|
||||||
List<EndPoint> endPoints = volume.getDataStore().getEndPoints();
|
List<EndPoint> endPoints = template.getPrimaryDataStore().getEndPoints();
|
||||||
|
|
||||||
Answer answer = sendOutCommand(cmd, endPoints);
|
Answer answer = sendOutCommand(cmd, endPoints);
|
||||||
|
|
||||||
|
|||||||
@ -85,6 +85,7 @@ public class DefaultPrimaryDataStoreLifeCycleImpl implements PrimaryDataStoreLif
|
|||||||
dataStore.setHostAddress(parser.getHost());
|
dataStore.setHostAddress(parser.getHost());
|
||||||
dataStore.setPath(parser.getPath());
|
dataStore.setPath(parser.getPath());
|
||||||
dataStore.setStorageProviderId(this.provider.getId());
|
dataStore.setStorageProviderId(this.provider.getId());
|
||||||
|
dataStore.setClusterId(Long.parseLong(dsInfos.get("clusterId")));
|
||||||
dataStore = dataStoreDao.persist(dataStore);
|
dataStore = dataStoreDao.persist(dataStore);
|
||||||
//TODO: add extension point for each data store
|
//TODO: add extension point for each data store
|
||||||
return this.provider.getDataStore(dataStore.getId());
|
return this.provider.getDataStore(dataStore.getId());
|
||||||
|
|||||||
@ -18,16 +18,10 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.cloudstack.storage.image.motion;
|
package org.apache.cloudstack.storage.image.motion;
|
||||||
|
|
||||||
import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
|
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
|
import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
|
import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
|
|
||||||
import org.apache.cloudstack.storage.command.CopyTemplateToPrimaryStorage;
|
import org.apache.cloudstack.storage.command.CopyTemplateToPrimaryStorage;
|
||||||
import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
|
|
||||||
import org.apache.cloudstack.storage.image.TemplateInfo;
|
|
||||||
import org.apache.cloudstack.storage.to.ImageOnPrimayDataStoreTO;
|
import org.apache.cloudstack.storage.to.ImageOnPrimayDataStoreTO;
|
||||||
import org.apache.cloudstack.storage.to.TemplateTO;
|
|
||||||
import org.apache.cloudstack.storage.to.VolumeTO;
|
|
||||||
import org.apache.cloudstack.storage.volume.TemplateOnPrimaryDataStoreInfo;
|
import org.apache.cloudstack.storage.volume.TemplateOnPrimaryDataStoreInfo;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|||||||
@ -18,8 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.cloudstack.storage.volume;
|
package org.apache.cloudstack.storage.volume;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
|
import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
|
||||||
import org.apache.cloudstack.storage.image.TemplateInfo;
|
import org.apache.cloudstack.storage.image.TemplateInfo;
|
||||||
import org.apache.cloudstack.storage.volume.db.TemplatePrimaryDataStoreDao;
|
import org.apache.cloudstack.storage.volume.db.TemplatePrimaryDataStoreDao;
|
||||||
@ -31,13 +29,14 @@ public class TemplateOnPrimaryDataStoreObject implements TemplateOnPrimaryDataSt
|
|||||||
protected PrimaryDataStoreInfo dataStore;
|
protected PrimaryDataStoreInfo dataStore;
|
||||||
protected TemplateInfo template;
|
protected TemplateInfo template;
|
||||||
protected TemplatePrimaryDataStoreVO vo;
|
protected TemplatePrimaryDataStoreVO vo;
|
||||||
@Inject
|
|
||||||
TemplatePrimaryDataStoreDao templateStoreDao;
|
TemplatePrimaryDataStoreDao templateStoreDao;
|
||||||
|
|
||||||
public TemplateOnPrimaryDataStoreObject(PrimaryDataStoreInfo primaryDataStore, TemplateInfo template, TemplatePrimaryDataStoreVO vo) {
|
public TemplateOnPrimaryDataStoreObject(PrimaryDataStoreInfo primaryDataStore, TemplateInfo template, TemplatePrimaryDataStoreVO vo,
|
||||||
|
TemplatePrimaryDataStoreDao templateStoreDao) {
|
||||||
this.dataStore = primaryDataStore;
|
this.dataStore = primaryDataStore;
|
||||||
this.template = template;
|
this.template = template;
|
||||||
this.vo = vo;
|
this.vo = vo;
|
||||||
|
this.templateStoreDao = templateStoreDao;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -41,7 +41,7 @@ public class TemplatePrimaryDataStoreManagerImpl implements TemplatePrimaryDataS
|
|||||||
|
|
||||||
TemplatePrimaryDataStoreVO templateStoreVO = new TemplatePrimaryDataStoreVO(dataStore.getId(), template.getId());
|
TemplatePrimaryDataStoreVO templateStoreVO = new TemplatePrimaryDataStoreVO(dataStore.getId(), template.getId());
|
||||||
templateStoreVO = templateStoreDao.persist(templateStoreVO);
|
templateStoreVO = templateStoreDao.persist(templateStoreVO);
|
||||||
TemplateOnPrimaryDataStoreObject templateStoreObject = new TemplateOnPrimaryDataStoreObject(dataStore, template, templateStoreVO);
|
TemplateOnPrimaryDataStoreObject templateStoreObject = new TemplateOnPrimaryDataStoreObject(dataStore, template, templateStoreVO, templateStoreDao);
|
||||||
return templateStoreObject;
|
return templateStoreObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,11 @@ public class TemplatePrimaryDataStoreManagerImpl implements TemplatePrimaryDataS
|
|||||||
sc.addAnd(sc.getEntity().getPoolId(), Op.EQ, dataStore.getId());
|
sc.addAnd(sc.getEntity().getPoolId(), Op.EQ, dataStore.getId());
|
||||||
sc.addAnd(sc.getEntity().getDownloadState(), Op.EQ, VMTemplateStorageResourceAssoc.Status.DOWNLOADED);
|
sc.addAnd(sc.getEntity().getDownloadState(), Op.EQ, VMTemplateStorageResourceAssoc.Status.DOWNLOADED);
|
||||||
TemplatePrimaryDataStoreVO templateStoreVO = sc.find();
|
TemplatePrimaryDataStoreVO templateStoreVO = sc.find();
|
||||||
TemplateOnPrimaryDataStoreObject templateStoreObject = new TemplateOnPrimaryDataStoreObject(dataStore, template, templateStoreVO);
|
if (templateStoreVO == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
TemplateOnPrimaryDataStoreObject templateStoreObject = new TemplateOnPrimaryDataStoreObject(dataStore, template, templateStoreVO, templateStoreDao);
|
||||||
return templateStoreObject;
|
return templateStoreObject;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,28 @@
|
|||||||
|
package org.apache.cloudstack.storage.test;
|
||||||
|
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
import com.cloud.agent.AgentManager;
|
||||||
|
import com.cloud.host.dao.HostDao;
|
||||||
|
|
||||||
|
public class ChildTestConfiguration extends TestConfiguration {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Bean
|
||||||
|
public HostDao hostDao() {
|
||||||
|
HostDao dao = super.hostDao();
|
||||||
|
HostDao nDao = Mockito.spy(dao);
|
||||||
|
return nDao;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public AgentManager agentMgr() {
|
||||||
|
return Mockito.mock(AgentManager.class);
|
||||||
|
}
|
||||||
|
/* @Override
|
||||||
|
@Bean
|
||||||
|
public PrimaryDataStoreDao primaryDataStoreDao() {
|
||||||
|
return Mockito.mock(PrimaryDataStoreDaoImpl.class);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package org.apache.cloudstack.storage.test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
|
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration(locations="classpath:resource/storageContext.xml")
|
||||||
|
public class StorageTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
fail("Not yet implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package org.apache.cloudstack.storage.test;
|
||||||
|
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDaoImpl;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import com.cloud.host.dao.HostDao;
|
||||||
|
import com.cloud.host.dao.HostDaoImpl;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class TestConfiguration {
|
||||||
|
@Bean
|
||||||
|
public HostDao hostDao() {
|
||||||
|
return new HostDaoImpl();
|
||||||
|
}
|
||||||
|
@Bean
|
||||||
|
public PrimaryDataStoreDao primaryDataStoreDao() {
|
||||||
|
return new PrimaryDataStoreDaoImpl();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
package org.apache.cloudstack.storage.test;
|
||||||
|
|
||||||
|
public class XenEndpoint {
|
||||||
|
|
||||||
|
}
|
||||||
@ -20,9 +20,10 @@ package org.apache.cloudstack.storage.test;
|
|||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.awt.List;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
@ -41,7 +42,11 @@ import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskTyp
|
|||||||
import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskTypeHelper;
|
import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskTypeHelper;
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.type.RootDisk;
|
import org.apache.cloudstack.engine.subsystem.api.storage.type.RootDisk;
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.type.VolumeTypeHelper;
|
import org.apache.cloudstack.engine.subsystem.api.storage.type.VolumeTypeHelper;
|
||||||
|
import org.apache.cloudstack.storage.command.CreateVolumeAnswer;
|
||||||
|
import org.apache.cloudstack.storage.command.CreateVolumeFromBaseImageCommand;
|
||||||
import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStoreImpl;
|
import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStoreImpl;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreVO;
|
||||||
import org.apache.cloudstack.storage.datastore.lifecycle.PrimaryDataStoreLifeCycle;
|
import org.apache.cloudstack.storage.datastore.lifecycle.PrimaryDataStoreLifeCycle;
|
||||||
import org.apache.cloudstack.storage.datastore.provider.DefaultPrimaryDatastoreProviderImpl;
|
import org.apache.cloudstack.storage.datastore.provider.DefaultPrimaryDatastoreProviderImpl;
|
||||||
import org.apache.cloudstack.storage.datastore.provider.PrimaryDataStoreProvider;
|
import org.apache.cloudstack.storage.datastore.provider.PrimaryDataStoreProvider;
|
||||||
@ -68,9 +73,29 @@ import org.junit.runner.RunWith;
|
|||||||
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
import org.mockito.Mockito;
|
||||||
import org.mockito.Mockito.*;
|
import org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
|
||||||
|
import com.cloud.agent.AgentManager;
|
||||||
|
import com.cloud.dc.ClusterVO;
|
||||||
|
import com.cloud.dc.DataCenterVO;
|
||||||
|
import com.cloud.dc.HostPodVO;
|
||||||
|
import com.cloud.dc.DataCenter.NetworkType;
|
||||||
|
import com.cloud.dc.dao.ClusterDao;
|
||||||
|
import com.cloud.dc.dao.DataCenterDao;
|
||||||
|
import com.cloud.dc.dao.HostPodDao;
|
||||||
|
import com.cloud.exception.AgentUnavailableException;
|
||||||
|
import com.cloud.exception.OperationTimedoutException;
|
||||||
|
import com.cloud.host.Host;
|
||||||
|
import com.cloud.host.HostVO;
|
||||||
|
import com.cloud.host.Status;
|
||||||
|
import com.cloud.host.Status.Event;
|
||||||
|
import com.cloud.host.dao.HostDao;
|
||||||
|
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||||
|
import com.cloud.org.Cluster.ClusterType;
|
||||||
|
import com.cloud.org.Managed.ManagedState;
|
||||||
|
import com.cloud.resource.ResourceState;
|
||||||
import com.cloud.storage.Storage.TemplateType;
|
import com.cloud.storage.Storage.TemplateType;
|
||||||
import com.cloud.utils.component.ComponentInject;
|
import com.cloud.utils.component.ComponentInject;
|
||||||
import com.cloud.utils.db.DB;
|
import com.cloud.utils.db.DB;
|
||||||
@ -90,10 +115,67 @@ public class volumeServiceTest {
|
|||||||
@Inject
|
@Inject
|
||||||
VolumeDao volumeDao;
|
VolumeDao volumeDao;
|
||||||
@Inject
|
@Inject
|
||||||
|
HostDao hostDao;
|
||||||
|
@Inject
|
||||||
|
HostPodDao podDao;
|
||||||
|
@Inject
|
||||||
|
ClusterDao clusterDao;
|
||||||
|
@Inject
|
||||||
|
DataCenterDao dcDao;
|
||||||
|
@Inject
|
||||||
|
PrimaryDataStoreDao primaryStoreDao;
|
||||||
|
@Inject
|
||||||
PrimaryDataStoreProviderManager primaryDataStoreProviderMgr;
|
PrimaryDataStoreProviderManager primaryDataStoreProviderMgr;
|
||||||
|
@Inject
|
||||||
|
AgentManager agentMgr;
|
||||||
|
Long dcId;
|
||||||
|
Long clusterId;
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
//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);
|
||||||
|
dc = dcDao.persist(dc);
|
||||||
|
dcId = dc.getId();
|
||||||
|
//create pod
|
||||||
|
|
||||||
|
HostPodVO pod = new HostPodVO(UUID.randomUUID().toString(), dc.getId(), "192.168.56.1", "192.168.56.0/24", 8, "test");
|
||||||
|
pod = podDao.persist(pod);
|
||||||
|
//create xen cluster
|
||||||
|
ClusterVO cluster = new ClusterVO(dc.getId(), pod.getId(), "devcloud cluster");
|
||||||
|
cluster.setHypervisorType(HypervisorType.XenServer.toString());
|
||||||
|
cluster.setClusterType(ClusterType.CloudManaged);
|
||||||
|
cluster.setManagedState(ManagedState.Managed);
|
||||||
|
cluster = clusterDao.persist(cluster);
|
||||||
|
clusterId = cluster.getId();
|
||||||
|
//create xen host
|
||||||
|
|
||||||
|
HostVO host = new HostVO(UUID.randomUUID().toString());
|
||||||
|
host.setName("devcloud xen host");
|
||||||
|
host.setType(Host.Type.Routing);
|
||||||
|
host.setPrivateIpAddress("192.168.56.2");
|
||||||
|
host.setDataCenterId(dc.getId());
|
||||||
|
host.setVersion("6.0.1");
|
||||||
|
host.setAvailable(true);
|
||||||
|
host.setSetup(true);
|
||||||
|
host.setLastPinged(0);
|
||||||
|
host.setResourceState(ResourceState.Enabled);
|
||||||
|
host.setClusterId(cluster.getId());
|
||||||
|
|
||||||
|
host = hostDao.persist(host);
|
||||||
|
List<HostVO> results = new ArrayList<HostVO>();
|
||||||
|
results.add(host);
|
||||||
|
Mockito.when(hostDao.listAll()).thenReturn(results);
|
||||||
|
Mockito.when(hostDao.findHypervisorHostInCluster(Mockito.anyLong())).thenReturn(results);
|
||||||
|
CreateVolumeAnswer createVolumeFromImageAnswer = new CreateVolumeAnswer(UUID.randomUUID().toString());
|
||||||
|
try {
|
||||||
|
Mockito.when(agentMgr.send(Mockito.anyLong(), Mockito.any(CreateVolumeFromBaseImageCommand.class))).thenReturn(createVolumeFromImageAnswer);
|
||||||
|
} catch (AgentUnavailableException e) {
|
||||||
|
|
||||||
|
} catch (OperationTimedoutException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
//Mockito.when(primaryStoreDao.findById(Mockito.anyLong())).thenReturn(primaryStore);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ImageDataVO createImageData() {
|
private ImageDataVO createImageData() {
|
||||||
@ -145,7 +227,8 @@ public class volumeServiceTest {
|
|||||||
PrimaryDataStoreLifeCycle lifeCycle = provider.getDataStoreLifeCycle();
|
PrimaryDataStoreLifeCycle lifeCycle = provider.getDataStoreLifeCycle();
|
||||||
Map<String, String> params = new HashMap<String, String>();
|
Map<String, String> params = new HashMap<String, String>();
|
||||||
params.put("url", "nfs://test/test");
|
params.put("url", "nfs://test/test");
|
||||||
params.put("dcId", "1");
|
params.put("dcId", dcId.toString());
|
||||||
|
params.put("clusterId", clusterId.toString());
|
||||||
params.put("name", "my primary data store");
|
params.put("name", "my primary data store");
|
||||||
PrimaryDataStoreInfo primaryDataStoreInfo = lifeCycle.registerDataStore(params);
|
PrimaryDataStoreInfo primaryDataStoreInfo = lifeCycle.registerDataStore(params);
|
||||||
return primaryDataStoreInfo;
|
return primaryDataStoreInfo;
|
||||||
|
|||||||
@ -15,7 +15,8 @@
|
|||||||
<context:component-scan base-package="org.apache.cloudstack.engine.subsystem.api.storage" />
|
<context:component-scan base-package="org.apache.cloudstack.engine.subsystem.api.storage" />
|
||||||
<context:component-scan base-package="com.cloud.utils.db" />
|
<context:component-scan base-package="com.cloud.utils.db" />
|
||||||
<context:component-scan base-package="com.cloud.utils.component" />
|
<context:component-scan base-package="com.cloud.utils.component" />
|
||||||
|
<context:component-scan base-package="com.cloud.host.dao" />
|
||||||
|
<context:component-scan base-package="com.cloud.dc.dao" />
|
||||||
|
|
||||||
<context:component-scan base-package=" com.cloud.upgrade.dao" />
|
<context:component-scan base-package=" com.cloud.upgrade.dao" />
|
||||||
<tx:annotation-driven transaction-manager="transactionManager" />
|
<tx:annotation-driven transaction-manager="transactionManager" />
|
||||||
@ -36,4 +37,6 @@
|
|||||||
value="org.apache.cloudstack.storage.volume.VolumeMotionService" />
|
value="org.apache.cloudstack.storage.volume.VolumeMotionService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<bean class="org.apache.cloudstack.storage.test.ChildTestConfiguration" />
|
||||||
|
|
||||||
</beans>
|
</beans>
|
||||||
|
|||||||
@ -33,6 +33,7 @@ import com.cloud.utils.db.GenericDaoBase;
|
|||||||
import com.cloud.utils.db.GenericSearchBuilder;
|
import com.cloud.utils.db.GenericSearchBuilder;
|
||||||
import com.cloud.utils.db.SearchBuilder;
|
import com.cloud.utils.db.SearchBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria;
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
|
import com.cloud.utils.db.SearchCriteria2;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Local(value=EntityManager.class)
|
@Local(value=EntityManager.class)
|
||||||
@ -120,6 +121,11 @@ public class EntityManagerImpl implements EntityManager, Manager {
|
|||||||
return dao.customSearch(sc, null);
|
return dao.customSearch(sc, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, K> List<K> search(SearchCriteria2<T, K> sc) {
|
||||||
|
return sc.list();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable> void remove(Class<T> entityType, K id) {
|
public <T, K extends Serializable> void remove(Class<T> entityType, K id) {
|
||||||
GenericDao<T, K> dao = (GenericDao<T, K>)GenericDaoBase.getDao(entityType);
|
GenericDao<T, K> dao = (GenericDao<T, K>)GenericDaoBase.getDao(entityType);
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.ejb.Local;
|
import javax.ejb.Local;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@ -55,10 +56,10 @@ public class ClusterDaoImpl extends GenericDaoBase<ClusterVO, Long> implements C
|
|||||||
|
|
||||||
private static final String GET_POD_CLUSTER_MAP_PREFIX = "SELECT pod_id, id FROM cloud.cluster WHERE cluster.id IN( ";
|
private static final String GET_POD_CLUSTER_MAP_PREFIX = "SELECT pod_id, id FROM cloud.cluster WHERE cluster.id IN( ";
|
||||||
private static final String GET_POD_CLUSTER_MAP_SUFFIX = " )";
|
private static final String GET_POD_CLUSTER_MAP_SUFFIX = " )";
|
||||||
|
@Inject
|
||||||
|
protected HostPodDao _hostPodDao;
|
||||||
|
|
||||||
protected final HostPodDaoImpl _hostPodDao = ComponentLocator.inject(HostPodDaoImpl.class);
|
public ClusterDaoImpl() {
|
||||||
|
|
||||||
protected ClusterDaoImpl() {
|
|
||||||
super();
|
super();
|
||||||
|
|
||||||
HyTypeWithoutGuidSearch = createSearchBuilder();
|
HyTypeWithoutGuidSearch = createSearchBuilder();
|
||||||
|
|||||||
@ -2371,19 +2371,5 @@ CREATE TABLE `cloud`.`nicira_nvp_nic_map` (
|
|||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
CREATE TABLE `cloud`.`image_data_store` (
|
|
||||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
|
|
||||||
`name` varchar(255) NOT NULL COMMENT 'name of data store',
|
|
||||||
`image_provider_id` bigint unsigned NOT NULL COMMENT 'id of image_data_store_provider',
|
|
||||||
PRIMARY KEY(`id`),
|
|
||||||
CONSTRAINT `fk_tags__image_data_store_provider_id` FOREIGN KEY(`image_provider_id`) REFERENCES `image_data_store_provider`(`id`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
||||||
|
|
||||||
CREATE TABLE `cloud`.`image_data_store_provider` (
|
|
||||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
|
|
||||||
`name` varchar(255) NOT NULL COMMENT 'name of data store provider',
|
|
||||||
PRIMARY KEY(`id`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
||||||
|
|
||||||
SET foreign_key_checks = 1;
|
SET foreign_key_checks = 1;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user