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();
}