You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pr...@apache.org on 2013/01/03 20:54:03 UTC

[3/6] Register Host and unit test

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e61e200/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostTagsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostTagsDaoImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostTagsDaoImpl.java
new file mode 100644
index 0000000..2ad3631
--- /dev/null
+++ b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostTagsDaoImpl.java
@@ -0,0 +1,75 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.engine.datacenter.entity.api.db.dao;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ejb.Local;
+
+import org.springframework.stereotype.Component;
+
+import com.cloud.host.HostTagVO;
+import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.SearchBuilder;
+import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.Transaction;
+
+@Component
+@Local(value=HostTagsDao.class)
+public class HostTagsDaoImpl extends GenericDaoBase<HostTagVO, Long> implements HostTagsDao {
+    protected final SearchBuilder<HostTagVO> HostSearch;
+    
+    protected HostTagsDaoImpl() {
+        HostSearch = createSearchBuilder();
+        HostSearch.and("hostId", HostSearch.entity().getHostId(), SearchCriteria.Op.EQ);
+        HostSearch.done();        
+    }
+
+    @Override
+    public List<String> gethostTags(long hostId) {
+        SearchCriteria<HostTagVO> sc = HostSearch.create();
+        sc.setParameters("hostId", hostId);
+        
+        List<HostTagVO> results = search(sc, null);
+        List<String> hostTags = new ArrayList<String>(results.size());
+        for (HostTagVO result : results) {
+        	hostTags.add(result.getTag());
+        }
+
+        return hostTags;
+    }
+    
+    @Override
+    public void persist(long hostId, List<String> hostTags) {
+        Transaction txn = Transaction.currentTxn();
+
+        txn.start();
+        SearchCriteria<HostTagVO> sc = HostSearch.create();
+        sc.setParameters("hostId", hostId);
+        expunge(sc);
+        
+        for (String tag : hostTags) {
+            tag = tag.trim();
+            if(tag.length() > 0) {
+                HostTagVO vo = new HostTagVO(hostId, tag);
+                persist(vo);
+            }
+        }
+        txn.commit();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e61e200/engine/orchestration/src/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java
index 2dc652f..f503530 100644
--- a/engine/orchestration/src/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java
+++ b/engine/orchestration/src/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java
@@ -32,6 +32,8 @@ import org.apache.cloudstack.engine.datacenter.entity.api.ClusterEntity;
 import org.apache.cloudstack.engine.datacenter.entity.api.ClusterEntityImpl;
 import org.apache.cloudstack.engine.datacenter.entity.api.DataCenterResourceEntity.State;
 import org.apache.cloudstack.engine.datacenter.entity.api.DataCenterResourceManager;
+import org.apache.cloudstack.engine.datacenter.entity.api.HostEntity;
+import org.apache.cloudstack.engine.datacenter.entity.api.HostEntityImpl;
 import org.apache.cloudstack.engine.datacenter.entity.api.PodEntity;
 import org.apache.cloudstack.engine.datacenter.entity.api.PodEntityImpl;
 import org.apache.cloudstack.engine.datacenter.entity.api.StorageEntity;
@@ -89,9 +91,14 @@ public class ProvisioningServiceImpl implements ProvisioningService {
     }
 
     @Override
-    public String registerHost(String name, List<String> tags, Map<String, String> details) {
-        // TODO Auto-generated method stub
-        return null;
+    public HostEntity registerHost(String hostUuid, String name, String owner, List<String> tags, Map<String, String> details) {
+    	HostEntityImpl hostEntity = new HostEntityImpl(hostUuid, manager);
+    	hostEntity.setOwner(owner);
+    	hostEntity.setName(name);
+    	hostEntity.setDetails(details);
+    	
+    	hostEntity.persist();
+    	return hostEntity;
     }
 
     @Override
@@ -120,9 +127,9 @@ public class ProvisioningServiceImpl implements ProvisioningService {
     }
 
     @Override
-    public void deregisterHost() {
-        // TODO Auto-generated method stub
-
+    public void deregisterHost(String uuid) {
+    	HostEntityImpl hostEntity = new HostEntityImpl(uuid, manager);
+    	hostEntity.disable();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e61e200/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ChildTestConfiguration.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ChildTestConfiguration.java b/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ChildTestConfiguration.java
index 13e44ab..72f956e 100644
--- a/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ChildTestConfiguration.java
+++ b/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ChildTestConfiguration.java
@@ -3,6 +3,7 @@ package org.apache.cloudstack.engine.provisioning.test;
 
 import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.ClusterDao;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.DataCenterDao;
+import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.HostDao;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.HostPodDao;
 import org.mockito.Mockito;
 import org.springframework.context.annotation.Bean;
@@ -27,4 +28,8 @@ public class ChildTestConfiguration {
 		return Mockito.mock(ClusterDao.class);
 	}
 
+	@Bean
+	public HostDao hostDao() {
+		return Mockito.mock(HostDao.class);
+	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e61e200/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ProvisioningTest.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ProvisioningTest.java b/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ProvisioningTest.java
index 72ad834..70b5b93 100644
--- a/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ProvisioningTest.java
+++ b/engine/orchestration/test/org/apache/cloudstack/engine/provisioning/test/ProvisioningTest.java
@@ -12,10 +12,12 @@ import javax.inject.Inject;
 
 import org.apache.cloudstack.engine.datacenter.entity.api.ClusterEntity;
 import org.apache.cloudstack.engine.datacenter.entity.api.DataCenterResourceEntity.State;
+import org.apache.cloudstack.engine.datacenter.entity.api.HostEntity;
 import org.apache.cloudstack.engine.datacenter.entity.api.PodEntity;
 import org.apache.cloudstack.engine.datacenter.entity.api.ZoneEntity;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.ClusterDao;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.DataCenterDao;
+import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.HostDao;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.HostPodDao;
 import org.apache.cloudstack.engine.service.api.ProvisioningService;
 import org.junit.Before;
@@ -28,6 +30,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.ClusterVO;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.DataCenterVO;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.HostPodVO;
+import org.apache.cloudstack.engine.datacenter.entity.api.db.HostVO;
 
 import com.cloud.dc.DataCenter.NetworkType;
 
@@ -49,6 +52,8 @@ public class ProvisioningTest extends TestCase {
 	@Inject
 	ClusterDao _clusterDao;
 
+	@Inject
+	HostDao _hostDao;
 	
     @Before
 	public void setUp() {
@@ -63,7 +68,12 @@ public class ProvisioningTest extends TestCase {
 		
     	ClusterVO cluster = new ClusterVO();
 		Mockito.when(_clusterDao.findByUUID(Mockito.anyString())).thenReturn(cluster);
-		Mockito.when(_clusterDao.persist((ClusterVO) Mockito.anyObject())).thenReturn(cluster);    	    	
+		Mockito.when(_clusterDao.persist((ClusterVO) Mockito.anyObject())).thenReturn(cluster);
+		
+		HostVO host = new HostVO("68765876598");
+		Mockito.when(_hostDao.findByUUID(Mockito.anyString())).thenReturn(host);
+		Mockito.when(_hostDao.persist((HostVO) Mockito.anyObject())).thenReturn(host);    	    	
+		
     }
 
 	private void registerAndEnableZone() {
@@ -90,12 +100,21 @@ public class ProvisioningTest extends TestCase {
 		boolean result = cluster.enable();
 		System.out.println("result:"+result);
 	}
+	
+	private void registerAndEnableHost() {
+		HostEntity host = service.registerHost("1265476542", "lab","owner", null, new HashMap<String, String>());
+		State state = host.getState();
+		System.out.println("state:"+state);
+		boolean result = host.enable();
+		System.out.println("result:"+result);
+	}
 
 	@Test
 	public void testProvisioning() {
-		registerAndEnableZone();
-		registerAndEnablePod();
-		registerAndEnableCluster();
+		//registerAndEnableZone();
+		//registerAndEnablePod();
+		//registerAndEnableCluster();
+		registerAndEnableHost();
 	}