You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2015/04/16 16:37:27 UTC

[4/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity Relationships (jonathanhurley)

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
index 11a2b22..1fa4a4d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
@@ -71,18 +71,21 @@ import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.orm.dao.BlueprintDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
 import org.apache.ambari.server.orm.entities.BlueprintConfigEntity;
 import org.apache.ambari.server.orm.entities.BlueprintConfiguration;
 import org.apache.ambari.server.orm.entities.BlueprintEntity;
 import org.apache.ambari.server.orm.entities.HostGroupComponentEntity;
 import org.apache.ambari.server.orm.entities.HostGroupConfigEntity;
 import org.apache.ambari.server.orm.entities.HostGroupEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.state.AutoDeployInfo;
 import org.apache.ambari.server.state.ComponentInfo;
 import org.apache.ambari.server.state.DependencyInfo;
 import org.apache.ambari.server.state.ServiceInfo;
 import org.apache.ambari.server.utils.StageUtils;
 import org.easymock.Capture;
+import org.easymock.EasyMock;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Rule;
@@ -104,12 +107,23 @@ public class BlueprintResourceProviderTest {
 
   private final static BlueprintResourceProvider provider = createProvider();
   private final static BlueprintDAO dao = createStrictMock(BlueprintDAO.class);
+  private final static StackDAO stackDAO = createNiceMock(StackDAO.class);
   private final static Gson gson = new Gson();
   private final static AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
 
   @BeforeClass
   public static void initClass() {
-    BlueprintResourceProvider.init(dao, gson, metaInfo);
+    BlueprintResourceProvider.init(dao, stackDAO, gson, metaInfo);
+
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName("test-stack-name");
+    stackEntity.setStackVersion("test-stack-version");
+
+    expect(
+        stackDAO.find(EasyMock.anyObject(String.class),
+            EasyMock.anyObject(String.class))).andReturn(stackEntity).anyTimes();
+
+    replay(stackDAO);
   }
 
   @Before
@@ -1167,8 +1181,10 @@ public class BlueprintResourceProviderTest {
 
   private void validateEntity(BlueprintEntity entity, boolean containsConfig) {
     assertEquals(BLUEPRINT_NAME, entity.getBlueprintName());
-    assertEquals("test-stack-name", entity.getStackName());
-    assertEquals("test-stack-version", entity.getStackVersion());
+
+    StackEntity stackEntity = entity.getStack();
+    assertEquals("test-stack-name", stackEntity.getStackName());
+    assertEquals("test-stack-version", stackEntity.getStackVersion());
 
     Collection<HostGroupEntity> hostGroupEntities = entity.getHostGroups();
 
@@ -1289,15 +1305,20 @@ public class BlueprintResourceProviderTest {
   private static BlueprintResourceProvider createProvider() {
     return new BlueprintResourceProvider(
         PropertyHelper.getPropertyIds(Resource.Type.Blueprint),
-        PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint),
-        null);
+        PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint), null);
   }
 
   private BlueprintEntity createEntity(Map<String, Object> properties) {
     BlueprintEntity entity = new BlueprintEntity();
     entity.setBlueprintName((String) properties.get(BlueprintResourceProvider.BLUEPRINT_NAME_PROPERTY_ID));
-    entity.setStackName((String) properties.get(BlueprintResourceProvider.STACK_NAME_PROPERTY_ID));
-    entity.setStackVersion((String) properties.get(BlueprintResourceProvider.STACK_VERSION_PROPERTY_ID));
+
+    String stackName = (String) properties.get(BlueprintResourceProvider.STACK_NAME_PROPERTY_ID);
+    String stackVersion = (String) properties.get(BlueprintResourceProvider.STACK_VERSION_PROPERTY_ID);
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
+    entity.setStack(stackEntity);
 
     Set<Map<String, Object>> hostGroupProperties = (Set<Map<String, Object>>) properties.get(
         BlueprintResourceProvider.HOST_GROUP_PROPERTY_ID);

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
index c72ddc5..0d888e3 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
@@ -72,6 +72,7 @@ import org.apache.ambari.server.orm.entities.BlueprintEntity;
 import org.apache.ambari.server.orm.entities.HostGroupComponentEntity;
 import org.apache.ambari.server.orm.entities.HostGroupConfigEntity;
 import org.apache.ambari.server.orm.entities.HostGroupEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.state.AutoDeployInfo;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.ConfigHelper;
@@ -171,6 +172,10 @@ public class ClusterResourceProviderTest {
     String stackVersion = "1.23";
     String clusterName = "c1";
 
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
     ConfigHelper configHelper = createMock(ConfigHelper.class);
     BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
     AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
@@ -268,10 +273,10 @@ public class ClusterResourceProviderTest {
     stackConfigurationResponses2.add(stackConfigurationResponse3);
     stackConfigurationResponses2.add(stackConfigurationResponse4);
     stackConfigurationResponses2.add(stackConfigurationResponse7);
-    
+
     Set<StackConfigurationResponse> stackConfigurationResponses3 = new LinkedHashSet<StackConfigurationResponse>();
     stackConfigurationResponses3.add(stackConfigurationResponse6);
-    
+
     Collection<HostGroupComponentEntity> hostGroupComponents = new LinkedHashSet<HostGroupComponentEntity>();
     hostGroupComponents.add(hostGroupComponent1);
     hostGroupComponents.add(hostGroupComponent2);
@@ -326,8 +331,7 @@ public class ClusterResourceProviderTest {
     // expectations
     expect(request.getProperties()).andReturn(propertySet).anyTimes();
     expect(blueprintDAO.findByName(blueprintName)).andReturn(blueprint);
-    expect(blueprint.getStackName()).andReturn(stackName);
-    expect(blueprint.getStackVersion()).andReturn(stackVersion);
+    expect(blueprint.getStack()).andReturn(stackEntity);
     expect(blueprint.getConfigurations()).andReturn(configurations).anyTimes();
     expect(blueprint.validateConfigurations(metaInfo, true)).andReturn(
         Collections.<String, Map<String, Collection<String>>>emptyMap());
@@ -353,10 +357,10 @@ public class ClusterResourceProviderTest {
 
     expect(managementController.getStackConfigurations(capture(serviceConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses1);
-    
+
     expect(managementController.getStackLevelConfigurations(capture(serviceLevelConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses3);
-    
+
     expect(stackConfigurationResponse1.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse1.getPropertyName()).andReturn("property1");
     expect(stackConfigurationResponse1.getPropertyValue()).andReturn("value1");
@@ -364,15 +368,15 @@ public class ClusterResourceProviderTest {
 
     expect(managementController.getStackComponents(capture(serviceComponentRequestCapture2))).
         andReturn(stackServiceComponentResponses2);
-    
+
     expect(stackServiceComponentResponse3.getComponentName()).andReturn("component3");
 
     expect(managementController.getStackConfigurations(capture(serviceConfigurationRequestCapture2))).
         andReturn(stackConfigurationResponses2);
-    
+
     expect(managementController.getStackLevelConfigurations(capture(serviceLevelConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses3);
-    
+
     expect(stackConfigurationResponse2.getType()).andReturn("hdfs-site.xml");
     expect(stackConfigurationResponse2.getPropertyName()).andReturn("property2");
     expect(stackConfigurationResponse2.getPropertyValue()).andReturn("value2");
@@ -389,7 +393,7 @@ public class ClusterResourceProviderTest {
     expect(stackConfigurationResponse5.getType()).andReturn("hive-site.xml");
     expect(stackConfigurationResponse5.getPropertyName()).andReturn("javax.jdo.option.ConnectionURL");
     expect(stackConfigurationResponse5.getPropertyValue()).andReturn("localhost:12345");
-    
+
     expect(stackConfigurationResponse6.getType()).andReturn("cluster-env.xml").anyTimes();
     expect(stackConfigurationResponse6.getPropertyName()).andReturn("rqw").anyTimes();
     expect(stackConfigurationResponse6.getPropertyValue()).andReturn("aaaa").anyTimes();
@@ -662,6 +666,10 @@ public class ClusterResourceProviderTest {
     String stackVersion = "1.23";
     String clusterName = "c1";
 
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
     BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
     AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
     AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
@@ -736,7 +744,7 @@ public class ClusterResourceProviderTest {
 
     Set<StackConfigurationResponse> stackConfigurationResponses3 = new LinkedHashSet<StackConfigurationResponse>();
     stackConfigurationResponses2.add(stackConfigurationResponse8);
-    
+
     Collection<HostGroupComponentEntity> hostGroupComponents = new LinkedHashSet<HostGroupComponentEntity>();
     hostGroupComponents.add(hostGroupComponent1);
     hostGroupComponents.add(hostGroupComponent2);
@@ -779,8 +787,7 @@ public class ClusterResourceProviderTest {
     // expectations
     expect(request.getProperties()).andReturn(propertySet).anyTimes();
     expect(blueprintDAO.findByName(blueprintName)).andReturn(blueprint);
-    expect(blueprint.getStackName()).andReturn(stackName);
-    expect(blueprint.getStackVersion()).andReturn(stackVersion);
+    expect(blueprint.getStack()).andReturn(stackEntity);
     expect(blueprint.getConfigurations()).andReturn(Collections.<BlueprintConfigEntity>singletonList(blueprintConfig)).anyTimes();
     expect(blueprint.validateConfigurations(metaInfo, true)).andReturn(allMissingPasswords);
 
@@ -802,10 +809,10 @@ public class ClusterResourceProviderTest {
 
     expect(managementController.getStackConfigurations(capture(serviceConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses1);
-    
+
     expect(managementController.getStackLevelConfigurations(capture(serviceLevelConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses3);
-    
+
     expect(stackConfigurationResponse1.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse1.getPropertyName()).andReturn("property1");
     expect(stackConfigurationResponse1.getPropertyValue()).andReturn("value1");
@@ -816,14 +823,14 @@ public class ClusterResourceProviderTest {
 
     expect(managementController.getStackConfigurations(capture(serviceConfigurationRequestCapture2))).
         andReturn(stackConfigurationResponses2);
-    
+
     expect(managementController.getStackLevelConfigurations(capture(serviceLevelConfigurationRequestCapture1))).
-        andReturn(stackConfigurationResponses3); 
-    
+        andReturn(stackConfigurationResponses3);
+
     expect(stackConfigurationResponse8.getType()).andReturn("cluster-env.xml").anyTimes();
     expect(stackConfigurationResponse8.getPropertyName()).andReturn("rqw").anyTimes();
     expect(stackConfigurationResponse8.getPropertyValue()).andReturn("aaaa").anyTimes();
-    
+
     expect(stackConfigurationResponse2.getType()).andReturn("hdfs-site.xml");
     expect(stackConfigurationResponse2.getPropertyName()).andReturn("property2");
     expect(stackConfigurationResponse2.getPropertyValue()).andReturn("value2");
@@ -835,15 +842,15 @@ public class ClusterResourceProviderTest {
     expect(stackConfigurationResponse4.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse4.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse4.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse5.getType()).andReturn("hive-env.xml");
     expect(stackConfigurationResponse5.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse5.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse6.getType()).andReturn("hbase-env.xml");
     expect(stackConfigurationResponse6.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse6.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse7.getType()).andReturn("falcon-env.xml");
     expect(stackConfigurationResponse7.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse7.getPropertyValue()).andReturn("value3");
@@ -900,6 +907,10 @@ public class ClusterResourceProviderTest {
     String stackVersion = "1.23";
     String clusterName = "c1";
 
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
     ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
     BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
     AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
@@ -964,7 +975,7 @@ public class ClusterResourceProviderTest {
     stackConfigurationResponses2.add(stackConfigurationResponse2);
     stackConfigurationResponses2.add(stackConfigurationResponse3);
     stackConfigurationResponses2.add(stackConfigurationResponse4);
-    
+
     Set<StackConfigurationResponse> stackConfigurationResponses3 = new LinkedHashSet<StackConfigurationResponse>();
     stackConfigurationResponses2.add(stackConfigurationResponse5);
 
@@ -992,8 +1003,7 @@ public class ClusterResourceProviderTest {
     // expectations
     expect(request.getProperties()).andReturn(propertySet).anyTimes();
     expect(blueprintDAO.findByName(blueprintName)).andReturn(blueprint);
-    expect(blueprint.getStackName()).andReturn(stackName);
-    expect(blueprint.getStackVersion()).andReturn(stackVersion);
+    expect(blueprint.getStack()).andReturn(stackEntity);
 
     expect(metaInfo.getComponentDependencies("test", "1.23", "service1", "component1")).
         andReturn(Collections.<DependencyInfo>emptyList());
@@ -1013,10 +1023,10 @@ public class ClusterResourceProviderTest {
 
     expect(managementController.getStackConfigurations(capture(serviceConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses1);
-    
+
     expect(managementController.getStackLevelConfigurations(capture(serviceLevelConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses3);
-    
+
     expect(stackConfigurationResponse1.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse1.getPropertyName()).andReturn("property1");
     expect(stackConfigurationResponse1.getPropertyValue()).andReturn("value1");
@@ -1041,7 +1051,7 @@ public class ClusterResourceProviderTest {
     expect(stackConfigurationResponse4.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse4.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse4.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse5.getType()).andReturn("cluster-env.xml").anyTimes();
     expect(stackConfigurationResponse5.getPropertyName()).andReturn("rqw").anyTimes();
     expect(stackConfigurationResponse5.getPropertyValue()).andReturn("aaaa").anyTimes();
@@ -1090,6 +1100,10 @@ public class ClusterResourceProviderTest {
     String stackVersion = "1.23";
     String clusterName = "c1";
 
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
     ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
     BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
     AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
@@ -1115,7 +1129,7 @@ public class ClusterResourceProviderTest {
     Capture<Set<StackConfigurationRequest>> serviceConfigurationRequestCapture1 = new Capture<Set<StackConfigurationRequest>>();
     Capture<Set<StackConfigurationRequest>> serviceConfigurationRequestCapture2 = new Capture<Set<StackConfigurationRequest>>();
     Capture<Set<StackLevelConfigurationRequest>> serviceLevelConfigurationRequestCapture1 = new Capture<Set<StackLevelConfigurationRequest>>();
-    
+
     BlueprintConfigEntity blueprintConfig = createNiceMock(BlueprintConfigEntity.class);
 
     HostGroupEntity hostGroup = createNiceMock(HostGroupEntity.class);
@@ -1153,7 +1167,7 @@ public class ClusterResourceProviderTest {
     stackConfigurationResponses2.add(stackConfigurationResponse2);
     stackConfigurationResponses2.add(stackConfigurationResponse3);
     stackConfigurationResponses2.add(stackConfigurationResponse4);
-    
+
     Set<StackConfigurationResponse> stackConfigurationResponses3 = new LinkedHashSet<StackConfigurationResponse>();
     stackConfigurationResponses2.add(stackConfigurationResponse5);
 
@@ -1191,8 +1205,7 @@ public class ClusterResourceProviderTest {
     // expectations
     expect(request.getProperties()).andReturn(propertySet).anyTimes();
     expect(blueprintDAO.findByName(blueprintName)).andReturn(blueprint);
-    expect(blueprint.getStackName()).andReturn(stackName);
-    expect(blueprint.getStackVersion()).andReturn(stackVersion);
+    expect(blueprint.getStack()).andReturn(stackEntity);
 
     expect(metaInfo.getComponentDependencies("test", "1.23", "service1", "component1")).
         andReturn(Collections.<DependencyInfo>emptyList());
@@ -1212,7 +1225,7 @@ public class ClusterResourceProviderTest {
 
     expect(managementController.getStackConfigurations(capture(serviceConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses1);
-    
+
     expect(managementController.getStackLevelConfigurations(capture(serviceLevelConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses3);
 
@@ -1228,7 +1241,7 @@ public class ClusterResourceProviderTest {
         andReturn(stackConfigurationResponses2);
     expect(managementController.getStackLevelConfigurations(capture(serviceLevelConfigurationRequestCapture1))).
         andReturn(stackConfigurationResponses3);
-    
+
     expect(stackConfigurationResponse2.getType()).andReturn("hdfs-site.xml");
     expect(stackConfigurationResponse2.getPropertyName()).andReturn("property2");
     expect(stackConfigurationResponse2.getPropertyValue()).andReturn("value2");
@@ -1240,7 +1253,7 @@ public class ClusterResourceProviderTest {
     expect(stackConfigurationResponse4.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse4.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse4.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse5.getType()).andReturn("cluster-env.xml").anyTimes();
     expect(stackConfigurationResponse5.getPropertyName()).andReturn("rqw").anyTimes();
     expect(stackConfigurationResponse5.getPropertyValue()).andReturn("aaaa").anyTimes();
@@ -1288,6 +1301,10 @@ public class ClusterResourceProviderTest {
     String stackVersion = "1.23";
     String clusterName = "c1";
 
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
     ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
     BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
     AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
@@ -1313,7 +1330,7 @@ public class ClusterResourceProviderTest {
     Capture<Set<StackConfigurationRequest>> serviceConfigurationRequestCapture1 = new Capture<Set<StackConfigurationRequest>>();
     Capture<Set<StackConfigurationRequest>> serviceConfigurationRequestCapture2 = new Capture<Set<StackConfigurationRequest>>();
     Capture<Set<StackLevelConfigurationRequest>> serviceLevelConfigurationRequestCapture1 = new Capture<Set<StackLevelConfigurationRequest>>();
-    
+
     BlueprintConfigEntity blueprintConfig = createNiceMock(BlueprintConfigEntity.class);
 
     HostGroupEntity hostGroup = createNiceMock(HostGroupEntity.class);
@@ -1351,7 +1368,7 @@ public class ClusterResourceProviderTest {
     stackConfigurationResponses2.add(stackConfigurationResponse2);
     stackConfigurationResponses2.add(stackConfigurationResponse3);
     stackConfigurationResponses2.add(stackConfigurationResponse4);
-    
+
     Set<StackConfigurationResponse> stackConfigurationResponses3 = new LinkedHashSet<StackConfigurationResponse>();
     stackConfigurationResponses3.add(stackConfigurationResponse5);
 
@@ -1389,8 +1406,7 @@ public class ClusterResourceProviderTest {
     // expectations
     expect(request.getProperties()).andReturn(propertySet).anyTimes();
     expect(blueprintDAO.findByName(blueprintName)).andReturn(blueprint);
-    expect(blueprint.getStackName()).andReturn(stackName);
-    expect(blueprint.getStackVersion()).andReturn(stackVersion);
+    expect(blueprint.getStack()).andReturn(stackEntity);
 
     expect(metaInfo.getComponentDependencies("test", "1.23", "service1", "component1")).
         andReturn(Collections.<DependencyInfo>emptyList());
@@ -1436,7 +1452,7 @@ public class ClusterResourceProviderTest {
     expect(stackConfigurationResponse4.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse4.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse4.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse5.getType()).andReturn("cluster-env.xml").anyTimes();
     expect(stackConfigurationResponse5.getPropertyName()).andReturn("rqw").anyTimes();
     expect(stackConfigurationResponse5.getPropertyValue()).andReturn("aaaa").anyTimes();
@@ -1484,6 +1500,10 @@ public class ClusterResourceProviderTest {
     String stackVersion = "1.23";
     String clusterName = "c1";
 
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
     ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
     BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
     AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
@@ -1505,7 +1525,7 @@ public class ClusterResourceProviderTest {
     Capture<Set<StackServiceComponentRequest>> serviceComponentRequestCapture1 = new Capture<Set<StackServiceComponentRequest>>();
     Capture<Set<StackServiceComponentRequest>> serviceComponentRequestCapture2 = new Capture<Set<StackServiceComponentRequest>>();
     Capture<Set<StackLevelConfigurationRequest>> serviceLevelConfigurationRequestCapture1 = new Capture<Set<StackLevelConfigurationRequest>>();
-    
+
     StackConfigurationResponse stackConfigurationResponse1 = createNiceMock(StackConfigurationResponse.class);
     StackConfigurationResponse stackConfigurationResponse2 = createNiceMock(StackConfigurationResponse.class);
     StackConfigurationResponse stackConfigurationResponse3 = createNiceMock(StackConfigurationResponse.class);
@@ -1538,7 +1558,7 @@ public class ClusterResourceProviderTest {
 
     Capture<Set<ClusterRequest>> persistUIStateRequestCapture = new Capture<Set<ClusterRequest>>();
     Capture<Map<String, String>> persistUIStatePropertyMapCapture = new Capture<Map<String, String>>();
-    
+
     Capture<Request> serviceRequestCapture = new Capture<Request>();
     Capture<Request> componentRequestCapture = new Capture<Request>();
     Capture<Request> componentRequestCapture2 = new Capture<Request>();
@@ -1574,7 +1594,7 @@ public class ClusterResourceProviderTest {
 
     Set<StackConfigurationResponse> stackConfigurationResponses3 = new LinkedHashSet<StackConfigurationResponse>();
     stackConfigurationResponses3.add(stackConfigurationResponse8);
-    
+
     Collection<HostGroupComponentEntity> hostGroupComponents = new LinkedHashSet<HostGroupComponentEntity>();
     hostGroupComponents.add(hostGroupComponent1);
     hostGroupComponents.add(hostGroupComponent2);
@@ -1619,8 +1639,7 @@ public class ClusterResourceProviderTest {
     // expectations
     expect(request.getProperties()).andReturn(propertySet).anyTimes();
     expect(blueprintDAO.findByName(blueprintName)).andReturn(blueprint);
-    expect(blueprint.getStackName()).andReturn(stackName);
-    expect(blueprint.getStackVersion()).andReturn(stackVersion);
+    expect(blueprint.getStack()).andReturn(stackEntity);
     expect(blueprint.getConfigurations()).andReturn(Collections.<BlueprintConfigEntity>singletonList(blueprintConfig)).anyTimes();
     expect(blueprint.validateConfigurations(metaInfo, true)).andReturn(allMissingPasswords);
 
@@ -1668,19 +1687,19 @@ public class ClusterResourceProviderTest {
     expect(stackConfigurationResponse4.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse4.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse4.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse5.getType()).andReturn("hbase-env.xml");
     expect(stackConfigurationResponse5.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse5.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse6.getType()).andReturn("falcon-env.xml");
     expect(stackConfigurationResponse6.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse6.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse7.getType()).andReturn("oozie-env.xml");
     expect(stackConfigurationResponse7.getPropertyName()).andReturn("oozie_user");
     expect(stackConfigurationResponse7.getPropertyValue()).andReturn("oozie");
-    
+
     expect(stackConfigurationResponse8.getType()).andReturn("cluster-env.xml").anyTimes();
     expect(stackConfigurationResponse8.getPropertyName()).andReturn("rqw").anyTimes();
     expect(stackConfigurationResponse8.getPropertyValue()).andReturn("aaaa").anyTimes();
@@ -1798,7 +1817,7 @@ public class ClusterResourceProviderTest {
     Set<ClusterRequest> updateClusterRequest2 = updateClusterRequestCapture2.getValue();
     Set<ClusterRequest> updateClusterRequest3 = updateClusterRequestCapture3.getValue();
     Set<ClusterRequest> persistUIStateRequest = persistUIStateRequestCapture.getValue();
-    
+
     assertEquals(1, updateClusterRequest1.size());
     assertEquals(1, updateClusterRequest2.size());
     assertEquals(1, updateClusterRequest3.size());
@@ -1835,7 +1854,7 @@ public class ClusterResourceProviderTest {
     }
 
     assertEquals(7, mapConfigRequests.size());
-    
+
     ConfigurationRequest hdfsConfigRequest = mapConfigRequests.get("hdfs-site");
     assertEquals(1, hdfsConfigRequest.getProperties().size());
     assertEquals("value2", hdfsConfigRequest.getProperties().get("property2"));
@@ -1914,6 +1933,10 @@ public class ClusterResourceProviderTest {
     String stackVersion = "1.23";
     String clusterName = "c1";
 
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
     ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
     BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
     AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
@@ -1962,7 +1985,7 @@ public class ClusterResourceProviderTest {
     Capture<Map<String, String>> updateClusterPropertyMapCapture2 = new Capture<Map<String, String>>();
     Capture<Set<ClusterRequest>> updateClusterRequestCapture3 = new Capture<Set<ClusterRequest>>();
     Capture<Map<String, String>> updateClusterPropertyMapCapture3 = new Capture<Map<String, String>>();
-    
+
     Capture<Request> serviceRequestCapture = new Capture<Request>();
     Capture<Request> componentRequestCapture = new Capture<Request>();
     Capture<Request> componentRequestCapture2 = new Capture<Request>();
@@ -1992,7 +2015,7 @@ public class ClusterResourceProviderTest {
     stackConfigurationResponses2.add(stackConfigurationResponse2);
     stackConfigurationResponses2.add(stackConfigurationResponse3);
     stackConfigurationResponses2.add(stackConfigurationResponse4);
-    
+
     Set<StackConfigurationResponse> stackConfigurationResponses3 = new LinkedHashSet<StackConfigurationResponse>();
     stackConfigurationResponses3.add(stackConfigurationResponse5);
 
@@ -2035,8 +2058,7 @@ public class ClusterResourceProviderTest {
     // expectations
     expect(request.getProperties()).andReturn(propertySet).anyTimes();
     expect(blueprintDAO.findByName(blueprintName)).andReturn(blueprint);
-    expect(blueprint.getStackName()).andReturn(stackName);
-    expect(blueprint.getStackVersion()).andReturn(stackVersion);
+    expect(blueprint.getStack()).andReturn(stackEntity);
     expect(blueprint.getConfigurations()).andReturn(Collections.<BlueprintConfigEntity>singletonList(blueprintConfig));
     expect(blueprint.validateConfigurations(metaInfo, true)).andReturn(
         Collections.<String, Map<String, Collection<String>>>emptyMap());
@@ -2084,7 +2106,7 @@ public class ClusterResourceProviderTest {
     expect(stackConfigurationResponse4.getType()).andReturn("core-site.xml");
     expect(stackConfigurationResponse4.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse4.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse5.getType()).andReturn("cluster-env.xml").anyTimes();
     expect(stackConfigurationResponse5.getPropertyName()).andReturn("rqw").anyTimes();
     expect(stackConfigurationResponse5.getPropertyValue()).andReturn("aaaa").anyTimes();
@@ -2153,6 +2175,10 @@ public class ClusterResourceProviderTest {
     String stackVersion = "1.23";
     String clusterName = "c1";
 
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName(stackName);
+    stackEntity.setStackVersion(stackVersion);
+
     ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
     BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
     AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
@@ -2250,7 +2276,7 @@ public class ClusterResourceProviderTest {
     stackConfigurationResponses2.add(stackConfigurationResponse6);
     stackConfigurationResponses2.add(stackConfigurationResponse7);
     stackConfigurationResponses2.add(stackConfigurationResponse8);
-    
+
     Set<StackConfigurationResponse> stackConfigurationResponses3 = new LinkedHashSet<StackConfigurationResponse>();
     stackConfigurationResponses3.add(stackConfigurationResponse9);
 
@@ -2309,8 +2335,7 @@ public class ClusterResourceProviderTest {
     // expectations
     expect(request.getProperties()).andReturn(propertySet).anyTimes();
     expect(blueprintDAO.findByName(blueprintName)).andReturn(blueprint);
-    expect(blueprint.getStackName()).andReturn(stackName);
-    expect(blueprint.getStackVersion()).andReturn(stackVersion);
+    expect(blueprint.getStack()).andReturn(stackEntity);
     expect(blueprint.getConfigurations()).andReturn(configurations).times(3);
     expect(blueprint.validateConfigurations(metaInfo, true)).andReturn(
         Collections.<String, Map<String, Collection<String>>>emptyMap());
@@ -2372,15 +2397,15 @@ public class ClusterResourceProviderTest {
     expect(stackConfigurationResponse6.getType()).andReturn("hbase-env.xml");
     expect(stackConfigurationResponse6.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse6.getPropertyValue()).andReturn("value3");
-   
+
     expect(stackConfigurationResponse7.getType()).andReturn("falcon-env.xml");
     expect(stackConfigurationResponse7.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse7.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse8.getType()).andReturn("hive-env.xml");
     expect(stackConfigurationResponse8.getPropertyName()).andReturn("property3");
     expect(stackConfigurationResponse8.getPropertyValue()).andReturn("value3");
-    
+
     expect(stackConfigurationResponse9.getType()).andReturn("cluster-env.xml").anyTimes();
     expect(stackConfigurationResponse9.getPropertyName()).andReturn("rqw").anyTimes();
     expect(stackConfigurationResponse9.getPropertyValue()).andReturn("aaaa").anyTimes();
@@ -2436,7 +2461,7 @@ public class ClusterResourceProviderTest {
     replay(blueprintDAO, managementController, request, response, blueprint, stackServiceResponse1, stackServiceResponse2,
         stackServiceComponentResponse1, stackServiceComponentResponse2, stackServiceComponentResponse3,
         stackServiceComponentResponse4, stackConfigurationResponse1, stackConfigurationResponse2,
-        stackConfigurationResponse3, stackConfigurationResponse4, stackConfigurationResponse5, stackConfigurationResponse6, 
+        stackConfigurationResponse3, stackConfigurationResponse4, stackConfigurationResponse5, stackConfigurationResponse6,
         stackConfigurationResponse7, stackConfigurationResponse8, stackConfigurationResponse9, blueprintConfig,
         blueprintConfig2, hostGroup, hostGroupComponent1, hostGroupComponent2, hostGroupComponent3, hostGroupComponent4,
         hostGroupConfig, serviceResourceProvider, componentResourceProvider, hostResourceProvider,
@@ -2748,7 +2773,7 @@ public class ClusterResourceProviderTest {
     expect(managementController.updateClusters(
         AbstractResourceProviderTest.Matcher.getClusterRequestSet(102L, "Cluster102", State.INSTALLED.name(), SecurityType.NONE, "HDP-0.1", null), eq(mapRequestProps))).
         andReturn(response).once();
-    
+
     expect(managementController.updateClusters(
         AbstractResourceProviderTest.Matcher.getClusterRequestSet(103L, null, null, null, "HDP-0.1", null), eq(mapRequestProps))).
         andReturn(response).once();
@@ -2857,7 +2882,7 @@ public class ClusterResourceProviderTest {
 
     Predicate  predicate = new PredicateBuilder().property(
         ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
-    
+
     ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
         Resource.Type.Cluster,
         PropertyHelper.getPropertyIds(Resource.Type.Cluster),
@@ -3054,7 +3079,7 @@ public class ClusterResourceProviderTest {
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
     expect(mockManagementController.getStackLevelConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
-    
+
     expect(mockAmbariMetaInfo.getComponentDependencies("HDP", "2.1", "FALCON", "FALCON_SERVER")).andReturn(Collections.<DependencyInfo>emptyList());
 
     mockSupport.replayAll();
@@ -3136,7 +3161,7 @@ public class ClusterResourceProviderTest {
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
     expect(mockManagementController.getStackLevelConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
-    
+
     expect(mockAmbariMetaInfo.getComponentDependencies("HDP", "2.1", "OOZIE", "OOZIE_SERVER")).andReturn(Collections.<DependencyInfo>emptyList());
 
     mockSupport.replayAll();
@@ -3214,7 +3239,7 @@ public class ClusterResourceProviderTest {
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
     expect(mockManagementController.getStackLevelConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
-    
+
     expect(mockAmbariMetaInfo.getComponentDependencies("HDP", "2.1", "FALCON", "FALCON_SERVER")).andReturn(Collections.<DependencyInfo>emptyList());
 
     mockSupport.replayAll();
@@ -3291,7 +3316,7 @@ public class ClusterResourceProviderTest {
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
     expect(mockManagementController.getStackLevelConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
-    
+
     expect(mockAmbariMetaInfo.getComponentDependencies("HDP", "2.1", "HIVE", "HIVE_SERVER")).andReturn(Collections.<DependencyInfo>emptyList());
 
     mockSupport.replayAll();
@@ -3369,7 +3394,7 @@ public class ClusterResourceProviderTest {
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
     expect(mockManagementController.getStackLevelConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
-    
+
     expect(mockAmbariMetaInfo.getComponentDependencies("HDP", "2.1", "HBASE", "HBASE_SERVER")).andReturn(Collections.<DependencyInfo>emptyList());
 
     mockSupport.replayAll();
@@ -3647,15 +3672,15 @@ public class ClusterResourceProviderTest {
     @Override
     ResourceProvider getResourceProvider(Resource.Type type) {
       if (type == Resource.Type.Service) {
-        return this.serviceResourceProvider;
+        return serviceResourceProvider;
       } else if (type == Resource.Type.Component) {
-        return this.componentResourceProvider;
+        return componentResourceProvider;
       } else if (type == Resource.Type.Host) {
-        return this.hostResourceProvider;
+        return hostResourceProvider;
       } else if (type == Resource.Type.HostComponent) {
-        return this.hostComponentResourceProvider;
+        return hostComponentResourceProvider;
       } else if (type == Resource.Type.ConfigGroup) {
-        return this.configGroupResourceProvider;
+        return configGroupResourceProvider;
       } else {
         fail("Unexpected resource provider type requested");
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
index 1cc75c7..55932db 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
@@ -178,7 +178,9 @@ public class ClusterStackVersionResourceProviderTest {
 
     expect(sch.getServiceName()).andReturn("HIVE").anyTimes();
 
-    expect(repositoryVersionDAOMock.findByStackAndVersion(anyObject(String.class),
+    expect(
+        repositoryVersionDAOMock.findByStackAndVersion(
+            anyObject(StackId.class),
             anyObject(String.class))).andReturn(repoVersion);
 
     expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.<HostRoleCommand>emptyList()).anyTimes();

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java
index 1ee282a..ea6e56e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProviderTest.java
@@ -40,6 +40,8 @@ import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.dao.ClusterVersionDAO;
 import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
+import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.StackInfo;
 import org.apache.ambari.server.state.stack.UpgradePack;
 import org.easymock.EasyMock;
@@ -65,22 +67,33 @@ public class CompatibleRepositoryVersionResourceProviderTest {
     final AmbariMetaInfo ambariMetaInfo = EasyMock.createMock(AmbariMetaInfo.class);
     final ClusterVersionDAO clusterVersionDAO = EasyMock.createMock(ClusterVersionDAO.class);
 
+    StackEntity hdp11Stack = new StackEntity();
+    hdp11Stack.setStackName("HDP");
+    hdp11Stack.setStackVersion("1.1");
+
     RepositoryVersionEntity entity1 = new RepositoryVersionEntity();
     entity1.setDisplayName("name1");
     entity1.setOperatingSystems(jsonStringRedhat6);
-    entity1.setStack("HDP-1.1");
+    entity1.setStack(hdp11Stack);
     entity1.setVersion("1.1.1.1");
 
+    StackEntity hdp22Stack = new StackEntity();
+    hdp22Stack.setStackName("HDP");
+    hdp22Stack.setStackVersion("2.2");
+
     RepositoryVersionEntity entity2 = new RepositoryVersionEntity();
     entity2.setDisplayName("name2");
     entity2.setOperatingSystems(jsonStringRedhat6);
-    entity2.setStack("HDP-2.2");
+    entity2.setStack(hdp22Stack);
     entity2.setVersion("2.2.2.2");
 
     final RepositoryVersionDAO repoVersionDAO = EasyMock.createMock(RepositoryVersionDAO.class);
 
-    expect(repoVersionDAO.findByStack("HDP-1.1")).andReturn(Collections.singletonList(entity1)).atLeastOnce();
-    expect(repoVersionDAO.findByStack("HDP-2.2")).andReturn(Collections.singletonList(entity2)).atLeastOnce();
+    StackId stackId11 = new StackId("HDP", "1.1");
+    StackId stackId22 = new StackId("HDP", "2.2");
+
+    expect(repoVersionDAO.findByStack(stackId11)).andReturn(Collections.singletonList(entity1)).atLeastOnce();
+    expect(repoVersionDAO.findByStack(stackId22)).andReturn(Collections.singletonList(entity2)).atLeastOnce();
     replay(repoVersionDAO);
 
     final StackInfo stack1 = new StackInfo() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
index aa391ca..d1e7297 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
@@ -181,12 +181,17 @@ public class HostStackVersionResourceProviderTest {
 
     expect(sch.getServiceName()).andReturn("HIVE").anyTimes();
 
-    expect(repositoryVersionDAOMock.findByStackAndVersion(anyObject(String.class),
+    expect(
+        repositoryVersionDAOMock.findByStackAndVersion(
+            anyObject(StackId.class),
             anyObject(String.class))).andReturn(repoVersion);
 
+    expect(
+        hostVersionDAOMock.findByClusterStackVersionAndHost(
+            anyObject(String.class), anyObject(StackId.class),
+            anyObject(String.class), anyObject(String.class))).andReturn(
+        hostVersionEntityMock);
 
-    expect(hostVersionDAOMock.findByClusterStackVersionAndHost(anyObject(String.class),
-            anyObject(String.class), anyObject(String.class), anyObject(String.class))).andReturn(hostVersionEntityMock);
     expect(hostVersionEntityMock.getState()).andReturn(RepositoryVersionState.INSTALL_FAILED).anyTimes();
 
     expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.<HostRoleCommand>emptyList()).anyTimes();
@@ -284,12 +289,17 @@ public class HostStackVersionResourceProviderTest {
 
     expect(sch.getServiceName()).andReturn("HIVE").anyTimes();
 
-    expect(repositoryVersionDAOMock.findByStackAndVersion(anyObject(String.class),
+    expect(
+        repositoryVersionDAOMock.findByStackAndVersion(
+            anyObject(StackId.class),
             anyObject(String.class))).andReturn(repoVersion);
 
+    expect(
+        hostVersionDAOMock.findByClusterStackVersionAndHost(
+            anyObject(String.class), anyObject(StackId.class),
+            anyObject(String.class), anyObject(String.class))).andReturn(
+        hostVersionEntityMock);
 
-    expect(hostVersionDAOMock.findByClusterStackVersionAndHost(anyObject(String.class),
-            anyObject(String.class), anyObject(String.class), anyObject(String.class))).andReturn(hostVersionEntityMock);
     expect(hostVersionEntityMock.getState()).andReturn(RepositoryVersionState.OUT_OF_SYNC).anyTimes();
 
     expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.<HostRoleCommand>emptyList()).anyTimes();

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
index 6e50df6..442bcb2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
@@ -41,8 +41,10 @@ import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.dao.ClusterVersionDAO;
 import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
 import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.state.OperatingSystemInfo;
 import org.apache.ambari.server.state.RepositoryVersionState;
 import org.apache.ambari.server.state.StackInfo;
@@ -149,7 +151,10 @@ public class RepositoryVersionResourceProviderTest {
       }
     });
 
-    Mockito.when(clusterVersionDAO.findByStackAndVersion(Mockito.anyString(), Mockito.anyString())).thenAnswer(new Answer<List<ClusterVersionEntity>>() {
+    Mockito.when(
+        clusterVersionDAO.findByStackAndVersion(Mockito.anyString(),
+            Mockito.anyString(), Mockito.anyString())).thenAnswer(
+        new Answer<List<ClusterVersionEntity>>() {
 
       @Override
       public List<ClusterVersionEntity> answer(InvocationOnMock invocation)
@@ -174,6 +179,14 @@ public class RepositoryVersionResourceProviderTest {
     });
 
     injector.getInstance(GuiceJpaInitializer.class);
+
+    // because AmbariMetaInfo is mocked, the stacks are never inserted into
+    // the database, so insert HDP-1.1 manually
+    StackDAO stackDAO = injector.getInstance(StackDAO.class);
+    StackEntity stackEntity = new StackEntity();
+    stackEntity.setStackName("HDP");
+    stackEntity.setStackVersion("1.1");
+    stackDAO.create(stackEntity);
   }
 
   @Test
@@ -203,12 +216,16 @@ public class RepositoryVersionResourceProviderTest {
 
   @Test
   public void testGetResources() throws Exception {
+    StackDAO stackDAO = injector.getInstance(StackDAO.class);
+    StackEntity stackEntity = stackDAO.find("HDP", "1.1");
+    Assert.assertNotNull(stackEntity);
+
     final ResourceProvider provider = injector.getInstance(ResourceProviderFactory.class).getRepositoryVersionResourceProvider();
     final RepositoryVersionDAO repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
     final RepositoryVersionEntity entity = new RepositoryVersionEntity();
     entity.setDisplayName("name");
     entity.setOperatingSystems(jsonStringRedhat6);
-    entity.setStack("HDP-1.1");
+    entity.setStack(stackEntity);
     entity.setVersion("1.1.1.1");
 
     final Request getRequest = PropertyHelper.getReadRequest(RepositoryVersionResourceProvider.REPOSITORY_VERSION_ID_PROPERTY_ID,
@@ -225,11 +242,15 @@ public class RepositoryVersionResourceProviderTest {
 
   @Test
   public void testValidateRepositoryVersion() throws Exception {
+    StackDAO stackDAO = injector.getInstance(StackDAO.class);
+    StackEntity stackEntity = stackDAO.find("HDP", "1.1");
+    Assert.assertNotNull(stackEntity);
+
     final RepositoryVersionResourceProvider provider = (RepositoryVersionResourceProvider) injector.getInstance(ResourceProviderFactory.class).getRepositoryVersionResourceProvider();
 
     final RepositoryVersionEntity entity = new RepositoryVersionEntity();
     entity.setDisplayName("name");
-    entity.setStack("HDP-1.1");
+    entity.setStack(stackEntity);
     entity.setUpgradePackage("pack1");
     entity.setVersion("1.1");
     entity.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
@@ -267,7 +288,9 @@ public class RepositoryVersionResourceProviderTest {
     } catch (Exception ex) {
     }
 
-    entity.setStack("BIGTOP");
+    StackEntity bigtop = new StackEntity();
+    stackEntity.setStackName("BIGTOP");
+    entity.setStack(bigtop);
     try {
       provider.validateRepositoryVersion(entity);
       Assert.fail("Should throw exception");
@@ -276,7 +299,7 @@ public class RepositoryVersionResourceProviderTest {
 
     final RepositoryVersionDAO repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
     entity.setDisplayName("name");
-    entity.setStack("HDP-1.1");
+    entity.setStack(stackEntity);
     entity.setUpgradePackage("pack1");
     entity.setVersion("1.1");
     entity.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
@@ -285,7 +308,7 @@ public class RepositoryVersionResourceProviderTest {
     final RepositoryVersionEntity entity2 = new RepositoryVersionEntity();
     entity2.setId(2l);
     entity2.setDisplayName("name2");
-    entity2.setStack("HDP-1.1");
+    entity2.setStack(stackEntity);
     entity2.setUpgradePackage("pack1");
     entity2.setVersion("1.2");
     entity2.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
index b8c761a..3fe0131 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
@@ -17,13 +17,20 @@
  */
 package org.apache.ambari.server.controller.internal;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import org.apache.ambari.server.controller.jmx.TestStreamProvider;
 import org.apache.ambari.server.controller.metrics.JMXPropertyProviderTest;
 import org.apache.ambari.server.controller.metrics.ganglia.GangliaPropertyProviderTest.TestGangliaHostProvider;
+import org.apache.ambari.server.controller.metrics.ganglia.GangliaPropertyProviderTest.TestGangliaServiceProvider;
 import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.PropertyProvider;
 import org.apache.ambari.server.controller.spi.Request;
@@ -46,17 +53,9 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.apache.ambari.server.controller.metrics.ganglia.GangliaPropertyProviderTest.TestGangliaServiceProvider;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 
 /**
  * Tests the stack defined property provider.
@@ -81,13 +80,16 @@ public class StackDefinedPropertyProviderTest {
     helper = injector.getInstance(OrmTestHelper.class);
 
     clusters = injector.getInstance(Clusters.class);
-    clusters.addCluster("c1");
+    StackId stackId = new StackId("HDP-2.0.5");
+
+    clusters.addCluster("c1", stackId);
 
     Cluster cluster = clusters.getCluster("c1");
-    StackId stackId = new StackId("HDP-2.0.5");
+
     cluster.setDesiredStackVersion(stackId);
-    helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
-    cluster.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+    helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+    cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+        RepositoryVersionState.UPGRADING);
 
     clusters.addHost("h1");
     Host host = clusters.getHost("h1");

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index 27a99dd..6b691e0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -52,10 +52,12 @@ import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.OrmTestHelper;
 import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
 import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
 import org.apache.ambari.server.orm.dao.StageDAO;
 import org.apache.ambari.server.orm.dao.UpgradeDAO;
 import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.orm.entities.StageEntity;
 import org.apache.ambari.server.orm.entities.UpgradeEntity;
 import org.apache.ambari.server.orm.entities.UpgradeGroupEntity;
@@ -96,8 +98,9 @@ public class UpgradeResourceProviderTest {
   private Injector injector;
   private Clusters clusters;
   private OrmTestHelper helper;
-  AmbariManagementController amc;
+  private AmbariManagementController amc;
   private ConfigHelper configHelper;
+  private StackDAO stackDAO;
 
   @Before
   public void before() throws Exception {
@@ -125,6 +128,7 @@ public class UpgradeResourceProviderTest {
     field.setAccessible(true);
     field.set(null, amc);
 
+    stackDAO = injector.getInstance(StackDAO.class);
     upgradeDao = injector.getInstance(UpgradeDAO.class);
     repoVersionDao = injector.getInstance(RepositoryVersionDAO.class);
 
@@ -132,10 +136,12 @@ public class UpgradeResourceProviderTest {
     replay(publisher);
     ViewRegistry.initInstance(new ViewRegistry(publisher));
 
+    StackEntity stackEntity = stackDAO.find("HDP", "2.1.1");
+
     RepositoryVersionEntity repoVersionEntity = new RepositoryVersionEntity();
     repoVersionEntity.setDisplayName("My New Version 1");
     repoVersionEntity.setOperatingSystems("");
-    repoVersionEntity.setStack("HDP-2.1.1");
+    repoVersionEntity.setStack(stackEntity);
     repoVersionEntity.setUpgradePackage("upgrade_test");
     repoVersionEntity.setVersion("2.2.2.1");
     repoVersionDao.create(repoVersionEntity);
@@ -143,20 +149,21 @@ public class UpgradeResourceProviderTest {
     repoVersionEntity = new RepositoryVersionEntity();
     repoVersionEntity.setDisplayName("My New Version 2");
     repoVersionEntity.setOperatingSystems("");
-    repoVersionEntity.setStack("HDP-2.1.1");
+    repoVersionEntity.setStack(stackEntity);
     repoVersionEntity.setUpgradePackage("upgrade_test");
     repoVersionEntity.setVersion("2.2.2.2");
     repoVersionDao.create(repoVersionEntity);
 
 
     clusters = injector.getInstance(Clusters.class);
-    clusters.addCluster("c1");
-    Cluster cluster = clusters.getCluster("c1");
+
     StackId stackId = new StackId("HDP-2.1.1");
-    cluster.setDesiredStackVersion(stackId);
-    helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
-    cluster.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
-    cluster.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+    clusters.addCluster("c1", stackId);
+    Cluster cluster = clusters.getCluster("c1");
+
+    helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+    cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+    cluster.transitionClusterVersion(stackId, stackId.getStackVersion(), RepositoryVersionState.CURRENT);
 
     clusters.addHost("h1");
     Host host = clusters.getHost("h1");
@@ -215,7 +222,7 @@ public class UpgradeResourceProviderTest {
     List<StageEntity> stageEntities = stageDAO.findByRequestId(entity.getRequestId());
     Gson gson = new Gson();
     for (StageEntity se : stageEntities) {
-      Map<String, String> map = (Map<String, String>) gson.fromJson(se.getCommandParamsStage(), Map.class);
+      Map<String, String> map = gson.fromJson(se.getCommandParamsStage(), Map.class);
       assertTrue(map.containsKey("upgrade_direction"));
       assertEquals("upgrade", map.get("upgrade_direction"));
     }
@@ -498,10 +505,11 @@ public class UpgradeResourceProviderTest {
   public void testDirectionUpgrade() throws Exception {
     Cluster cluster = clusters.getCluster("c1");
 
+    StackEntity stackEntity = stackDAO.find("HDP", "2.1.1");
     RepositoryVersionEntity repoVersionEntity = new RepositoryVersionEntity();
     repoVersionEntity.setDisplayName("My New Version 3");
     repoVersionEntity.setOperatingSystems("");
-    repoVersionEntity.setStack("HDP-2.1.1");
+    repoVersionEntity.setStack(stackEntity);
     repoVersionEntity.setUpgradePackage("upgrade_direction");
     repoVersionEntity.setVersion("2.2.2.3");
     repoVersionDao.create(repoVersionEntity);

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProviderTest.java
index b6af863..295fd52 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/RestMetricsPropertyProviderTest.java
@@ -18,12 +18,21 @@
 
 package org.apache.ambari.server.controller.metrics;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.ambari.server.controller.internal.PropertyInfo;
 import org.apache.ambari.server.controller.internal.ResourceImpl;
 import org.apache.ambari.server.controller.internal.StackDefinedPropertyProvider;
 import org.apache.ambari.server.controller.jmx.TestStreamProvider;
+import org.apache.ambari.server.controller.metrics.MetricsServiceProvider.MetricsService;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.SystemException;
@@ -39,16 +48,9 @@ import org.apache.ambari.server.state.stack.MetricDefinition;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
 
-import static org.apache.ambari.server.controller.metrics.MetricsServiceProvider.MetricsService;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
 
 
 /**
@@ -88,9 +90,8 @@ public class RestMetricsPropertyProviderTest {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
     injector.getInstance(GuiceJpaInitializer.class);
     clusters = injector.getInstance(Clusters.class);
-    clusters.addCluster("c1");
+    clusters.addCluster("c1", new StackId("HDP-2.1.1"));
     c1 = clusters.getCluster("c1");
-    c1.setDesiredStackVersion(new StackId("HDP-2.1.1"));
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
index 6073677..b4ec0a8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
@@ -89,7 +89,9 @@ public class EventsTest {
     m_schFactory = m_injector.getInstance(ServiceComponentHostFactory.class);
 
     m_clusterName = "foo";
-    m_clusters.addCluster(m_clusterName);
+    StackId stackId = new StackId("HDP", "2.0.6");
+
+    m_clusters.addCluster(m_clusterName, stackId);
     m_clusters.addHost(HOSTNAME);
 
     Host host = m_clusters.getHost(HOSTNAME);
@@ -102,10 +104,11 @@ public class EventsTest {
 
     m_cluster = m_clusters.getCluster(m_clusterName);
     Assert.assertNotNull(m_cluster);
-    StackId stackId = new StackId("HDP", "2.0.6");
+
     m_cluster.setDesiredStackVersion(stackId);
-    m_helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
-    m_cluster.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+    m_helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+    m_cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+        RepositoryVersionState.UPGRADING);
 
     m_clusters.mapHostToCluster(HOSTNAME, m_clusterName);
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
index 8cb705f..aa8b860 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
@@ -78,15 +78,15 @@ public class HostVersionOutOfSyncListenerTest {
     helper = injector.getInstance(OrmTestHelper.class);
     hostVersionDAO = injector.getInstance(HostVersionDAO.class);
     serviceComponentHostFactory = injector.getInstance(ServiceComponentHostFactory.class);
-    clusters.addCluster("c1");
+
+    StackId stackId = new StackId(this.stackId);
+    clusters.addCluster("c1", stackId);
     c1 = clusters.getCluster("c1");
     addHost("h1");
 
-    StackId stackId = new StackId(this.stackId);
-    c1.setDesiredStackVersion(stackId);
-    helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
-    c1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
-    c1.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+    helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+    c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+    c1.transitionClusterVersion(stackId, stackId.getStackVersion(), RepositoryVersionState.CURRENT);
     clusters.mapHostToCluster("h1", "c1");
   }
 
@@ -116,9 +116,9 @@ public class HostVersionOutOfSyncListenerTest {
 
 
     StackId stackId = new StackId(this.stackId);
-    RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(stackId.getStackId(),
+    RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(stackId,
             INSTALLED_VERSION);
-    c1.createClusterVersion(stackId.getStackId(), INSTALLED_VERSION, "admin", RepositoryVersionState.INSTALLING);
+    c1.createClusterVersion(stackId, INSTALLED_VERSION, "admin", RepositoryVersionState.INSTALLING);
     c1.setCurrentStackVersion(stackId);
     c1.recalculateAllClusterVersionStates();
     checkStackVersionState(stackId.getStackId(), INSTALLED_VERSION, RepositoryVersionState.INSTALLING);
@@ -182,9 +182,8 @@ public class HostVersionOutOfSyncListenerTest {
     h1.setState(HostState.HEALTHY);
 
     StackId stackId = new StackId(this.stackId);
-    RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(stackId.getStackId(),
-            "1.0-1000");
-    c1.createClusterVersion(stackId.getStackId(), "1.0-1000", "admin", RepositoryVersionState.INSTALLING);
+    RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(stackId,"1.0-1000");
+    c1.createClusterVersion(stackId, "1.0-1000", "admin", RepositoryVersionState.INSTALLING);
     c1.setCurrentStackVersion(stackId);
     c1.recalculateAllClusterVersionStates();
     checkStackVersionState(stackId.getStackId(), "1.0-1000", RepositoryVersionState.INSTALLING);

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
index 6041066..7ffce7e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
@@ -37,6 +37,7 @@ import javax.persistence.EntityManager;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.HostRoleStatus;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.orm.dao.AlertDefinitionDAO;
 import org.apache.ambari.server.orm.dao.AlertDispatchDAO;
 import org.apache.ambari.server.orm.dao.AlertsDAO;
@@ -47,6 +48,7 @@ import org.apache.ambari.server.orm.dao.HostVersionDAO;
 import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
 import org.apache.ambari.server.orm.dao.RequestDAO;
 import org.apache.ambari.server.orm.dao.ResourceTypeDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
 import org.apache.ambari.server.orm.dao.StageDAO;
 import org.apache.ambari.server.orm.dao.UserDAO;
 import org.apache.ambari.server.orm.entities.AlertDefinitionEntity;
@@ -64,6 +66,7 @@ import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
 import org.apache.ambari.server.orm.entities.RequestEntity;
 import org.apache.ambari.server.orm.entities.ResourceEntity;
 import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.orm.entities.StageEntity;
 import org.apache.ambari.server.orm.entities.UserEntity;
 import org.apache.ambari.server.state.Cluster;
@@ -119,6 +122,9 @@ public class OrmTestHelper {
   @Inject
   public HostDAO hostDAO;
 
+  @Inject
+  private StackDAO stackDAO;
+
   public EntityManager getEntityManager() {
     return entityManagerProvider.get();
   }
@@ -128,6 +134,7 @@ public class OrmTestHelper {
    */
   @Transactional
   public void createDefaultData() {
+    StackEntity stackEntity = stackDAO.find("HDP", "2.2.0");
 
     ResourceTypeEntity resourceTypeEntity =  new ResourceTypeEntity();
     resourceTypeEntity.setId(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE);
@@ -140,6 +147,7 @@ public class OrmTestHelper {
     clusterEntity.setClusterName("test_cluster1");
     clusterEntity.setResource(resourceEntity);
     clusterEntity.setClusterInfo("test_cluster_info1");
+    clusterEntity.setDesiredStack(stackEntity);
 
     HostEntity host1 = new HostEntity();
     HostEntity host2 = new HostEntity();
@@ -306,6 +314,9 @@ public class OrmTestHelper {
    */
   @Transactional
   public Long createCluster(String clusterName) {
+    // required to populate the database with stacks
+    injector.getInstance(AmbariMetaInfo.class);
+
     ResourceTypeDAO resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
 
     ResourceTypeEntity resourceTypeEntity =  new ResourceTypeEntity();
@@ -317,11 +328,16 @@ public class OrmTestHelper {
     resourceEntity.setResourceType(resourceTypeEntity);
 
     ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
+    StackDAO stackDAO = injector.getInstance(StackDAO.class);
+
+    StackEntity stackEntity = stackDAO.find("HDP", "2.0.6");
+    assertNotNull(stackEntity);
 
     ClusterEntity clusterEntity = new ClusterEntity();
     clusterEntity.setClusterName(clusterName);
     clusterEntity.setClusterInfo("test_cluster_info1");
     clusterEntity.setResource(resourceEntity);
+    clusterEntity.setDesiredStack(stackEntity);
 
     clusterDAO.create(clusterEntity);
 
@@ -335,7 +351,9 @@ public class OrmTestHelper {
       ServiceFactory serviceFactory, ServiceComponentFactory componentFactory,
       ServiceComponentHostFactory schFactory, String hostName) throws Exception {
     String clusterName = "cluster-" + System.currentTimeMillis();
-    clusters.addCluster(clusterName);
+    StackId stackId = new StackId("HDP", "2.0.6");
+
+    clusters.addCluster(clusterName, stackId);
     Cluster cluster = clusters.getCluster(clusterName);
     cluster = initializeClusterWithStack(cluster);
 
@@ -350,8 +368,8 @@ public class OrmTestHelper {
   public Cluster initializeClusterWithStack(Cluster cluster) throws Exception {
     StackId stackId = new StackId("HDP", "2.0.6");
     cluster.setDesiredStackVersion(stackId);
-    getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
-    cluster.createClusterVersion(stackId.getStackName(),
+    getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+    cluster.createClusterVersion(stackId,
         stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
     return cluster;
   }
@@ -569,11 +587,21 @@ public class OrmTestHelper {
    * @param version stack version
    * @return repository version
    */
-  public RepositoryVersionEntity getOrCreateRepositoryVersion(String stack, String version) {
-    RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion(stack, version);
+  public RepositoryVersionEntity getOrCreateRepositoryVersion(StackId stackId,
+      String version) {
+    StackDAO stackDAO = injector.getInstance(StackDAO.class);
+    StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+        stackId.getStackVersion());
+
+    assertNotNull(stackEntity);
+
+    RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion(
+        stackId, version);
+
     if (repositoryVersion == null) {
       try {
-        repositoryVersion = repositoryVersionDAO.create(stack, version, String.valueOf(System.currentTimeMillis()), "pack", "");
+        repositoryVersion = repositoryVersionDAO.create(stackEntity, version,
+            String.valueOf(System.currentTimeMillis()), "pack", "");
       } catch (Exception ex) {
       }
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/TestOrmImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/TestOrmImpl.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/TestOrmImpl.java
index b56c060..27f6897 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/TestOrmImpl.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/TestOrmImpl.java
@@ -18,23 +18,44 @@
 
 package org.apache.ambari.server.orm;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.RollbackException;
+
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.actionmanager.HostRoleStatus;
-import org.apache.ambari.server.orm.dao.*;
-import org.apache.ambari.server.orm.entities.*;
-import org.junit.*;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.orm.dao.ClusterDAO;
+import org.apache.ambari.server.orm.dao.ClusterServiceDAO;
+import org.apache.ambari.server.orm.dao.HostDAO;
+import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
+import org.apache.ambari.server.orm.dao.RequestDAO;
+import org.apache.ambari.server.orm.dao.ResourceTypeDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
+import org.apache.ambari.server.orm.dao.StageDAO;
+import org.apache.ambari.server.orm.entities.ClusterEntity;
+import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
+import org.apache.ambari.server.orm.entities.HostEntity;
+import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
+import org.apache.ambari.server.orm.entities.RequestEntity;
+import org.apache.ambari.server.orm.entities.ResourceEntity;
+import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
+import org.apache.ambari.server.orm.entities.StageEntity;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.persistence.EntityManager;
-import javax.persistence.RollbackException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 
 public class TestOrmImpl extends Assert {
   private static final Logger log = LoggerFactory.getLogger(TestOrmImpl.class);
@@ -45,6 +66,10 @@ public class TestOrmImpl extends Assert {
   public void setup() {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
     injector.getInstance(GuiceJpaInitializer.class);
+
+    // required to load stack information into the DB
+    injector.getInstance(AmbariMetaInfo.class);
+
     injector.getInstance(OrmTestHelper.class).createDefaultData();
   }
 
@@ -60,6 +85,7 @@ public class TestOrmImpl extends Assert {
   public void testEmptyPersistentCollection() {
     String testClusterName = "test_cluster2";
 
+    StackDAO stackDAO = injector.getInstance(StackDAO.class);
     ResourceTypeDAO resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
 
     // create an admin resource to represent this cluster
@@ -70,12 +96,16 @@ public class TestOrmImpl extends Assert {
       resourceTypeEntity.setName(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE_NAME);
       resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity);
     }
+
+    StackEntity stackEntity = stackDAO.find("HDP", "2.2.0");
     ResourceEntity resourceEntity = new ResourceEntity();
     resourceEntity.setResourceType(resourceTypeEntity);
 
     ClusterEntity clusterEntity = new ClusterEntity();
     clusterEntity.setClusterName(testClusterName);
     clusterEntity.setResource(resourceEntity);
+    clusterEntity.setDesiredStack(stackEntity);
+
     ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
     clusterDAO.create(clusterEntity);
     clusterEntity = clusterDAO.findByName(clusterEntity.getClusterName());
@@ -163,7 +193,7 @@ public class TestOrmImpl extends Assert {
 
     ClusterServiceEntity clusterServiceEntity = clusterServiceDAO.findByClusterAndServiceNames(clusterName, serviceName);
     clusterServiceDAO.remove(clusterServiceEntity);
-    
+
     Assert.assertNull(
         clusterServiceDAO.findByClusterAndServiceNames(clusterName,
             serviceName));
@@ -255,9 +285,12 @@ public class TestOrmImpl extends Assert {
 
   @Test
   public void testConcurrentModification() throws InterruptedException {
+    final StackDAO stackDAO = injector.getInstance(StackDAO.class);
     final ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
     final ResourceTypeDAO resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
 
+    final StackEntity stackEntity = stackDAO.find("HDP", "2.2.0");
+
     // create an admin resource to represent this cluster
     ResourceTypeEntity resourceTypeEntity = resourceTypeDAO.findById(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE);
     if (resourceTypeEntity == null) {
@@ -272,12 +305,12 @@ public class TestOrmImpl extends Assert {
     ClusterEntity clusterEntity = new ClusterEntity();
     clusterEntity.setClusterName("cluster1");
     clusterEntity.setResource(resourceEntity);
+    clusterEntity.setDesiredStack(stackEntity);
+
     clusterDAO.create(clusterEntity);
-//    assertFalse(ambariJpaPersistService.isWorking());
 
     clusterEntity = clusterDAO.findById(clusterEntity.getClusterId());
     assertEquals("cluster1", clusterEntity.getClusterName());
-//    assertFalse(ambariJpaPersistService.isWorking());
 
     Thread thread = new Thread(){
       @Override
@@ -285,27 +318,34 @@ public class TestOrmImpl extends Assert {
         ClusterEntity clusterEntity1 = clusterDAO.findByName("cluster1");
         clusterEntity1.setClusterName("anotherName");
         clusterDAO.merge(clusterEntity1);
-//        assertFalse(ambariJpaPersistService.isWorking());
+
+        clusterEntity1 = clusterDAO.findById(clusterEntity1.getClusterId());
+        assertEquals("anotherName", clusterEntity1.getClusterName());
+
+        injector.getInstance(EntityManager.class).clear();
       }
     };
 
     thread.start();
     thread.join();
 
+    injector.getInstance(EntityManager.class).clear();
+
     clusterEntity = clusterDAO.findById(clusterEntity.getClusterId());
-//    assertFalse(ambariJpaPersistService.isWorking());
     assertEquals("anotherName", clusterEntity.getClusterName());
 
     thread = new Thread(){
       @Override
       public void run() {
         clusterDAO.removeByName("anotherName");
+        injector.getInstance(EntityManager.class).clear();
       }
     };
 
     thread.start();
     thread.join();
 
+    injector.getInstance(EntityManager.class).clear();
     assertNull(clusterDAO.findById(clusterEntity.getClusterId()));
 
     List<ClusterEntity> result = clusterDAO.findAll();
@@ -320,6 +360,7 @@ public class TestOrmImpl extends Assert {
         ClusterEntity temp = new ClusterEntity();
         temp.setClusterName("temp_cluster");
         temp.setResource(resourceEntity);
+        temp.setDesiredStack(stackEntity);
         clusterDAO.create(temp);
       }
     };
@@ -338,6 +379,7 @@ public class TestOrmImpl extends Assert {
         ClusterEntity temp = new ClusterEntity();
         temp.setClusterName("temp_cluster2");
         temp.setResource(resourceEntity);
+        temp.setDesiredStack(stackEntity);
         clusterDAO.create(temp);
       }
     };