You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/11/17 02:23:34 UTC
ambari git commit: AMBARI-13906. Cluster cannot be deleted when it is
deployed via blueprint (Sebastian Toader via alejandro)
Repository: ambari
Updated Branches:
refs/heads/trunk 004e4f98e -> 55d0b1844
AMBARI-13906. Cluster cannot be deleted when it is deployed via blueprint (Sebastian Toader via alejandro)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/55d0b184
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/55d0b184
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/55d0b184
Branch: refs/heads/trunk
Commit: 55d0b18448542868d4f94abd388a46025d87ffbd
Parents: 004e4f9
Author: Alejandro Fernandez <af...@hortonworks.com>
Authored: Mon Nov 16 16:10:13 2015 -0800
Committer: Alejandro Fernandez <af...@hortonworks.com>
Committed: Mon Nov 16 17:23:28 2015 -0800
----------------------------------------------------------------------
.../server/orm/dao/TopologyRequestDAO.java | 12 +++++
.../server/state/alert/AlertDefinitionHash.java | 12 +++--
.../server/state/cluster/ClusterImpl.java | 5 ++
.../server/orm/dao/TopologyRequestDAOTest.java | 14 ++++++
.../server/state/cluster/ClustersTest.java | 52 ++++++++++++++++++--
5 files changed, 88 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/55d0b184/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java
index 65cd59f..a9a9e9d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java
@@ -73,4 +73,16 @@ public class TopologyRequestDAO {
public void removeByPK(Long requestId) {
remove(findById(requestId));
}
+
+ /**
+ * Removes all {@link TopologyRequestEntity} that are associated with the specified cluster ID.
+ * @param clusterId the cluster ID.
+ */
+ @Transactional
+ public void removeAll(Long clusterId) {
+ List<TopologyRequestEntity> clusterTopologyRequests = findByClusterId(clusterId);
+ for (TopologyRequestEntity topologyRequestEntity: clusterTopologyRequests)
+ remove(topologyRequestEntity);
+ }
}
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/55d0b184/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java b/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
index a3979c1..6c0a839 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
@@ -33,6 +33,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.ClusterNotFoundException;
import org.apache.ambari.server.agent.ActionQueue;
import org.apache.ambari.server.agent.AgentCommand.AgentCommandType;
import org.apache.ambari.server.agent.AlertDefinitionCommand;
@@ -596,8 +597,7 @@ public class AlertDefinitionHash {
try {
Cluster cluster = m_clusters.get().getCluster(clusterName);
if (null == cluster) {
- LOG.warn("Unable to get alert definitions for the missing cluster {}",
- clusterName);
+
return Collections.emptySet();
}
@@ -642,7 +642,13 @@ public class AlertDefinitionHash {
// add any alerts not bound to a service (host level alerts)
definitions.addAll(m_definitionDao.findAgentScoped(clusterId));
- } catch (AmbariException ambariException) {
+ }
+ catch (ClusterNotFoundException clusterNotFound) {
+ LOG.warn("Unable to get alert definitions for the missing cluster {}",
+ clusterName);
+ return Collections.emptySet();
+ }
+ catch (AmbariException ambariException) {
LOG.error("Unable to get alert definitions", ambariException);
return Collections.emptySet();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/55d0b184/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index 24c7bce..e7c1b19 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -69,6 +69,7 @@ import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.ServiceConfigDAO;
import org.apache.ambari.server.orm.dao.StackDAO;
+import org.apache.ambari.server.orm.dao.TopologyRequestDAO;
import org.apache.ambari.server.orm.dao.UpgradeDAO;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
import org.apache.ambari.server.orm.entities.ClusterConfigMappingEntity;
@@ -249,6 +250,9 @@ public class ClusterImpl implements Cluster {
@Inject
private AmbariSessionManager sessionManager;
+ @Inject
+ private TopologyRequestDAO topologyRequestDAO;
+
/**
* Data access object used for looking up stacks from the database.
*/
@@ -2018,6 +2022,7 @@ public class ClusterImpl implements Cluster {
alertDefinitionDAO.removeAll(clusterId);
alertDispatchDAO.removeAllGroups(clusterId);
upgradeDAO.removeAll(clusterId);
+ topologyRequestDAO.removeAll(clusterId);
clusterDAO.removeByPK(clusterId);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/55d0b184/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java
index f5ece39..c489eba 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java
@@ -115,4 +115,18 @@ public class TopologyRequestDAOTest {
create();
testRequestEntity(requestDAO.findByClusterId(clusterId));
}
+
+ @Test
+ public void testRemoveAll() throws Exception {
+ // Given
+ create();
+
+ // When
+ requestDAO.removeAll(clusterId);
+
+
+ // Then
+ List<TopologyRequestEntity> requestEntities = requestDAO.findByClusterId(clusterId);
+ Assert.assertEquals("All topology request entities associated with cluster should be removed !", 0, requestEntities.size());
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/55d0b184/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java
index 2d9d779..daf8d12 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.state.cluster;
+import com.google.common.collect.Maps;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
@@ -36,6 +37,7 @@ import org.apache.ambari.server.orm.dao.ClusterStateDAO;
import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.HostDAO;
+import org.apache.ambari.server.orm.dao.TopologyRequestDAO;
import org.apache.ambari.server.orm.entities.ClusterStateEntity;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostEntity;
@@ -51,6 +53,11 @@ import org.apache.ambari.server.state.ServiceComponent;
import org.apache.ambari.server.state.ServiceComponentHost;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
+import org.apache.ambari.server.topology.Blueprint;
+import org.apache.ambari.server.topology.Configuration;
+import org.apache.ambari.server.topology.HostGroupInfo;
+import org.apache.ambari.server.topology.PersistedState;
+import org.apache.ambari.server.topology.TopologyRequest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -64,6 +71,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
import static org.junit.Assert.fail;
public class ClustersTest {
@@ -77,6 +87,13 @@ public class ClustersTest {
@Inject
private HostDAO hostDAO;
+ @Inject
+ private TopologyRequestDAO topologyRequestDAO;
+
+
+ @Inject
+ private PersistedState persistedState;
+
@Before
public void setup() throws Exception {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
@@ -451,25 +468,52 @@ public class ClustersTest {
hkdspk.setComponentName(nameNodeHost.getServiceComponentName());
Assert.assertNotNull(injector.getInstance(HostComponentStateDAO.class).findByIndex(
- nameNodeHost.getClusterId(), nameNodeHost.getServiceName(),
- nameNodeHost.getServiceComponentName(), nameNodeHostEntity.getHostId()));
+ nameNodeHost.getClusterId(), nameNodeHost.getServiceName(),
+ nameNodeHost.getServiceComponentName(), nameNodeHostEntity.getHostId()));
Assert.assertNotNull(injector.getInstance(HostComponentDesiredStateDAO.class).findByPK(hkdspk));
Assert.assertEquals(2, injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigEntity config").getResultList().size());
Assert.assertEquals(1, injector.getProvider(EntityManager.class).get().createQuery("SELECT state FROM ClusterStateEntity state").getResultList().size());
Assert.assertEquals(1, injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigMappingEntity config").getResultList().size());
+ // add topology request
+ Blueprint bp = createNiceMock(Blueprint.class);
+ expect(bp.getName()).andReturn("TestBluePrint").anyTimes();
+
+ Configuration clusterConfig = new Configuration(
+ Maps.<String, Map<String, String>>newHashMap(),
+ Maps.<String, Map<String, Map<String, String>>>newHashMap()
+ );
+
+ Map<String, HostGroupInfo> hostGroups = Maps.newHashMap();
+
+ TopologyRequest topologyRequest = createNiceMock(TopologyRequest.class);
+ expect(topologyRequest.getType()).andReturn(TopologyRequest.Type.PROVISION).anyTimes();
+ expect(topologyRequest.getBlueprint()).andReturn(bp).anyTimes();
+ expect(topologyRequest.getClusterId()).andReturn(cluster.getClusterId()).anyTimes();
+ expect(topologyRequest.getConfiguration()).andReturn(clusterConfig).anyTimes();
+ expect(topologyRequest.getDescription()).andReturn("Test description").anyTimes();
+ expect(topologyRequest.getHostGroupInfo()).andReturn(hostGroups).anyTimes();
+
+
+ replay(bp, topologyRequest);
+
+ persistedState.persistTopologyRequest(topologyRequest);
+
+ Assert.assertEquals(1, topologyRequestDAO.findByClusterId(cluster.getClusterId()).size());
+
clusters.deleteCluster(c1);
Assert.assertEquals(2, hostDAO.findAll().size());
Assert.assertNull(injector.getInstance(HostComponentStateDAO.class).findByIndex(
- nameNodeHost.getClusterId(), nameNodeHost.getServiceName(),
- nameNodeHost.getServiceComponentName(), nameNodeHostEntity.getHostId()));
+ nameNodeHost.getClusterId(), nameNodeHost.getServiceName(),
+ nameNodeHost.getServiceComponentName(), nameNodeHostEntity.getHostId()));
Assert.assertNull(injector.getInstance(HostComponentDesiredStateDAO.class).findByPK(hkdspk));
Assert.assertEquals(0, injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigEntity config").getResultList().size());
Assert.assertEquals(0, injector.getProvider(EntityManager.class).get().createQuery("SELECT state FROM ClusterStateEntity state").getResultList().size());
Assert.assertEquals(0, injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigMappingEntity config").getResultList().size());
+ Assert.assertEquals(0, topologyRequestDAO.findByClusterId(cluster.getClusterId()).size());
}
@Test