Updated Branches:
  refs/heads/javelin d4cb74c77 -> e436d4327

create volume from template unit test is passed


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/e436d432
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/e436d432
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/e436d432

Branch: refs/heads/javelin
Commit: e436d4327f1c9344cc5d98931d46856f79eeb389
Parents: d4cb74c
Author: Edison Su <[email protected]>
Authored: Mon Nov 26 11:42:21 2012 -0800
Committer: Edison Su <[email protected]>
Committed: Mon Nov 26 11:42:34 2012 -0800

----------------------------------------------------------------------
 .../datastore/DefaultPrimaryDataStoreImpl.java     |    8 +-
 .../datastore/db/PrimaryDataStoreDaoImpl.java      |    3 +-
 .../driver/DefaultPrimaryDataStoreDriverImpl.java  |    2 +-
 .../DefaultPrimaryDataStoreLifeCycleImpl.java      |    1 +
 .../image/motion/DefaultImageMotionStrategy.java   |    6 -
 .../volume/TemplateOnPrimaryDataStoreObject.java   |    7 +-
 .../TemplatePrimaryDataStoreManagerImpl.java       |    8 +-
 .../storage/test/ChildTestConfiguration.java       |   28 +++++
 .../cloudstack/storage/test/StorageTest.java       |   20 ++++
 .../cloudstack/storage/test/TestConfiguration.java |   21 ++++
 .../cloudstack/storage/test/XenEndpoint.java       |    5 +
 .../cloudstack/storage/test/volumeServiceTest.java |   87 ++++++++++++++-
 engine/storage/test/resource/storageContext.xml    |    5 +-
 server/src/com/cloud/dao/EntityManagerImpl.java    |    6 +
 server/src/com/cloud/dc/dao/ClusterDaoImpl.java    |    7 +-
 setup/db/create-schema.sql                         |   14 ---
 16 files changed, 191 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
index 696085d..c543271 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
@@ -27,10 +27,14 @@ import org.apache.cloudstack.storage.volume.db.VolumeVO;
 
 import org.apache.log4j.Logger;
 
+import com.cloud.dao.EntityManager;
 import com.cloud.host.HostVO;
 import com.cloud.host.dao.HostDao;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 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 edu.emory.mathcs.backport.java.util.Collections;
@@ -42,8 +46,8 @@ public class DefaultPrimaryDataStoreImpl implements 
PrimaryDataStore {
     protected PrimaryDataStoreInfo pdsInfo;
     @Inject
     private VolumeDao volumeDao;
-    //@Inject
-    private HostDao hostDao;
+    @Inject
+    HostDao hostDao;
     @Inject
     TemplatePrimaryDataStoreManager templatePrimaryStoreMgr;
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
index adf131f..49dad27 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
@@ -46,7 +46,6 @@ import com.cloud.utils.db.SearchCriteria.Func;
 import com.cloud.utils.db.SearchCriteria.Op;
 import com.cloud.utils.exception.CloudRuntimeException;
 
-@Component
 public class PrimaryDataStoreDaoImpl extends 
GenericDaoBase<PrimaryDataStoreVO, Long> implements PrimaryDataStoreDao {
     protected final SearchBuilder<PrimaryDataStoreVO> AllFieldSearch;
     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 FindPoolTagDetails = "SELECT 
storage_pool_details.name FROM storage_pool_details WHERE pool_id = ? and value 
= ?";
 
-    protected PrimaryDataStoreDaoImpl() {
+    public PrimaryDataStoreDaoImpl() {
         AllFieldSearch = createSearchBuilder();
         AllFieldSearch.and("name", AllFieldSearch.entity().getName(), 
SearchCriteria.Op.EQ);
         AllFieldSearch.and("uuid", AllFieldSearch.entity().getUuid(), 
SearchCriteria.Op.EQ);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
index 7a1e335..c3ecb6e 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
@@ -93,7 +93,7 @@ public class DefaultPrimaryDataStoreDriverImpl implements 
PrimaryDataStoreDriver
         VolumeTO vol = new VolumeTO(volume);
         ImageOnPrimayDataStoreTO image = new 
ImageOnPrimayDataStoreTO(template);
         CreateVolumeFromBaseImageCommand cmd = new 
CreateVolumeFromBaseImageCommand(vol, image);
-        List<EndPoint> endPoints = volume.getDataStore().getEndPoints();
+        List<EndPoint> endPoints = 
template.getPrimaryDataStore().getEndPoints();
 
         Answer answer = sendOutCommand(cmd, endPoints);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java
index c16c230..c4c7216 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java
@@ -85,6 +85,7 @@ public class DefaultPrimaryDataStoreLifeCycleImpl implements 
PrimaryDataStoreLif
         dataStore.setHostAddress(parser.getHost());
         dataStore.setPath(parser.getPath());
         dataStore.setStorageProviderId(this.provider.getId());
+        dataStore.setClusterId(Long.parseLong(dsInfos.get("clusterId")));
         dataStore = dataStoreDao.persist(dataStore);
         //TODO: add extension point for each data store
         return this.provider.getDataStore(dataStore.getId());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionStrategy.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionStrategy.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionStrategy.java
index 7ec63e0..625cdc9 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionStrategy.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionStrategy.java
@@ -18,16 +18,10 @@
  */
 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.PrimaryDataStoreInfo;
-import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
 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.TemplateTO;
-import org.apache.cloudstack.storage.to.VolumeTO;
 import org.apache.cloudstack.storage.volume.TemplateOnPrimaryDataStoreInfo;
 import org.springframework.stereotype.Component;
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/src/org/apache/cloudstack/storage/volume/TemplateOnPrimaryDataStoreObject.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/volume/TemplateOnPrimaryDataStoreObject.java
 
b/engine/storage/src/org/apache/cloudstack/storage/volume/TemplateOnPrimaryDataStoreObject.java
index 25ae38d..b3326e1 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/volume/TemplateOnPrimaryDataStoreObject.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/volume/TemplateOnPrimaryDataStoreObject.java
@@ -18,8 +18,6 @@
  */
 package org.apache.cloudstack.storage.volume;
 
-import javax.inject.Inject;
-
 import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
 import org.apache.cloudstack.storage.image.TemplateInfo;
 import org.apache.cloudstack.storage.volume.db.TemplatePrimaryDataStoreDao;
@@ -31,13 +29,14 @@ public class TemplateOnPrimaryDataStoreObject implements 
TemplateOnPrimaryDataSt
     protected PrimaryDataStoreInfo dataStore;
     protected TemplateInfo template;
     protected TemplatePrimaryDataStoreVO vo;
-    @Inject
     TemplatePrimaryDataStoreDao templateStoreDao;
 
-    public TemplateOnPrimaryDataStoreObject(PrimaryDataStoreInfo 
primaryDataStore, TemplateInfo template, TemplatePrimaryDataStoreVO vo) {
+    public TemplateOnPrimaryDataStoreObject(PrimaryDataStoreInfo 
primaryDataStore, TemplateInfo template, TemplatePrimaryDataStoreVO vo,
+               TemplatePrimaryDataStoreDao templateStoreDao) {
         this.dataStore = primaryDataStore;
         this.template = template;
         this.vo = vo;
+        this.templateStoreDao = templateStoreDao;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/src/org/apache/cloudstack/storage/volume/TemplatePrimaryDataStoreManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/volume/TemplatePrimaryDataStoreManagerImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/volume/TemplatePrimaryDataStoreManagerImpl.java
index 95ea49f..19704be 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/volume/TemplatePrimaryDataStoreManagerImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/volume/TemplatePrimaryDataStoreManagerImpl.java
@@ -41,7 +41,7 @@ public class TemplatePrimaryDataStoreManagerImpl implements 
TemplatePrimaryDataS
 
         TemplatePrimaryDataStoreVO templateStoreVO = new 
TemplatePrimaryDataStoreVO(dataStore.getId(), template.getId());
         templateStoreVO = templateStoreDao.persist(templateStoreVO);
-        TemplateOnPrimaryDataStoreObject templateStoreObject = new 
TemplateOnPrimaryDataStoreObject(dataStore, template, templateStoreVO);
+        TemplateOnPrimaryDataStoreObject templateStoreObject = new 
TemplateOnPrimaryDataStoreObject(dataStore, template, templateStoreVO, 
templateStoreDao);
         return templateStoreObject;
     }
 
@@ -52,7 +52,11 @@ public class TemplatePrimaryDataStoreManagerImpl implements 
TemplatePrimaryDataS
         sc.addAnd(sc.getEntity().getPoolId(), Op.EQ, dataStore.getId());
         sc.addAnd(sc.getEntity().getDownloadState(), Op.EQ, 
VMTemplateStorageResourceAssoc.Status.DOWNLOADED);
         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;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/test/org/apache/cloudstack/storage/test/ChildTestConfiguration.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/test/org/apache/cloudstack/storage/test/ChildTestConfiguration.java
 
b/engine/storage/test/org/apache/cloudstack/storage/test/ChildTestConfiguration.java
new file mode 100644
index 0000000..9077a5a
--- /dev/null
+++ 
b/engine/storage/test/org/apache/cloudstack/storage/test/ChildTestConfiguration.java
@@ -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);
+       }*/
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/test/org/apache/cloudstack/storage/test/StorageTest.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/test/org/apache/cloudstack/storage/test/StorageTest.java 
b/engine/storage/test/org/apache/cloudstack/storage/test/StorageTest.java
new file mode 100644
index 0000000..2a285cb
--- /dev/null
+++ b/engine/storage/test/org/apache/cloudstack/storage/test/StorageTest.java
@@ -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");
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/test/org/apache/cloudstack/storage/test/TestConfiguration.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/test/org/apache/cloudstack/storage/test/TestConfiguration.java 
b/engine/storage/test/org/apache/cloudstack/storage/test/TestConfiguration.java
new file mode 100644
index 0000000..42cd8fb
--- /dev/null
+++ 
b/engine/storage/test/org/apache/cloudstack/storage/test/TestConfiguration.java
@@ -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();
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/test/org/apache/cloudstack/storage/test/XenEndpoint.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/test/org/apache/cloudstack/storage/test/XenEndpoint.java 
b/engine/storage/test/org/apache/cloudstack/storage/test/XenEndpoint.java
new file mode 100644
index 0000000..a96d7ec
--- /dev/null
+++ b/engine/storage/test/org/apache/cloudstack/storage/test/XenEndpoint.java
@@ -0,0 +1,5 @@
+package org.apache.cloudstack.storage.test;
+
+public class XenEndpoint {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java 
b/engine/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
index 2c83210..c6eafa5 100644
--- 
a/engine/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
+++ 
b/engine/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
@@ -20,9 +20,10 @@ package org.apache.cloudstack.storage.test;
 
 import static org.junit.Assert.*;
 
-import java.awt.List;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 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.type.RootDisk;
 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.db.PrimaryDataStoreDao;
+import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreVO;
 import 
org.apache.cloudstack.storage.datastore.lifecycle.PrimaryDataStoreLifeCycle;
 import 
org.apache.cloudstack.storage.datastore.provider.DefaultPrimaryDatastoreProviderImpl;
 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.junit4.SpringJUnit4ClassRunner;
+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.utils.component.ComponentInject;
 import com.cloud.utils.db.DB;
@@ -89,11 +114,68 @@ public class volumeServiceTest {
     ImageDataDao imageDataDao;
     @Inject
     VolumeDao volumeDao;
+    @Inject 
+    HostDao hostDao;
+    @Inject
+    HostPodDao podDao;
+    @Inject
+    ClusterDao clusterDao;
+    @Inject
+    DataCenterDao dcDao;
+    @Inject
+    PrimaryDataStoreDao primaryStoreDao;
     @Inject
     PrimaryDataStoreProviderManager primaryDataStoreProviderMgr;
+    @Inject
+    AgentManager agentMgr;
+    Long dcId;
+    Long clusterId;
        @Before
        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() {
@@ -145,7 +227,8 @@ public class volumeServiceTest {
             PrimaryDataStoreLifeCycle lifeCycle = 
provider.getDataStoreLifeCycle();
             Map<String, String> params = new HashMap<String, String>();
             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");
             PrimaryDataStoreInfo primaryDataStoreInfo = 
lifeCycle.registerDataStore(params);
             return primaryDataStoreInfo;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/engine/storage/test/resource/storageContext.xml
----------------------------------------------------------------------
diff --git a/engine/storage/test/resource/storageContext.xml 
b/engine/storage/test/resource/storageContext.xml
index dbc997f..86811c3 100644
--- a/engine/storage/test/resource/storageContext.xml
+++ b/engine/storage/test/resource/storageContext.xml
@@ -15,7 +15,8 @@
   <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.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" />
   <tx:annotation-driven transaction-manager="transactionManager" />
@@ -35,5 +36,7 @@
     <constructor-arg name="classToBeMocked"
       value="org.apache.cloudstack.storage.volume.VolumeMotionService" />
   </bean>
+  
+  <bean class="org.apache.cloudstack.storage.test.ChildTestConfiguration" />
 
 </beans>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/server/src/com/cloud/dao/EntityManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/dao/EntityManagerImpl.java 
b/server/src/com/cloud/dao/EntityManagerImpl.java
index 42d35c9..43c38ca 100644
--- a/server/src/com/cloud/dao/EntityManagerImpl.java
+++ b/server/src/com/cloud/dao/EntityManagerImpl.java
@@ -33,6 +33,7 @@ import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GenericSearchBuilder;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.SearchCriteria2;
 
 @Component
 @Local(value=EntityManager.class)
@@ -119,6 +120,11 @@ public class EntityManagerImpl implements EntityManager, 
Manager {
         GenericDao<T, ? extends Serializable> dao = (GenericDao<T, ? extends 
Serializable>)GenericDaoBase.getDao(entityType);
         return dao.customSearch(sc, null);
     }
+    
+    @Override
+    public <T, K> List<K> search(SearchCriteria2<T, K> sc) {
+       return sc.list();
+    }
 
     @Override
     public <T, K extends Serializable> void remove(Class<T> entityType, K id) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/server/src/com/cloud/dc/dao/ClusterDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/dc/dao/ClusterDaoImpl.java 
b/server/src/com/cloud/dc/dao/ClusterDaoImpl.java
index 9edf7db..f06b24d 100644
--- a/server/src/com/cloud/dc/dao/ClusterDaoImpl.java
+++ b/server/src/com/cloud/dc/dao/ClusterDaoImpl.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 
 import javax.ejb.Local;
+import javax.inject.Inject;
 
 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_SUFFIX = " )";
+    @Inject
+    protected HostPodDao _hostPodDao;
     
-    protected final HostPodDaoImpl _hostPodDao = 
ComponentLocator.inject(HostPodDaoImpl.class);
-    
-    protected ClusterDaoImpl() {
+    public ClusterDaoImpl() {
         super();
         
         HyTypeWithoutGuidSearch = createSearchBuilder();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e436d432/setup/db/create-schema.sql
----------------------------------------------------------------------
diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql
index 3d66f75..aa8aeb8 100755
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@ -2371,19 +2371,5 @@ CREATE TABLE `cloud`.`nicira_nvp_nic_map` (
   PRIMARY KEY (`id`)
 ) 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;
 

Reply via email to