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:24 UTC
[1/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity
Relationships (jonathanhurley)
Repository: ambari
Updated Branches:
refs/heads/trunk e6a02eed7 -> 746df034c
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java
index aa9d26b..19c0c7f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java
@@ -34,6 +34,7 @@ import org.apache.ambari.server.orm.entities.ResourceEntity;
import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.HostComponentAdminState;
import org.apache.ambari.server.state.State;
@@ -51,11 +52,11 @@ public class UpgradeCatalogHelper {
*
* @param injector
* @param clusterName
- * @param desiredStackVersion
+ * @param desiredStackEntity
* @return
*/
protected ClusterEntity createCluster(Injector injector, String clusterName,
- String desiredStackVersion) {
+ StackEntity desiredStackEntity) {
ResourceTypeDAO resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
// create an admin resource to represent this cluster
@@ -74,9 +75,10 @@ public class UpgradeCatalogHelper {
ClusterEntity clusterEntity = new ClusterEntity();
clusterEntity.setClusterId(1L);
clusterEntity.setClusterName(clusterName);
- clusterEntity.setDesiredStackVersion(desiredStackVersion);
+ clusterEntity.setDesiredStack(desiredStackEntity);
clusterEntity.setProvisioningState(State.INIT);
clusterEntity.setResource(resourceEntity);
+
clusterDAO.create(clusterEntity);
return clusterEntity;
}
@@ -107,19 +109,19 @@ public class UpgradeCatalogHelper {
* @param injector
* @param clusterEntity
* @param serviceName
- * @param desiredStackVersion
+ * @param desiredStackEntity
* @return
*/
protected ClusterServiceEntity addService(Injector injector,
ClusterEntity clusterEntity, String serviceName,
- String desiredStackVersion) {
+ StackEntity desiredStackEntity) {
ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
ClusterServiceEntity clusterServiceEntity = createService(injector,
clusterEntity, serviceName);
ServiceDesiredStateEntity serviceDesiredStateEntity = new ServiceDesiredStateEntity();
- serviceDesiredStateEntity.setDesiredStackVersion(desiredStackVersion);
+ serviceDesiredStateEntity.setDesiredStack(desiredStackEntity);
serviceDesiredStateEntity.setClusterId(1L);
serviceDesiredStateEntity.setServiceName(serviceName);
serviceDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
@@ -161,17 +163,17 @@ public class UpgradeCatalogHelper {
* @param clusterServiceEntity
* @param hostEntity
* @param componentName
- * @param desiredStackVersion
+ * @param desiredStackEntity
*/
@Transactional
protected void addComponent(Injector injector, ClusterEntity clusterEntity,
ClusterServiceEntity clusterServiceEntity, HostEntity hostEntity,
- String componentName, String desiredStackVersion) {
+ String componentName, StackEntity desiredStackEntity) {
ServiceComponentDesiredStateEntity componentDesiredStateEntity = new ServiceComponentDesiredStateEntity();
componentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
componentDesiredStateEntity.setComponentName(componentName);
componentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
- componentDesiredStateEntity.setDesiredStackVersion(desiredStackVersion);
+ componentDesiredStateEntity.setDesiredStack(desiredStackEntity);
componentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
componentDesiredStateEntity.setClusterId(clusterServiceEntity.getClusterId());
@@ -183,6 +185,7 @@ public class UpgradeCatalogHelper {
hostComponentDesiredStateEntity.setAdminState(HostComponentAdminState.INSERVICE);
hostComponentDesiredStateEntity.setServiceComponentDesiredStateEntity(componentDesiredStateEntity);
hostComponentDesiredStateEntity.setHostEntity(hostEntity);
+ hostComponentDesiredStateEntity.setDesiredStack(desiredStackEntity);
hostComponentDesiredStateDAO.create(hostComponentDesiredStateEntity);
HostComponentStateEntity hostComponentStateEntity = new HostComponentStateEntity();
@@ -190,8 +193,9 @@ public class UpgradeCatalogHelper {
hostComponentStateEntity.setComponentName(componentName);
hostComponentStateEntity.setServiceName(clusterServiceEntity.getServiceName());
hostComponentStateEntity.setClusterId(clusterEntity.getClusterId());
- hostComponentStateEntity.setCurrentStackVersion(clusterEntity.getDesiredStackVersion());
+ hostComponentStateEntity.setCurrentStack(clusterEntity.getDesiredStack());
hostComponentStateEntity.setServiceComponentDesiredStateEntity(componentDesiredStateEntity);
+ hostComponentStateEntity.setCurrentStack(desiredStackEntity);
componentDesiredStateEntity.setHostComponentStateEntities(Collections.singletonList(hostComponentStateEntity));
componentDesiredStateEntity.setHostComponentDesiredStateEntities(Collections.singletonList(hostComponentDesiredStateEntity));
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java
index 7455706..c1090c8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java
@@ -61,6 +61,7 @@ import org.apache.ambari.server.orm.dao.ViewInstanceDAO;
import org.apache.ambari.server.utils.VersionUtils;
import org.apache.ambari.server.view.ViewRegistry;
import org.easymock.EasyMock;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -73,6 +74,7 @@ import com.google.inject.Key;
import com.google.inject.TypeLiteral;
import com.google.inject.persist.PersistService;
+@Ignore
@RunWith(Parameterized.class)
public class UpgradeTest {
private static final Logger LOG = LoggerFactory.getLogger(UpgradeTest.class);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/utils/TestStageUtils.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/utils/TestStageUtils.java b/ambari-server/src/test/java/org/apache/ambari/server/utils/TestStageUtils.java
index c411985..59cbd2b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/utils/TestStageUtils.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/utils/TestStageUtils.java
@@ -202,8 +202,8 @@ public class TestStageUtils {
null,
8673);
- fsm.addCluster("c1");
- fsm.getCluster("c1").setDesiredStackVersion(new StackId(STACK_ID));
+ StackId stackId = new StackId(STACK_ID);
+ fsm.addCluster("c1", stackId);
int index = 0;
[4/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity
Relationships (jonathanhurley)
Posted by jo...@apache.org.
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);
}
};
[8/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity
Relationships (jonathanhurley)
Posted by jo...@apache.org.
AMBARI-10511 - Use Stack Table For Entity Relationships (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/746df034
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/746df034
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/746df034
Branch: refs/heads/trunk
Commit: 746df034c630081df187dd442fb460596568113f
Parents: e6a02ee
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Wed Apr 15 20:08:34 2015 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Thu Apr 16 10:37:14 2015 -0400
----------------------------------------------------------------------
.../checks/HostsRepositoryVersionCheck.java | 15 +-
.../AmbariManagementControllerImpl.java | 104 +--
.../ambari/server/controller/AmbariServer.java | 3 -
.../internal/BaseBlueprintProcessor.java | 39 +-
.../internal/BlueprintResourceProvider.java | 65 +-
.../ClusterStackVersionResourceProvider.java | 48 +-
...atibleRepositoryVersionResourceProvider.java | 9 +-
.../HostStackVersionResourceProvider.java | 22 +-
.../RepositoryVersionResourceProvider.java | 34 +-
.../server/controller/internal/Stack.java | 17 +
.../internal/UpgradeResourceProvider.java | 2 +-
.../controller/utilities/DatabaseChecker.java | 13 +-
.../DistributeRepositoriesActionListener.java | 9 +-
.../server/orm/dao/ClusterVersionDAO.java | 38 +-
.../ambari/server/orm/dao/HostVersionDAO.java | 59 +-
.../server/orm/dao/RepositoryVersionDAO.java | 71 ++-
.../server/orm/entities/BlueprintEntity.java | 77 +--
.../orm/entities/ClusterConfigEntity.java | 74 ++-
.../server/orm/entities/ClusterEntity.java | 23 +-
.../server/orm/entities/ClusterStateEntity.java | 43 +-
.../orm/entities/ClusterVersionEntity.java | 23 +-
.../HostComponentDesiredStateEntity.java | 68 +-
.../orm/entities/HostComponentStateEntity.java | 80 ++-
.../ambari/server/orm/entities/HostEntity.java | 31 +-
.../server/orm/entities/HostVersionEntity.java | 58 +-
.../orm/entities/RepositoryVersionEntity.java | 74 ++-
.../ServiceComponentDesiredStateEntity.java | 65 +-
.../orm/entities/ServiceConfigEntity.java | 35 +-
.../orm/entities/ServiceDesiredStateEntity.java | 71 ++-
.../upgrades/FinalizeUpgradeAction.java | 18 +-
.../org/apache/ambari/server/state/Cluster.java | 36 +-
.../apache/ambari/server/state/Clusters.java | 9 +-
.../apache/ambari/server/state/ConfigImpl.java | 38 +-
.../server/state/ServiceComponentImpl.java | 32 +-
.../apache/ambari/server/state/ServiceImpl.java | 27 +-
.../org/apache/ambari/server/state/StackId.java | 14 +-
.../server/state/cluster/ClusterImpl.java | 118 ++--
.../server/state/cluster/ClustersImpl.java | 33 +-
.../state/configgroup/ConfigGroupImpl.java | 54 +-
.../svccomphost/ServiceComponentHostImpl.java | 57 +-
.../ambari/server/upgrade/StackUpgradeUtil.java | 73 +--
.../server/upgrade/UpgradeCatalog150.java | 21 +-
.../server/upgrade/UpgradeCatalog170.java | 27 +-
.../main/resources/Ambari-DDL-MySQL-CREATE.sql | 70 +-
.../main/resources/Ambari-DDL-Oracle-CREATE.sql | 67 +-
.../resources/Ambari-DDL-Postgres-CREATE.sql | 69 +-
.../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql | 70 +-
.../resources/Ambari-DDL-SQLServer-CREATE.sql | 634 +++++++++++++++++--
.../ExecutionCommandWrapperTest.java | 99 +--
.../actionmanager/TestActionDBAccessorImpl.java | 30 +-
.../server/actionmanager/TestActionManager.java | 10 +-
.../server/agent/TestHeartbeatHandler.java | 53 +-
.../server/agent/TestHeartbeatMonitor.java | 53 +-
.../checks/HostsRepositoryVersionCheckTest.java | 32 +-
.../AmbariManagementControllerTest.java | 128 ++--
.../server/controller/ClusterRequestTest.java | 5 +-
.../internal/BaseBlueprintProcessorTest.java | 17 +-
.../internal/BlueprintResourceProviderTest.java | 35 +-
.../internal/ClusterResourceProviderTest.java | 175 ++---
...ClusterStackVersionResourceProviderTest.java | 4 +-
...leRepositoryVersionResourceProviderTest.java | 21 +-
.../HostStackVersionResourceProviderTest.java | 22 +-
.../RepositoryVersionResourceProviderTest.java | 35 +-
.../StackDefinedPropertyProviderTest.java | 38 +-
.../internal/UpgradeResourceProviderTest.java | 30 +-
.../RestMetricsPropertyProviderTest.java | 27 +-
.../apache/ambari/server/events/EventsTest.java | 11 +-
.../HostVersionOutOfSyncListenerTest.java | 21 +-
.../apache/ambari/server/orm/OrmTestHelper.java | 40 +-
.../apache/ambari/server/orm/TestOrmImpl.java | 76 ++-
.../server/orm/dao/ClusterVersionDAOTest.java | 41 +-
.../server/orm/dao/ConfigGroupDAOTest.java | 35 +-
.../ambari/server/orm/dao/CrudDAOTest.java | 18 +-
.../server/orm/dao/HostVersionDAOTest.java | 87 ++-
.../orm/dao/RepositoryVersionDAOTest.java | 73 ++-
.../ambari/server/orm/dao/RequestDAOTest.java | 10 +-
.../server/orm/dao/RequestScheduleDAOTest.java | 21 +-
.../server/orm/dao/ServiceConfigDAOTest.java | 33 +-
.../orm/entities/BlueprintEntityTest.java | 72 ++-
.../scheduler/ExecutionScheduleManagerTest.java | 3 +-
.../upgrades/UpgradeActionTest.java | 66 +-
.../ambari/server/state/ConfigGroupTest.java | 3 +-
.../ambari/server/state/ConfigHelperTest.java | 3 +-
.../server/state/RequestExecutionTest.java | 3 +-
.../server/state/ServiceComponentTest.java | 27 +-
.../apache/ambari/server/state/ServiceTest.java | 9 +-
.../ambari/server/state/UpgradeHelperTest.java | 13 +-
.../state/alerts/AlertEventPublisherTest.java | 3 +-
.../state/alerts/InitialAlertEventTest.java | 3 +-
.../state/cluster/ClusterDeadlockTest.java | 34 +-
.../server/state/cluster/ClusterTest.java | 464 ++++++++------
.../state/cluster/ClustersDeadlockTest.java | 40 +-
.../server/state/cluster/ClustersTest.java | 79 ++-
.../ambari/server/state/host/HostTest.java | 20 +-
.../svccomphost/ServiceComponentHostTest.java | 75 ++-
.../server/upgrade/UpgradeCatalog150Test.java | 36 +-
.../server/upgrade/UpgradeCatalog170Test.java | 68 +-
.../server/upgrade/UpgradeCatalog200Test.java | 21 +-
.../server/upgrade/UpgradeCatalogHelper.java | 24 +-
.../ambari/server/upgrade/UpgradeTest.java | 2 +
.../ambari/server/utils/TestStageUtils.java | 4 +-
101 files changed, 3402 insertions(+), 1687 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java
index e4170a3..0db7e2e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java
@@ -23,6 +23,7 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.controller.PrereqCheckRequest;
import org.apache.ambari.server.orm.entities.HostVersionEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Host;
import org.apache.ambari.server.state.MaintenanceState;
@@ -59,14 +60,24 @@ public class HostsRepositoryVersionCheck extends AbstractCheckDescriptor {
for (Map.Entry<String, Host> hostEntry : clusterHosts.entrySet()) {
final Host host = hostEntry.getValue();
if (host.getMaintenanceState(cluster.getClusterId()) == MaintenanceState.OFF) {
- final RepositoryVersionEntity repositoryVersion = repositoryVersionDaoProvider.get().findByStackAndVersion(stackId.getStackId(), request.getRepositoryVersion());
+ final RepositoryVersionEntity repositoryVersion = repositoryVersionDaoProvider.get().findByStackAndVersion(
+ stackId, request.getRepositoryVersion());
if (repositoryVersion == null) {
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
prerequisiteCheck.setFailReason(getFailReason(KEY_NO_REPO_VERSION, prerequisiteCheck, request));
prerequisiteCheck.getFailedOn().addAll(clusterHosts.keySet());
return;
}
- final HostVersionEntity hostVersion = hostVersionDaoProvider.get().findByClusterStackVersionAndHost(clusterName, repositoryVersion.getStack(), repositoryVersion.getVersion(), host.getHostName());
+
+ StackEntity repositoryStackEntity = repositoryVersion.getStack();
+ StackId repositoryStackId = new StackId(
+ repositoryStackEntity.getStackName(),
+ repositoryStackEntity.getStackVersion());
+
+ final HostVersionEntity hostVersion = hostVersionDaoProvider.get().findByClusterStackVersionAndHost(
+ clusterName, repositoryStackId, repositoryVersion.getVersion(),
+ host.getHostName());
+
if (hostVersion == null || hostVersion.getState() != RepositoryVersionState.INSTALLED) {
prerequisiteCheck.getFailedOn().add(host.getHostName());
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index a4ddf14..b2120ab 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -18,14 +18,45 @@
package org.apache.ambari.server.controller;
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
-import com.google.inject.Singleton;
-import com.google.inject.persist.Transactional;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB_RCA_DRIVER;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB_RCA_PASSWORD;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB_RCA_URL;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB_RCA_USERNAME;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.CLIENTS_TO_UPDATE_CONFIGS;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMMAND_TIMEOUT;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.DB_DRIVER_FILENAME;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.GROUP_LIST;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.HOOKS_FOLDER;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.PACKAGE_LIST;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.REPO_INFO;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT_TYPE;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_PACKAGE_FOLDER;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_REPO_INFO;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.USER_LIST;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.VERSION;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.net.InetAddress;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.concurrent.TimeUnit;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.ClusterNotFoundException;
import org.apache.ambari.server.DuplicateResourceException;
@@ -124,43 +155,15 @@ import org.apache.commons.lang.math.NumberUtils;
import org.apache.http.client.utils.URIBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.net.InetAddress;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumMap;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB_RCA_DRIVER;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB_RCA_PASSWORD;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB_RCA_URL;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.AMBARI_DB_RCA_USERNAME;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.CLIENTS_TO_UPDATE_CONFIGS;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.COMMAND_TIMEOUT;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.DB_DRIVER_FILENAME;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.GROUP_LIST;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.HOOKS_FOLDER;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.PACKAGE_LIST;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.REPO_INFO;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SCRIPT_TYPE;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_PACKAGE_FOLDER;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_REPO_INFO;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.USER_LIST;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.VERSION;
+
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Singleton;
+import com.google.inject.persist.Transactional;
@Singleton
public class AmbariManagementControllerImpl implements AmbariManagementController {
@@ -348,9 +351,11 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
throw new IllegalArgumentException("Stack information should be"
+ " provided when creating a cluster");
}
+
StackId stackId = new StackId(request.getStackVersion());
StackInfo stackInfo = ambariMetaInfo.getStack(stackId.getStackName(),
stackId.getStackVersion());
+
if (stackInfo == null) {
throw new StackAccessException("stackName=" + stackId.getStackName() + ", stackVersion=" + stackId.getStackVersion());
}
@@ -372,17 +377,13 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
}
}
}
+
if (foundInvalidHosts) {
throw new HostNotFoundException(invalidHostsStr.toString());
}
- clusters.addCluster(request.getClusterName());
+ clusters.addCluster(request.getClusterName(), stackId);
Cluster c = clusters.getCluster(request.getClusterName());
- if (request.getStackVersion() != null) {
- StackId newStackId = new StackId(request.getStackVersion());
- c.setDesiredStackVersion(newStackId);
- clusters.setCurrentStackVersion(request.getClusterName(), newStackId);
- }
if (request.getHostNames() != null) {
clusters.mapHostsToCluster(request.getHostNames(),
@@ -2267,6 +2268,7 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
return requestStages;
}
+ @Override
public ExecutionCommand getExecutionCommand(Cluster cluster,
ServiceComponentHost scHost,
RoleCommand roleCommand) throws AmbariException {
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
index a24eb60..2451438 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
@@ -47,7 +47,6 @@ import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.internal.AbstractControllerResourceProvider;
import org.apache.ambari.server.controller.internal.AmbariPrivilegeResourceProvider;
-import org.apache.ambari.server.controller.internal.BlueprintResourceProvider;
import org.apache.ambari.server.controller.internal.ClusterPrivilegeResourceProvider;
import org.apache.ambari.server.controller.internal.ClusterResourceProvider;
import org.apache.ambari.server.controller.internal.PermissionResourceProvider;
@@ -602,8 +601,6 @@ public class AmbariServer {
SecurityFilter.init(injector.getInstance(Configuration.class));
StackDefinedPropertyProvider.init(injector);
AbstractControllerResourceProvider.init(injector.getInstance(ResourceProviderFactory.class));
- BlueprintResourceProvider.init(injector.getInstance(BlueprintDAO.class),
- injector.getInstance(Gson.class), ambariMetaInfo);
StackDependencyResourceProvider.init(ambariMetaInfo);
ClusterResourceProvider.init(injector.getInstance(BlueprintDAO.class), ambariMetaInfo, injector.getInstance(ConfigHelper.class));
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
index c2ddad8..73ea1a5 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
@@ -18,7 +18,12 @@
package org.apache.ambari.server.controller.internal;
-import com.google.gson.Gson;
+import java.util.Collection;
+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.AmbariException;
import org.apache.ambari.server.StackAccessException;
@@ -31,6 +36,7 @@ import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.controller.spi.SystemException;
import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
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.BlueprintEntity;
import org.apache.ambari.server.orm.entities.HostGroupComponentEntity;
@@ -40,12 +46,7 @@ import org.apache.ambari.server.state.AutoDeployInfo;
import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.DependencyInfo;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
+import com.google.gson.Gson;
/**
* Base blueprint processing resource provider.
@@ -60,10 +61,15 @@ public abstract class BaseBlueprintProcessor extends AbstractControllerResourceP
protected static BlueprintDAO blueprintDAO;
/**
+ * Data access object used to lookup value stacks parsed from the resources.
+ */
+ protected static StackDAO stackDAO;
+
+ /**
* Stack related information.
*/
protected static AmbariMetaInfo stackInfo;
-
+
protected static ConfigHelper configHelper;
@@ -121,11 +127,11 @@ public abstract class BaseBlueprintProcessor extends AbstractControllerResourceP
protected Stack parseStack(BlueprintEntity blueprint) throws SystemException {
Stack stack;
try {
- stack = new Stack(blueprint.getStackName(), blueprint.getStackVersion(), getManagementController());
+ stack = new Stack(blueprint.getStack(), getManagementController());
} catch (StackAccessException e) {
- throw new IllegalArgumentException("Invalid stack information provided for cluster. " +
- "stack name: " + blueprint.getStackName() +
- " stack version: " + blueprint.getStackVersion());
+ throw new IllegalArgumentException(
+ "Invalid stack information provided for cluster. "
+ + blueprint.getStack());
} catch (AmbariException e) {
throw new SystemException("Unable to obtain stack information.", e);
}
@@ -146,7 +152,7 @@ public abstract class BaseBlueprintProcessor extends AbstractControllerResourceP
* @throws IllegalArgumentException when validation fails
*/
protected BlueprintEntity validateTopology(BlueprintEntity blueprint) throws AmbariException {
- Stack stack = new Stack(blueprint.getStackName(), blueprint.getStackVersion(), getManagementController());
+ Stack stack = new Stack(blueprint.getStack(), getManagementController());
Map<String, HostGroupImpl> hostGroupMap = parseBlueprintHostGroups(blueprint, stack);
Collection<HostGroupImpl> hostGroups = hostGroupMap.values();
Map<String, Map<String, String>> clusterConfig = processBlueprintConfigurations(blueprint, null);
@@ -595,12 +601,12 @@ public abstract class BaseBlueprintProcessor extends AbstractControllerResourceP
@Override
public Collection<String> getComponents() {
- return this.components;
+ return components;
}
@Override
public Collection<String> getHostInfo() {
- return this.hosts;
+ return hosts;
}
/**
@@ -609,7 +615,7 @@ public abstract class BaseBlueprintProcessor extends AbstractControllerResourceP
* @param fqdn fully qualified domain name of the host being added
*/
public void addHostInfo(String fqdn) {
- this.hosts.add(fqdn);
+ hosts.add(fqdn);
}
/**
@@ -661,6 +667,7 @@ public abstract class BaseBlueprintProcessor extends AbstractControllerResourceP
*
* @return map of configuration type to a map of properties
*/
+ @Override
public Map<String, Map<String, String>> getConfigurationProperties() {
return configurations;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
index 4a1f596..29a95c4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
@@ -18,11 +18,19 @@
package org.apache.ambari.server.controller.internal;
-import com.google.gson.Gson;
-import com.google.inject.Inject;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.DuplicateResourceException;
+import org.apache.ambari.server.StaticallyInject;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
@@ -36,29 +44,24 @@ 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.ComponentInfo;
import org.apache.ambari.server.state.ServiceInfo;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import com.google.gson.Gson;
/**
* Resource Provider for Blueprint resources.
*/
+@StaticallyInject
public class BlueprintResourceProvider extends BaseBlueprintProcessor {
// ----- Property ID constants ---------------------------------------------
@@ -117,18 +120,21 @@ public class BlueprintResourceProvider extends BaseBlueprintProcessor {
/**
* Static initialization.
*
- * @param dao blueprint data access object
- * @param gson json serializer
- * @param metaInfo stack related information
+ * @param dao
+ * blueprint data access object
+ * @param gson
+ * json serializer
+ * @param metaInfo
+ * stack related information
*/
- @Inject
- public static void init(BlueprintDAO dao, Gson gson, AmbariMetaInfo metaInfo) {
- blueprintDAO = dao;
+ public static void init(BlueprintDAO dao, StackDAO stacks, Gson gson,
+ AmbariMetaInfo metaInfo) {
+ blueprintDAO = dao;
+ stackDAO = stacks;
jsonSerializer = gson;
- stackInfo = metaInfo;
+ stackInfo = metaInfo;
}
-
// ----- ResourceProvider ------------------------------------------------
@Override
@@ -241,10 +247,11 @@ public class BlueprintResourceProvider extends BaseBlueprintProcessor {
* @return a new resource instance for the given blueprint entity
*/
protected Resource toResource(BlueprintEntity entity, Set<String> requestedIds) {
+ StackEntity stackEntity = entity.getStack();
Resource resource = new ResourceImpl(Resource.Type.Blueprint);
setResourceProperty(resource, BLUEPRINT_NAME_PROPERTY_ID, entity.getBlueprintName(), requestedIds);
- setResourceProperty(resource, STACK_NAME_PROPERTY_ID, entity.getStackName(), requestedIds);
- setResourceProperty(resource, STACK_VERSION_PROPERTY_ID, entity.getStackVersion(), requestedIds);
+ setResourceProperty(resource, STACK_NAME_PROPERTY_ID, stackEntity.getStackName(), requestedIds);
+ setResourceProperty(resource, STACK_VERSION_PROPERTY_ID, stackEntity.getStackVersion(), requestedIds);
List<Map<String, Object>> listGroupProps = new ArrayList<Map<String, Object>>();
Collection<HostGroupEntity> hostGroups = entity.getHostGroups();
@@ -285,10 +292,13 @@ public class BlueprintResourceProvider extends BaseBlueprintProcessor {
throw new IllegalArgumentException("Blueprint name must be provided");
}
+ String stackName = (String) properties.get(STACK_NAME_PROPERTY_ID);
+ String stackVersion = (String) properties.get(STACK_VERSION_PROPERTY_ID);
+ StackEntity stackEntity = stackDAO.find(stackName, stackVersion);
+
BlueprintEntity blueprint = new BlueprintEntity();
blueprint.setBlueprintName(name);
- blueprint.setStackName((String) properties.get(STACK_NAME_PROPERTY_ID));
- blueprint.setStackVersion((String) properties.get(STACK_VERSION_PROPERTY_ID));
+ blueprint.setStack(stackEntity);
createHostGroupEntities(blueprint,
(HashSet<HashMap<String, Object>>) properties.get(HOST_GROUP_PROPERTY_ID));
@@ -314,8 +324,11 @@ public class BlueprintResourceProvider extends BaseBlueprintProcessor {
}
Collection<HostGroupEntity> entities = new ArrayList<HostGroupEntity>();
+
+ StackEntity stackEntity = blueprint.getStack();
+
Collection<String> stackComponentNames = getAllStackComponents(
- blueprint.getStackName(), blueprint.getStackVersion());
+ stackEntity.getStackName(), stackEntity.getStackVersion());
for (HashMap<String, Object> hostGroupProperties : setHostGroups) {
HostGroupEntity hostGroup = new HostGroupEntity();
@@ -350,7 +363,7 @@ public class BlueprintResourceProvider extends BaseBlueprintProcessor {
@SuppressWarnings("unchecked")
private void createComponentEntities(HostGroupEntity group, HashSet<HashMap<String, String>> setComponents,
Collection<String> componentNames) {
-
+
Collection<HostGroupComponentEntity> components = new ArrayList<HostGroupComponentEntity>();
String groupName = group.getName();
group.setComponents(components);
@@ -638,7 +651,7 @@ public class BlueprintResourceProvider extends BaseBlueprintProcessor {
/**
* New blueprint configuration format where configs are a map from 'properties' and
* 'properties_attributes' to a map of strings.
- *
+ *
* @since 1.7.0
*/
protected static class BlueprintConfigPopulationStrategyV2 extends BlueprintConfigPopulationStrategy {
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
index e872fe9..b952c7c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
@@ -27,10 +27,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import com.google.inject.Injector;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.Role;
import org.apache.ambari.server.StaticallyInject;
@@ -66,6 +63,7 @@ import org.apache.ambari.server.orm.entities.HostVersionEntity;
import org.apache.ambari.server.orm.entities.OperatingSystemEntity;
import org.apache.ambari.server.orm.entities.RepositoryEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Host;
@@ -78,6 +76,7 @@ import org.apache.ambari.server.utils.StageUtils;
import com.google.gson.Gson;
import com.google.inject.Inject;
+import com.google.inject.Injector;
import com.google.inject.Provider;
/**
@@ -211,12 +210,18 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
for (RepositoryVersionState state: RepositoryVersionState.values()) {
hostStates.put(state.name(), new ArrayList<String>());
}
- for (HostVersionEntity hostVersionEntity: hostVersionDAO.findByClusterStackAndVersion(entity.getClusterEntity().getClusterName(),
- entity.getRepositoryVersion().getStack(), entity.getRepositoryVersion().getVersion())) {
+
+ StackEntity repoVersionStackEntity = entity.getRepositoryVersion().getStack();
+ StackId repoVersionStackId = new StackId(repoVersionStackEntity);
+
+ for (HostVersionEntity hostVersionEntity : hostVersionDAO.findByClusterStackAndVersion(
+ entity.getClusterEntity().getClusterName(), repoVersionStackId,
+ entity.getRepositoryVersion().getVersion())) {
hostStates.get(hostVersionEntity.getState().name()).add(hostVersionEntity.getHostName());
}
StackId stackId = new StackId(entity.getRepositoryVersion().getStack());
- RepositoryVersionEntity repoVerEntity = repositoryVersionDAO.findByStackAndVersion(stackId.getStackId(), entity.getRepositoryVersion().getVersion());
+ RepositoryVersionEntity repoVerEntity = repositoryVersionDAO.findByStackAndVersion(
+ stackId, entity.getRepositoryVersion().getVersion());
setResourceProperty(resource, CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID, entity.getClusterEntity().getClusterName(), requestedIds);
setResourceProperty(resource, CLUSTER_STACK_VERSION_HOST_STATES_PROPERTY_ID, hostStates, requestedIds);
@@ -281,12 +286,12 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
throw new NoSuchParentResourceException(e.getMessage(), e);
}
- final String stackId;
+ final StackId stackId;
if (propertyMap.containsKey(CLUSTER_STACK_VERSION_STACK_PROPERTY_ID) &&
propertyMap.containsKey(CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID)) {
stackName = (String) propertyMap.get(CLUSTER_STACK_VERSION_STACK_PROPERTY_ID);
stackVersion = (String) propertyMap.get(CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID);
- stackId = new StackId(stackName, stackVersion).getStackId();
+ stackId = new StackId(stackName, stackVersion);
if (! ami.isSupportedStack(stackName, stackVersion)) {
throw new NoSuchParentResourceException(String.format("Stack %s is not supported",
stackId));
@@ -295,10 +300,11 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
StackId currentStackVersion = cluster.getCurrentStackVersion();
stackName = currentStackVersion.getStackName();
stackVersion = currentStackVersion.getStackVersion();
- stackId = currentStackVersion.getStackId();
+ stackId = currentStackVersion;
}
- RepositoryVersionEntity repoVersionEnt = repositoryVersionDAO.findByStackAndVersion(stackId, desiredRepoVersion);
+ RepositoryVersionEntity repoVersionEnt = repositoryVersionDAO.findByStackAndVersion(
+ stackId, desiredRepoVersion);
if (repoVersionEnt == null) {
throw new IllegalArgumentException(String.format(
"Repo version %s is not available for stack %s",
@@ -365,7 +371,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
final String repoList = gson.toJson(repoInfo);
Map<String, String> params = new HashMap<String, String>() {{
- put("stack_id", stackId);
+ put("stack_id", stackId.getStackId());
put("repository_version", desiredRepoVersion);
put("base_urls", repoList);
put("package_list", packageList);
@@ -389,22 +395,28 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
}
try {
- ClusterVersionEntity existingCSVer = clusterVersionDAO.findByClusterAndStackAndVersion(clName, stackId, desiredRepoVersion);
+ ClusterVersionEntity existingCSVer = clusterVersionDAO.findByClusterAndStackAndVersion(
+ clName, stackId, desiredRepoVersion);
if (existingCSVer == null) {
- try { // Create/persist new cluster stack version
- cluster.createClusterVersion(stackId, desiredRepoVersion, managementController.getAuthName(), RepositoryVersionState.INSTALLING);
- existingCSVer = clusterVersionDAO.findByClusterAndStackAndVersion(clName, stackId, desiredRepoVersion);
+ try {
+ // Create/persist new cluster stack version
+ cluster.createClusterVersion(stackId,
+ desiredRepoVersion, managementController.getAuthName(),
+ RepositoryVersionState.INSTALLING);
+ existingCSVer = clusterVersionDAO.findByClusterAndStackAndVersion(
+ clName, stackId, desiredRepoVersion);
} catch (AmbariException e) {
throw new SystemException(
String.format(
"Can not create cluster stack version %s for cluster %s",
- desiredRepoVersion, clName),
- e);
+ desiredRepoVersion, clName), e);
}
} else {
// Move CSV into INSTALLING state (retry installation)
- cluster.transitionClusterVersion(stackId, desiredRepoVersion, RepositoryVersionState.INSTALLING);
+ cluster.transitionClusterVersion(stackId,
+ desiredRepoVersion, RepositoryVersionState.INSTALLING);
}
+
// Will also initialize all Host Versions in an INSTALLING state.
cluster.inferHostVersions(existingCSVer);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java
index ec8d495..add4285 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CompatibleRepositoryVersionResourceProvider.java
@@ -45,7 +45,6 @@ import org.apache.ambari.server.state.stack.UpgradePack;
import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper;
import com.google.common.collect.Sets;
-import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -86,9 +85,6 @@ public class CompatibleRepositoryVersionResourceProvider extends ReadOnlyResourc
};
@Inject
- private static Gson s_gson;
-
- @Inject
private static RepositoryVersionDAO s_repositoryVersionDAO;
@Inject
@@ -119,14 +115,15 @@ public class CompatibleRepositoryVersionResourceProvider extends ReadOnlyResourc
final StackId stackId = getStackInformationFromUrl(propertyMap);
if (propertyMaps.size() == 1 && propertyMap.get(REPOSITORY_VERSION_ID_PROPERTY_ID) == null) {
- requestedEntities.addAll(s_repositoryVersionDAO.findByStack(stackId.getStackId()));
+ requestedEntities.addAll(s_repositoryVersionDAO.findByStack(stackId));
Map<String, UpgradePack> packs = s_ambariMetaInfo.get().getUpgradePacks(
stackId.getStackName(), stackId.getStackVersion());
for (UpgradePack up : packs.values()) {
if (null != up.getTargetStack()) {
- requestedEntities.addAll(s_repositoryVersionDAO.findByStack(up.getTargetStack()));
+ StackId targetStackId = new StackId(up.getTargetStack());
+ requestedEntities.addAll(s_repositoryVersionDAO.findByStack(targetStackId));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
index 044f03f..88b9415 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
@@ -17,6 +17,8 @@
*/
package org.apache.ambari.server.controller.internal;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -26,14 +28,12 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import com.google.gson.Gson;
-import com.google.inject.Provider;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.StaticallyInject;
import org.apache.ambari.server.actionmanager.ActionManager;
+import org.apache.ambari.server.actionmanager.RequestFactory;
import org.apache.ambari.server.actionmanager.Stage;
import org.apache.ambari.server.actionmanager.StageFactory;
-import org.apache.ambari.server.actionmanager.RequestFactory;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.ActionExecutionContext;
@@ -45,17 +45,16 @@ import org.apache.ambari.server.controller.spi.Predicate;
import org.apache.ambari.server.controller.spi.Request;
import org.apache.ambari.server.controller.spi.RequestStatus;
import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.Resource.Type;
import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
import org.apache.ambari.server.controller.spi.SystemException;
import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
-import org.apache.ambari.server.controller.spi.Resource.Type;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.entities.HostVersionEntity;
import org.apache.ambari.server.orm.entities.OperatingSystemEntity;
import org.apache.ambari.server.orm.entities.RepositoryEntity;
-import com.google.inject.Inject;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Host;
@@ -66,7 +65,9 @@ import org.apache.ambari.server.state.ServiceOsSpecific;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.utils.StageUtils;
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION;
+import com.google.gson.Gson;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
/**
* Resource provider for host stack versions resources.
@@ -213,7 +214,8 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
for (HostVersionEntity entity: requestedEntities) {
StackId stackId = new StackId(entity.getRepositoryVersion().getStack());
- RepositoryVersionEntity repoVerEntity = repositoryVersionDAO.findByStackAndVersion(stackId.getStackId(), entity.getRepositoryVersion().getVersion());
+ RepositoryVersionEntity repoVerEntity = repositoryVersionDAO.findByStackAndVersion(
+ stackId, entity.getRepositoryVersion().getVersion());
final Resource resource = new ResourceImpl(Resource.Type.HostStackVersion);
@@ -282,7 +284,7 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
stackName = (String) propertyMap.get(HOST_STACK_VERSION_STACK_PROPERTY_ID);
stackVersion = (String) propertyMap.get(HOST_STACK_VERSION_VERSION_PROPERTY_ID);
- final String stackId = new StackId(stackName, stackVersion).getStackId();
+ final StackId stackId = new StackId(stackName, stackVersion);
if (!ami.isSupportedStack(stackName, stackVersion)) {
throw new NoSuchParentResourceException(String.format("Stack %s is not supported",
stackId));
@@ -312,7 +314,7 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
// Select all clusters that contain the desired repo version
Set<Cluster> selectedClusters = new HashSet<Cluster>();
for (Cluster cluster : clusterSet) {
- if(cluster.getCurrentStackVersion().getStackId().equals(stackId)) {
+ if (cluster.getCurrentStackVersion().equals(stackId)) {
selectedClusters.add(cluster);
}
}
@@ -385,7 +387,7 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
final String repoList = gson.toJson(repoInfo);
Map<String, String> params = new HashMap<String, String>(){{
- put("stack_id", stackId);
+ put("stack_id", stackId.getStackId());
put("repository_version", desiredRepoVersion);
put("base_urls", repoList);
put("package_list", packageList);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
index 9a80ad8..9707ec9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
@@ -42,10 +42,12 @@ import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
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.OperatingSystemEntity;
import org.apache.ambari.server.orm.entities.RepositoryEntity;
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.StackId;
@@ -119,6 +121,12 @@ public class RepositoryVersionResourceProvider extends AbstractResourceProvider
private RepositoryVersionHelper repositoryVersionHelper;
/**
+ * Data access object used for lookup up stacks.
+ */
+ @Inject
+ private StackDAO stackDAO;
+
+ /**
* Create a new resource provider.
*
*/
@@ -181,7 +189,7 @@ public class RepositoryVersionResourceProvider extends AbstractResourceProvider
final StackId stackId = getStackInformationFromUrl(propertyMap);
if (propertyMaps.size() == 1 && propertyMap.get(REPOSITORY_VERSION_ID_PROPERTY_ID) == null) {
- requestedEntities.addAll(repositoryVersionDAO.findByStack(stackId.getStackId()));
+ requestedEntities.addAll(repositoryVersionDAO.findByStack(stackId));
} else {
final Long id;
try {
@@ -235,8 +243,12 @@ public class RepositoryVersionResourceProvider extends AbstractResourceProvider
}
if (StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(REPOSITORY_VERSION_UPGRADE_PACK_PROPERTY_ID)))) {
- final List<ClusterVersionEntity> clusterVersionEntities =
- clusterVersionDAO.findByStackAndVersion(entity.getStack(), entity.getVersion());
+ StackEntity stackEntity = entity.getStack();
+ String stackName = stackEntity.getStackName();
+ String stackVersion = stackEntity.getStackVersion();
+
+ final List<ClusterVersionEntity> clusterVersionEntities = clusterVersionDAO.findByStackAndVersion(
+ stackName, stackVersion, entity.getVersion());
if (!clusterVersionEntities.isEmpty()) {
final ClusterVersionEntity firstClusterVersion = clusterVersionEntities.get(0);
@@ -292,8 +304,12 @@ public class RepositoryVersionResourceProvider extends AbstractResourceProvider
throw new NoSuchResourceException("There is no repository version with id " + id);
}
- final List<ClusterVersionEntity> clusterVersionEntities =
- clusterVersionDAO.findByStackAndVersion(entity.getStack(), entity.getVersion());
+ StackEntity stackEntity = entity.getStack();
+ String stackName = stackEntity.getStackName();
+ String stackVersion = stackEntity.getStackVersion();
+
+ final List<ClusterVersionEntity> clusterVersionEntities = clusterVersionDAO.findByStackAndVersion(
+ stackName, stackVersion, entity.getVersion());
final List<RepositoryVersionState> forbiddenToDeleteStates = Lists.newArrayList(
RepositoryVersionState.CURRENT,
@@ -343,7 +359,7 @@ public class RepositoryVersionResourceProvider extends AbstractResourceProvider
// List of all repo urls that are already added at stack
Set<String> existingRepoUrls = new HashSet<String>();
- List<RepositoryVersionEntity> existingRepoVersions = repositoryVersionDAO.findByStack(requiredStack.getStackId());
+ List<RepositoryVersionEntity> existingRepoVersions = repositoryVersionDAO.findByStack(requiredStack);
for (RepositoryVersionEntity existingRepoVersion : existingRepoVersions) {
for (OperatingSystemEntity operatingSystemEntity : existingRepoVersion.getOperatingSystems()) {
for (RepositoryEntity repositoryEntity : operatingSystemEntity.getRepositories()) {
@@ -393,8 +409,12 @@ public class RepositoryVersionResourceProvider extends AbstractResourceProvider
final RepositoryVersionEntity entity = new RepositoryVersionEntity();
final String stackName = properties.get(REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID).toString();
final String stackVersion = properties.get(REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID).toString();
+
+ StackEntity stackEntity = stackDAO.find(stackName, stackVersion);
+
entity.setDisplayName(properties.get(REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID).toString());
- entity.setStack(new StackId(stackName, stackVersion).getStackId());
+ entity.setStack(stackEntity);
+
entity.setVersion(properties.get(REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID).toString());
final Object operatingSystems = properties.get(SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID);
final String operatingSystemsJson = gson.toJson(operatingSystems);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Stack.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Stack.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Stack.java
index 6da2b54..9ef13ba 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Stack.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Stack.java
@@ -34,6 +34,7 @@ import org.apache.ambari.server.controller.StackServiceComponentRequest;
import org.apache.ambari.server.controller.StackServiceComponentResponse;
import org.apache.ambari.server.controller.StackServiceRequest;
import org.apache.ambari.server.controller.StackServiceResponse;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.AutoDeployInfo;
import org.apache.ambari.server.state.DependencyInfo;
@@ -143,6 +144,22 @@ class Stack {
/**
* Constructor.
*
+ * @param stack
+ * the stack (not {@code null}).
+ * @param ambariManagementController
+ * the management controller (not {@code null}).
+ * @throws AmbariException
+ */
+ public Stack(StackEntity stack,
+ AmbariManagementController ambariManagementController)
+ throws AmbariException {
+ this(stack.getStackName(), stack.getStackVersion(),
+ ambariManagementController);
+ }
+
+ /**
+ * Constructor.
+ *
* @param name stack name
* @param version stack version
*
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index 9733eff..926d9bb 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@ -424,7 +424,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
}
RepositoryVersionEntity versionEntity = s_repoVersionDAO.findByStackAndVersion(
- stack.getStackId(), repoVersion);
+ stack, repoVersion);
if (null == versionEntity) {
throw new AmbariException(String.format("Version %s for stack %s was not found",
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/DatabaseChecker.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/DatabaseChecker.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/DatabaseChecker.java
index 3bc4fa0..c4a4e4c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/DatabaseChecker.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/DatabaseChecker.java
@@ -18,9 +18,9 @@
package org.apache.ambari.server.controller.utilities;
-import com.google.gson.Gson;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
+import java.util.Collection;
+import java.util.List;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
@@ -39,8 +39,8 @@ import org.apache.ambari.server.utils.VersionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Collection;
-import java.util.List;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
public class DatabaseChecker {
@@ -62,8 +62,7 @@ public class DatabaseChecker {
ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
List<ClusterEntity> clusters = clusterDAO.findAll();
for (ClusterEntity clusterEntity: clusters) {
- String desiredStackVersion = clusterEntity.getDesiredStackVersion();
- StackId stackId = new Gson().fromJson(desiredStackVersion, StackId.class);
+ StackId stackId = new StackId(clusterEntity.getDesiredStack());
Collection<ClusterServiceEntity> serviceEntities =
clusterEntity.getClusterServiceEntities();
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
index 85e92af..5a32a82 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
@@ -32,6 +32,7 @@ import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.utils.StageUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -119,8 +120,9 @@ public class DistributeRepositoriesActionListener {
// !!! getInstalledRepositoryVersion() from the agent is the one
// entered in the UI. getActualVersion() is computed.
+ StackId stackId = new StackId(structuredOutput.getStackId());
RepositoryVersionEntity version = repoVersionDAO.findByStackAndVersion(
- structuredOutput.getStackId(), structuredOutput.getInstalledRepositoryVersion());
+ stackId, structuredOutput.getInstalledRepositoryVersion());
if (null != version) {
LOG.info("Repository version {} was found, but {} is the actual value",
@@ -132,8 +134,9 @@ public class DistributeRepositoriesActionListener {
repositoryVersion = structuredOutput.getActualVersion();
} else {
// !!! extra check that the actual version is correct
- version = repoVersionDAO.findByStackAndVersion(
- structuredOutput.getStackId(), structuredOutput.getActualVersion());
+ stackId = new StackId(structuredOutput.getStackId());
+ version = repoVersionDAO.findByStackAndVersion(stackId,
+ structuredOutput.getActualVersion());
LOG.debug("Repository version {} was not found, check for {}. Found={}",
structuredOutput.getInstalledRepositoryVersion(),
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
index b7e0d1c..d3326b1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
@@ -26,6 +26,7 @@ import javax.persistence.TypedQuery;
import org.apache.ambari.server.orm.RequiresSession;
import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
import org.apache.ambari.server.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
import com.google.inject.Singleton;
@@ -47,33 +48,46 @@ public class ClusterVersionDAO extends CrudDAO<ClusterVersionEntity, Long>{
/**
* Retrieve all of the cluster versions for the given stack and version.
*
- * @param stack Stack id (e.g., HDP-2.2)
- * @param version Repository version (e.g., 2.2.0.1-995)
+ * @param stackName
+ * the stack name (for example "HDP")
+ * @param stackVersion
+ * the stack version (for example "2.2")
+ * @param version
+ * Repository version (e.g., 2.2.0.1-995)
* @return Return a list of cluster versions that match the stack and version.
*/
@RequiresSession
- public List<ClusterVersionEntity> findByStackAndVersion(String stack, String version) {
+ public List<ClusterVersionEntity> findByStackAndVersion(String stackName,
+ String stackVersion, String version) {
final TypedQuery<ClusterVersionEntity> query = entityManagerProvider.get().createNamedQuery("clusterVersionByStackVersion", ClusterVersionEntity.class);
- query.setParameter("stack", stack);
+ query.setParameter("stackName", stackName);
+ query.setParameter("stackVersion", stackVersion);
query.setParameter("version", version);
return daoUtils.selectList(query);
}
/**
- * Get the cluster version for the given cluster name, stack name, and stack version.
+ * Get the cluster version for the given cluster name, stack name, and stack
+ * version.
*
- * @param clusterName Cluster name
- * @param stack Stack id (e.g., HDP-2.2)
- * @param version Repository version (e.g., 2.2.0.1-995)
- * @return Return all of the cluster versions associated with the given cluster.
+ * @param clusterName
+ * Cluster name
+ * @param stackId
+ * Stack id (e.g., HDP-2.2)
+ * @param version
+ * Repository version (e.g., 2.2.0.1-995)
+ * @return Return all of the cluster versions associated with the given
+ * cluster.
*/
@RequiresSession
- public ClusterVersionEntity findByClusterAndStackAndVersion(String clusterName, String stack, String version) {
+ public ClusterVersionEntity findByClusterAndStackAndVersion(
+ String clusterName, StackId stackId, String version) {
final TypedQuery<ClusterVersionEntity> query = entityManagerProvider.get()
.createNamedQuery("clusterVersionByClusterAndStackAndVersion", ClusterVersionEntity.class);
query.setParameter("clusterName", clusterName);
- query.setParameter("stack", stack);
+ query.setParameter("stackName", stackId.getStackName());
+ query.setParameter("stackVersion", stackId.getStackVersion());
query.setParameter("version", version);
return daoUtils.selectSingle(query);
@@ -86,7 +100,7 @@ public class ClusterVersionDAO extends CrudDAO<ClusterVersionEntity, Long>{
* @return Return all of the cluster versions associated with the given cluster.
*/
@RequiresSession
- public List<ClusterVersionEntity> findByCluster(String clusterName) {
+ public List<ClusterVersionEntity> findByCluster(String clusterName) {
final TypedQuery<ClusterVersionEntity> query = entityManagerProvider.get()
.createNamedQuery("clusterVersionByCluster", ClusterVersionEntity.class);
query.setParameter("clusterName", clusterName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
index d816102..de3b8cb 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
@@ -18,21 +18,22 @@
package org.apache.ambari.server.orm.dao;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
-import com.google.inject.persist.Transactional;
-
-import org.apache.ambari.server.orm.RequiresSession;
-import org.apache.ambari.server.orm.entities.HostVersionEntity;
-import org.apache.ambari.server.state.RepositoryVersionState;
+import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.TypedQuery;
-import java.util.List;
+import org.apache.ambari.server.orm.RequiresSession;
+import org.apache.ambari.server.orm.entities.HostVersionEntity;
+import org.apache.ambari.server.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.google.inject.Singleton;
+import com.google.inject.persist.Transactional;
/**
* The {@link org.apache.ambari.server.orm.dao.HostVersionDAO} class manages the {@link org.apache.ambari.server.orm.entities.HostVersionEntity}
@@ -59,18 +60,24 @@ public class HostVersionDAO {
}
/**
- * Retrieve all of the host versions for the given cluster name, stack name, and stack version.
+ * Retrieve all of the host versions for the given cluster name, stack name,
+ * and stack version.
*
- * @param clusterName Cluster name
- * @param stack Stack name (e.g., HDP)
- * @param version Stack version (e.g., 2.2.0.1-995)
+ * @param clusterName
+ * Cluster name
+ * @param stackId
+ * Stack (e.g., HDP-2.2)
+ * @param version
+ * Stack version (e.g., 2.2.0.1-995)
* @return Return all of the host versions that match the criteria.
*/
@RequiresSession
- public List<HostVersionEntity> findByClusterStackAndVersion(String clusterName, String stack, String version) {
+ public List<HostVersionEntity> findByClusterStackAndVersion(
+ String clusterName, StackId stackId, String version) {
final TypedQuery<HostVersionEntity> query = entityManagerProvider.get().createNamedQuery("hostVersionByClusterAndStackAndVersion", HostVersionEntity.class);
query.setParameter("clusterName", clusterName);
- query.setParameter("stack", stack);
+ query.setParameter("stackName", stackId.getStackName());
+ query.setParameter("stackVersion", stackId.getStackVersion());
query.setParameter("version", version);
return daoUtils.selectList(query);
@@ -153,20 +160,28 @@ public class HostVersionDAO {
}
/**
- * Retrieve the single host version for the given cluster, stack name, stack version, and host name.
+ * Retrieve the single host version for the given cluster, stack name, stack
+ * version, and host name.
*
- * @param clusterName Cluster name
- * @param stack Stack name (e.g., HDP-2.2)
- * @param version Stack version (e.g., 2.2.0.1-995)
- * @param hostName FQDN of host
+ * @param clusterName
+ * Cluster name
+ * @param stackId
+ * Stack ID (e.g., HDP-2.2)
+ * @param version
+ * Stack version (e.g., 2.2.0.1-995)
+ * @param hostName
+ * FQDN of host
* @return Returns the single host version that matches the criteria.
*/
@RequiresSession
- public HostVersionEntity findByClusterStackVersionAndHost(String clusterName, String stack, String version, String hostName) {
+ public HostVersionEntity findByClusterStackVersionAndHost(String clusterName,
+ StackId stackId, String version, String hostName) {
+
final TypedQuery<HostVersionEntity> query = entityManagerProvider.get()
.createNamedQuery("hostVersionByClusterStackVersionAndHostname", HostVersionEntity.class);
query.setParameter("clusterName", clusterName);
- query.setParameter("stack", stack);
+ query.setParameter("stackName", stackId.getStackName());
+ query.setParameter("stackVersion", stackId.getStackVersion());
query.setParameter("version", version);
query.setParameter("hostName", hostName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
index 7099c5c..db5e956 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
@@ -24,6 +24,8 @@ import javax.persistence.TypedQuery;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.orm.RequiresSession;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
+import org.apache.ambari.server.state.StackId;
import com.google.inject.Singleton;
@@ -56,14 +58,49 @@ public class RepositoryVersionDAO extends CrudDAO<RepositoryVersionEntity, Long>
/**
* Retrieves repository version by stack.
*
+ * @param stackId
+ * stackId
+ * @param version
+ * version
+ * @return null if there is no suitable repository version
+ */
+ public RepositoryVersionEntity findByStackAndVersion(StackId stackId,
+ String version) {
+ return findByStackAndVersion(stackId.getStackName(),
+ stackId.getStackVersion(), version);
+ }
+
+ /**
+ * Retrieves repository version by stack.
+ *
* @param stack stack
* @param version version
* @return null if there is no suitable repository version
*/
+ public RepositoryVersionEntity findByStackAndVersion(StackEntity stackEntity,
+ String version) {
+ return findByStackAndVersion(stackEntity.getStackName(),
+ stackEntity.getStackVersion(), version);
+ }
+
+ /**
+ * Retrieves repository version by stack.
+ *
+ * @param stackName
+ * stack name
+ * @param stackVersion
+ * stack version
+ * @param version
+ * version
+ * @return null if there is no suitable repository version
+ */
@RequiresSession
- public RepositoryVersionEntity findByStackAndVersion(String stack, String version) {
- final TypedQuery<RepositoryVersionEntity> query = entityManagerProvider.get().createNamedQuery("repositoryVersionByStackVersion", RepositoryVersionEntity.class);
- query.setParameter("stack", stack);
+ private RepositoryVersionEntity findByStackAndVersion(String stackName,
+ String stackVersion, String version) {
+ final TypedQuery<RepositoryVersionEntity> query = entityManagerProvider.get().createNamedQuery(
+ "repositoryVersionByStackVersion", RepositoryVersionEntity.class);
+ query.setParameter("stackName", stackName);
+ query.setParameter("stackVersion", stackVersion);
query.setParameter("version", version);
return daoUtils.selectSingle(query);
}
@@ -71,13 +108,15 @@ public class RepositoryVersionDAO extends CrudDAO<RepositoryVersionEntity, Long>
/**
* Retrieves repository version by stack.
*
- * @param stack stack with major version (like HDP-2.2)
+ * @param stack
+ * stack with major version (like HDP-2.2)
* @return null if there is no suitable repository version
*/
@RequiresSession
- public List<RepositoryVersionEntity> findByStack(String stack) {
+ public List<RepositoryVersionEntity> findByStack(StackId stackId) {
final TypedQuery<RepositoryVersionEntity> query = entityManagerProvider.get().createNamedQuery("repositoryVersionByStack", RepositoryVersionEntity.class);
- query.setParameter("stack", stack);
+ query.setParameter("stackName", stackId.getStackName());
+ query.setParameter("stackVersion", stackId.getStackVersion());
return daoUtils.selectList(query);
}
@@ -91,23 +130,31 @@ public class RepositoryVersionDAO extends CrudDAO<RepositoryVersionEntity, Long>
* @return Returns the object created if successful, and throws an exception otherwise.
* @throws AmbariException
*/
- public RepositoryVersionEntity create(String stack, String version, String displayName, String upgradePack, String operatingSystems) throws AmbariException {
- if (stack == null || stack.isEmpty() || version == null || version.isEmpty() || displayName == null || displayName.isEmpty()) {
+ public RepositoryVersionEntity create(StackEntity stackEntity,
+ String version, String displayName, String upgradePack,
+ String operatingSystems) throws AmbariException {
+
+ if (stackEntity == null || version == null || version.isEmpty()
+ || displayName == null || displayName.isEmpty()) {
throw new AmbariException("At least one of the required properties is null or empty");
}
- RepositoryVersionEntity existingByDisplayName = this.findByDisplayName(displayName);
+ RepositoryVersionEntity existingByDisplayName = findByDisplayName(displayName);
if (existingByDisplayName != null) {
throw new AmbariException("Repository version with display name '" + displayName + "' already exists");
}
- RepositoryVersionEntity existingByStackAndVersion = this.findByStackAndVersion(stack, version);
+ RepositoryVersionEntity existingByStackAndVersion = findByStackAndVersion(
+ stackEntity, version);
+
if (existingByStackAndVersion != null) {
- throw new AmbariException("Repository version for stack " + stack + " and version " + version + " already exists");
+ throw new AmbariException("Repository version for stack " + stackEntity
+ + " and version " + version + " already exists");
}
- RepositoryVersionEntity newEntity = new RepositoryVersionEntity(stack, version, displayName, upgradePack, operatingSystems);
+ RepositoryVersionEntity newEntity = new RepositoryVersionEntity(
+ stackEntity, version, displayName, upgradePack, operatingSystems);
this.create(newEntity);
return newEntity;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintEntity.java
index 36a0f26..71a64af 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintEntity.java
@@ -18,26 +18,29 @@
package org.apache.ambari.server.orm.entities;
-import com.google.gson.Gson;
-import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
-import org.apache.ambari.server.state.PropertyInfo;
-import org.apache.ambari.server.state.ServiceInfo;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
-import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
+
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.state.PropertyInfo;
+import org.apache.ambari.server.state.ServiceInfo;
+
+import com.google.gson.Gson;
/**
* Entity representing a Blueprint.
@@ -53,13 +56,13 @@ public class BlueprintEntity {
updatable = false, unique = true, length = 100)
private String blueprintName;
- @Column(name = "stack_name", nullable = false, insertable = true, updatable = false)
- @Basic
- private String stackName;
- @Column(name = "stack_version", nullable = false, insertable = true, updatable = false)
- @Basic
- private String stackVersion;
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "stack_id", unique = false, nullable = false, insertable = true, updatable = false)
+ private StackEntity stack;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "blueprint")
private Collection<HostGroupEntity> hostGroups;
@@ -90,39 +93,22 @@ public class BlueprintEntity {
}
/**
- * Get the stack name.
- *
- * @return the stack name
- */
- public String getStackName() {
- return stackName;
- }
-
- /**
- * Set the stack name.
- *
- * @param stackName the stack name
- */
- public void setStackName(String stackName) {
- this.stackName = stackName;
- }
-
- /**
- * Get the stack version.
+ * Gets the blueprint's stack.
*
- * @return the stack version
+ * @return the stack.
*/
- public String getStackVersion() {
- return stackVersion;
+ public StackEntity getStack() {
+ return stack;
}
/**
- * Set the stack version.
+ * Sets the blueprint's stack.
*
- * @param stackVersion the stack version
+ * @param stack
+ * the stack to set for the blueprint (not {@code null}).
*/
- public void setStackVersion(String stackVersion) {
- this.stackVersion = stackVersion;
+ public void setStack(StackEntity stack) {
+ this.stack = stack;
}
/**
@@ -175,8 +161,9 @@ public class BlueprintEntity {
public Map<String, Map<String, Collection<String>>> validateConfigurations(
AmbariMetaInfo stackInfo, boolean validatePasswords) {
- String stackName = getStackName();
- String stackVersion = getStackVersion();
+ StackEntity stack = getStack();
+ String stackName = stack.getStackName();
+ String stackVersion = stack.getStackVersion();
Map<String, Map<String, Collection<String>>> missingProperties =
new HashMap<String, Map<String, Collection<String>>>();
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
index cb36923..68d88ca 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
@@ -18,9 +18,25 @@
package org.apache.ambari.server.orm.entities;
-import javax.persistence.*;
import java.util.Collection;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.persistence.TableGenerator;
+import javax.persistence.UniqueConstraint;
+
@Entity
@Table(name = "clusterconfig",
uniqueConstraints = {@UniqueConstraint(name = "UQ_config_type_tag", columnNames = {"cluster_id", "type_name", "version_tag"}),
@@ -73,6 +89,13 @@ public class ClusterConfigEntity {
@ManyToMany(mappedBy = "clusterConfigEntities")
private Collection<ServiceConfigEntity> serviceConfigEntities;
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "stack_id", unique = false, nullable = false, insertable = true, updatable = true)
+ private StackEntity stack;
+
public Long getConfigId() {
return configId;
}
@@ -118,7 +141,7 @@ public class ClusterConfigEntity {
}
public void setData(String data) {
- this.configJson = data;
+ configJson = data;
}
public long getTimestamp() {
@@ -134,22 +157,56 @@ public class ClusterConfigEntity {
}
public void setAttributes(String attributes) {
- this.configAttributesJson = attributes;
+ configAttributesJson = attributes;
+ }
+
+ /**
+ * Gets the cluster configuration's stack.
+ *
+ * @return the stack.
+ */
+ public StackEntity getStack() {
+ return stack;
+ }
+
+ /**
+ * Sets the cluster configuration's stack.
+ *
+ * @param stack
+ * the stack to set for the cluster config (not {@code null}).
+ */
+ public void setStack(StackEntity stack) {
+ this.stack = stack;
}
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
ClusterConfigEntity that = (ClusterConfigEntity) o;
- if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false;
- if (configJson != null ? !configJson.equals(that.configJson) : that.configJson != null)
+ if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) {
+ return false;
+ }
+
+ if (configJson != null ? !configJson.equals(that.configJson) : that.configJson != null) {
return false;
+ }
+
if (configAttributesJson != null ? !configAttributesJson
- .equals(that.configAttributesJson) : that.configAttributesJson != null)
+ .equals(that.configAttributesJson) : that.configAttributesJson != null) {
+ return false;
+ }
+
+ if (stack != null ? !stack.equals(that.stack) : that.stack != null) {
return false;
+ }
return true;
}
@@ -159,6 +216,7 @@ public class ClusterConfigEntity {
int result = clusterId != null ? clusterId.intValue() : 0;
result = 31 * result + (configJson != null ? configJson.hashCode() : 0);
result = 31 * result + (configAttributesJson != null ? configAttributesJson.hashCode() : 0);
+ result = 31 * result + (stack != null ? stack.hashCode() : 0);
return result;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
index 3577dc4..e4a35a7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
@@ -97,9 +97,12 @@ public class ClusterEntity {
@Column(name = "cluster_info", insertable = true, updatable = true)
private String clusterInfo = "";
- @Basic
- @Column(name = "desired_stack_version", insertable = true, updatable = true)
- private String desiredStackVersion = "";
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "desired_stack_id", unique = false, nullable = false, insertable = true, updatable = true)
+ private StackEntity desiredStack;
@OneToMany(mappedBy = "clusterEntity")
private Collection<ClusterServiceEntity> clusterServiceEntities;
@@ -175,12 +178,12 @@ public class ClusterEntity {
this.clusterInfo = clusterInfo;
}
- public String getDesiredStackVersion() {
- return defaultString(desiredStackVersion);
+ public StackEntity getDesiredStack() {
+ return desiredStack;
}
- public void setDesiredStackVersion(String desiredStackVersion) {
- this.desiredStackVersion = desiredStackVersion;
+ public void setDesiredStack(StackEntity desiredStack) {
+ this.desiredStack = desiredStack;
}
/**
@@ -326,10 +329,10 @@ public class ClusterEntity {
public void setClusterVersionEntities(Collection<ClusterVersionEntity> clusterVersionEntities) { this.clusterVersionEntities = clusterVersionEntities; }
public void addClusterVersionEntity(ClusterVersionEntity clusterVersionEntity) {
- if (this.clusterVersionEntities == null) {
- this.clusterVersionEntities = new ArrayList<ClusterVersionEntity>();
+ if (clusterVersionEntities == null) {
+ clusterVersionEntities = new ArrayList<ClusterVersionEntity>();
}
- this.clusterVersionEntities.add(clusterVersionEntity);
+ clusterVersionEntities.add(clusterVersionEntity);
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java
index 49afa84..d959641 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java
@@ -39,14 +39,17 @@ public class ClusterStateEntity {
@Column(name = "current_cluster_state", insertable = true, updatable = true)
private String currentClusterState = "";
- @Basic
- @Column(name = "current_stack_version", insertable = true, updatable = true)
- private String currentStackVersion = "";
-
@OneToOne
@JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
private ClusterEntity clusterEntity;
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "current_stack_id", unique = false, nullable = false, insertable = true, updatable = true)
+ private StackEntity currentStack;
+
public Long getClusterId() {
return clusterId;
}
@@ -63,26 +66,38 @@ public class ClusterStateEntity {
this.currentClusterState = currentClusterState;
}
- public String getCurrentStackVersion() {
- return defaultString(currentStackVersion);
+ public StackEntity getCurrentStack() {
+ return currentStack;
}
- public void setCurrentStackVersion(String currentStackVersion) {
- this.currentStackVersion = currentStackVersion;
+ public void setCurrentStack(StackEntity currentStack) {
+ this.currentStack = currentStack;
}
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
ClusterStateEntity that = (ClusterStateEntity) o;
- if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false;
+ if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) {
+ return false;
+ }
+
if (currentClusterState != null
- ? !currentClusterState.equals(that.currentClusterState) : that.currentClusterState != null) return false;
- if (currentStackVersion != null
- ? !currentStackVersion.equals(that.currentStackVersion) : that.currentStackVersion != null) return false;
+ ? !currentClusterState.equals(that.currentClusterState) : that.currentClusterState != null) {
+ return false;
+ }
+
+ if (currentStack != null ? !currentStack.equals(that.currentStack)
+ : that.currentStack != null) {
+ return false;
+ }
return true;
}
[5/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity
Relationships (jonathanhurley)
Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
index adf5828..a69e235 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@ -31,20 +31,107 @@ GO
------create the database------
------create tables and grant privileges to db user---------
-CREATE TABLE clusters (cluster_id BIGINT NOT NULL, resource_id BIGINT NOT NULL, cluster_info VARCHAR(255) NOT NULL, cluster_name VARCHAR(100) NOT NULL UNIQUE, provisioning_state VARCHAR(255) NOT NULL DEFAULT 'INIT', security_type VARCHAR(32) NOT NULL DEFAULT 'NONE', desired_cluster_state VARCHAR(255) NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, PRIMARY KEY CLUSTERED (cluster_id));
-CREATE TABLE clusterconfig (config_id BIGINT NOT NULL, version_tag VARCHAR(255) NOT NULL, version BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, config_data VARCHAR(MAX) NOT NULL, config_attributes VARCHAR(MAX), create_timestamp BIGINT NOT NULL, PRIMARY KEY CLUSTERED (config_id));
-CREATE TABLE serviceconfig (service_config_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, version BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', group_id BIGINT, note VARCHAR(MAX), PRIMARY KEY CLUSTERED (service_config_id));
-CREATE TABLE serviceconfighosts (service_config_id BIGINT NOT NULL, hostname VARCHAR(255) NOT NULL, PRIMARY KEY CLUSTERED (service_config_id, hostname));
-CREATE TABLE serviceconfigmapping (service_config_id BIGINT NOT NULL, config_id BIGINT NOT NULL, PRIMARY KEY CLUSTERED (service_config_id, config_id));
-CREATE TABLE clusterconfigmapping (cluster_id BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY CLUSTERED (cluster_id, type_name, create_timestamp));
-CREATE TABLE clusterservices (service_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, service_enabled INTEGER NOT NULL, PRIMARY KEY CLUSTERED (service_name, cluster_id));
-CREATE TABLE clusterstate (cluster_id BIGINT NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, current_stack_version VARCHAR(255) NOT NULL, PRIMARY KEY CLUSTERED (cluster_id));
-CREATE TABLE cluster_version (id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, repo_version_id BIGINT NOT NULL, state VARCHAR(255) NOT NULL, start_time BIGINT NOT NULL, end_time BIGINT, user_name VARCHAR(255), PRIMARY KEY (id));
+CREATE TABLE stack(
+ stack_id BIGINT NOT NULL,
+ stack_name VARCHAR(255) NOT NULL,
+ stack_version VARCHAR(255) NOT NULL,
+ PRIMARY KEY (stack_id),
+ CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
+);
+
+CREATE TABLE clusters (
+ cluster_id BIGINT NOT NULL,
+ resource_id BIGINT NOT NULL,
+ cluster_info VARCHAR(255) NOT NULL,
+ cluster_name VARCHAR(100) NOT NULL UNIQUE,
+ provisioning_state VARCHAR(255) NOT NULL DEFAULT 'INIT',
+ security_type VARCHAR(32) NOT NULL DEFAULT 'NONE',
+ desired_cluster_state VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
+ PRIMARY KEY CLUSTERED (cluster_id),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id)
+ );
+
+CREATE TABLE clusterconfig (
+ config_id BIGINT NOT NULL,
+ version_tag VARCHAR(255) NOT NULL,
+ version BIGINT NOT NULL,
+ type_name VARCHAR(255) NOT NULL,
+ cluster_id BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
+ config_data VARCHAR(MAX) NOT NULL,
+ config_attributes VARCHAR(MAX),
+ create_timestamp BIGINT NOT NULL,
+ PRIMARY KEY CLUSTERED (config_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id)
+ );
+
+CREATE TABLE serviceconfig (
+ service_config_id BIGINT NOT NULL,
+ cluster_id BIGINT NOT NULL,
+ service_name VARCHAR(255) NOT NULL,
+ version BIGINT NOT NULL,
+ create_timestamp BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
+ user_name VARCHAR(255) NOT NULL DEFAULT '_db',
+ group_id BIGINT,
+ note VARCHAR(MAX),
+ PRIMARY KEY CLUSTERED (service_config_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id)
+ );
+
+CREATE TABLE serviceconfighosts (
+ service_config_id BIGINT NOT NULL,
+ hostname VARCHAR(255) NOT NULL,
+ PRIMARY KEY CLUSTERED (service_config_id, hostname)
+ );
+
+CREATE TABLE serviceconfigmapping (
+ service_config_id BIGINT NOT NULL,
+ config_id BIGINT NOT NULL,
+ PRIMARY KEY CLUSTERED (service_config_id, config_id)
+ );
+
+CREATE TABLE clusterconfigmapping (
+ cluster_id BIGINT NOT NULL,
+ type_name VARCHAR(255) NOT NULL,
+ version_tag VARCHAR(255) NOT NULL,
+ create_timestamp BIGINT NOT NULL,
+ selected INT NOT NULL DEFAULT 0,
+ user_name VARCHAR(255) NOT NULL DEFAULT '_db',
+ PRIMARY KEY CLUSTERED (cluster_id, type_name, create_timestamp )
+ );
+
+CREATE TABLE clusterservices (
+ service_name VARCHAR(255) NOT NULL,
+ cluster_id BIGINT NOT NULL,
+ service_enabled INT NOT NULL,
+ PRIMARY KEY CLUSTERED (service_name, cluster_id)
+ );
+
+CREATE TABLE clusterstate (
+ cluster_id BIGINT NOT NULL,
+ current_cluster_state VARCHAR(255) NOT NULL,
+ current_stack_id BIGINT NOT NULL,
+ PRIMARY KEY CLUSTERED (cluster_id),
+ FOREIGN KEY (current_stack_id) REFERENCES stack(stack_id)
+ );
+
+CREATE TABLE cluster_version (
+ id BIGINT NOT NULL,
+ cluster_id BIGINT NOT NULL,
+ repo_version_id BIGINT NOT NULL,
+ STATE VARCHAR(255) NOT NULL,
+ start_time BIGINT NOT NULL,
+ end_time BIGINT,
+ user_name VARCHAR(255),
+ PRIMARY KEY (id)
+ );
CREATE TABLE hostcomponentdesiredstate (
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
host_id BIGINT NOT NULL,
service_name VARCHAR(255) NOT NULL,
@@ -52,19 +139,21 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL,
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required BIT NOT NULL DEFAULT 0,
- PRIMARY KEY CLUSTERED (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY CLUSTERED (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE hostcomponentstate (
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
- current_stack_version VARCHAR(255) NOT NULL,
+ current_stack_id BIGINT NOT NULL,
current_state VARCHAR(255) NOT NULL,
host_id BIGINT NOT NULL,
service_name VARCHAR(255) NOT NULL,
upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE',
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
- PRIMARY KEY CLUSTERED (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY CLUSTERED (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (current_stack_id) REFERENCES stack(stack_id));
CREATE TABLE hosts (
host_id BIGINT NOT NULL,
@@ -95,55 +184,480 @@ CREATE TABLE hoststate (
maintenance_state VARCHAR(512),
PRIMARY KEY CLUSTERED (host_id));
-CREATE TABLE servicecomponentdesiredstate (component_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, PRIMARY KEY CLUSTERED (component_name, cluster_id, service_name));
-CREATE TABLE servicedesiredstate (cluster_id BIGINT NOT NULL, desired_host_role_mapping INTEGER NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL, security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED', PRIMARY KEY CLUSTERED (cluster_id, service_name));
-CREATE TABLE users (user_id INTEGER, principal_id BIGINT NOT NULL, ldap_user INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL, create_time DATETIME DEFAULT GETDATE(), user_password VARCHAR(255), active INTEGER NOT NULL DEFAULT 1, PRIMARY KEY CLUSTERED (user_id), UNIQUE (ldap_user, user_name));
-CREATE TABLE groups (group_id INTEGER, principal_id BIGINT NOT NULL, group_name VARCHAR(255) NOT NULL, ldap_group INTEGER NOT NULL DEFAULT 0, PRIMARY KEY (group_id));
-CREATE TABLE members (member_id INTEGER, group_id INTEGER NOT NULL, user_id INTEGER NOT NULL, PRIMARY KEY (member_id));
-CREATE TABLE execution_command (command VARBINARY(8000), task_id BIGINT NOT NULL, PRIMARY KEY CLUSTERED (task_id));
-CREATE TABLE host_role_command (task_id BIGINT NOT NULL, attempt_count SMALLINT NOT NULL, retry_allowed SMALLINT DEFAULT 0 NOT NULL, event VARCHAR(MAX) NOT NULL, exitcode INTEGER NOT NULL, host_name VARCHAR(255) NOT NULL, last_attempt_time BIGINT NOT NULL, request_id BIGINT NOT NULL, role VARCHAR(255), stage_id BIGINT NOT NULL, start_time BIGINT NOT NULL, end_time BIGINT, status VARCHAR(255), std_error VARBINARY(max), std_out VARBINARY(max), output_log VARCHAR(255) NULL, error_log VARCHAR(255) NULL, structured_out VARBINARY(max), role_command VARCHAR(255), command_detail VARCHAR(255), custom_command_name VARCHAR(255), PRIMARY KEY CLUSTERED (task_id));
-CREATE TABLE role_success_criteria (role VARCHAR(255) NOT NULL, request_id BIGINT NOT NULL, stage_id BIGINT NOT NULL, success_factor FLOAT NOT NULL, PRIMARY KEY CLUSTERED (role, request_id, stage_id));
-CREATE TABLE stage (stage_id BIGINT NOT NULL, request_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, skippable SMALLINT DEFAULT 0 NOT NULL, log_info VARCHAR(255) NOT NULL, request_context VARCHAR(255), cluster_host_info VARBINARY(8000) NOT NULL, command_params VARBINARY(8000), host_params VARBINARY(8000), PRIMARY KEY CLUSTERED (stage_id, request_id));
-CREATE TABLE request (request_id BIGINT NOT NULL, cluster_id BIGINT, command_name VARCHAR(255), create_time BIGINT NOT NULL, end_time BIGINT NOT NULL, exclusive_execution BIT NOT NULL DEFAULT 0, inputs VARBINARY(8000), request_context VARCHAR(255), request_type VARCHAR(255), request_schedule_id BIGINT, start_time BIGINT NOT NULL, status VARCHAR(255), PRIMARY KEY CLUSTERED (request_id));
-CREATE TABLE requestresourcefilter (filter_id BIGINT NOT NULL, request_id BIGINT NOT NULL, service_name VARCHAR(255), component_name VARCHAR(255), hosts VARBINARY(8000), PRIMARY KEY CLUSTERED (filter_id));
-CREATE TABLE requestoperationlevel (operation_level_id BIGINT NOT NULL, request_id BIGINT NOT NULL, level_name VARCHAR(255), cluster_name VARCHAR(255), service_name VARCHAR(255), host_component_name VARCHAR(255), host_name VARCHAR(255), PRIMARY KEY CLUSTERED (operation_level_id));
+CREATE TABLE servicecomponentdesiredstate (
+ component_name VARCHAR(255) NOT NULL,
+ cluster_id BIGINT NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
+ desired_state VARCHAR(255) NOT NULL,
+ service_name VARCHAR(255) NOT NULL,
+ PRIMARY KEY CLUSTERED (component_name, cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
+ );
+
+CREATE TABLE servicedesiredstate (
+ cluster_id BIGINT NOT NULL,
+ desired_host_role_mapping INTEGER NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
+ desired_state VARCHAR(255) NOT NULL,
+ service_name VARCHAR(255) NOT NULL,
+ maintenance_state VARCHAR(32) NOT NULL,
+ security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
+ PRIMARY KEY CLUSTERED (cluster_id,service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
+ );
+
+CREATE TABLE users (
+ user_id INTEGER,
+ principal_id BIGINT NOT NULL,
+ ldap_user INTEGER NOT NULL DEFAULT 0,
+ user_name VARCHAR(255) NOT NULL,
+ create_time DATETIME DEFAULT GETDATE(),
+ user_password VARCHAR(255),
+ active INTEGER NOT NULL DEFAULT 1,
+ PRIMARY KEY CLUSTERED (user_id),
+ UNIQUE (
+ ldap_user,
+ user_name
+ )
+ );
+CREATE TABLE groups (
+ group_id INTEGER,
+ principal_id BIGINT NOT NULL,
+ group_name VARCHAR(255) NOT NULL,
+ ldap_group INTEGER NOT NULL DEFAULT 0,
+ PRIMARY KEY (group_id)
+ );
+
+CREATE TABLE members (
+ member_id INTEGER,
+ group_id INTEGER NOT NULL,
+ user_id INTEGER NOT NULL,
+ PRIMARY KEY (member_id)
+ );
+
+CREATE TABLE execution_command (
+ command VARBINARY(8000),
+ task_id BIGINT NOT NULL,
+ PRIMARY KEY CLUSTERED (task_id)
+ );
+
+CREATE TABLE host_role_command (
+ task_id BIGINT NOT NULL,
+ attempt_count SMALLINT NOT NULL,
+ retry_allowed SMALLINT DEFAULT 0 NOT NULL,
+ event VARCHAR(MAX) NOT NULL,
+ exitcode INTEGER NOT NULL,
+ host_name VARCHAR(255) NOT NULL,
+ last_attempt_time BIGINT NOT NULL,
+ request_id BIGINT NOT NULL,
+ ROLE VARCHAR(255),
+ stage_id BIGINT NOT NULL,
+ start_time BIGINT NOT NULL,
+ end_time BIGINT,
+ status VARCHAR(255),
+ std_error VARBINARY(max),
+ std_out VARBINARY(max),
+ output_log VARCHAR(255) NULL,
+ error_log VARCHAR(255) NULL,
+ structured_out VARBINARY(max),
+ role_command VARCHAR(255),
+ command_detail VARCHAR(255),
+ custom_command_name VARCHAR(255),
+ PRIMARY KEY CLUSTERED (task_id)
+ );
+
+CREATE TABLE role_success_criteria (
+ ROLE VARCHAR(255) NOT NULL,
+ request_id BIGINT NOT NULL,
+ stage_id BIGINT NOT NULL,
+ success_factor FLOAT NOT NULL,
+ PRIMARY KEY CLUSTERED (
+ ROLE,
+ request_id,
+ stage_id
+ )
+ );
+
+CREATE TABLE stage (
+ stage_id BIGINT NOT NULL,
+ request_id BIGINT NOT NULL,
+ cluster_id BIGINT NOT NULL,
+ skippable SMALLINT DEFAULT 0 NOT NULL,
+ log_info VARCHAR(255) NOT NULL,
+ request_context VARCHAR(255),
+ cluster_host_info VARBINARY(8000) NOT NULL,
+ command_params VARBINARY(8000),
+ host_params VARBINARY(8000),
+ PRIMARY KEY CLUSTERED (
+ stage_id,
+ request_id
+ )
+ );
+
+CREATE TABLE request (
+ request_id BIGINT NOT NULL,
+ cluster_id BIGINT,
+ command_name VARCHAR(255),
+ create_time BIGINT NOT NULL,
+ end_time BIGINT NOT NULL,
+ exclusive_execution BIT NOT NULL DEFAULT 0,
+ inputs VARBINARY(8000),
+ request_context VARCHAR(255),
+ request_type VARCHAR(255),
+ request_schedule_id BIGINT,
+ start_time BIGINT NOT NULL,
+ status VARCHAR(255),
+ PRIMARY KEY CLUSTERED (request_id)
+ );
+
+CREATE TABLE requestresourcefilter (
+ filter_id BIGINT NOT NULL,
+ request_id BIGINT NOT NULL,
+ service_name VARCHAR(255),
+ component_name VARCHAR(255),
+ hosts VARBINARY(8000),
+ PRIMARY KEY CLUSTERED (filter_id)
+ );
+
+CREATE TABLE requestoperationlevel (
+ operation_level_id BIGINT NOT NULL,
+ request_id BIGINT NOT NULL,
+ level_name VARCHAR(255),
+ cluster_name VARCHAR(255),
+ service_name VARCHAR(255),
+ host_component_name VARCHAR(255),
+ host_name VARCHAR(255),
+ PRIMARY KEY CLUSTERED (operation_level_id)
+ );
+
CREATE TABLE ClusterHostMapping (
cluster_id BIGINT NOT NULL,
host_id BIGINT NOT NULL,
PRIMARY KEY CLUSTERED (cluster_id, host_id));
-CREATE TABLE key_value_store ([key] VARCHAR(255), [value] VARCHAR(MAX), PRIMARY KEY CLUSTERED ([key]));
-CREATE TABLE hostconfigmapping (cluster_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, service_name VARCHAR(255), create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY CLUSTERED (cluster_id, host_name, type_name, create_timestamp));
-CREATE TABLE metainfo ([metainfo_key] VARCHAR(255), [metainfo_value] VARCHAR(255), PRIMARY KEY CLUSTERED ([metainfo_key]));
-CREATE TABLE ambari_sequences (sequence_name VARCHAR(255) PRIMARY KEY, [sequence_value] BIGINT NOT NULL);
-CREATE TABLE configgroup (group_id BIGINT, cluster_id BIGINT NOT NULL, group_name VARCHAR(255) NOT NULL, tag VARCHAR(1024) NOT NULL, description VARCHAR(1024), create_timestamp BIGINT NOT NULL, service_name VARCHAR(255), PRIMARY KEY(group_id));
-CREATE TABLE confgroupclusterconfigmapping (config_group_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, config_type VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, user_name VARCHAR(255) DEFAULT '_db', create_timestamp BIGINT NOT NULL, PRIMARY KEY(config_group_id, cluster_id, config_type));
-CREATE TABLE configgrouphostmapping (config_group_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, PRIMARY KEY(config_group_id, host_name));
-CREATE TABLE requestschedule (schedule_id bigint, cluster_id bigint NOT NULL, description varchar(255), status varchar(255), batch_separation_seconds smallint, batch_toleration_limit smallint, create_user varchar(255), create_timestamp bigint, update_user varchar(255), update_timestamp bigint, minutes varchar(10), hours varchar(10), days_of_month varchar(10), month varchar(10), day_of_week varchar(10), yearToSchedule varchar(10), startTime varchar(50), endTime varchar(50), last_execution_status varchar(255), PRIMARY KEY(schedule_id));
-CREATE TABLE requestschedulebatchrequest (schedule_id bigint, batch_id bigint, request_id bigint, request_type varchar(255), request_uri varchar(1024), request_body VARBINARY(8000), request_status varchar(255), return_code smallint, return_message text, PRIMARY KEY(schedule_id, batch_id));
-CREATE TABLE blueprint (blueprint_name VARCHAR(255) NOT NULL, stack_name VARCHAR(255) NOT NULL, stack_version VARCHAR(255) NOT NULL, PRIMARY KEY(blueprint_name));
-CREATE TABLE hostgroup (blueprint_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, cardinality VARCHAR(255) NOT NULL, PRIMARY KEY(blueprint_name, name));
-CREATE TABLE hostgroup_component (blueprint_name VARCHAR(255) NOT NULL, hostgroup_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(blueprint_name, hostgroup_name, name));
-CREATE TABLE blueprint_configuration (blueprint_name varchar(255) NOT NULL, type_name varchar(255) NOT NULL, config_data text NOT NULL, config_attributes VARCHAR(8000), PRIMARY KEY(blueprint_name, type_name));
-CREATE TABLE hostgroup_configuration (blueprint_name VARCHAR(255) NOT NULL, hostgroup_name VARCHAR(255) NOT NULL, type_name VARCHAR(255) NOT NULL, config_data TEXT NOT NULL, config_attributes TEXT, PRIMARY KEY(blueprint_name, hostgroup_name, type_name));
-CREATE TABLE viewmain (view_name VARCHAR(255) NOT NULL, label VARCHAR(255), description VARCHAR(2048), version VARCHAR(255), resource_type_id INTEGER NOT NULL, icon VARCHAR(255), icon64 VARCHAR(255), archive VARCHAR(255), mask VARCHAR(255), system_view BIT NOT NULL DEFAULT 0, PRIMARY KEY(view_name));
-CREATE TABLE viewinstancedata (view_instance_id BIGINT, view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, user_name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_instance_id, name, user_name));
-CREATE TABLE viewinstance (view_instance_id BIGINT, resource_id BIGINT NOT NULL, view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255), description VARCHAR(2048), visible CHAR(1), icon VARCHAR(255), icon64 VARCHAR(255), xml_driven CHAR(1), cluster_handle VARCHAR(255), PRIMARY KEY(view_instance_id));
-CREATE TABLE viewinstanceproperty (view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_name, view_instance_name, name));
-CREATE TABLE viewparameter (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, description VARCHAR(2048), label VARCHAR(255), placeholder VARCHAR(255), default_value VARCHAR(2000), cluster_config VARCHAR(255), required CHAR(1), masked CHAR(1), PRIMARY KEY(view_name, name));
-CREATE TABLE viewresource (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, plural_name VARCHAR(255), id_property VARCHAR(255), subResource_names VARCHAR(255), provider VARCHAR(255), service VARCHAR(255), resource VARCHAR(255), PRIMARY KEY(view_name, name));
-CREATE TABLE viewentity (id BIGINT NOT NULL, view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, class_name VARCHAR(255) NOT NULL, id_property VARCHAR(255), PRIMARY KEY(id));
-CREATE TABLE adminresourcetype (resource_type_id INTEGER NOT NULL, resource_type_name VARCHAR(255) NOT NULL, PRIMARY KEY(resource_type_id));
-CREATE TABLE adminresource (resource_id BIGINT NOT NULL, resource_type_id INTEGER NOT NULL, PRIMARY KEY(resource_id));
-CREATE TABLE adminprincipaltype (principal_type_id INTEGER NOT NULL, principal_type_name VARCHAR(255) NOT NULL, PRIMARY KEY(principal_type_id));
-CREATE TABLE adminprincipal (principal_id BIGINT NOT NULL, principal_type_id INTEGER NOT NULL, PRIMARY KEY(principal_id));
-CREATE TABLE adminpermission (permission_id BIGINT NOT NULL, permission_name VARCHAR(255) NOT NULL, resource_type_id INTEGER NOT NULL, PRIMARY KEY(permission_id));
-CREATE TABLE adminprivilege (privilege_id BIGINT, permission_id BIGINT NOT NULL, resource_id BIGINT NOT NULL, principal_id BIGINT NOT NULL, PRIMARY KEY(privilege_id));
-CREATE TABLE host_version (id BIGINT NOT NULL, repo_version_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, state VARCHAR(32) NOT NULL, PRIMARY KEY (id));
-CREATE TABLE repo_version (repo_version_id BIGINT NOT NULL, stack VARCHAR(255) NOT NULL, version VARCHAR(255) NOT NULL, display_name VARCHAR(128) NOT NULL, upgrade_package VARCHAR(255) NOT NULL, repositories VARCHAR(MAX) NOT NULL, PRIMARY KEY(repo_version_id));
-CREATE TABLE artifact (artifact_name VARCHAR(255) NOT NULL, artifact_data TEXT NOT NULL, foreign_keys VARCHAR(255) NOT NULL, PRIMARY KEY (artifact_name, foreign_keys));
+CREATE TABLE key_value_store (
+ [key] VARCHAR(255),
+ [value] VARCHAR(MAX),
+ PRIMARY KEY CLUSTERED ([key])
+ );
+
+CREATE TABLE hostconfigmapping (
+ cluster_id BIGINT NOT NULL,
+ host_name VARCHAR(255) NOT NULL,
+ type_name VARCHAR(255) NOT NULL,
+ version_tag VARCHAR(255) NOT NULL,
+ service_name VARCHAR(255),
+ create_timestamp BIGINT NOT NULL,
+ selected INTEGER NOT NULL DEFAULT 0,
+ user_name VARCHAR(255) NOT NULL DEFAULT '_db',
+ PRIMARY KEY CLUSTERED (
+ cluster_id,
+ host_name,
+ type_name,
+ create_timestamp
+ )
+ );
+
+CREATE TABLE metainfo (
+ [metainfo_key] VARCHAR(255),
+ [metainfo_value] VARCHAR(255),
+ PRIMARY KEY CLUSTERED ([metainfo_key])
+ );
+
+CREATE TABLE ambari_sequences (
+ sequence_name VARCHAR(255) PRIMARY KEY,
+ [sequence_value] BIGINT NOT NULL
+ );
+
+CREATE TABLE configgroup (
+ group_id BIGINT,
+ cluster_id BIGINT NOT NULL,
+ group_name VARCHAR(255) NOT NULL,
+ tag VARCHAR(1024) NOT NULL,
+ description VARCHAR(1024),
+ create_timestamp BIGINT NOT NULL,
+ service_name VARCHAR(255),
+ PRIMARY KEY (group_id)
+ );
+
+CREATE TABLE confgroupclusterconfigmapping (
+ config_group_id BIGINT NOT NULL,
+ cluster_id BIGINT NOT NULL,
+ config_type VARCHAR(255) NOT NULL,
+ version_tag VARCHAR(255) NOT NULL,
+ user_name VARCHAR(255) DEFAULT '_db',
+ create_timestamp BIGINT NOT NULL,
+ PRIMARY KEY (
+ config_group_id,
+ cluster_id,
+ config_type
+ )
+ );
+
+CREATE TABLE configgrouphostmapping (
+ config_group_id BIGINT NOT NULL,
+ host_name VARCHAR(255) NOT NULL,
+ PRIMARY KEY (
+ config_group_id,
+ host_name
+ )
+ );
+
+CREATE TABLE requestschedule (
+ schedule_id BIGINT,
+ cluster_id BIGINT NOT NULL,
+ description VARCHAR(255),
+ STATUS VARCHAR(255),
+ batch_separation_seconds SMALLINT,
+ batch_toleration_limit SMALLINT,
+ create_user VARCHAR(255),
+ create_timestamp BIGINT,
+ update_user VARCHAR(255),
+ update_timestamp BIGINT,
+ minutes VARCHAR(10),
+ hours VARCHAR(10),
+ days_of_month VARCHAR(10),
+ month VARCHAR(10),
+ day_of_week VARCHAR(10),
+ yearToSchedule VARCHAR(10),
+ startTime VARCHAR(50),
+ endTime VARCHAR(50),
+ last_execution_status VARCHAR(255),
+ PRIMARY KEY (schedule_id)
+ );
+
+CREATE TABLE requestschedulebatchrequest (
+ schedule_id BIGINT,
+ batch_id BIGINT,
+ request_id BIGINT,
+ request_type VARCHAR(255),
+ request_uri VARCHAR(1024),
+ request_body VARBINARY(8000),
+ request_status VARCHAR(255),
+ return_code SMALLINT,
+ return_message TEXT,
+ PRIMARY KEY (
+ schedule_id,
+ batch_id
+ )
+ );
+
+CREATE TABLE blueprint (
+ blueprint_name VARCHAR(255) NOT NULL,
+ stack_id BIGINT NOT NULL,
+ PRIMARY KEY (blueprint_name),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
+ );
+
+CREATE TABLE hostgroup (
+ blueprint_name VARCHAR(255) NOT NULL,
+ NAME VARCHAR(255) NOT NULL,
+ cardinality VARCHAR(255) NOT NULL,
+ PRIMARY KEY (
+ blueprint_name,
+ NAME
+ )
+ );
+
+CREATE TABLE hostgroup_component (
+ blueprint_name VARCHAR(255) NOT NULL,
+ hostgroup_name VARCHAR(255) NOT NULL,
+ NAME VARCHAR(255) NOT NULL,
+ PRIMARY KEY (
+ blueprint_name,
+ hostgroup_name,
+ NAME
+ )
+ );
+
+CREATE TABLE blueprint_configuration (
+ blueprint_name VARCHAR(255) NOT NULL,
+ type_name VARCHAR(255) NOT NULL,
+ config_data TEXT NOT NULL,
+ config_attributes VARCHAR(8000),
+ PRIMARY KEY (
+ blueprint_name,
+ type_name
+ )
+ );
+
+CREATE TABLE hostgroup_configuration (
+ blueprint_name VARCHAR(255) NOT NULL,
+ hostgroup_name VARCHAR(255) NOT NULL,
+ type_name VARCHAR(255) NOT NULL,
+ config_data TEXT NOT NULL,
+ config_attributes TEXT,
+ PRIMARY KEY (
+ blueprint_name,
+ hostgroup_name,
+ type_name
+ )
+ );
+
+CREATE TABLE viewmain (
+ view_name VARCHAR(255) NOT NULL,
+ label VARCHAR(255),
+ description VARCHAR(2048),
+ version VARCHAR(255),
+ resource_type_id INTEGER NOT NULL,
+ icon VARCHAR(255),
+ icon64 VARCHAR(255),
+ archive VARCHAR(255),
+ mask VARCHAR(255),
+ system_view BIT NOT NULL DEFAULT 0,
+ PRIMARY KEY (view_name)
+ );
+
+CREATE TABLE viewinstancedata (
+ view_instance_id BIGINT,
+ view_name VARCHAR(255) NOT NULL,
+ view_instance_name VARCHAR(255) NOT NULL,
+ NAME VARCHAR(255) NOT NULL,
+ user_name VARCHAR(255) NOT NULL,
+ value VARCHAR(2000) NOT NULL,
+ PRIMARY KEY (
+ view_instance_id,
+ NAME,
+ user_name
+ )
+ );
+CREATE TABLE viewinstance (
+ view_instance_id BIGINT,
+ resource_id BIGINT NOT NULL,
+ view_name VARCHAR(255) NOT NULL,
+ NAME VARCHAR(255) NOT NULL,
+ label VARCHAR(255),
+ description VARCHAR(2048),
+ visible CHAR(1),
+ icon VARCHAR(255),
+ icon64 VARCHAR(255),
+ xml_driven CHAR(1),
+ cluster_handle VARCHAR(255),
+ PRIMARY KEY (view_instance_id)
+ );
+
+CREATE TABLE viewinstanceproperty (
+ view_name VARCHAR(255) NOT NULL,
+ view_instance_name VARCHAR(255) NOT NULL,
+ NAME VARCHAR(255) NOT NULL,
+ value VARCHAR(2000) NOT NULL,
+ PRIMARY KEY (
+ view_name,
+ view_instance_name,
+ NAME
+ )
+ );
+
+CREATE TABLE viewparameter (
+ view_name VARCHAR(255) NOT NULL,
+ NAME VARCHAR(255) NOT NULL,
+ description VARCHAR(2048),
+ label VARCHAR(255),
+ placeholder VARCHAR(255),
+ default_value VARCHAR(2000),
+ cluster_config VARCHAR(255),
+ required CHAR(1),
+ masked CHAR(1),
+ PRIMARY KEY (
+ view_name,
+ NAME
+ )
+ );
+
+CREATE TABLE viewresource (
+ view_name VARCHAR(255) NOT NULL,
+ NAME VARCHAR(255) NOT NULL,
+ plural_name VARCHAR(255),
+ id_property VARCHAR(255),
+ subResource_names VARCHAR(255),
+ provider VARCHAR(255),
+ service VARCHAR(255),
+ resource VARCHAR(255),
+ PRIMARY KEY (
+ view_name,
+ NAME
+ )
+ );
+
+CREATE TABLE viewentity (
+ id BIGINT NOT NULL,
+ view_name VARCHAR(255) NOT NULL,
+ view_instance_name VARCHAR(255) NOT NULL,
+ class_name VARCHAR(255) NOT NULL,
+ id_property VARCHAR(255),
+ PRIMARY KEY (id)
+ );
+
+CREATE TABLE adminresourcetype (
+ resource_type_id INTEGER NOT NULL,
+ resource_type_name VARCHAR(255) NOT NULL,
+ PRIMARY KEY (resource_type_id)
+ );
+
+CREATE TABLE adminresource (
+ resource_id BIGINT NOT NULL,
+ resource_type_id INTEGER NOT NULL,
+ PRIMARY KEY (resource_id)
+ );
+
+CREATE TABLE adminprincipaltype (
+ principal_type_id INTEGER NOT NULL,
+ principal_type_name VARCHAR(255) NOT NULL,
+ PRIMARY KEY (principal_type_id)
+ );
+
+CREATE TABLE adminprincipal (
+ principal_id BIGINT NOT NULL,
+ principal_type_id INTEGER NOT NULL,
+ PRIMARY KEY (principal_id)
+ );
+
+CREATE TABLE adminpermission (
+ permission_id BIGINT NOT NULL,
+ permission_name VARCHAR(255) NOT NULL,
+ resource_type_id INTEGER NOT NULL,
+ PRIMARY KEY (permission_id)
+ );
+
+CREATE TABLE adminprivilege (
+ privilege_id BIGINT,
+ permission_id BIGINT NOT NULL,
+ resource_id BIGINT NOT NULL,
+ principal_id BIGINT NOT NULL,
+ PRIMARY KEY (privilege_id)
+ );
+
+CREATE TABLE host_version (
+ id BIGINT NOT NULL,
+ repo_version_id BIGINT NOT NULL,
+ host_name VARCHAR(255) NOT NULL,
+ STATE VARCHAR(32) NOT NULL,
+ PRIMARY KEY (id)
+ );
+
+CREATE TABLE repo_version (
+ repo_version_id BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
+ version VARCHAR(255) NOT NULL,
+ display_name VARCHAR(128) NOT NULL,
+ upgrade_package VARCHAR(255) NOT NULL,
+ repositories VARCHAR(MAX) NOT NULL,
+ PRIMARY KEY (repo_version_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id)
+ );
+
+CREATE TABLE artifact (
+ artifact_name VARCHAR(255) NOT NULL,
+ artifact_data TEXT NOT NULL,
+ foreign_keys VARCHAR(255) NOT NULL,
+ PRIMARY KEY (
+ artifact_name,
+ foreign_keys
+ )
+ );
+
-- altering tables by creating unique constraints----------
--------altering tables to add constraints----------
ALTER TABLE users ADD CONSTRAINT UNQ_users_0 UNIQUE (user_name, ldap_user);
@@ -157,7 +671,7 @@ ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_ins
ALTER TABLE serviceconfig ADD CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version);
ALTER TABLE adminpermission ADD CONSTRAINT UQ_perm_name_resource_type_id UNIQUE (permission_name, resource_type_id);
ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_display_name UNIQUE (display_name);
-ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack, version);
+ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack_id, version);
-- altering tables by creating foreign keys----------
ALTER TABLE members ADD CONSTRAINT FK_members_group_id FOREIGN KEY (group_id) REFERENCES groups (group_id);
@@ -396,14 +910,6 @@ CREATE TABLE upgrade_item (
FOREIGN KEY (upgrade_group_id) REFERENCES upgrade_group(upgrade_group_id)
);
-CREATE TABLE stack(
- stack_id BIGINT NOT NULL,
- stack_name VARCHAR(255) NOT NULL,
- stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (stack_id),
- CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
-);
-
---------inserting some data-----------
BEGIN TRANSACTION
INSERT INTO ambari_sequences (sequence_name, [sequence_value])
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java
index d498c97..ca07938 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java
@@ -32,8 +32,8 @@ import junit.framework.Assert;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.Role;
import org.apache.ambari.server.RoleCommand;
-import org.apache.ambari.server.agent.ExecutionCommand;
import org.apache.ambari.server.agent.AgentCommand.AgentCommandType;
+import org.apache.ambari.server.agent.ExecutionCommand;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.state.Cluster;
@@ -41,6 +41,7 @@ import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigFactory;
import org.apache.ambari.server.state.ConfigHelper;
+import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartEvent;
import org.apache.ambari.server.utils.StageUtils;
import org.codehaus.jettison.json.JSONException;
@@ -51,7 +52,7 @@ import com.google.inject.Guice;
import com.google.inject.Injector;
public class ExecutionCommandWrapperTest {
-
+
private static final String HOST1 = "dev01.ambari.apache.org";
private static final String CLUSTER1 = "c1";
private static final String CLUSTER_VERSION_TAG = "clusterVersion";
@@ -86,7 +87,7 @@ public class ExecutionCommandWrapperTest {
private static Map<String, String> SERVICE_SITE_SERVICE;
private static Map<String, String> SERVICE_SITE_HOST;
private static Map<String, Map<String, String>> CONFIG_ATTRIBUTES;
-
+
private static Injector injector;
private static Clusters clusters;
private static ConfigFactory configFactory;
@@ -98,35 +99,35 @@ public class ExecutionCommandWrapperTest {
injector.getInstance(GuiceJpaInitializer.class);
configHelper = injector.getInstance(ConfigHelper.class);
configFactory = injector.getInstance(ConfigFactory.class);
-
+
clusters = injector.getInstance(Clusters.class);
clusters.addHost(HOST1);
clusters.getHost(HOST1).persist();
- clusters.addCluster(CLUSTER1);
-
+ clusters.addCluster(CLUSTER1, new StackId("HDP-0.1"));
+
Cluster cluster1 = clusters.getCluster(CLUSTER1);
-
+
SERVICE_SITE_CLUSTER = new HashMap<String, String>();
SERVICE_SITE_CLUSTER.put(SERVICE_SITE_NAME1, SERVICE_SITE_VAL1);
SERVICE_SITE_CLUSTER.put(SERVICE_SITE_NAME2, SERVICE_SITE_VAL2);
SERVICE_SITE_CLUSTER.put(SERVICE_SITE_NAME3, SERVICE_SITE_VAL3);
SERVICE_SITE_CLUSTER.put(SERVICE_SITE_NAME4, SERVICE_SITE_VAL4);
-
+
SERVICE_SITE_SERVICE = new HashMap<String, String>();
SERVICE_SITE_SERVICE.put(SERVICE_SITE_NAME1, SERVICE_SITE_VAL1_S);
SERVICE_SITE_SERVICE.put(SERVICE_SITE_NAME2, SERVICE_SITE_VAL2_S);
SERVICE_SITE_SERVICE.put(SERVICE_SITE_NAME5, SERVICE_SITE_VAL5_S);
-
+
SERVICE_SITE_HOST = new HashMap<String, String>();
SERVICE_SITE_HOST.put(SERVICE_SITE_NAME2, SERVICE_SITE_VAL2_H);
SERVICE_SITE_HOST.put(SERVICE_SITE_NAME6, SERVICE_SITE_VAL6_H);
-
+
GLOBAL_CLUSTER = new HashMap<String, String>();
GLOBAL_CLUSTER.put(GLOBAL_NAME1, GLOBAL_CLUSTER_VAL1);
GLOBAL_CLUSTER.put(GLOBAL_NAME2, GLOBAL_CLUSTER_VAL2);
-
+
CONFIG_ATTRIBUTES = new HashMap<String, Map<String,String>>();
-
+
//Cluster level global config
Config globalConfig = configFactory.createNew(cluster1, GLOBAL_CONFIG, GLOBAL_CLUSTER, CONFIG_ATTRIBUTES);
globalConfig.setTag(CLUSTER_VERSION_TAG);
@@ -136,25 +137,25 @@ public class ExecutionCommandWrapperTest {
Config serviceSiteConfigCluster = configFactory.createNew(cluster1, SERVICE_SITE_CONFIG, SERVICE_SITE_CLUSTER, CONFIG_ATTRIBUTES);
serviceSiteConfigCluster.setTag(CLUSTER_VERSION_TAG);
cluster1.addConfig(serviceSiteConfigCluster);
-
+
//Service level service config
Config serviceSiteConfigService = configFactory.createNew(cluster1, SERVICE_SITE_CONFIG, SERVICE_SITE_SERVICE, CONFIG_ATTRIBUTES);
serviceSiteConfigService.setTag(SERVICE_VERSION_TAG);
cluster1.addConfig(serviceSiteConfigService);
-
+
//Host level service config
Config serviceSiteConfigHost = configFactory.createNew(cluster1, SERVICE_SITE_CONFIG, SERVICE_SITE_HOST, CONFIG_ATTRIBUTES);
serviceSiteConfigHost.setTag(HOST_VERSION_TAG);
cluster1.addConfig(serviceSiteConfigHost);
-
+
ActionDBAccessor db = injector.getInstance(ActionDBAccessorImpl.class);
-
+
createTask(db, 1, 1, HOST1, CLUSTER1);
-
+
}
-
+
private static void createTask(ActionDBAccessor db, long requestId, long stageId, String hostName, String clusterName) throws AmbariException {
-
+
Stage s = new Stage(requestId, "/var/log", clusterName, 1L, "execution command wrapper test", "clusterHostInfo", "commandParamsStage", "hostParamsStage");
s.setStageId(stageId);
s.addHostRoleExecutionCommand(hostName, Role.NAMENODE,
@@ -166,33 +167,33 @@ public class ExecutionCommandWrapperTest {
Request request = new Request(stages, clusters);
db.persistActions(request);
}
-
+
@Test
public void testGetExecutionCommand() throws JSONException, AmbariException {
-
-
+
+
Map<String, Map<String, String>> confs = new HashMap<String, Map<String, String>>();
Map<String, String> configurationsGlobal = new HashMap<String, String>();
configurationsGlobal.put(GLOBAL_NAME1, GLOBAL_VAL1);
confs.put(GLOBAL_CONFIG, configurationsGlobal);
-
+
Map<String, Map<String, String>> confTags = new HashMap<String, Map<String, String>>();
Map<String, String> confTagServiceSite = new HashMap<String, String>();
-
+
confTagServiceSite.put("tag", CLUSTER_VERSION_TAG);
confTagServiceSite.put("service_override_tag", SERVICE_VERSION_TAG);
confTagServiceSite.put("host_override_tag", HOST_VERSION_TAG);
-
+
confTags.put(SERVICE_SITE_CONFIG, confTagServiceSite);
-
+
Map<String, String> confTagGlobal = Collections.singletonMap("tag", CLUSTER_VERSION_TAG);
-
+
confTags.put(GLOBAL_CONFIG, confTagGlobal);
-
-
+
+
ExecutionCommand executionCommand = new ExecutionCommand();
-
-
+
+
executionCommand.setClusterName(CLUSTER1);
executionCommand.setTaskId(1);
executionCommand.setCommandId("1-1");
@@ -205,63 +206,63 @@ public class ExecutionCommandWrapperTest {
executionCommand.setServiceName("HDFS");
executionCommand.setCommandType(AgentCommandType.EXECUTION_COMMAND);
executionCommand.setCommandParams(Collections.<String, String>emptyMap());
-
+
String json = StageUtils.getGson().toJson(executionCommand, ExecutionCommand.class);
ExecutionCommandWrapper execCommWrap = new ExecutionCommandWrapper(json);
ExecutionCommand processedExecutionCommand = execCommWrap.getExecutionCommand();
-
+
Map<String, String> serviceSiteConfig = processedExecutionCommand.getConfigurations().get(SERVICE_SITE_CONFIG);
-
+
Assert.assertEquals(SERVICE_SITE_VAL1_S, serviceSiteConfig.get(SERVICE_SITE_NAME1));
Assert.assertEquals(SERVICE_SITE_VAL2_H, serviceSiteConfig.get(SERVICE_SITE_NAME2));
Assert.assertEquals(SERVICE_SITE_VAL3, serviceSiteConfig.get(SERVICE_SITE_NAME3));
Assert.assertEquals(SERVICE_SITE_VAL4, serviceSiteConfig.get(SERVICE_SITE_NAME4));
Assert.assertEquals(SERVICE_SITE_VAL5_S, serviceSiteConfig.get(SERVICE_SITE_NAME5));
Assert.assertEquals(SERVICE_SITE_VAL6_H, serviceSiteConfig.get(SERVICE_SITE_NAME6));
-
+
Map<String, String> globalConfig = processedExecutionCommand.getConfigurations().get(GLOBAL_CONFIG);
-
+
Assert.assertEquals(GLOBAL_VAL1, globalConfig.get(GLOBAL_NAME1));
Assert.assertEquals(GLOBAL_CLUSTER_VAL2, globalConfig.get(GLOBAL_NAME2));
-
+
//Union of all keys of service site configs
Set<String> serviceSiteKeys = new HashSet<String>();
serviceSiteKeys.addAll(SERVICE_SITE_CLUSTER.keySet());
serviceSiteKeys.addAll(SERVICE_SITE_SERVICE.keySet());
serviceSiteKeys.addAll(SERVICE_SITE_HOST.keySet());
-
+
Assert.assertEquals(serviceSiteKeys.size(), serviceSiteConfig.size());
-
+
}
-
+
@Test
public void testGetMergedConfig() {
Map<String, String> baseConfig = new HashMap<String, String>();
-
+
baseConfig.put(SERVICE_SITE_NAME1, SERVICE_SITE_VAL1);
baseConfig.put(SERVICE_SITE_NAME2, SERVICE_SITE_VAL2);
baseConfig.put(SERVICE_SITE_NAME3, SERVICE_SITE_VAL3);
baseConfig.put(SERVICE_SITE_NAME4, SERVICE_SITE_VAL4);
baseConfig.put(SERVICE_SITE_NAME5, SERVICE_SITE_VAL5);
-
+
Map<String, String> overrideConfig = new HashMap<String, String>();
-
+
overrideConfig.put(SERVICE_SITE_NAME2, SERVICE_SITE_VAL2_H);
overrideConfig.put(SERVICE_SITE_NAME6, SERVICE_SITE_VAL6_H);
-
-
+
+
Map<String, String> mergedConfig = configHelper.getMergedConfig(baseConfig,
overrideConfig);
-
-
+
+
Set<String> configsKeys = new HashSet<String>();
configsKeys.addAll(baseConfig.keySet());
configsKeys.addAll(overrideConfig.keySet());
-
+
Assert.assertEquals(configsKeys.size(), mergedConfig.size());
-
+
Assert.assertEquals(SERVICE_SITE_VAL1, mergedConfig.get(SERVICE_SITE_NAME1));
Assert.assertEquals(SERVICE_SITE_VAL2_H, mergedConfig.get(SERVICE_SITE_NAME2));
Assert.assertEquals(SERVICE_SITE_VAL3, mergedConfig.get(SERVICE_SITE_NAME3));
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
index 112e1e5..6a6f75a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
@@ -36,6 +36,7 @@ import org.apache.ambari.server.Role;
import org.apache.ambari.server.RoleCommand;
import org.apache.ambari.server.agent.ActionQueue;
import org.apache.ambari.server.agent.CommandReport;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.api.services.BaseRequest;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.ExecuteActionRequest;
@@ -45,16 +46,14 @@ import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.DBAccessorImpl;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
-import org.apache.ambari.server.orm.dao.DaoUtils;
import org.apache.ambari.server.orm.dao.ExecutionCommandDAO;
import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
import org.apache.ambari.server.serveraction.MockServerAction;
-import org.apache.ambari.server.stack.StackManagerFactory;
import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartEvent;
import org.apache.ambari.server.utils.StageUtils;
-import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -65,7 +64,6 @@ import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
-import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.google.inject.persist.PersistService;
import com.google.inject.persist.UnitOfWork;
@@ -96,18 +94,17 @@ public class TestActionDBAccessorImpl {
@Inject
private HostRoleCommandDAO hostRoleCommandDAO;
- @Inject
- private Provider<EntityManager> entityManagerProvider;
-
- @Inject
- private DaoUtils daoUtils;
-
@Before
public void setup() throws AmbariException {
InMemoryDefaultTestModule defaultTestModule = new InMemoryDefaultTestModule();
injector = Guice.createInjector(Modules.override(defaultTestModule)
.with(new TestActionDBAccessorModule()));
+
injector.getInstance(GuiceJpaInitializer.class);
+
+ // initialize AmbariMetaInfo so that the stacks are populated into the DB
+ injector.getInstance(AmbariMetaInfo.class);
+
injector.injectMembers(this);
// Add this host's name since it is needed for server-side actions.
@@ -116,11 +113,14 @@ public class TestActionDBAccessorImpl {
clusters.addHost(hostName);
clusters.getHost(hostName).persist();
- clusters.addCluster(clusterName);
+
+ StackId stackId = new StackId("HDP-0.1");
+ clusters.addCluster(clusterName, stackId);
db = injector.getInstance(ActionDBAccessorImpl.class);
am = new ActionManager(5000, 1200000, new ActionQueue(), clusters, db,
new HostsMap((String) null), injector.getInstance(UnitOfWork.class),
+
injector.getInstance(RequestFactory.class), null, null);
}
@@ -324,12 +324,14 @@ public class TestActionDBAccessorImpl {
Stage stage1 = db.getStage("23-31");
stage1.setHostRoleStatus(hostName, Role.HBASE_MASTER.toString(), HostRoleStatus.COMPLETED);
db.hostRoleScheduled(stage1, hostName, Role.HBASE_MASTER.toString());
+ injector.getInstance(EntityManager.class).clear();
}
};
thread.start();
thread.join();
+ injector.getInstance(EntityManager.class).clear();
entities = hostRoleCommandDAO.findByHostRole(hostName, requestId, stageId, Role.HBASE_MASTER.toString());
assertEquals("Concurrent update failed", HostRoleStatus.COMPLETED, entities.get(0).getStatus());
}
@@ -363,12 +365,14 @@ public class TestActionDBAccessorImpl {
Stage stage1 = db.getStage("23-31");
stage1.setHostRoleStatus(hostName, actionName, HostRoleStatus.COMPLETED);
db.hostRoleScheduled(stage1, hostName, actionName);
+ injector.getInstance(EntityManager.class).clear();
}
};
thread.start();
thread.join();
+ injector.getInstance(EntityManager.class).clear();
entities = hostRoleCommandDAO.findByHostRole(hostName, requestId, stageId, actionName);
assertEquals("Concurrent update failed", HostRoleStatus.COMPLETED, entities.get(0).getStatus());
}
@@ -403,12 +407,14 @@ public class TestActionDBAccessorImpl {
Stage stage1 = db.getStage("23-31");
stage1.setHostRoleStatus(serverHostName, roleName, HostRoleStatus.COMPLETED);
db.hostRoleScheduled(stage1, serverHostName, roleName);
+ injector.getInstance(EntityManager.class).clear();
}
};
thread.start();
thread.join();
+ injector.getInstance(EntityManager.class).clear();
entities = hostRoleCommandDAO.findByHostRole(serverHostName, requestId, stageId, roleName);
assertEquals("Concurrent update failed", HostRoleStatus.COMPLETED, entities.get(0).getStatus());
}
@@ -559,8 +565,6 @@ public class TestActionDBAccessorImpl {
@Override
protected void configure() {
bind(DBAccessor.class).to(TestDBAccessorImpl.class);
- bind(StackManagerFactory.class).toInstance(
- EasyMock.createNiceMock(StackManagerFactory.class));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
index 6c5a8a0..5e20bee 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
@@ -30,6 +30,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import junit.framework.Assert;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.Role;
import org.apache.ambari.server.RoleCommand;
@@ -39,6 +41,7 @@ import org.apache.ambari.server.controller.HostsMap;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartEvent;
import org.apache.ambari.server.utils.StageUtils;
import org.junit.After;
@@ -51,8 +54,6 @@ import com.google.inject.Injector;
import com.google.inject.persist.PersistService;
import com.google.inject.persist.UnitOfWork;
-import junit.framework.Assert;
-
public class TestActionManager {
private long requestId = 23;
@@ -71,7 +72,8 @@ public class TestActionManager {
clusters = injector.getInstance(Clusters.class);
clusters.addHost(hostname);
clusters.getHost(hostname).persist();
- clusters.addCluster(clusterName);
+ StackId stackId = new StackId("HDP-0.1");
+ clusters.addCluster(clusterName, stackId);
unitOfWork = injector.getInstance(UnitOfWork.class);
}
@@ -122,7 +124,7 @@ public class TestActionManager {
assertFalse(db.getRequest(requestId).getEndTime() == -1);
}
-
+
@Test
public void testLargeLogs() throws AmbariException {
ActionDBAccessor db = injector.getInstance(ActionDBAccessorImpl.class);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index c6e2788..5ae6d5d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@ -763,7 +763,10 @@ public class TestHeartbeatHandler {
injector.injectMembers(this);
clusters.addHost(DummyHostname1);
clusters.getHost(DummyHostname1).persist();
- clusters.addCluster(DummyCluster);
+
+ StackId dummyStackId = new StackId(DummyStackId);
+ clusters.addCluster(DummyCluster, dummyStackId);
+
ActionDBAccessor db = injector.getInstance(ActionDBAccessorImpl.class);
ActionManager am = new ActionManager(5000, 1200000, new ActionQueue(), clusters, db,
new HostsMap((String) null), unitOfWork, injector.getInstance(RequestFactory.class), null, null);
@@ -1536,14 +1539,14 @@ public class TestHeartbeatHandler {
getServiceComponent(HDFS_CLIENT).getServiceComponentHost(DummyHostname1);
StackId stack130 = new StackId("HDP-1.3.0");
- StackId stack122 = new StackId("HDP-1.2.2");
+ StackId stack120 = new StackId("HDP-1.2.0");
serviceComponentHost1.setState(State.INSTALLED);
serviceComponentHost2.setState(State.STARTED);
serviceComponentHost3.setState(State.STARTED);
serviceComponentHost1.setStackVersion(stack130);
- serviceComponentHost2.setStackVersion(stack122);
- serviceComponentHost3.setStackVersion(stack122);
+ serviceComponentHost2.setStackVersion(stack120);
+ serviceComponentHost3.setStackVersion(stack120);
HeartBeat hb = new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
@@ -1578,7 +1581,7 @@ public class TestHeartbeatHandler {
assertEquals("Matching value " + serviceComponentHost1.getStackVersion(),
stack130, serviceComponentHost1.getStackVersion());
assertEquals("Matching value " + serviceComponentHost2.getStackVersion(),
- stack122, serviceComponentHost2.getStackVersion());
+ stack120, serviceComponentHost2.getStackVersion());
assertEquals("Matching value " + serviceComponentHost3.getStackVersion(),
stack130, serviceComponentHost3.getStackVersion());
assertTrue(hb.getAgentEnv().getHostHealth().getServerTimeStampAtReporting() >= hb.getTimestamp());
@@ -1611,14 +1614,14 @@ public class TestHeartbeatHandler {
getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
StackId stack130 = new StackId("HDP-1.3.0");
- StackId stack122 = new StackId("HDP-1.2.2");
+ StackId stack120 = new StackId("HDP-1.2.0");
serviceComponentHost1.setState(State.UPGRADING);
serviceComponentHost2.setState(State.INSTALLING);
- serviceComponentHost1.setStackVersion(stack122);
+ serviceComponentHost1.setStackVersion(stack120);
serviceComponentHost1.setDesiredStackVersion(stack130);
- serviceComponentHost2.setStackVersion(stack122);
+ serviceComponentHost2.setStackVersion(stack120);
HeartBeat hb = new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
@@ -1671,7 +1674,7 @@ public class TestHeartbeatHandler {
serviceComponentHost1.getDesiredStackVersion(),
stack130, serviceComponentHost1.getStackVersion());
assertEquals("Stack version for SCH should not change ",
- stack122, serviceComponentHost2.getStackVersion());
+ stack120, serviceComponentHost2.getStackVersion());
}
@Test
@@ -1701,14 +1704,14 @@ public class TestHeartbeatHandler {
getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
StackId stack130 = new StackId("HDP-1.3.0");
- StackId stack122 = new StackId("HDP-1.2.2");
+ StackId stack120 = new StackId("HDP-1.2.0");
serviceComponentHost1.setState(State.UPGRADING);
serviceComponentHost2.setState(State.INSTALLING);
- serviceComponentHost1.setStackVersion(stack122);
+ serviceComponentHost1.setStackVersion(stack120);
serviceComponentHost1.setDesiredStackVersion(stack130);
- serviceComponentHost2.setStackVersion(stack122);
+ serviceComponentHost2.setStackVersion(stack120);
HeartBeat hb = new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
@@ -1793,14 +1796,14 @@ public class TestHeartbeatHandler {
getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
StackId stack130 = new StackId("HDP-1.3.0");
- StackId stack122 = new StackId("HDP-1.2.2");
+ StackId stack120 = new StackId("HDP-1.2.0");
serviceComponentHost1.setState(State.UPGRADING);
serviceComponentHost2.setState(State.INSTALLING);
- serviceComponentHost1.setStackVersion(stack122);
+ serviceComponentHost1.setStackVersion(stack120);
serviceComponentHost1.setDesiredStackVersion(stack130);
- serviceComponentHost2.setStackVersion(stack122);
+ serviceComponentHost2.setStackVersion(stack120);
Stage s = new Stage(requestId, "/a/b", "cluster1", 1L, "action manager test",
"clusterHostInfo", "commandParamsStage", "hostParamsStage");
@@ -1885,7 +1888,7 @@ public class TestHeartbeatHandler {
assertEquals("State of SCH should change after fail report",
State.INSTALL_FAILED, serviceComponentHost2.getState());
assertEquals("Stack version of SCH should not change after fail report",
- stack122, serviceComponentHost1.getStackVersion());
+ stack120, serviceComponentHost1.getStackVersion());
assertEquals("Stack version of SCH should not change after fail report",
stack130, serviceComponentHost1.getDesiredStackVersion());
assertEquals("Stack version of SCH should not change after fail report",
@@ -2344,14 +2347,17 @@ public class TestHeartbeatHandler {
clusters.getHost(DummyHostname1).setHostAttributes(hostAttributes);
clusters.getHost(DummyHostname1).persist();
- clusters.addCluster(DummyCluster);
- Cluster cluster = clusters.getCluster(DummyCluster);
StackId stackId = new StackId(DummyStackId);
+ clusters.addCluster(DummyCluster, stackId);
+
+ Cluster cluster = clusters.getCluster(DummyCluster);
+
cluster.setDesiredStackVersion(stackId);
cluster.setCurrentStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackId(), stackId.getStackVersion());
- cluster.createClusterVersion(stackId.getStackId(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
return cluster;
}
@@ -2607,17 +2613,18 @@ public class TestHeartbeatHandler {
hb.setHostname(DummyHostname1);
hb.setComponentStatus(new ArrayList<ComponentStatus>());
+ StackId stackId = new StackId("HDP", "0.1");
RepositoryVersionDAO dao = injector.getInstance(RepositoryVersionDAO.class);
- RepositoryVersionEntity entity = dao.findByStackAndVersion("HDP-0.1", "0.1");
+ RepositoryVersionEntity entity = dao.findByStackAndVersion(stackId, "0.1");
Assert.assertNotNull(entity);
handler.handleHeartBeat(hb);
- entity = dao.findByStackAndVersion("HDP-0.1", "0.1");
+ entity = dao.findByStackAndVersion(stackId, "0.1");
Assert.assertNull(entity);
- entity = dao.findByStackAndVersion("HDP-0.1", "2.2.1.0-2222");
+ entity = dao.findByStackAndVersion(stackId, "2.2.1.0-2222");
Assert.assertNotNull(entity);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
index 6bb053b..c47b601 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
@@ -106,6 +106,7 @@ public class TestHeartbeatMonitor {
@Test
public void testStateCommandsGeneration() throws AmbariException, InterruptedException,
InvalidStateTransitionException {
+ StackId stackId = new StackId("HDP-0.1");
Clusters clusters = injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1), "redhat", "6.3");
@@ -113,12 +114,11 @@ public class TestHeartbeatMonitor {
clusters.addHost(hostname2);
setOsFamily(clusters.getHost(hostname2), "redhat", "6.3");
clusters.getHost(hostname2).persist();
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
Cluster cluster = clusters.getCluster(clusterName);
- StackId stackId = new StackId("HDP-0.1");
- 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);
Set<String> hostNames = new HashSet<String>(){{
add(hostname1);
add(hostname2);
@@ -192,6 +192,7 @@ public class TestHeartbeatMonitor {
@Test
public void testStatusCommandForAnyComponents() throws Exception {
+ StackId stackId = new StackId("HDP-0.1");
Clusters clusters = injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1), "redhat", "6.3");
@@ -199,12 +200,12 @@ public class TestHeartbeatMonitor {
clusters.addHost(hostname2);
setOsFamily(clusters.getHost(hostname2), "redhat", "6.3");
clusters.getHost(hostname2).persist();
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
Cluster cluster = clusters.getCluster(clusterName);
- StackId stackId = new StackId("HDP-0.1");
- 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);
Set<String> hostNames = new HashSet<String>() {{
add(hostname1);
add(hostname2);
@@ -301,16 +302,17 @@ public class TestHeartbeatMonitor {
@Test
public void testHeartbeatStateCommandsEnqueueing() throws AmbariException, InterruptedException,
InvalidStateTransitionException {
+ StackId stackId = new StackId("HDP-0.1");
Clusters clusters = injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1), "redhat", "5.9");
clusters.getHost(hostname1).persist();
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
Cluster cluster = clusters.getCluster(clusterName);
- StackId stackId = new StackId("HDP-0.1");
- 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);
Set<String> hostNames = new HashSet<String>(){{
add(hostname1);
@@ -411,17 +413,18 @@ public class TestHeartbeatMonitor {
@Test
public void testHeartbeatLossWithComponent() throws AmbariException, InterruptedException,
InvalidStateTransitionException {
+ StackId stackId = new StackId("HDP-0.1");
Clusters clusters = injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1), "redhat", "6.3");
clusters.getHost(hostname1).persist();
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
Cluster cluster = clusters.getCluster(clusterName);
- StackId stackId = new StackId("HDP-0.1");
- 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);
Set<String> hostNames = new HashSet<String>(){{
add(hostname1);
@@ -525,6 +528,7 @@ public class TestHeartbeatMonitor {
@Test
public void testStateCommandsWithAlertsGeneration() throws AmbariException, InterruptedException,
InvalidStateTransitionException {
+ StackId stackId = new StackId("HDP-2.0.7");
Clusters clusters = injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
@@ -534,13 +538,14 @@ public class TestHeartbeatMonitor {
clusters.addHost(hostname2);
setOsFamily(clusters.getHost(hostname2), "redhat", "6.3");
clusters.getHost(hostname2).persist();
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
Cluster cluster = clusters.getCluster(clusterName);
- StackId stackId = new StackId("HDP-2.0.7");
+
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);
Set<String> hostNames = new HashSet<String>(){{
add(hostname1);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheckTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheckTest.java
index f70d9fc..96151af 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheckTest.java
@@ -25,6 +25,7 @@ import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.entities.HostVersionEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Host;
@@ -96,17 +97,42 @@ public class HostsRepositoryVersionCheckTest {
hosts.put("host2", host2);
hosts.put("host3", host3);
Mockito.when(clusters.getHostsForCluster("cluster")).thenReturn(hosts);
- Mockito.when(repositoryVersionDAO.findByStackAndVersion(Mockito.anyString(), Mockito.anyString())).thenReturn(null);
+
+ Mockito.when(
+ repositoryVersionDAO.findByStackAndVersion(Mockito.any(StackId.class),
+ Mockito.anyString())).thenReturn(null);
+
+ Mockito.when(
+ repositoryVersionDAO.findByStackAndVersion(
+ Mockito.any(StackEntity.class), Mockito.anyString())).thenReturn(
+ null);
PrerequisiteCheck check = new PrerequisiteCheck(null, null);
hostsRepositoryVersionCheck.perform(check, new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
+ StackEntity stackEntity = new StackEntity();
+ stackEntity.setStackName("HDP");
+ stackEntity.setStackVersion("2.0.6");
+
final RepositoryVersionEntity repositoryVersion = new RepositoryVersionEntity();
- Mockito.when(repositoryVersionDAO.findByStackAndVersion(Mockito.anyString(), Mockito.anyString())).thenReturn(repositoryVersion);
+ repositoryVersion.setStack(stackEntity);
+
+ Mockito.when(
+ repositoryVersionDAO.findByStackAndVersion(Mockito.any(StackId.class),
+ Mockito.anyString())).thenReturn(repositoryVersion);
+
+ Mockito.when(
+ repositoryVersionDAO.findByStackAndVersion(
+ Mockito.any(StackEntity.class), Mockito.anyString())).thenReturn(
+ repositoryVersion);
+
final HostVersionEntity hostVersion = new HostVersionEntity();
hostVersion.setState(RepositoryVersionState.INSTALLED);
- Mockito.when(hostVersionDAO.findByClusterStackVersionAndHost(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenReturn(hostVersion);
+ Mockito.when(
+ hostVersionDAO.findByClusterStackVersionAndHost(Mockito.anyString(),
+ Mockito.any(StackId.class), Mockito.anyString(),
+ Mockito.anyString())).thenReturn(hostVersion);
check = new PrerequisiteCheck(null, null);
hostsRepositoryVersionCheck.perform(check, new PrereqCheckRequest("cluster"));
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 3e310ff..0ac1ba4 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -592,10 +592,12 @@ public class AmbariManagementControllerTest {
// Expected
}
- r.setStackVersion("HDP-1.0.1");
+ r.setStackVersion("HDP-1.2.0");
r.setProvisioningState(State.INSTALLING.name());
try {
controller.createCluster(r);
+ controller.updateClusters(Collections.singleton(r), null);
+
fail("Expected create cluster for invalid request - invalid provisioning state");
} catch (Exception e) {
// Expected
@@ -671,10 +673,8 @@ public class AmbariManagementControllerTest {
Assert.assertTrue(checkExceptionType(e, ParentObjectNotFoundException.class));
}
- clusters.addCluster("foo");
- clusters.addCluster("bar");
- clusters.getCluster("foo").setDesiredStackVersion(new StackId("HDP-0.1"));
- clusters.getCluster("bar").setDesiredStackVersion(new StackId("HDP-0.1"));
+ clusters.addCluster("foo", new StackId("HDP-0.1"));
+ clusters.addCluster("bar", new StackId("HDP-0.1"));
try {
set1.clear();
@@ -779,8 +779,7 @@ public class AmbariManagementControllerTest {
@Test
public void testCreateServicesMultiple() throws AmbariException {
Set<ServiceRequest> set1 = new HashSet<ServiceRequest>();
- clusters.addCluster("foo");
- clusters.getCluster("foo").setDesiredStackVersion(new StackId("HDP-0.1"));
+ clusters.addCluster("foo", new StackId("HDP-0.1"));
ServiceRequest valid1 = new ServiceRequest("foo", "HDFS", null);
ServiceRequest valid2 = new ServiceRequest("foo", "MAPREDUCE", null);
@@ -902,9 +901,8 @@ public class AmbariManagementControllerTest {
// Expected
}
- clusters.addCluster("c1");
- clusters.addCluster("c2");
-
+ clusters.addCluster("c1", new StackId("HDP-0.1"));
+ clusters.addCluster("c2", new StackId("HDP-0.1"));
try {
set1.clear();
@@ -920,8 +918,9 @@ public class AmbariManagementControllerTest {
Cluster c1 = clusters.getCluster("c1");
StackId stackId = new StackId("HDP-0.1");
c1.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
Service s1 = serviceFactory.createNew(c1, "HDFS");
Service s2 = serviceFactory.createNew(c1, "MAPREDUCE");
c1.addService(s1);
@@ -1042,14 +1041,15 @@ public class AmbariManagementControllerTest {
@Test
public void testCreateServiceComponentMultiple() throws AmbariException {
- clusters.addCluster("c1");
- clusters.addCluster("c2");
+ clusters.addCluster("c1", new StackId("HDP-0.2"));
+ clusters.addCluster("c2", new StackId("HDP-0.2"));
Cluster c1 = clusters.getCluster("c1");
StackId stackId = new StackId("HDP-0.2");
- c1.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
Service s1 = serviceFactory.createNew(c1, "HDFS");
Service s2 = serviceFactory.createNew(c1, "MAPREDUCE");
@@ -1308,32 +1308,35 @@ public class AmbariManagementControllerTest {
// Expected
}
- clusters.addCluster("foo");
- clusters.addCluster("c1");
- clusters.addCluster("c2");
+ clusters.addCluster("foo", new StackId("HDP-0.2"));
+ clusters.addCluster("c1", new StackId("HDP-0.2"));
+ clusters.addCluster("c2", new StackId("HDP-0.2"));
Cluster foo = clusters.getCluster("foo");
Cluster c1 = clusters.getCluster("c1");
Cluster c2 = clusters.getCluster("c2");
StackId stackId = new StackId("HDP-0.2");
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
foo.setDesiredStackVersion(stackId);
foo.setCurrentStackVersion(stackId);
- foo.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
- foo.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+ foo.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+ foo.transitionClusterVersion(stackId, stackId.getStackVersion(), RepositoryVersionState.CURRENT);
stackId = new StackId("HDP-0.2");
c1.setDesiredStackVersion(stackId);
c1.setCurrentStackVersion(stackId);
- c1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
- c1.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+ c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+ c1.transitionClusterVersion(stackId, stackId.getStackVersion(), RepositoryVersionState.CURRENT);
stackId = new StackId("HDP-0.2");
c2.setDesiredStackVersion(stackId);
c2.setCurrentStackVersion(stackId);
- c2.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
- c2.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+ c2.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+ c2.transitionClusterVersion(stackId, stackId.getStackVersion(), RepositoryVersionState.CURRENT);
try {
set1.clear();
@@ -1536,13 +1539,14 @@ public class AmbariManagementControllerTest {
// Expected
}
- clusters.addCluster("foo");
+ clusters.addCluster("foo", new StackId("HDP-0.1"));
Cluster c = clusters.getCluster("foo");
StackId stackId = new StackId("HDP-0.1");
c.setDesiredStackVersion(stackId);
c.setCurrentStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
HostResourceProviderTest.createHosts(controller, requests);
@@ -1559,13 +1563,14 @@ public class AmbariManagementControllerTest {
clusters.addHost("h1");
clusters.addHost("h2");
clusters.addHost("h3");
- clusters.addCluster("c1");
+ clusters.addCluster("c1", new StackId("HDP-0.1"));
Cluster c = clusters.getCluster("c1");
StackId stackID = new StackId("HDP-0.1");
c.setDesiredStackVersion(stackID);
c.setCurrentStackVersion(stackID);
- helper.getOrCreateRepositoryVersion(stackID.getStackName(), stackID.getStackVersion());
- c.createClusterVersion(stackID.getStackName(), stackID.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ helper.getOrCreateRepositoryVersion(stackID, stackID.getStackVersion());
+ c.createClusterVersion(stackID, stackID.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
setOsFamily(clusters.getHost("h1"), "redhat", "5.9");
setOsFamily(clusters.getHost("h2"), "redhat", "5.9");
@@ -1625,7 +1630,7 @@ public class AmbariManagementControllerTest {
// Expected
}
- clusters.addCluster("c1");
+ clusters.addCluster("c1", new StackId("HDP-0.1"));
try {
set1.clear();
@@ -1904,14 +1909,15 @@ public class AmbariManagementControllerTest {
@Test
public void testGetClusters() throws AmbariException {
- clusters.addCluster("c1");
+ clusters.addCluster("c1", new StackId("HDP-0.1"));
Cluster c1 = clusters.getCluster("c1");
StackId stackId = new StackId("HDP-0.1");
c1.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
ClusterRequest r = new ClusterRequest(null, null, null, null);
Set<ClusterResponse> resp = controller.getClusters(Collections.singleton(r));
@@ -1927,20 +1933,16 @@ public class AmbariManagementControllerTest {
@Test
public void testGetClustersWithFilters() throws AmbariException {
- clusters.addCluster("c1");
- clusters.addCluster("c2");
- clusters.addCluster("c3");
- clusters.addCluster("c4");
+ clusters.addCluster("c1", new StackId("HDP-0.1"));
+ clusters.addCluster("c2", new StackId("HDP-0.1"));
+ clusters.addCluster("c3", new StackId("HDP-1.2.0"));
+ clusters.addCluster("c4", new StackId("HDP-0.1"));
Cluster c1 = clusters.getCluster("c1");
Cluster c2 = clusters.getCluster("c2");
Cluster c3 = clusters.getCluster("c3");
Cluster c4 = clusters.getCluster("c4");
- c1.setDesiredStackVersion(new StackId("HDP-0.1"));
- c2.setDesiredStackVersion(new StackId("HDP-0.1"));
- c3.setDesiredStackVersion(new StackId("HDP-1.1.0"));
-
ClusterRequest r = new ClusterRequest(null, null, null, null);
Set<ClusterResponse> resp = controller.getClusters(Collections.singleton(r));
Assert.assertEquals(4, resp.size());
@@ -1953,20 +1955,17 @@ public class AmbariManagementControllerTest {
r = new ClusterRequest(null, null, "HDP-0.1", null);
resp = controller.getClusters(Collections.singleton(r));
- Assert.assertEquals(2, resp.size());
+ Assert.assertEquals(3, resp.size());
r = new ClusterRequest(null, null, "", null);
resp = controller.getClusters(Collections.singleton(r));
- Assert.assertEquals(1, resp.size());
- Assert.assertEquals(c4.getClusterId(),
- resp.iterator().next().getClusterId().longValue());
+ Assert.assertEquals(0, resp.size());
}
@Test
public void testGetServices() throws AmbariException {
- clusters.addCluster("c1");
+ clusters.addCluster("c1", new StackId("HDP-0.1"));
Cluster c1 = clusters.getCluster("c1");
- c1.setDesiredStackVersion(new StackId("HDP-0.1"));
Service s1 = serviceFactory.createNew(c1, "HDFS");
c1.addService(s1);
@@ -1993,8 +1992,8 @@ public class AmbariManagementControllerTest {
@Test
public void testGetServicesWithFilters() throws AmbariException {
- clusters.addCluster("c1");
- clusters.addCluster("c2");
+ clusters.addCluster("c1", new StackId("HDP-0.2"));
+ clusters.addCluster("c2", new StackId("HDP-0.2"));
Cluster c1 = clusters.getCluster("c1");
Cluster c2 = clusters.getCluster("c2");
c1.setDesiredStackVersion(new StackId("HDP-0.2"));
@@ -2072,7 +2071,7 @@ public class AmbariManagementControllerTest {
@Test
public void testGetServiceComponents() throws AmbariException {
- clusters.addCluster("c1");
+ clusters.addCluster("c1", new StackId("HDP-0.2"));
Cluster c1 = clusters.getCluster("c1");
c1.setDesiredStackVersion(new StackId("HDP-0.2"));
Service s1 = serviceFactory.createNew(c1, "HDFS");
@@ -2106,12 +2105,10 @@ public class AmbariManagementControllerTest {
@Test
public void testGetServiceComponentsWithFilters() throws AmbariException {
- clusters.addCluster("c1");
- clusters.addCluster("c2");
+ clusters.addCluster("c1", new StackId("HDP-0.2"));
+ clusters.addCluster("c2", new StackId("HDP-0.2"));
Cluster c1 = clusters.getCluster("c1");
Cluster c2 = clusters.getCluster("c2");
- c1.setDesiredStackVersion(new StackId("HDP-0.2"));
- c2.setDesiredStackVersion(new StackId("HDP-0.2"));
Service s1 = serviceFactory.createNew(c1, "HDFS");
Service s2 = serviceFactory.createNew(c1, "MAPREDUCE");
@@ -2255,7 +2252,7 @@ public class AmbariManagementControllerTest {
sc1.addServiceComponentHost(sch1);
sch1.setDesiredState(State.INSTALLED);
sch1.setState(State.INSTALLING);
- sch1.setDesiredStackVersion(new StackId("HDP-1.1.0"));
+ sch1.setDesiredStackVersion(new StackId("HDP-1.2.0"));
sch1.setStackVersion(new StackId("HDP-0.1"));
sch1.persist();
@@ -7314,7 +7311,7 @@ public class AmbariManagementControllerTest {
Assert.assertTrue(e.getMessage().contains("Illegal request to upgrade to"));
}
- StackId unsupportedStackId = new StackId("HDP-0.0.1");
+ StackId unsupportedStackId = new StackId("HDP-2.2.0");
c.setDesiredStackVersion(unsupportedStackId);
c.setCurrentStackVersion(unsupportedStackId);
c.refresh();
@@ -7763,12 +7760,13 @@ public class AmbariManagementControllerTest {
final String hostName1 = "h1";
final String context = "Test invocation";
- clusters.addCluster(clusterName);
- Cluster c = clusters.getCluster(clusterName);
StackId stackID = new StackId("HDP-0.1");
- c.setDesiredStackVersion(stackID);
- helper.getOrCreateRepositoryVersion(stackID.getStackName(), stackID.getStackVersion());
- c.createClusterVersion(stackID.getStackName(), stackID.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ clusters.addCluster(clusterName, stackID);
+ Cluster c = clusters.getCluster(clusterName);
+
+ helper.getOrCreateRepositoryVersion(stackID, stackID.getStackVersion());
+ c.createClusterVersion(stackID, stackID.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
clusters.addHost(hostName1);
setOsFamily(clusters.getHost("h1"), "redhat", "5.9");
clusters.getHost(hostName1).persist();
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/ClusterRequestTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ClusterRequestTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ClusterRequestTest.java
index 30cd6ba..2a3b9a2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ClusterRequestTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/ClusterRequestTest.java
@@ -21,7 +21,6 @@ package org.apache.ambari.server.controller;
import java.util.HashSet;
import java.util.Set;
-import org.apache.ambari.server.state.SecurityState;
import org.apache.ambari.server.state.SecurityType;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
@@ -55,7 +54,7 @@ public class ClusterRequestTest {
r1.setClusterId(++clusterId);
r1.setHostNames(hostNames);
r1.setClusterName("foo1");
- r1.setStackVersion("HDP-1.0.2");
+ r1.setStackVersion("HDP-1.2.0");
r1.setProvisioningState(State.INSTALLED.name());
r1.setSecurityType(SecurityType.KERBEROS);
@@ -65,7 +64,7 @@ public class ClusterRequestTest {
Assert.assertEquals("foo1", r1.getClusterName());
Assert.assertEquals(State.INSTALLED.name(), r1.getProvisioningState());
Assert.assertEquals(SecurityType.KERBEROS, r1.getSecurityType());
- Assert.assertEquals("HDP-1.0.2", r1.getStackVersion());
+ Assert.assertEquals("HDP-1.2.0", r1.getStackVersion());
Assert.assertArrayEquals(hostNames.toArray(), r1.getHostNames().toArray());
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessorTest.java
index 84225ac..2494219 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessorTest.java
@@ -30,6 +30,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.ComponentInfo;
import org.apache.ambari.server.state.DependencyInfo;
import org.apache.ambari.server.state.ServiceInfo;
@@ -726,11 +727,15 @@ public class BaseBlueprintProcessorTest {
configEntity.setConfigData("{\"dfs.nameservices\":\"mycluster\",\"key4\":\"value4\"}");
configEntity.setType("hdfs-site");
+ StackEntity stackEntity = new StackEntity();
+ stackEntity.setStackName("HDP");
+ stackEntity.setStackVersion("2.0.6");
+
BlueprintEntity testEntity =
new BlueprintEntity();
+
testEntity.setBlueprintName("test-blueprint");
- testEntity.setStackName("HDP");
- testEntity.setStackVersion("2.0.6");
+ testEntity.setStack(stackEntity);
testEntity.setHostGroups(Collections.singleton(hostGroupEntity));
testEntity.setConfigurations(Collections.singleton(configEntity));
@@ -829,13 +834,15 @@ public class BaseBlueprintProcessorTest {
hostGroupEntity.setComponents(Collections.singleton(hostGroupComponentEntity));
hostGroupEntity.setConfigurations(Collections.<HostGroupConfigEntity>emptyList());
-
+ StackEntity stackEntity = new StackEntity();
+ stackEntity.setStackName("HDP");
+ stackEntity.setStackVersion("2.0.6");
BlueprintEntity testEntity =
new BlueprintEntity();
+
testEntity.setBlueprintName("test-blueprint");
- testEntity.setStackName("HDP");
- testEntity.setStackVersion("2.0.6");
+ testEntity.setStack(stackEntity);
testEntity.setHostGroups(Collections.singleton(hostGroupEntity));
testEntity.setConfigurations(Collections.<BlueprintConfigEntity>emptyList());
[7/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity
Relationships (jonathanhurley)
Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterVersionEntity.java
index 01b9c03..5181a0d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterVersionEntity.java
@@ -48,15 +48,14 @@ import org.apache.ambari.server.state.RepositoryVersionState;
@NamedQueries({
@NamedQuery(name = "clusterVersionByClusterAndStackAndVersion", query =
"SELECT clusterVersion FROM ClusterVersionEntity clusterVersion JOIN clusterVersion.clusterEntity cluster " +
- "WHERE cluster.clusterName=:clusterName AND clusterVersion.repositoryVersion.stack=:stack AND clusterVersion.repositoryVersion.version=:version"),
+ "WHERE cluster.clusterName=:clusterName AND clusterVersion.repositoryVersion.stack.stackName=:stackName AND clusterVersion.repositoryVersion.stack.stackVersion=:stackVersion AND clusterVersion.repositoryVersion.version=:version"),
@NamedQuery(name = "clusterVersionByClusterAndState", query =
"SELECT clusterVersion FROM ClusterVersionEntity clusterVersion JOIN clusterVersion.clusterEntity cluster " +
"WHERE cluster.clusterName=:clusterName AND clusterVersion.state=:state"),
@NamedQuery(name = "clusterVersionByCluster", query =
"SELECT clusterVersion FROM ClusterVersionEntity clusterVersion JOIN clusterVersion.clusterEntity cluster " +
"WHERE cluster.clusterName=:clusterName"),
- @NamedQuery(name = "clusterVersionByStackVersion",
- query = "SELECT clusterVersion FROM ClusterVersionEntity clusterVersion WHERE clusterVersion.repositoryVersion.stack=:stack AND clusterVersion.repositoryVersion.version=:version"),
+ @NamedQuery(name = "clusterVersionByStackVersion", query = "SELECT clusterVersion FROM ClusterVersionEntity clusterVersion WHERE clusterVersion.repositoryVersion.stack.stackName=:stackName AND clusterVersion.repositoryVersion.stack.stackVersion=:stackVersion AND clusterVersion.repositoryVersion.version=:version"),
})
public class ClusterVersionEntity {
@@ -107,9 +106,9 @@ public class ClusterVersionEntity {
* @param userName User who performed the action
*/
public ClusterVersionEntity(ClusterEntity cluster, RepositoryVersionEntity repositoryVersion, RepositoryVersionState state, long startTime, String userName) {
- this.clusterId = cluster.getClusterId();
+ clusterId = cluster.getClusterId();
this.repositoryVersion = repositoryVersion;
- this.clusterEntity = cluster;
+ clusterEntity = cluster;
this.state = state;
this.startTime = startTime;
this.userName = userName;
@@ -192,13 +191,13 @@ public class ClusterVersionEntity {
ClusterVersionEntity that = (ClusterVersionEntity) o;
- if (this.id != that.id
- || this.clusterId != that.clusterId
- || !this.repositoryVersion.equals(that.repositoryVersion)
- || !this.state.equals(that.state)
- || !this.startTime.equals(that.startTime)
- || !this.endTime.equals(that.endTime)
- || !this.userName.equals(that.userName)) {
+ if (id != that.id
+ || clusterId != that.clusterId
+ || !repositoryVersion.equals(that.repositoryVersion)
+ || !state.equals(that.state)
+ || !startTime.equals(that.startTime)
+ || !endTime.equals(that.endTime)
+ || !userName.equals(that.userName)) {
return false;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
index 7f0b19d..570c84b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
@@ -29,10 +29,11 @@ import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
-import org.apache.ambari.server.state.SecurityState;
import org.apache.ambari.server.state.HostComponentAdminState;
import org.apache.ambari.server.state.MaintenanceState;
+import org.apache.ambari.server.state.SecurityState;
import org.apache.ambari.server.state.State;
@javax.persistence.IdClass(HostComponentDesiredStateEntityPK.class)
@@ -66,9 +67,12 @@ public class HostComponentDesiredStateEntity {
@Enumerated(value = EnumType.STRING)
private SecurityState securityState = SecurityState.UNSECURED;
- @Basic
- @Column(name = "desired_stack_version", insertable = true, updatable = true)
- private String desiredStackVersion = "";
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "desired_stack_id", unique = false, nullable = false)
+ private StackEntity desiredStack;
@Enumerated(value = EnumType.STRING)
@Column(name = "admin_state", nullable = true, insertable = true, updatable = true)
@@ -84,7 +88,7 @@ public class HostComponentDesiredStateEntity {
@ManyToOne
@JoinColumn(name = "host_id", referencedColumnName = "host_id", nullable = false)
private HostEntity hostEntity;
-
+
@Enumerated(value = EnumType.STRING)
@Column(name="maintenance_state", nullable = false, insertable = true, updatable = true)
private MaintenanceState maintenanceState = MaintenanceState.OFF;
@@ -137,45 +141,65 @@ public class HostComponentDesiredStateEntity {
this.securityState = securityState;
}
- public String getDesiredStackVersion() {
- return defaultString(desiredStackVersion);
+ public StackEntity getDesiredStack() {
+ return desiredStack;
}
- public void setDesiredStackVersion(String desiredStackVersion) {
- this.desiredStackVersion = desiredStackVersion;
+ public void setDesiredStack(StackEntity desiredStack) {
+ this.desiredStack = desiredStack;
}
-
public HostComponentAdminState getAdminState() {
return adminState;
}
public void setAdminState(HostComponentAdminState attribute) {
- this.adminState = attribute;
+ adminState = attribute;
}
-
+
public MaintenanceState getMaintenanceState() {
return maintenanceState;
}
-
+
public void setMaintenanceState(MaintenanceState state) {
maintenanceState = state;
}
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
HostComponentDesiredStateEntity that = (HostComponentDesiredStateEntity) o;
- if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false;
- if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) return false;
- if (desiredStackVersion != null ? !desiredStackVersion.equals(that.desiredStackVersion) : that.desiredStackVersion != null)
+ if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) {
+ return false;
+ }
+
+ if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) {
+ return false;
+ }
+
+ if (desiredStack != null ? !desiredStack.equals(that.desiredStack)
+ : that.desiredStack != null) {
+ return false;
+ }
+
+ if (desiredState != null ? !desiredState.equals(that.desiredState) : that.desiredState != null) {
+ return false;
+ }
+
+ if (hostEntity != null ? !hostEntity.equals(that.hostEntity) : that.hostEntity != null) {
+ return false;
+ }
+
+ if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) {
return false;
- if (desiredState != null ? !desiredState.equals(that.desiredState) : that.desiredState != null) return false;
- if (hostEntity != null ? !hostEntity.equals(that.hostEntity) : that.hostEntity != null) return false;
- if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) return false;
+ }
return true;
}
@@ -186,7 +210,7 @@ public class HostComponentDesiredStateEntity {
result = 31 * result + (hostEntity != null ? hostEntity.hashCode() : 0);
result = 31 * result + (componentName != null ? componentName.hashCode() : 0);
result = 31 * result + (desiredState != null ? desiredState.hashCode() : 0);
- result = 31 * result + (desiredStackVersion != null ? desiredStackVersion.hashCode() : 0);
+ result = 31 * result + (desiredStack != null ? desiredStack.hashCode() : 0);
result = 31 * result + (serviceName != null ? serviceName.hashCode() : 0);
return result;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java
index 4463366..dabe98b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java
@@ -18,14 +18,25 @@
package org.apache.ambari.server.orm.entities;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinColumns;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
import org.apache.ambari.server.state.SecurityState;
import org.apache.ambari.server.state.State;
import org.apache.ambari.server.state.UpgradeState;
-import javax.persistence.*;
-
-import static org.apache.commons.lang.StringUtils.defaultString;
-
@IdClass(HostComponentStateEntityPK.class)
@Table(name = "hostcomponentstate")
@Entity
@@ -67,9 +78,12 @@ public class HostComponentStateEntity {
@Column(name = "security_state", nullable = false, insertable = true, updatable = true)
private SecurityState securityState = SecurityState.UNSECURED;
- @Basic
- @Column(name = "current_stack_version", nullable = false, insertable = true, updatable = true)
- private String currentStackVersion;
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "current_stack_id", unique = false, nullable = false, insertable = true, updatable = true)
+ private StackEntity currentStack;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumns({
@@ -99,7 +113,7 @@ public class HostComponentStateEntity {
}
public String getHostName() {
- return this.hostEntity.getHostName();
+ return hostEntity.getHostName();
}
public Long getHostId() {
@@ -138,12 +152,12 @@ public class HostComponentStateEntity {
this.upgradeState = upgradeState;
}
- public String getCurrentStackVersion() {
- return currentStackVersion;
+ public StackEntity getCurrentStack() {
+ return currentStack;
}
- public void setCurrentStackVersion(String currentStackVersion) {
- this.currentStackVersion = currentStackVersion;
+ public void setCurrentStack(StackEntity currentStack) {
+ this.currentStack = currentStack;
}
public String getVersion() {
@@ -156,20 +170,40 @@ public class HostComponentStateEntity {
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
HostComponentStateEntity that = (HostComponentStateEntity) o;
- if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false;
- if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) return false;
- if (currentStackVersion != null ? !currentStackVersion.equals(that.currentStackVersion) : that.currentStackVersion != null)
+ if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) {
+ return false;
+ }
+ if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) {
+ return false;
+ }
+ if (currentStack != null ? !currentStack.equals(that.currentStack)
+ : that.currentStack != null) {
+ return false;
+ }
+ if (currentState != null ? !currentState.equals(that.currentState) : that.currentState != null) {
+ return false;
+ }
+ if (upgradeState != null ? !upgradeState.equals(that.upgradeState) : that.upgradeState != null) {
+ return false;
+ }
+ if (hostEntity != null ? !hostEntity.equals(that.hostEntity) : that.hostEntity != null) {
+ return false;
+ }
+ if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) {
+ return false;
+ }
+ if (version != null ? !version.equals(that.version) : that.version != null) {
return false;
- if (currentState != null ? !currentState.equals(that.currentState) : that.currentState != null) return false;
- if (upgradeState != null ? !upgradeState.equals(that.upgradeState) : that.upgradeState != null) return false;
- if (hostEntity != null ? !hostEntity.equals(that.hostEntity) : that.hostEntity != null) return false;
- if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) return false;
- if (version != null ? !version.equals(that.version) : that.version != null) return false;
+ }
return true;
}
@@ -181,7 +215,7 @@ public class HostComponentStateEntity {
result = 31 * result + (componentName != null ? componentName.hashCode() : 0);
result = 31 * result + (currentState != null ? currentState.hashCode() : 0);
result = 31 * result + (upgradeState != null ? upgradeState.hashCode() : 0);
- result = 31 * result + (currentStackVersion != null ? currentStackVersion.hashCode() : 0);
+ result = 31 * result + (currentStack != null ? currentStack.hashCode() : 0);
result = 31 * result + (serviceName != null ? serviceName.hashCode() : 0);
result = 31 * result + (version != null ? version.hashCode() : 0);
return result;
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java
index a811c16..c329f24 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java
@@ -18,6 +18,11 @@
package org.apache.ambari.server.orm.entities;
+import static org.apache.commons.lang.StringUtils.defaultString;
+
+import java.util.Collection;
+import java.util.Collections;
+
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
@@ -35,10 +40,6 @@ import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.TableGenerator;
-import java.util.Collection;
-import java.util.Collections;
-
-import static org.apache.commons.lang.StringUtils.defaultString;
@javax.persistence.Table(name = "hosts")
@Entity
@@ -138,7 +139,7 @@ public class HostEntity implements Comparable<HostEntity> {
)
private Collection<ClusterEntity> clusterEntities;
- @OneToOne(mappedBy = "hostEntity", cascade = CascadeType.REMOVE)
+ @OneToOne(mappedBy = "hostEntity", cascade = {CascadeType.REMOVE, CascadeType.PERSIST})
private HostStateEntity hostStateEntity;
@OneToMany(mappedBy = "host", cascade = CascadeType.REMOVE)
@@ -199,7 +200,7 @@ public class HostEntity implements Comparable<HostEntity> {
public void setCpuCount(Integer cpuCount) {
this.cpuCount = cpuCount;
}
-
+
public Integer getPhCpuCount() {
return phCpuCount;
}
@@ -207,7 +208,7 @@ public class HostEntity implements Comparable<HostEntity> {
public void setPhCpuCount(Integer phCpuCount) {
this.phCpuCount = phCpuCount;
}
-
+
public String getCpuInfo() {
return defaultString(cpuInfo);
}
@@ -274,22 +275,26 @@ public class HostEntity implements Comparable<HostEntity> {
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
HostEntity that = (HostEntity) o;
- return this.hostId == that.hostId && this.hostName.equals(that.hostName);
+ return hostId == that.hostId && hostName.equals(that.hostName);
}
@Override
public int hashCode() {
- return hostId.hashCode();
+ return (null == hostId ? 0 : hostId.hashCode());
}
@Override
public int compareTo(HostEntity other) {
- return this.hostName.compareTo(other.hostName);
+ return hostName.compareTo(other.hostName);
}
/**
@@ -382,7 +387,7 @@ public class HostEntity implements Comparable<HostEntity> {
return hostVersionEntities;
}
- public void setHostVersionEntities(Collection<HostVersionEntity> hostVersionEntities) {
+ public void setHostVersionEntities(Collection<HostVersionEntity> hostVersionEntities) {
this.hostVersionEntities = hostVersionEntities;
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
index 363e6be..5fb024d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
@@ -45,7 +45,7 @@ import org.apache.ambari.server.state.RepositoryVersionState;
@NamedQueries({
@NamedQuery(name = "hostVersionByClusterAndStackAndVersion", query =
"SELECT hostVersion FROM HostVersionEntity hostVersion JOIN hostVersion.hostEntity host JOIN host.clusterEntities clusters " +
- "WHERE clusters.clusterName=:clusterName AND hostVersion.repositoryVersion.stack=:stack AND hostVersion.repositoryVersion.version=:version"),
+ "WHERE clusters.clusterName=:clusterName AND hostVersion.repositoryVersion.stack.stackName=:stackName AND hostVersion.repositoryVersion.stack.stackVersion=:stackVersion AND hostVersion.repositoryVersion.version=:version"),
@NamedQuery(name = "hostVersionByClusterAndHostname", query =
"SELECT hostVersion FROM HostVersionEntity hostVersion JOIN hostVersion.hostEntity host JOIN host.clusterEntities clusters " +
@@ -61,7 +61,7 @@ import org.apache.ambari.server.state.RepositoryVersionState;
@NamedQuery(name = "hostVersionByClusterStackVersionAndHostname", query =
"SELECT hostVersion FROM HostVersionEntity hostVersion JOIN hostVersion.hostEntity host JOIN host.clusterEntities clusters " +
- "WHERE clusters.clusterName=:clusterName AND hostVersion.repositoryVersion.stack=:stack AND hostVersion.repositoryVersion.version=:version AND " +
+ "WHERE clusters.clusterName=:clusterName AND hostVersion.repositoryVersion.stack.stackName=:stackName AND hostVersion.repositoryVersion.stack.stackVersion=:stackVersion AND hostVersion.repositoryVersion.version=:version AND " +
"hostVersion.hostName=:hostName"),
})
public class HostVersionEntity {
@@ -106,9 +106,9 @@ public class HostVersionEntity {
* This constructor is mainly used by the unit tests in order to construct an object without the id.
*/
public HostVersionEntity(HostVersionEntity other) {
- this.hostName = other.hostName;
- this.repositoryVersion = other.repositoryVersion;
- this.state = other.state;
+ hostName = other.hostName;
+ repositoryVersion = other.repositoryVersion;
+ state = other.state;
}
public Long getId() {
@@ -165,24 +165,48 @@ public class HostVersionEntity {
@Override
public boolean equals(Object obj) {
- if (this == obj) return true;
- if (obj == null) return false;
- if (getClass() != obj.getClass()) return false;
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
HostVersionEntity other = (HostVersionEntity) obj;
if (hostEntity == null) {
- if (other.hostEntity != null) return false;
- } else if (!hostEntity.equals(other.hostEntity)) return false;
+ if (other.hostEntity != null) {
+ return false;
+ }
+ } else if (!hostEntity.equals(other.hostEntity)) {
+ return false;
+ }
if (hostName == null) {
- if (other.hostName != null) return false;
- } else if (!hostName.equals(other.hostName)) return false;
+ if (other.hostName != null) {
+ return false;
+ }
+ } else if (!hostName.equals(other.hostName)) {
+ return false;
+ }
if (id == null) {
- if (other.id != null) return false;
- } else if (!id.equals(other.id)) return false;
+ if (other.id != null) {
+ return false;
+ }
+ } else if (!id.equals(other.id)) {
+ return false;
+ }
if (repositoryVersion == null) {
- if (other.repositoryVersion != null) return false;
- } else if (!repositoryVersion.equals(other.repositoryVersion)) return false;
- if (state != other.state) return false;
+ if (other.repositoryVersion != null) {
+ return false;
+ }
+ } else if (!repositoryVersion.equals(other.repositoryVersion)) {
+ return false;
+ }
+ if (state != other.state) {
+ return false;
+ }
return true;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
index e536f02..dd5ac0a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
@@ -27,10 +27,12 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.UniqueConstraint;
@@ -59,9 +61,9 @@ import com.google.inject.Provider;
allocationSize = 1
)
@NamedQueries({
- @NamedQuery(name = "repositoryVersionByDisplayName", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.displayName=:displayname"),
- @NamedQuery(name = "repositoryVersionByStackVersion", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.stack=:stack AND repoversion.version=:version"),
- @NamedQuery(name = "repositoryVersionByStack", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.stack=:stack")
+ @NamedQuery(name = "repositoryVersionByDisplayName", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.displayName=:displayname"),
+ @NamedQuery(name = "repositoryVersionByStackVersion", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.stack.stackName=:stackName AND repoversion.stack.stackVersion=:stackVersion AND repoversion.version=:version"),
+ @NamedQuery(name = "repositoryVersionByStack", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.stack.stackName=:stackName AND repoversion.stack.stackVersion=:stackVersion")
})
@StaticallyInject
public class RepositoryVersionEntity {
@@ -76,8 +78,12 @@ public class RepositoryVersionEntity {
@GeneratedValue(strategy = GenerationType.TABLE, generator = "repository_version_id_generator")
private Long id;
- @Column(name = "stack")
- private String stack;
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "stack_id", unique = false, nullable = false, insertable = true, updatable = true)
+ private StackEntity stack;
@Column(name = "version")
private String version;
@@ -104,7 +110,8 @@ public class RepositoryVersionEntity {
}
- public RepositoryVersionEntity(String stack, String version, String displayName, String upgradePackage, String operatingSystems) {
+ public RepositoryVersionEntity(StackEntity stack, String version,
+ String displayName, String upgradePackage, String operatingSystems) {
this.stack = stack;
this.version = version;
this.displayName = displayName;
@@ -120,11 +127,22 @@ public class RepositoryVersionEntity {
this.id = id;
}
- public String getStack() {
+ /**
+ * Gets the repository version's stack.
+ *
+ * @return the stack.
+ */
+ public StackEntity getStack() {
return stack;
}
- public void setStack(String stack) {
+ /**
+ * Sets the repository version's stack.
+ *
+ * @param stack
+ * the stack to set for the repo version (not {@code null}).
+ */
+ public void setStack(StackEntity stack) {
this.stack = stack;
}
@@ -157,7 +175,7 @@ public class RepositoryVersionEntity {
}
public void setOperatingSystems(String repositories) {
- this.operatingSystems = repositories;
+ operatingSystems = repositories;
}
/**
@@ -186,22 +204,42 @@ public class RepositoryVersionEntity {
}
public StackId getStackId() {
- return new StackId(stack);
+ if (null == stack) {
+ return null;
+ }
+
+ return new StackId(stack.getStackName(), stack.getStackVersion());
}
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
RepositoryVersionEntity that = (RepositoryVersionEntity) o;
- if (id != null ? !id.equals(that.id) : that.id != null) return false;
- if (stack != null ? !stack.equals(that.stack) : that.stack != null) return false;
- if (version != null ? !version.equals(that.version) : that.version != null) return false;
- if (displayName != null ? !displayName.equals(that.displayName) : that.displayName != null) return false;
- if (upgradePackage != null ? !upgradePackage.equals(that.upgradePackage) : that.upgradePackage != null) return false;
- if (operatingSystems != null ? !operatingSystems.equals(that.operatingSystems) : that.operatingSystems != null) return false;
+ if (id != null ? !id.equals(that.id) : that.id != null) {
+ return false;
+ }
+ if (stack != null ? !stack.equals(that.stack) : that.stack != null) {
+ return false;
+ }
+ if (version != null ? !version.equals(that.version) : that.version != null) {
+ return false;
+ }
+ if (displayName != null ? !displayName.equals(that.displayName) : that.displayName != null) {
+ return false;
+ }
+ if (upgradePackage != null ? !upgradePackage.equals(that.upgradePackage) : that.upgradePackage != null) {
+ return false;
+ }
+ if (operatingSystems != null ? !operatingSystems.equals(that.operatingSystems) : that.operatingSystems != null) {
+ return false;
+ }
return true;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceComponentDesiredStateEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceComponentDesiredStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceComponentDesiredStateEntity.java
index 780f8ba..4195710 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceComponentDesiredStateEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceComponentDesiredStateEntity.java
@@ -18,13 +18,21 @@
package org.apache.ambari.server.orm.entities;
-import org.apache.ambari.server.state.State;
-import org.apache.commons.lang.StringUtils;
-
-import javax.persistence.*;
import java.util.Collection;
-import static org.apache.commons.lang.StringUtils.defaultString;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinColumns;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+
+import org.apache.ambari.server.state.State;
@javax.persistence.IdClass(ServiceComponentDesiredStateEntityPK.class)
@javax.persistence.Table(name = "servicecomponentdesiredstate")
@@ -47,9 +55,12 @@ public class ServiceComponentDesiredStateEntity {
@Enumerated(EnumType.STRING)
private State desiredState = State.INIT;
- @Column(name = "desired_stack_version", insertable = true, updatable = true)
- @Basic
- private String desiredStackVersion = "";
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "desired_stack_id", unique = false, nullable = false, insertable = true, updatable = true)
+ private StackEntity desiredStack;
@ManyToOne
@JoinColumns({@javax.persistence.JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false), @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false)})
@@ -93,27 +104,41 @@ public class ServiceComponentDesiredStateEntity {
this.desiredState = desiredState;
}
- public String getDesiredStackVersion() {
- return defaultString(desiredStackVersion);
+ public StackEntity getDesiredStack() {
+ return desiredStack;
}
- public void setDesiredStackVersion(String desiredStackVersion) {
- this.desiredStackVersion = desiredStackVersion;
+ public void setDesiredStack(StackEntity desiredStack) {
+ this.desiredStack = desiredStack;
}
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
ServiceComponentDesiredStateEntity that = (ServiceComponentDesiredStateEntity) o;
- if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false;
- if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) return false;
- if (desiredState != null ? !desiredState.equals(that.desiredState) : that.desiredState != null) return false;
- if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) return false;
- if (desiredStackVersion != null ? !desiredStackVersion.equals(that.desiredStackVersion) : that.desiredStackVersion != null)
+ if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) {
+ return false;
+ }
+ if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) {
+ return false;
+ }
+ if (desiredState != null ? !desiredState.equals(that.desiredState) : that.desiredState != null) {
+ return false;
+ }
+ if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) {
+ return false;
+ }
+ if (desiredStack != null ? !desiredStack.equals(that.desiredStack)
+ : that.desiredStack != null) {
return false;
+ }
return true;
}
@@ -123,7 +148,7 @@ public class ServiceComponentDesiredStateEntity {
result = 31 * result + (serviceName != null ? serviceName.hashCode() : 0);
result = 31 * result + (componentName != null ? componentName.hashCode() : 0);
result = 31 * result + (desiredState != null ? desiredState.hashCode() : 0);
- result = 31 * result + (desiredStackVersion != null ? desiredStackVersion.hashCode() : 0);
+ result = 31 * result + (desiredStack != null ? desiredStack.hashCode() : 0);
return result;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java
index ec6bd9f..86b919f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java
@@ -18,8 +18,9 @@
package org.apache.ambari.server.orm.entities;
+import java.util.List;
+
import javax.persistence.Basic;
-import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
@@ -31,11 +32,9 @@ import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
-import java.util.Collection;
-import java.util.List;
@Entity
@Table(name = "serviceconfig")
@@ -96,6 +95,13 @@ public class ServiceConfigEntity {
@JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
private ClusterEntity clusterEntity;
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "stack_id", unique = false, nullable = false, insertable = true, updatable = true)
+ private StackEntity stack;
+
public Long getServiceConfigId() {
return serviceConfigId;
}
@@ -125,7 +131,7 @@ public class ServiceConfigEntity {
}
public void setCreateTimestamp(Long create_timestamp) {
- this.createTimestamp = create_timestamp;
+ createTimestamp = create_timestamp;
}
public List<ClusterConfigEntity> getClusterConfigEntities() {
@@ -183,4 +189,23 @@ public class ServiceConfigEntity {
public void setHostNames(List<String> hostNames) {
this.hostNames = hostNames;
}
+
+ /**
+ * Gets the service configuration's stack.
+ *
+ * @return the stack.
+ */
+ public StackEntity getStack() {
+ return stack;
+ }
+
+ /**
+ * Sets the service configuration's stack.
+ *
+ * @param stack
+ * the stack to set for the service configuration (not {@code null}).
+ */
+ public void setStack(StackEntity stack) {
+ this.stack = stack;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java
index 2d2c386..6cb3dde 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java
@@ -18,12 +18,18 @@
package org.apache.ambari.server.orm.entities;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
+
import org.apache.ambari.server.state.MaintenanceState;
import org.apache.ambari.server.state.SecurityState;
import org.apache.ambari.server.state.State;
-import org.apache.commons.lang.StringUtils;
-
-import javax.persistence.*;
@javax.persistence.IdClass(ServiceDesiredStateEntityPK.class)
@javax.persistence.Table(name = "servicedesiredstate")
@@ -46,14 +52,17 @@ public class ServiceDesiredStateEntity {
@Basic
private int desiredHostRoleMapping = 0;
- @Column(name = "desired_stack_version", insertable = true, updatable = true)
- @Basic
- private String desiredStackVersion = "";
+ /**
+ * Unidirectional one-to-one association to {@link StackEntity}
+ */
+ @OneToOne
+ @JoinColumn(name = "desired_stack_id", unique = false, nullable = false, insertable = true, updatable = true)
+ private StackEntity desiredStack;
@Column(name = "maintenance_state", nullable = false, insertable = true, updatable = true)
@Enumerated(value = EnumType.STRING)
private MaintenanceState maintenanceState = MaintenanceState.OFF;
-
+
@Column(name = "security_state", nullable = false, insertable = true, updatable = true)
@Enumerated(value = EnumType.STRING)
private SecurityState securityState = SecurityState.UNSECURED;
@@ -98,18 +107,18 @@ public class ServiceDesiredStateEntity {
this.desiredHostRoleMapping = desiredHostRoleMapping;
}
- public String getDesiredStackVersion() {
- return StringUtils.defaultString(desiredStackVersion);
+ public StackEntity getDesiredStack() {
+ return desiredStack;
}
- public void setDesiredStackVersion(String desiredStackVersion) {
- this.desiredStackVersion = desiredStackVersion;
+ public void setDesiredStack(StackEntity desiredStack) {
+ this.desiredStack = desiredStack;
}
-
+
public MaintenanceState getMaintenanceState() {
return maintenanceState;
- }
-
+ }
+
public void setMaintenanceState(MaintenanceState state) {
maintenanceState = state;
}
@@ -124,17 +133,35 @@ public class ServiceDesiredStateEntity {
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
ServiceDesiredStateEntity that = (ServiceDesiredStateEntity) o;
- if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false;
- if (desiredState != null ? !desiredState.equals(that.desiredState) : that.desiredState != null) return false;
- if (desiredHostRoleMapping != that.desiredHostRoleMapping) return false;
- if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) return false;
- if (desiredStackVersion != null ? !desiredStackVersion.equals(that.desiredStackVersion) : that.desiredStackVersion != null)
+ if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) {
+ return false;
+ }
+
+ if (desiredState != null ? !desiredState.equals(that.desiredState) : that.desiredState != null) {
+ return false;
+ }
+
+ if (desiredHostRoleMapping != that.desiredHostRoleMapping) {
+ return false;
+ }
+
+ if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) {
+ return false;
+ }
+
+ if (desiredStack != null ? !desiredStack.equals(that.desiredStack) : that.desiredStack != null) {
return false;
+ }
return true;
}
@@ -144,7 +171,7 @@ public class ServiceDesiredStateEntity {
result = 31 * result + (serviceName != null ? serviceName.hashCode() : 0);
result = 31 * result + (desiredState != null ? desiredState.hashCode() : 0);
result = 31 * result + desiredHostRoleMapping;
- result = 31 * result + (desiredStackVersion != null ? desiredStackVersion.hashCode() : 0);
+ result = 31 * result + (desiredStack != null ? desiredStack.hashCode() : 0);
return result;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java
index fc9774b..472953c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/FinalizeUpgradeAction.java
@@ -51,9 +51,9 @@ import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.UpgradeState;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostSummary;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.text.StrBuilder;
import com.google.inject.Inject;
-import org.apache.commons.lang.text.StrBuilder;
/**
* Action that represents finalizing the Upgrade by completing any database changes.
@@ -122,8 +122,7 @@ public class FinalizeUpgradeAction extends AbstractServerAction {
Cluster cluster = clusters.getCluster(clusterName);
- StackId stack = cluster.getCurrentStackVersion();
- String stackId = stack.getStackId();
+ StackId stackId = cluster.getCurrentStackVersion();
ClusterVersionEntity upgradingClusterVersion = clusterVersionDAO.findByClusterAndStackAndVersion(clusterName,
stackId, version);
@@ -153,7 +152,8 @@ public class FinalizeUpgradeAction extends AbstractServerAction {
// It is possible that the host version has a state of INSTALLED and it never changed if the host only has
// components that do not advertise a version.
HostEntity host = hostVersion.getHostEntity();
- ServiceComponentHostSummary hostSummary = new ServiceComponentHostSummary(ambariMetaInfo, host, stack);
+ ServiceComponentHostSummary hostSummary = new ServiceComponentHostSummary(
+ ambariMetaInfo, host, stackId);
if (hostSummary.haveAllComponentsFinishedAdvertisingVersion()){
isStateCorrect = true;
atLeastOneHostInInstalledState = true;
@@ -179,11 +179,12 @@ public class FinalizeUpgradeAction extends AbstractServerAction {
throw new AmbariException(message);
}
- checkHostComponentVesions(cluster, version, stack);
+ checkHostComponentVesions(cluster, version, stackId);
// May need to first transition to UPGRADED
if (atLeastOneHostInInstalledState) {
- cluster.transitionClusterVersion(stackId, version, RepositoryVersionState.UPGRADED);
+ cluster.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.UPGRADED);
upgradingClusterVersion = clusterVersionDAO.findByClusterAndStackAndVersion(clusterName,
stackId, version);
}
@@ -210,7 +211,8 @@ public class FinalizeUpgradeAction extends AbstractServerAction {
cluster.mapHostVersions(hostsToUpdate, upgradingClusterVersion, RepositoryVersionState.CURRENT);
outSB.append(String.format("Will finalize the version for cluster %s.\n", clusterName));
- cluster.transitionClusterVersion(stackId, version, RepositoryVersionState.CURRENT);
+ cluster.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.CURRENT);
outSB.append("Upgrade was successful!\n");
return createCommandReport(0, HostRoleStatus.COMPLETED, "{}", outSB.toString(), errSB.toString());
@@ -278,7 +280,7 @@ public class FinalizeUpgradeAction extends AbstractServerAction {
Set<String> badHosts = new HashSet<String>();
for (String badVersion : badVersions) {
List<HostVersionEntity> hostVersions = hostVersionDAO.findByClusterStackAndVersion(
- clusterName, stackId.getStackId(), badVersion);
+ clusterName, stackId, badVersion);
for (HostVersionEntity hostVersion : hostVersions) {
badHosts.add(hostVersion.getHostName());
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
index b10157a..847e349 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
@@ -187,25 +187,37 @@ public interface Cluster {
public void recalculateAllClusterVersionStates() throws AmbariException;
/**
- * Create a cluster version for the given stack and version, whose initial state must either
- * be either {@link RepositoryVersionState#UPGRADING} (if no other cluster version exists) or
- * {@link RepositoryVersionState#INSTALLING} (if at exactly one CURRENT cluster version already exists).
- * @param stack Stack name
- * @param version Stack version
- * @param userName User performing the operation
- * @param state Initial state
+ * Create a cluster version for the given stack and version, whose initial
+ * state must either be either {@link RepositoryVersionState#UPGRADING} (if no
+ * other cluster version exists) or {@link RepositoryVersionState#INSTALLING}
+ * (if at exactly one CURRENT cluster version already exists).
+ *
+ * @param stackId
+ * Stack ID
+ * @param version
+ * Stack version
+ * @param userName
+ * User performing the operation
+ * @param state
+ * Initial state
* @throws AmbariException
*/
- public void createClusterVersion(String stack, String version, String userName, RepositoryVersionState state) throws AmbariException;
+ public void createClusterVersion(StackId stackId, String version,
+ String userName, RepositoryVersionState state) throws AmbariException;
/**
* Transition an existing cluster version from one state to another.
- * @param stack Stack name
- * @param version Stack version
- * @param state Desired state
+ *
+ * @param stackId
+ * Stack ID
+ * @param version
+ * Stack version
+ * @param state
+ * Desired state
* @throws AmbariException
*/
- public void transitionClusterVersion(String stack, String version, RepositoryVersionState state) throws AmbariException;
+ public void transitionClusterVersion(StackId stackId, String version,
+ RepositoryVersionState state) throws AmbariException;
/**
* Gets whether the cluster is still initializing or has finished with its
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java
index 8676521..80ac6a7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java
@@ -18,11 +18,12 @@
package org.apache.ambari.server.state;
-import org.apache.ambari.server.AmbariException;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.ambari.server.AmbariException;
+
/**
* Single entity that tracks all clusters and hosts that are managed
* by the Ambari server
@@ -31,9 +32,13 @@ public interface Clusters {
/**
* Add a new Cluster
+ *
* @param clusterName
+ * the cluster name (not {@code null}).
+ * @param stackId
+ * the stack for the cluster (not {@code null}).
*/
- public void addCluster(String clusterName)
+ public void addCluster(String clusterName, StackId stackId)
throws AmbariException;
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
index 0211b68..5176d69 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
@@ -18,7 +18,11 @@
package org.apache.ambari.server.state;
-import java.util.*;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.ServiceConfigDAO;
@@ -31,7 +35,6 @@ import com.google.inject.Injector;
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;
import com.google.inject.persist.Transactional;
-import org.apache.ambari.server.orm.entities.ServiceConfigEntity;
public class ConfigImpl implements Config {
public static final String GENERATED_TAG_PREFIX = "generatedTag_";
@@ -50,25 +53,25 @@ public class ConfigImpl implements Config {
private Gson gson;
@Inject
private ServiceConfigDAO serviceConfigDAO;
-
+
@AssistedInject
- public ConfigImpl(@Assisted Cluster cluster, @Assisted String type, @Assisted Map<String, String> properties,
+ public ConfigImpl(@Assisted Cluster cluster, @Assisted String type, @Assisted Map<String, String> properties,
@Assisted Map<String, Map<String, String>> propertiesAttributes, Injector injector) {
this.cluster = cluster;
this.type = type;
this.properties = properties;
this.propertiesAttributes = propertiesAttributes;
injector.injectMembers(this);
-
+
}
-
+
@AssistedInject
public ConfigImpl(@Assisted Cluster cluster, @Assisted ClusterConfigEntity entity, Injector injector) {
this.cluster = cluster;
- this.type = entity.getType();
- this.tag = entity.getTag();
- this.version = entity.getVersion();
+ type = entity.getType();
+ tag = entity.getTag();
+ version = entity.getVersion();
this.entity = entity;
injector.injectMembers(this);
}
@@ -87,7 +90,7 @@ public class ConfigImpl implements Config {
@Override
public synchronized String getTag() {
- if (this.tag == null) {
+ if (tag == null) {
tag = GENERATED_TAG_PREFIX + getVersion();
}
return tag;
@@ -95,8 +98,8 @@ public class ConfigImpl implements Config {
@Override
public synchronized Long getVersion() {
- if (this.version == null && cluster != null) {
- this.version = cluster.getNextConfigVersion(type);
+ if (version == null && cluster != null) {
+ version = cluster.getNextConfigVersion(type);
}
return version;
}
@@ -104,9 +107,9 @@ public class ConfigImpl implements Config {
@Override
public synchronized Map<String, String> getProperties() {
if (null != entity && null == properties) {
-
+
properties = gson.<Map<String, String>>fromJson(entity.getData(), Map.class);
-
+
}
return null == properties ? new HashMap<String, String>()
: new HashMap<String, String>(properties);
@@ -159,11 +162,11 @@ public class ConfigImpl implements Config {
this.properties.remove(key);
}
}
-
+
@Transactional
@Override
public synchronized void persist() {
-
+
ClusterEntity clusterEntity = clusterDAO.findById(cluster.getClusterId());
ClusterConfigEntity entity = new ClusterConfigEntity();
@@ -173,7 +176,8 @@ public class ConfigImpl implements Config {
entity.setVersion(getVersion());
entity.setTag(getTag());
entity.setTimestamp(new Date().getTime());
-
+ entity.setStack(clusterEntity.getDesiredStack());
+
entity.setData(gson.toJson(getProperties()));
if (null != getPropertiesAttributes()) {
entity.setAttributes(gson.toJson(getPropertiesAttributes()));
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
index 73ed25e..9e84353 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
@@ -24,7 +24,6 @@ import java.util.Map.Entry;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
-import com.google.inject.ProvisionException;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.ObjectNotFoundException;
import org.apache.ambari.server.ServiceComponentHostNotFoundException;
@@ -33,6 +32,7 @@ import org.apache.ambari.server.controller.ServiceComponentResponse;
import org.apache.ambari.server.orm.dao.ClusterServiceDAO;
import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
import org.apache.ambari.server.orm.entities.ClusterServiceEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
@@ -40,13 +40,14 @@ import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntityPK;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.cluster.ClusterImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Injector;
+import com.google.inject.ProvisionException;
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;
import com.google.inject.persist.Transactional;
@@ -62,8 +63,6 @@ public class ServiceComponentImpl implements ServiceComponent {
private final boolean isMasterComponent;
boolean persisted = false;
@Inject
- private Gson gson;
- @Inject
private ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO;
@Inject
private ClusterServiceDAO clusterServiceDAO;
@@ -76,6 +75,12 @@ public class ServiceComponentImpl implements ServiceComponent {
private ServiceComponentDesiredStateEntity desiredStateEntity;
private Map<String, ServiceComponentHost> hostComponents;
+ /**
+ * Data access object used for lookup up stacks.
+ */
+ @Inject
+ private StackDAO stackDAO;
+
@AssistedInject
public ServiceComponentImpl(@Assisted Service service,
@Assisted String componentName, Injector injector) throws AmbariException {
@@ -348,15 +353,20 @@ public class ServiceComponentImpl implements ServiceComponent {
public StackId getDesiredStackVersion() {
readWriteLock.readLock().lock();
try {
- return gson.fromJson(desiredStateEntity.getDesiredStackVersion(),
- StackId.class);
+ StackEntity stackEntity = desiredStateEntity.getDesiredStack();
+ if (null != stackEntity) {
+ return new StackId(stackEntity.getStackName(),
+ stackEntity.getStackVersion());
+ } else {
+ return null;
+ }
} finally {
readWriteLock.readLock().unlock();
}
}
@Override
- public void setDesiredStackVersion(StackId stackVersion) {
+ public void setDesiredStackVersion(StackId stack) {
readWriteLock.writeLock().lock();
try {
if (LOG.isDebugEnabled()) {
@@ -365,9 +375,13 @@ public class ServiceComponentImpl implements ServiceComponent {
+ service.getCluster().getClusterId() + ", serviceName="
+ service.getName() + ", serviceComponentName=" + getName()
+ ", oldDesiredStackVersion=" + getDesiredStackVersion()
- + ", newDesiredStackVersion=" + stackVersion);
+ + ", newDesiredStackVersion=" + stack);
}
- desiredStateEntity.setDesiredStackVersion(gson.toJson(stackVersion));
+
+ StackEntity stackEntity = stackDAO.find(stack.getStackName(),
+ stack.getStackVersion());
+
+ desiredStateEntity.setDesiredStack(stackEntity);
saveIfPersisted();
} finally {
readWriteLock.writeLock().unlock();
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
index c8018a0..f7a59dc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
@@ -34,15 +34,16 @@ import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.ClusterServiceDAO;
import org.apache.ambari.server.orm.dao.ServiceDesiredStateDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterEntity;
import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
import org.apache.ambari.server.orm.entities.ClusterServiceEntityPK;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.ProvisionException;
@@ -67,8 +68,6 @@ public class ServiceImpl implements Service {
private final boolean isClientOnlyService;
@Inject
- Gson gson;
- @Inject
private ClusterServiceDAO clusterServiceDAO;
@Inject
private ServiceDesiredStateDAO serviceDesiredStateDAO;
@@ -80,6 +79,12 @@ public class ServiceImpl implements Service {
private AmbariMetaInfo ambariMetaInfo;
/**
+ * Data access object for retrieving stack instances.
+ */
+ @Inject
+ private StackDAO stackDAO;
+
+ /**
* Used to publish events relating to service CRUD operations.
*/
@Inject
@@ -338,15 +343,19 @@ public class ServiceImpl implements Service {
public StackId getDesiredStackVersion() {
readWriteLock.readLock().lock();
try {
- return gson.fromJson(serviceDesiredStateEntity.getDesiredStackVersion(),
- StackId.class);
+ StackEntity desiredStackEntity = serviceDesiredStateEntity.getDesiredStack();
+ if( null != desiredStackEntity ) {
+ return new StackId(desiredStackEntity);
+ } else {
+ return null;
+ }
} finally {
readWriteLock.readLock().unlock();
}
}
@Override
- public void setDesiredStackVersion(StackId stackVersion) {
+ public void setDesiredStackVersion(StackId stack) {
readWriteLock.writeLock().lock();
try {
if (LOG.isDebugEnabled()) {
@@ -354,9 +363,11 @@ public class ServiceImpl implements Service {
+ cluster.getClusterName() + ", clusterId="
+ cluster.getClusterId() + ", serviceName=" + getName()
+ ", oldDesiredStackVersion=" + getDesiredStackVersion()
- + ", newDesiredStackVersion=" + stackVersion);
+ + ", newDesiredStackVersion=" + stack);
}
- serviceDesiredStateEntity.setDesiredStackVersion(gson.toJson(stackVersion));
+
+ StackEntity stackEntity = stackDAO.find(stack.getStackName(), stack.getStackVersion());
+ serviceDesiredStateEntity.setDesiredStack(stackEntity);
saveIfPersisted();
} finally {
readWriteLock.writeLock().unlock();
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java b/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java
index 0be39c1..80aed71 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.state;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.utils.VersionUtils;
public class StackId implements Comparable<StackId> {
@@ -28,8 +29,8 @@ public class StackId implements Comparable<StackId> {
private String stackVersion;
public StackId() {
- this.stackName = "";
- this.stackVersion = "";
+ stackName = "";
+ stackVersion = "";
}
public StackId(String stackId) {
@@ -37,14 +38,18 @@ public class StackId implements Comparable<StackId> {
}
public StackId(StackInfo stackInfo) {
- this.stackName = stackInfo.getName();
- this.stackVersion = stackInfo.getVersion();
+ stackName = stackInfo.getName();
+ stackVersion = stackInfo.getVersion();
}
public StackId(String stackName, String stackVersion) {
this(stackName + NAME_SEPARATOR + stackVersion);
}
+ public StackId(StackEntity stackEntity) {
+ this(stackEntity.getStackName(), stackEntity.getStackVersion());
+ }
+
/**
* @return the stackName
*/
@@ -115,6 +120,7 @@ public class StackId implements Comparable<StackId> {
return returnValue;
}
+ @Override
public String toString() {
return getStackId();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/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 1a8bf43..9643fe1 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
@@ -64,6 +64,7 @@ import org.apache.ambari.server.orm.dao.HostDAO;
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.UpgradeDAO;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
import org.apache.ambari.server.orm.entities.ClusterConfigMappingEntity;
@@ -81,6 +82,7 @@ import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.orm.entities.RequestScheduleEntity;
import org.apache.ambari.server.orm.entities.ResourceEntity;
import org.apache.ambari.server.orm.entities.ServiceConfigEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.security.authorization.AuthorizationHelper;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ClusterHealthReport;
@@ -119,7 +121,6 @@ import com.google.common.collect.HashMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
-import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.assistedinject.Assisted;
@@ -196,8 +197,6 @@ public class ClusterImpl implements Cluster {
@Inject
private ConfigFactory configFactory;
@Inject
- private Gson gson;
- @Inject
private HostConfigMappingDAO hostConfigMappingDAO;
@Inject
private ConfigGroupFactory configGroupFactory;
@@ -232,6 +231,12 @@ public class ClusterImpl implements Cluster {
@Inject
private AmbariSessionManager sessionManager;
+ /**
+ * Data access object used for looking up stacks from the database.
+ */
+ @Inject
+ private StackDAO stackDAO;
+
private volatile boolean svcHostsLoaded = false;
private volatile Multimap<String, String> serviceConfigTypes;
@@ -246,8 +251,9 @@ public class ClusterImpl implements Cluster {
Map<String, Map<String, ServiceComponentHost>>>();
serviceComponentHostsByHost = new HashMap<String,
List<ServiceComponentHost>>();
- desiredStackVersion = gson.fromJson(
- clusterEntity.getDesiredStackVersion(), StackId.class);
+
+ desiredStackVersion = new StackId(clusterEntity.getDesiredStack());
+
allConfigs = new HashMap<String, Map<String, Config>>();
if (!clusterEntity.getClusterConfigEntities().isEmpty()) {
for (ClusterConfigEntity entity : clusterEntity.getClusterConfigEntities()) {
@@ -876,17 +882,21 @@ public class ClusterImpl implements Cluster {
}
@Override
- public void setDesiredStackVersion(StackId stackVersion) throws AmbariException {
+ public void setDesiredStackVersion(StackId stackId) throws AmbariException {
clusterGlobalLock.writeLock().lock();
try {
if (LOG.isDebugEnabled()) {
LOG.debug("Changing DesiredStackVersion of Cluster" + ", clusterName="
+ getClusterName() + ", clusterId=" + getClusterId()
+ ", currentDesiredStackVersion=" + desiredStackVersion
- + ", newDesiredStackVersion=" + stackVersion);
+ + ", newDesiredStackVersion=" + stackId);
}
- desiredStackVersion = stackVersion;
- clusterEntity.setDesiredStackVersion(gson.toJson(stackVersion));
+
+ desiredStackVersion = stackId;
+ StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+ stackId.getStackVersion());
+
+ clusterEntity.setDesiredStack(stackEntity);
clusterDAO.merge(clusterEntity);
loadServiceConfigTypes();
} finally {
@@ -900,10 +910,8 @@ public class ClusterImpl implements Cluster {
try {
ClusterStateEntity clusterStateEntity = clusterEntity.getClusterStateEntity();
if (clusterStateEntity != null) {
- String stackVersion = clusterStateEntity.getCurrentStackVersion();
- if (stackVersion != null && !stackVersion.isEmpty()) {
- return gson.fromJson(stackVersion, StackId.class);
- }
+ StackEntity currentStackEntity = clusterStateEntity.getCurrentStack();
+ return new StackId(currentStackEntity);
}
return null;
} finally {
@@ -1008,10 +1016,12 @@ public class ClusterImpl implements Cluster {
clusterGlobalLock.writeLock().lock();
try {
+ StackEntity repoVersionStackEntity = currentClusterVersion.getRepositoryVersion().getStack();
+ StackId repoVersionStackId = new StackId(repoVersionStackEntity);
+
Map<String, HostVersionEntity> existingHostToHostVersionEntity = new HashMap<String, HostVersionEntity>();
List<HostVersionEntity> existingHostVersionEntities = hostVersionDAO.findByClusterStackAndVersion(
- getClusterName(),
- currentClusterVersion.getRepositoryVersion().getStack(),
+ getClusterName(), repoVersionStackId,
currentClusterVersion.getRepositoryVersion().getVersion());
if (existingHostVersionEntities != null) {
@@ -1091,9 +1101,11 @@ public class ClusterImpl implements Cluster {
clusterGlobalLock.writeLock().lock();
try {
+ StackEntity repoVersionStackEntity = sourceClusterVersion.getRepositoryVersion().getStack();
+ StackId repoVersionStackId = new StackId(repoVersionStackEntity);
+
List<HostVersionEntity> existingHostVersionEntities = hostVersionDAO.findByClusterStackAndVersion(
- getClusterName(),
- sourceClusterVersion.getRepositoryVersion().getStack(),
+ getClusterName(), repoVersionStackId,
sourceClusterVersion.getRepositoryVersion().getVersion());
if (existingHostVersionEntities != null) {
@@ -1203,7 +1215,7 @@ public class ClusterImpl implements Cluster {
// Part 1, bootstrap cluster version if necessary.
ClusterVersionEntity clusterVersion = clusterVersionDAO.findByClusterAndStackAndVersion(
- getClusterName(), stackId.getStackId(), repositoryVersion);
+ getClusterName(), stackId, repositoryVersion);
if (clusterVersion == null) {
if (clusterVersionDAO.findByCluster(getClusterName()).isEmpty()) {
@@ -1213,12 +1225,12 @@ public class ClusterImpl implements Cluster {
// which can happen if the first HostComponentState to trigger this method
// cannot advertise a version.
createClusterVersionInternal(
- stackId.getStackId(),
+ stackId,
repositoryVersion,
AuthorizationHelper.getAuthenticatedName(configuration.getAnonymousAuditName()),
RepositoryVersionState.UPGRADING);
clusterVersion = clusterVersionDAO.findByClusterAndStackAndVersion(
- getClusterName(), stackId.getStackId(), repositoryVersion);
+ getClusterName(), stackId, repositoryVersion);
if (clusterVersion == null) {
LOG.warn(String.format(
@@ -1251,7 +1263,7 @@ public class ClusterImpl implements Cluster {
for (Host host : hosts.values()) {
String hostName = host.getHostName();
HostVersionEntity hostVersion = hostVersionDAO.findByClusterStackVersionAndHost(
- getClusterName(), stackId.getStackId(), repositoryVersion, hostName);
+ getClusterName(), stackId, repositoryVersion, hostName);
if (hostVersion == null) {
// This host either has not had a chance to heartbeat yet with its
@@ -1303,7 +1315,7 @@ public class ClusterImpl implements Cluster {
// Any mismatch will be caught while transitioning, and raise an
// exception.
try {
- transitionClusterVersion(stackId.getStackId(), repositoryVersion,
+ transitionClusterVersion(stackId, repositoryVersion,
effectiveClusterVersionState);
} catch (AmbariException e) {
;
@@ -1324,7 +1336,12 @@ public class ClusterImpl implements Cluster {
@Override
@Transactional
public HostVersionEntity transitionHostVersionState(HostEntity host, final RepositoryVersionEntity repositoryVersion, final StackId stack) throws AmbariException {
- HostVersionEntity hostVersionEntity = hostVersionDAO.findByClusterStackVersionAndHost(getClusterName(), repositoryVersion.getStack(), repositoryVersion.getVersion(), host.getHostName());
+ StackEntity repoVersionStackEntity = repositoryVersion.getStack();
+ StackId repoVersionStackId = new StackId(repoVersionStackEntity);
+
+ HostVersionEntity hostVersionEntity = hostVersionDAO.findByClusterStackVersionAndHost(
+ getClusterName(), repoVersionStackId, repositoryVersion.getVersion(),
+ host.getHostName());
hostTransitionStateWriteLock.lock();
try {
@@ -1387,10 +1404,11 @@ public class ClusterImpl implements Cluster {
}
@Override
- public void createClusterVersion(String stack, String version, String userName, RepositoryVersionState state) throws AmbariException {
+ public void createClusterVersion(StackId stackId, String version,
+ String userName, RepositoryVersionState state) throws AmbariException {
clusterGlobalLock.writeLock().lock();
try {
- createClusterVersionInternal(stack, version, userName, state);
+ createClusterVersionInternal(stackId, version, userName, state);
} finally {
clusterGlobalLock.writeLock().unlock();
}
@@ -1401,7 +1419,8 @@ public class ClusterImpl implements Cluster {
*
* This method is intended to be called only when cluster lock is already acquired.
*/
- private void createClusterVersionInternal(String stack, String version, String userName, RepositoryVersionState state) throws AmbariException {
+ private void createClusterVersionInternal(StackId stackId, String version,
+ String userName, RepositoryVersionState state) throws AmbariException {
Set<RepositoryVersionState> allowedStates = new HashSet<RepositoryVersionState>();
Collection<ClusterVersionEntity> allClusterVersions = getAllClusterVersions();
if (allClusterVersions == null || allClusterVersions.isEmpty()) {
@@ -1414,15 +1433,20 @@ public class ClusterImpl implements Cluster {
throw new AmbariException("The allowed state for a new cluster version must be within " + allowedStates);
}
- ClusterVersionEntity existing = clusterVersionDAO.findByClusterAndStackAndVersion(getClusterName(), stack, version);
+ ClusterVersionEntity existing = clusterVersionDAO.findByClusterAndStackAndVersion(
+ getClusterName(), stackId, version);
if (existing != null) {
- throw new DuplicateResourceException("Duplicate item, a cluster version with stack=" + stack + ", version=" +
+ throw new DuplicateResourceException(
+ "Duplicate item, a cluster version with stack=" + stackId
+ + ", version=" +
version + " for cluster " + getClusterName() + " already exists");
}
- RepositoryVersionEntity repositoryVersionEntity = repositoryVersionDAO.findByStackAndVersion(stack, version);
+ RepositoryVersionEntity repositoryVersionEntity = repositoryVersionDAO.findByStackAndVersion(
+ stackId, version);
if (repositoryVersionEntity == null) {
- LOG.warn("Could not find repository version for stack=" + stack + ", version=" + version);
+ LOG.warn("Could not find repository version for stack=" + stackId
+ + ", version=" + version);
return;
}
@@ -1432,23 +1456,28 @@ public class ClusterImpl implements Cluster {
/**
* Transition an existing cluster version from one state to another.
- * @param stack Stack name
- * @param version Stack version
- * @param state Desired state
+ *
+ * @param stackId
+ * Stack ID
+ * @param version
+ * Stack version
+ * @param state
+ * Desired state
* @throws AmbariException
*/
@Override
@Transactional
- public void transitionClusterVersion(String stack, String version, RepositoryVersionState state) throws AmbariException {
+ public void transitionClusterVersion(StackId stackId, String version,
+ RepositoryVersionState state) throws AmbariException {
Set<RepositoryVersionState> allowedStates = new HashSet<RepositoryVersionState>();
clusterGlobalLock.writeLock().lock();
try {
ClusterVersionEntity existingClusterVersion = clusterVersionDAO.findByClusterAndStackAndVersion(
- getClusterName(), stack, version);
+ getClusterName(), stackId, version);
if (existingClusterVersion == null) {
throw new AmbariException(
"Existing cluster version not found for cluster="
- + getClusterName() + ", stack=" + stack + ", version="
+ + getClusterName() + ", stack=" + stackId + ", version="
+ version);
}
@@ -1547,7 +1576,7 @@ public class ClusterImpl implements Cluster {
}
}
} catch (RollbackException e) {
- String message = "Unable to transition stack " + stack + " at version "
+ String message = "Unable to transition stack " + stackId + " at version "
+ version + " for cluster " + getClusterName() + " to state " + state;
LOG.warn(message);
throw new AmbariException(message, e);
@@ -1581,29 +1610,32 @@ public class ClusterImpl implements Cluster {
}
@Override
- public void setCurrentStackVersion(StackId stackVersion)
+ public void setCurrentStackVersion(StackId stackId)
throws AmbariException {
clusterGlobalLock.writeLock().lock();
try {
+ StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+ stackId.getStackVersion());
+
ClusterStateEntity clusterStateEntity = clusterStateDAO.findByPK(clusterEntity.getClusterId());
if (clusterStateEntity == null) {
clusterStateEntity = new ClusterStateEntity();
clusterStateEntity.setClusterId(clusterEntity.getClusterId());
- clusterStateEntity.setCurrentStackVersion(gson.toJson(stackVersion));
+ clusterStateEntity.setCurrentStack(stackEntity);
clusterStateEntity.setClusterEntity(clusterEntity);
clusterStateDAO.create(clusterStateEntity);
clusterStateEntity = clusterStateDAO.merge(clusterStateEntity);
clusterEntity.setClusterStateEntity(clusterStateEntity);
clusterEntity = clusterDAO.merge(clusterEntity);
} else {
- clusterStateEntity.setCurrentStackVersion(gson.toJson(stackVersion));
+ clusterStateEntity.setCurrentStack(stackEntity);
clusterStateDAO.merge(clusterStateEntity);
clusterEntity = clusterDAO.merge(clusterEntity);
}
} catch (RollbackException e) {
- LOG.warn("Unable to set version " + stackVersion + " for cluster "
+ LOG.warn("Unable to set version " + stackId + " for cluster "
+ getClusterName());
- throw new AmbariException("Unable to set" + " version=" + stackVersion
+ throw new AmbariException("Unable to set" + " version=" + stackId
+ " for cluster " + getClusterName(), e);
} finally {
clusterGlobalLock.writeLock().unlock();
@@ -1911,6 +1943,7 @@ public class ClusterImpl implements Cluster {
serviceConfigEntity.setVersion(configVersionHelper.getNextVersion(serviceName));
serviceConfigEntity.setUser(user);
serviceConfigEntity.setNote(note);
+ serviceConfigEntity.setStack(clusterEntity.getDesiredStack());
if (configGroup != null) {
serviceConfigEntity.setGroupId(configGroup.getId());
@@ -2186,6 +2219,7 @@ public class ClusterImpl implements Cluster {
serviceConfigEntityClone.setUser(user);
serviceConfigEntityClone.setServiceName(serviceName);
serviceConfigEntityClone.setClusterEntity(clusterEntity);
+ serviceConfigEntityClone.setStack(serviceConfigEntity.getStack());
serviceConfigEntityClone.setClusterConfigEntities(serviceConfigEntity.getClusterConfigEntities());
serviceConfigEntityClone.setClusterId(serviceConfigEntity.getClusterId());
serviceConfigEntityClone.setHostNames(serviceConfigEntity.getHostNames());
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
index c7a8ddb..70788ff 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
@@ -49,6 +49,7 @@ import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.KerberosPrincipalHostDAO;
import org.apache.ambari.server.orm.dao.ResourceTypeDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterEntity;
import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
import org.apache.ambari.server.orm.entities.HostEntity;
@@ -57,6 +58,7 @@ import org.apache.ambari.server.orm.entities.PermissionEntity;
import org.apache.ambari.server.orm.entities.PrivilegeEntity;
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.security.SecurityHelper;
import org.apache.ambari.server.security.authorization.AmbariGrantedAuthority;
import org.apache.ambari.server.state.AgentVersion;
@@ -74,7 +76,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.GrantedAuthority;
-import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
@@ -118,11 +119,15 @@ public class ClustersImpl implements Clusters {
@Inject
AmbariMetaInfo ambariMetaInfo;
@Inject
- Gson gson;
- @Inject
private SecurityHelper securityHelper;
/**
+ * Data access object for stacks.
+ */
+ @Inject
+ private StackDAO stackDAO;
+
+ /**
* Used to publish events relating to cluster CRUD operations.
*/
@Inject
@@ -178,10 +183,12 @@ public class ClustersImpl implements Clusters {
}
@Override
- public void addCluster(String clusterName)
+ public void addCluster(String clusterName, StackId stackId)
throws AmbariException {
checkLoaded();
+ Cluster cluster = null;
+
w.lock();
try {
if (clusters.containsKey(clusterName)) {
@@ -201,11 +208,14 @@ public class ClustersImpl implements Clusters {
ResourceEntity resourceEntity = new ResourceEntity();
resourceEntity.setResourceType(resourceTypeEntity);
+ StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+ stackId.getStackVersion());
+
// retrieve new cluster id
// add cluster id -> cluster mapping into clustersById
ClusterEntity clusterEntity = new ClusterEntity();
clusterEntity.setClusterName(clusterName);
- clusterEntity.setDesiredStackVersion(gson.toJson(new StackId()));
+ clusterEntity.setDesiredStack(stackEntity);
clusterEntity.setResource(resourceEntity);
try {
@@ -216,13 +226,15 @@ public class ClustersImpl implements Clusters {
throw new AmbariException("Unable to create cluster " + clusterName, e);
}
- Cluster cluster = clusterFactory.create(clusterEntity);
+ cluster = clusterFactory.create(clusterEntity);
clusters.put(clusterName, cluster);
clustersById.put(cluster.getClusterId(), cluster);
clusterHostMap.put(clusterName, new HashSet<Host>());
} finally {
w.unlock();
}
+
+ cluster.setCurrentStackVersion(stackId);
}
@Override
@@ -261,16 +273,21 @@ public class ClustersImpl implements Clusters {
}
checkLoaded();
+
+ Cluster cluster = null;
+
r.lock();
try {
if (!clusters.containsKey(clusterName)) {
throw new ClusterNotFoundException(clusterName);
}
- Cluster cluster = clusters.get(clusterName);
- cluster.setCurrentStackVersion(stackId);
+
+ cluster = clusters.get(clusterName);
} finally {
r.unlock();
}
+
+ cluster.setCurrentStackVersion(stackId);
}
@Override
[2/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity
Relationships (jonathanhurley)
Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
index 66a4ade..bb1cb46 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
@@ -70,6 +70,7 @@ import org.apache.ambari.server.orm.entities.HostStateEntity;
import org.apache.ambari.server.orm.entities.HostVersionEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.AgentVersion;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
@@ -100,7 +101,6 @@ import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import com.google.gson.Gson;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -187,7 +187,8 @@ public class ClusterTest {
}
private void createDefaultCluster() throws Exception {
- clusters.addCluster("c1");
+ StackId stackId = new StackId("HDP-0.1");
+ clusters.addCluster("c1", stackId);
c1 = clusters.getCluster("c1");
Assert.assertEquals("c1", c1.getClusterName());
Assert.assertEquals(1, c1.getClusterId());
@@ -211,21 +212,26 @@ public class ClusterTest {
host1.persist();
host2.persist();
- StackId stackId = new StackId("HDP-0.1");
- 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");
clusters.mapHostToCluster("h2", "c1");
ClusterVersionDAOMock.failOnCurrentVersionState = false;
}
public ClusterEntity createDummyData() {
+ StackEntity stackEntity = new StackEntity();
+ stackEntity.setStackName("HDP");
+ stackEntity.setStackVersion("0.1");
+
ClusterEntity clusterEntity = new ClusterEntity();
clusterEntity.setClusterId(1L);
clusterEntity.setClusterName("test_cluster1");
clusterEntity.setClusterInfo("test_cluster_info1");
+ clusterEntity.setDesiredStack(stackEntity);
HostEntity host1 = new HostEntity();
HostEntity host2 = new HostEntity();
@@ -262,10 +268,11 @@ public class ClusterTest {
clusterServiceEntity.setClusterEntity(clusterEntity);
clusterServiceEntity.setServiceComponentDesiredStateEntities(
Collections.EMPTY_LIST);
+
ServiceDesiredStateEntity stateEntity = mock(ServiceDesiredStateEntity.class);
- Gson gson = new Gson();
- when(stateEntity.getDesiredStackVersion()).thenReturn(gson.toJson(new StackId("HDP-0.1"),
- StackId.class));
+
+ when(stateEntity.getDesiredStack()).thenReturn(stackEntity);
+
clusterServiceEntity.setServiceDesiredStateEntity(stateEntity);
List<ClusterServiceEntity> clusterServiceEntities = new ArrayList<ClusterServiceEntity>();
clusterServiceEntities.add(clusterServiceEntity);
@@ -273,23 +280,25 @@ public class ClusterTest {
return clusterEntity;
}
- private void checkStackVersionState(String stack, String version, RepositoryVersionState state) {
+ private void checkStackVersionState(StackId stackId, String version, RepositoryVersionState state) {
Collection<ClusterVersionEntity> allClusterVersions = c1.getAllClusterVersions();
for (ClusterVersionEntity entity : allClusterVersions) {
- if (entity.getRepositoryVersion().getStack().equals(stack)
- && entity.getRepositoryVersion().getVersion().equals(version)) {
+ StackId repoVersionStackId = new StackId(entity.getRepositoryVersion().getStack());
+ if (repoVersionStackId.equals(stackId)
+ && repoVersionStackId.getStackVersion().equals(version)) {
assertEquals(state, entity.getState());
}
}
}
- private void assertStateException(String stack, String version, RepositoryVersionState transitionState,
+ private void assertStateException(StackId stackId, String version,
+ RepositoryVersionState transitionState,
RepositoryVersionState stateAfter) {
try {
- c1.transitionClusterVersion(stack, version, transitionState);
+ c1.transitionClusterVersion(stackId, version, transitionState);
Assert.fail();
} catch (AmbariException e) {}
- checkStackVersionState(stack, version, stateAfter);
+ checkStackVersionState(stackId, version, stateAfter);
assertNotNull(c1.getCurrentClusterVersion());
}
@@ -308,7 +317,7 @@ public class ClusterTest {
* @return Cluster that was created
*/
private Cluster createClusterForRU(String clusterName, StackId stackId, Map<String, String> hostAttributes) throws Exception {
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
Cluster cluster = clusters.getCluster(clusterName);
Assert.assertEquals(clusterName, cluster.getClusterName());
Assert.assertEquals(1, cluster.getClusterId());
@@ -511,14 +520,14 @@ public class ClusterTest {
@Test
public void testGetHostState() throws Exception {
createDefaultCluster();
-
+
Assert.assertEquals(HostState.INIT, clusters.getHost("h1").getState());
}
@Test
public void testSetHostState() throws Exception {
createDefaultCluster();
-
+
clusters.getHost("h1").setState(HostState.HEARTBEAT_LOST);
Assert.assertEquals(HostState.HEARTBEAT_LOST,
clusters.getHost("h1").getState());
@@ -528,7 +537,7 @@ public class ClusterTest {
public void testHostEvent() throws Exception,
InvalidStateTransitionException {
createDefaultCluster();
-
+
HostInfo hostInfo = new HostInfo();
hostInfo.setHostName("h1");
hostInfo.setInterfaces("fip_4");
@@ -576,6 +585,8 @@ public class ClusterTest {
@Test
public void testBasicClusterSetup() throws Exception {
+ StackId stackVersion = new StackId("HDP-1.2.0");
+
createDefaultCluster();
String clusterName = "c2";
@@ -587,7 +598,7 @@ public class ClusterTest {
// Expected
}
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackVersion);
Cluster c2 = clusters.getCluster(clusterName);
Assert.assertNotNull(c2);
@@ -598,11 +609,7 @@ public class ClusterTest {
Assert.assertEquals("foo2", c2.getClusterName());
Assert.assertNotNull(c2.getDesiredStackVersion());
- Assert.assertEquals("", c2.getDesiredStackVersion().getStackId());
-
- StackId stackVersion = new StackId("HDP-1.0");
- c2.setDesiredStackVersion(stackVersion);
- Assert.assertEquals("HDP-1.0", c2.getDesiredStackVersion().getStackId());
+ Assert.assertEquals("HDP-1.2.0", c2.getDesiredStackVersion().getStackId());
}
@Test
@@ -798,7 +805,7 @@ public class ClusterTest {
public void testClusterRecovery() throws AmbariException {
ClusterEntity entity = createDummyData();
ClusterStateEntity clusterStateEntity = new ClusterStateEntity();
- clusterStateEntity.setCurrentStackVersion("{\"stackName\":\"HDP\",\"stackVersion\":\"0.1\"}");
+ clusterStateEntity.setCurrentStack(entity.getDesiredStack());
entity.setClusterStateEntity(clusterStateEntity);
ClusterImpl cluster = new ClusterImpl(entity, injector);
Service service = cluster.getService("HDFS");
@@ -1128,99 +1135,161 @@ public class ClusterTest {
String stack = "HDP";
String version = "0.2";
- helper.getOrCreateRepositoryVersion(stack, version);
- c1.createClusterVersion(stack, version, "admin", RepositoryVersionState.INSTALLING);
-
- assertStateException(stack, version, RepositoryVersionState.CURRENT, RepositoryVersionState.INSTALLING);
- assertStateException(stack, version, RepositoryVersionState.UPGRADING, RepositoryVersionState.INSTALLING);
- assertStateException(stack, version, RepositoryVersionState.UPGRADED, RepositoryVersionState.INSTALLING);
- assertStateException(stack, version, RepositoryVersionState.UPGRADE_FAILED, RepositoryVersionState.INSTALLING);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.INSTALL_FAILED);
- checkStackVersionState(stack, version, RepositoryVersionState.INSTALL_FAILED);
-
- assertStateException(stack, version, RepositoryVersionState.CURRENT, RepositoryVersionState.INSTALL_FAILED);
- assertStateException(stack, version, RepositoryVersionState.INSTALLED, RepositoryVersionState.INSTALL_FAILED);
- assertStateException(stack, version, RepositoryVersionState.UPGRADING, RepositoryVersionState.INSTALL_FAILED);
- assertStateException(stack, version, RepositoryVersionState.UPGRADED, RepositoryVersionState.INSTALL_FAILED);
- assertStateException(stack, version, RepositoryVersionState.UPGRADE_FAILED, RepositoryVersionState.INSTALL_FAILED);
- assertStateException(stack, version, RepositoryVersionState.OUT_OF_SYNC, RepositoryVersionState.INSTALL_FAILED);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.INSTALLING);
- checkStackVersionState(stack, version, RepositoryVersionState.INSTALLING);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.INSTALLED);
- checkStackVersionState(stack, version, RepositoryVersionState.INSTALLED);
-
- assertStateException(stack, version, RepositoryVersionState.CURRENT, RepositoryVersionState.INSTALLED);
- assertStateException(stack, version, RepositoryVersionState.UPGRADE_FAILED, RepositoryVersionState.INSTALLED);
- assertStateException(stack, version, RepositoryVersionState.INSTALL_FAILED, RepositoryVersionState.INSTALLED);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.OUT_OF_SYNC);
- checkStackVersionState(stack, version, RepositoryVersionState.OUT_OF_SYNC);
-
- assertStateException(stack, version, RepositoryVersionState.CURRENT, RepositoryVersionState.OUT_OF_SYNC);
- assertStateException(stack, version, RepositoryVersionState.INSTALLED, RepositoryVersionState.OUT_OF_SYNC);
- assertStateException(stack, version, RepositoryVersionState.INSTALL_FAILED, RepositoryVersionState.OUT_OF_SYNC);
- assertStateException(stack, version, RepositoryVersionState.UPGRADING, RepositoryVersionState.OUT_OF_SYNC);
- assertStateException(stack, version, RepositoryVersionState.UPGRADED, RepositoryVersionState.OUT_OF_SYNC);
- assertStateException(stack, version, RepositoryVersionState.UPGRADE_FAILED, RepositoryVersionState.OUT_OF_SYNC);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.INSTALLING);
- checkStackVersionState(stack, version, RepositoryVersionState.INSTALLING);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.INSTALLED);
- checkStackVersionState(stack, version, RepositoryVersionState.INSTALLED);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.UPGRADING);
- checkStackVersionState(stack, version, RepositoryVersionState.UPGRADING);
-
- assertStateException(stack, version, RepositoryVersionState.CURRENT, RepositoryVersionState.UPGRADING);
- assertStateException(stack, version, RepositoryVersionState.INSTALLED, RepositoryVersionState.UPGRADING);
- assertStateException(stack, version, RepositoryVersionState.INSTALL_FAILED, RepositoryVersionState.UPGRADING);
- assertStateException(stack, version, RepositoryVersionState.OUT_OF_SYNC, RepositoryVersionState.UPGRADING);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.UPGRADE_FAILED);
- checkStackVersionState(stack, version, RepositoryVersionState.UPGRADE_FAILED);
-
- assertStateException(stack, version, RepositoryVersionState.CURRENT, RepositoryVersionState.UPGRADE_FAILED);
- assertStateException(stack, version, RepositoryVersionState.INSTALLED, RepositoryVersionState.UPGRADE_FAILED);
- assertStateException(stack, version, RepositoryVersionState.INSTALL_FAILED, RepositoryVersionState.UPGRADE_FAILED);
- assertStateException(stack, version, RepositoryVersionState.UPGRADED, RepositoryVersionState.UPGRADE_FAILED);
- assertStateException(stack, version, RepositoryVersionState.OUT_OF_SYNC, RepositoryVersionState.UPGRADE_FAILED);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.UPGRADING);
- checkStackVersionState(stack, version, RepositoryVersionState.UPGRADING);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.UPGRADED);
- checkStackVersionState(stack, version, RepositoryVersionState.UPGRADED);
-
- assertStateException(stack, version, RepositoryVersionState.INSTALLED, RepositoryVersionState.UPGRADED);
- assertStateException(stack, version, RepositoryVersionState.INSTALL_FAILED, RepositoryVersionState.UPGRADED);
- assertStateException(stack, version, RepositoryVersionState.UPGRADING, RepositoryVersionState.UPGRADED);
- assertStateException(stack, version, RepositoryVersionState.UPGRADE_FAILED, RepositoryVersionState.UPGRADED);
- assertStateException(stack, version, RepositoryVersionState.OUT_OF_SYNC, RepositoryVersionState.UPGRADED);
-
- c1.transitionClusterVersion(stack, version, RepositoryVersionState.CURRENT);
- checkStackVersionState(stack, version, RepositoryVersionState.CURRENT);
- checkStackVersionState("HDP", "0.1", RepositoryVersionState.INSTALLED);
+ StackId stackId = new StackId(stack, version);
+
+ helper.getOrCreateRepositoryVersion(stackId, version);
+ c1.createClusterVersion(stackId, version, "admin",
+ RepositoryVersionState.INSTALLING);
+
+ assertStateException(stackId, version, RepositoryVersionState.CURRENT,
+ RepositoryVersionState.INSTALLING);
+ assertStateException(stackId, version, RepositoryVersionState.UPGRADING,
+ RepositoryVersionState.INSTALLING);
+ assertStateException(stackId, version, RepositoryVersionState.UPGRADED,
+ RepositoryVersionState.INSTALLING);
+ assertStateException(stackId, version,
+ RepositoryVersionState.UPGRADE_FAILED,
+ RepositoryVersionState.INSTALLING);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.INSTALL_FAILED);
+ checkStackVersionState(stackId, version,
+ RepositoryVersionState.INSTALL_FAILED);
+
+ assertStateException(stackId, version, RepositoryVersionState.CURRENT,
+ RepositoryVersionState.INSTALL_FAILED);
+ assertStateException(stackId, version, RepositoryVersionState.INSTALLED,
+ RepositoryVersionState.INSTALL_FAILED);
+ assertStateException(stackId, version, RepositoryVersionState.UPGRADING,
+ RepositoryVersionState.INSTALL_FAILED);
+ assertStateException(stackId, version, RepositoryVersionState.UPGRADED,
+ RepositoryVersionState.INSTALL_FAILED);
+ assertStateException(stackId, version,
+ RepositoryVersionState.UPGRADE_FAILED,
+ RepositoryVersionState.INSTALL_FAILED);
+ assertStateException(stackId, version, RepositoryVersionState.OUT_OF_SYNC,
+ RepositoryVersionState.INSTALL_FAILED);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.INSTALLING);
+ checkStackVersionState(stackId, version, RepositoryVersionState.INSTALLING);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.INSTALLED);
+ checkStackVersionState(stackId, version, RepositoryVersionState.INSTALLED);
+
+ assertStateException(stackId, version, RepositoryVersionState.CURRENT,
+ RepositoryVersionState.INSTALLED);
+ assertStateException(stackId, version,
+ RepositoryVersionState.UPGRADE_FAILED, RepositoryVersionState.INSTALLED);
+ assertStateException(stackId, version,
+ RepositoryVersionState.INSTALL_FAILED, RepositoryVersionState.INSTALLED);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.OUT_OF_SYNC);
+ checkStackVersionState(stackId, version, RepositoryVersionState.OUT_OF_SYNC);
+
+ assertStateException(stackId, version, RepositoryVersionState.CURRENT,
+ RepositoryVersionState.OUT_OF_SYNC);
+ assertStateException(stackId, version, RepositoryVersionState.INSTALLED,
+ RepositoryVersionState.OUT_OF_SYNC);
+ assertStateException(stackId, version,
+ RepositoryVersionState.INSTALL_FAILED,
+ RepositoryVersionState.OUT_OF_SYNC);
+ assertStateException(stackId, version, RepositoryVersionState.UPGRADING,
+ RepositoryVersionState.OUT_OF_SYNC);
+ assertStateException(stackId, version, RepositoryVersionState.UPGRADED,
+ RepositoryVersionState.OUT_OF_SYNC);
+ assertStateException(stackId, version,
+ RepositoryVersionState.UPGRADE_FAILED,
+ RepositoryVersionState.OUT_OF_SYNC);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.INSTALLING);
+ checkStackVersionState(stackId, version, RepositoryVersionState.INSTALLING);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.INSTALLED);
+ checkStackVersionState(stackId, version, RepositoryVersionState.INSTALLED);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.UPGRADING);
+ checkStackVersionState(stackId, version, RepositoryVersionState.UPGRADING);
+
+ assertStateException(stackId, version, RepositoryVersionState.CURRENT,
+ RepositoryVersionState.UPGRADING);
+ assertStateException(stackId, version, RepositoryVersionState.INSTALLED,
+ RepositoryVersionState.UPGRADING);
+ assertStateException(stackId, version,
+ RepositoryVersionState.INSTALL_FAILED, RepositoryVersionState.UPGRADING);
+ assertStateException(stackId, version, RepositoryVersionState.OUT_OF_SYNC,
+ RepositoryVersionState.UPGRADING);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.UPGRADE_FAILED);
+ checkStackVersionState(stackId, version,
+ RepositoryVersionState.UPGRADE_FAILED);
+
+ assertStateException(stackId, version, RepositoryVersionState.CURRENT,
+ RepositoryVersionState.UPGRADE_FAILED);
+ assertStateException(stackId, version, RepositoryVersionState.INSTALLED,
+ RepositoryVersionState.UPGRADE_FAILED);
+ assertStateException(stackId, version,
+ RepositoryVersionState.INSTALL_FAILED,
+ RepositoryVersionState.UPGRADE_FAILED);
+ assertStateException(stackId, version, RepositoryVersionState.UPGRADED,
+ RepositoryVersionState.UPGRADE_FAILED);
+ assertStateException(stackId, version, RepositoryVersionState.OUT_OF_SYNC,
+ RepositoryVersionState.UPGRADE_FAILED);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.UPGRADING);
+ checkStackVersionState(stackId, version, RepositoryVersionState.UPGRADING);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.UPGRADED);
+ checkStackVersionState(stackId, version, RepositoryVersionState.UPGRADED);
+
+ assertStateException(stackId, version, RepositoryVersionState.INSTALLED,
+ RepositoryVersionState.UPGRADED);
+ assertStateException(stackId, version,
+ RepositoryVersionState.INSTALL_FAILED, RepositoryVersionState.UPGRADED);
+ assertStateException(stackId, version, RepositoryVersionState.UPGRADING,
+ RepositoryVersionState.UPGRADED);
+ assertStateException(stackId, version,
+ RepositoryVersionState.UPGRADE_FAILED, RepositoryVersionState.UPGRADED);
+ assertStateException(stackId, version, RepositoryVersionState.OUT_OF_SYNC,
+ RepositoryVersionState.UPGRADED);
+
+ c1.transitionClusterVersion(stackId, version,
+ RepositoryVersionState.CURRENT);
+ checkStackVersionState(stackId, version, RepositoryVersionState.CURRENT);
+
+ checkStackVersionState(new StackId("HDP", "0.1"), "0.1",
+ RepositoryVersionState.INSTALLED);
// The only CURRENT state should not be changed
- assertStateException(stack, version, RepositoryVersionState.INSTALLED, RepositoryVersionState.CURRENT);
+ assertStateException(stackId, version, RepositoryVersionState.INSTALLED,
+ RepositoryVersionState.CURRENT);
}
@Test
public void testTransitionClusterVersionTransactionFail() throws Exception {
createDefaultCluster();
- helper.getOrCreateRepositoryVersion("HDP", "0.2");
- c1.createClusterVersion("HDP", "0.2", "admin", RepositoryVersionState.INSTALLING);
- c1.transitionClusterVersion("HDP", "0.2", RepositoryVersionState.INSTALLED);
- c1.transitionClusterVersion("HDP", "0.2", RepositoryVersionState.UPGRADING);
- c1.transitionClusterVersion("HDP", "0.2", RepositoryVersionState.UPGRADED);
+ StackId stackId = new StackId("HDP", "0.2");
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c1.createClusterVersion(stackId, "0.2", "admin",
+ RepositoryVersionState.INSTALLING);
+ c1.transitionClusterVersion(stackId, "0.2",
+ RepositoryVersionState.INSTALLED);
+ c1.transitionClusterVersion(stackId, "0.2",
+ RepositoryVersionState.UPGRADING);
+ c1.transitionClusterVersion(stackId, "0.2", RepositoryVersionState.UPGRADED);
try {
ClusterVersionDAOMock.failOnCurrentVersionState = true;
- c1.transitionClusterVersion("HDP", "0.2", RepositoryVersionState.CURRENT);
+ c1.transitionClusterVersion(stackId, "0.2",
+ RepositoryVersionState.CURRENT);
Assert.fail();
} catch (AmbariException e) {
@@ -1236,12 +1305,17 @@ public class ClusterTest {
public void testInferHostVersions() throws Exception {
createDefaultCluster();
- helper.getOrCreateRepositoryVersion("HDP", "0.2");
- c1.createClusterVersion("HDP", "0.2", "admin", RepositoryVersionState.INSTALLING);
+ StackId stackId = new StackId("HDP", "0.2");
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c1.createClusterVersion(stackId, "0.2", "admin",
+ RepositoryVersionState.INSTALLING);
ClusterVersionEntity entityHDP2 = null;
for (ClusterVersionEntity entity : c1.getAllClusterVersions()) {
- if (entity.getRepositoryVersion().getStack().equals("HDP")
- && entity.getRepositoryVersion().getVersion().equals("0.2")) {
+ StackEntity repoVersionStackEntity = entity.getRepositoryVersion().getStack();
+ StackId repoVersionStackId = new StackId(repoVersionStackEntity);
+
+ if (repoVersionStackId.getStackName().equals("HDP")
+ && repoVersionStackId.getStackVersion().equals("0.2")) {
entityHDP2 = entity;
break;
}
@@ -1258,8 +1332,9 @@ public class ClusterTest {
boolean checked = false;
for (HostVersionEntity entity : hostVersionsH1After) {
- if (entity.getRepositoryVersion().getStack().equals("HDP")
- && entity.getRepositoryVersion().getVersion().equals("0.2")) {
+ StackEntity repoVersionStackEntity = entity.getRepositoryVersion().getStack();
+ if (repoVersionStackEntity.getStackName().equals("HDP")
+ && repoVersionStackEntity.getStackVersion().equals("0.2")) {
assertEquals(RepositoryVersionState.INSTALLING, entity.getState());
checked = true;
break;
@@ -1275,8 +1350,9 @@ public class ClusterTest {
checked = false;
for (HostVersionEntity entity : hostVersionsH1After) {
- if (entity.getRepositoryVersion().getStack().equals("HDP")
- && entity.getRepositoryVersion().getVersion().equals("0.2")) {
+ StackEntity repoVersionStackEntity = entity.getRepositoryVersion().getStack();
+ if (repoVersionStackEntity.getStackName().equals("HDP")
+ && repoVersionStackEntity.getStackVersion().equals("0.2")) {
assertEquals(RepositoryVersionState.INSTALLING, entity.getState());
checked = true;
break;
@@ -1298,10 +1374,12 @@ public class ClusterTest {
// Phase 1: Install bits during distribution
StackId stackId = new StackId("HDP-0.1");
final String stackVersion = "1.0-1000";
- RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(stackId.getStackId(),
+ RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(
+ stackId,
stackVersion);
// Because the cluster already has a Cluster Version, an additional stack must init with INSTALLING
- c1.createClusterVersion(stackId.getStackId(), stackVersion, "admin", RepositoryVersionState.INSTALLING);
+ c1.createClusterVersion(stackId, stackVersion, "admin",
+ RepositoryVersionState.INSTALLING);
c1.setCurrentStackVersion(stackId);
HostVersionEntity hv1 = helper.createHostVersion("h1", repositoryVersionEntity, RepositoryVersionState.INSTALLING);
@@ -1309,64 +1387,77 @@ public class ClusterTest {
c1.recalculateClusterVersionState(stackVersion);
//Should remain in its current state
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.INSTALLING);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.INSTALLING);
h2.setState(HostState.UNHEALTHY);
c1.recalculateClusterVersionState(stackVersion);
// In order for the states to be accurately reflected, the host health status should not impact the status
// of the host_version.
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.INSTALLING);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.INSTALLING);
// Retry by going back to INSTALLING
- c1.transitionClusterVersion(stackId.getStackId(), stackVersion, RepositoryVersionState.INSTALLING);
+ c1.transitionClusterVersion(stackId, stackVersion,
+ RepositoryVersionState.INSTALLING);
h2.setState(HostState.HEALTHY);
hv2.setState(RepositoryVersionState.INSTALLED);
hostVersionDAO.merge(hv2);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.INSTALLING);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.INSTALLING);
// Make one host fail
hv1.setState(RepositoryVersionState.INSTALL_FAILED);
hostVersionDAO.merge(hv1);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.INSTALL_FAILED);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.INSTALL_FAILED);
// Retry by going back to INSTALLING
- c1.transitionClusterVersion(stackId.getStackId(), stackVersion, RepositoryVersionState.INSTALLING);
+ c1.transitionClusterVersion(stackId, stackVersion,
+ RepositoryVersionState.INSTALLING);
// Now, all hosts are in INSTALLED
hv1.setState(RepositoryVersionState.INSTALLED);
hostVersionDAO.merge(hv1);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.INSTALLED);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.INSTALLED);
// Phase 2: Upgrade stack
hv1.setState(RepositoryVersionState.UPGRADING);
hostVersionDAO.merge(hv1);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.UPGRADING);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.UPGRADING);
hv2.setState(RepositoryVersionState.UPGRADING);
hostVersionDAO.merge(hv2);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.UPGRADING);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.UPGRADING);
hv2.setState(RepositoryVersionState.UPGRADE_FAILED);
hostVersionDAO.merge(hv2);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.UPGRADE_FAILED);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.UPGRADE_FAILED);
// Retry by going back to UPGRADING
- c1.transitionClusterVersion(stackId.getStackId(), stackVersion, RepositoryVersionState.UPGRADING);
+ c1.transitionClusterVersion(stackId, stackVersion,
+ RepositoryVersionState.UPGRADING);
hv2.setState(RepositoryVersionState.UPGRADED);
hostVersionDAO.merge(hv2);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.UPGRADING);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.UPGRADING);
// Now both hosts are UPGRADED
hv1.setState(RepositoryVersionState.UPGRADED);
hostVersionDAO.merge(hv1);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.UPGRADED);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.UPGRADED);
// Set both hosts to CURRENT
hv1.setState(RepositoryVersionState.CURRENT);
@@ -1374,7 +1465,8 @@ public class ClusterTest {
hv2.setState(RepositoryVersionState.CURRENT);
hostVersionDAO.merge(hv2);
c1.recalculateClusterVersionState(stackVersion);
- checkStackVersionState(stackId.getStackId(), stackVersion, RepositoryVersionState.CURRENT);
+ checkStackVersionState(stackId, stackVersion,
+ RepositoryVersionState.CURRENT);
}
@Test
@@ -1388,34 +1480,41 @@ public class ClusterTest {
h2.setState(HostState.HEALTHY);
StackId stackId = new StackId("HDP-0.1");
- RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(stackId.getStackId(),
+ RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(
+ stackId,
"1.0-1000");
- c1.createClusterVersion(stackId.getStackId(), "1.0-1000", "admin", RepositoryVersionState.INSTALLING);
+ c1.createClusterVersion(stackId, "1.0-1000", "admin",
+ RepositoryVersionState.INSTALLING);
c1.setCurrentStackVersion(stackId);
c1.recalculateAllClusterVersionStates();
- checkStackVersionState(stackId.getStackId(), "1.0-1000", RepositoryVersionState.INSTALLING);
- checkStackVersionState(stackId.getStackId(), "1.0-2086", RepositoryVersionState.CURRENT);
+ checkStackVersionState(stackId, "1.0-1000",
+ RepositoryVersionState.INSTALLING);
+ checkStackVersionState(stackId, "1.0-2086", RepositoryVersionState.CURRENT);
HostVersionEntity hv1 = helper.createHostVersion("h1", repositoryVersionEntity, RepositoryVersionState.INSTALLING);
HostVersionEntity hv2 = helper.createHostVersion("h2", repositoryVersionEntity, RepositoryVersionState.INSTALLING);
c1.recalculateAllClusterVersionStates();
- checkStackVersionState(stackId.getStackId(), "1.0-1000", RepositoryVersionState.INSTALLING);
- checkStackVersionState(stackId.getStackId(), "1.0-2086", RepositoryVersionState.CURRENT);
+ checkStackVersionState(stackId, "1.0-1000",
+ RepositoryVersionState.INSTALLING);
+ checkStackVersionState(stackId, "1.0-2086", RepositoryVersionState.CURRENT);
hv1.setState(RepositoryVersionState.INSTALL_FAILED);
hostVersionDAO.merge(hv1);
c1.recalculateAllClusterVersionStates();
- checkStackVersionState(stackId.getStackId(), "1.0-1000", RepositoryVersionState.INSTALL_FAILED);
- checkStackVersionState(stackId.getStackId(), "1.0-2086", RepositoryVersionState.CURRENT);
+ checkStackVersionState(stackId, "1.0-1000",
+ RepositoryVersionState.INSTALL_FAILED);
+ checkStackVersionState(stackId, "1.0-2086", RepositoryVersionState.CURRENT);
// Retry by going back to INSTALLING
- c1.transitionClusterVersion(stackId.getStackId(), "1.0-1000", RepositoryVersionState.INSTALLING);
+ c1.transitionClusterVersion(stackId, "1.0-1000",
+ RepositoryVersionState.INSTALLING);
hv1.setState(RepositoryVersionState.CURRENT);
hostVersionDAO.merge(hv1);
c1.recalculateAllClusterVersionStates();
- checkStackVersionState(stackId.getStackId(), "1.0-1000", RepositoryVersionState.OUT_OF_SYNC);
- checkStackVersionState(stackId.getStackId(), "1.0-2086", RepositoryVersionState.CURRENT);
+ checkStackVersionState(stackId, "1.0-1000",
+ RepositoryVersionState.OUT_OF_SYNC);
+ checkStackVersionState(stackId, "1.0-2086", RepositoryVersionState.CURRENT);
}
/**
@@ -1470,7 +1569,7 @@ public class ClusterTest {
if (versionedComponentCount > 0) {
// On the first component with a version, a RepoVersion should have been created
- RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion(stackId.getStackId(), v1);
+ RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion(stackId, v1);
Assert.assertNotNull(repositoryVersion);
Assert.assertTrue(clusterVersions != null && clusterVersions.size() == 1);
@@ -1512,23 +1611,26 @@ public class ClusterTest {
Collection<HostVersionEntity> hostVersions = hostVersionDAO.findAll();
Assert.assertEquals(hostVersions.size(), clusters.getHosts().size());
- HostVersionEntity h4Version1 = hostVersionDAO.findByClusterStackVersionAndHost(clusterName, stackId.getStackId(), v1, "h-4");
+ HostVersionEntity h4Version1 = hostVersionDAO.findByClusterStackVersionAndHost(clusterName, stackId, v1, "h-4");
Assert.assertNotNull(h4Version1);
Assert.assertEquals(h4Version1.getState(), RepositoryVersionState.CURRENT);
// Distribute bits for a new repo
String v2 = "2.2.0-456";
- RepositoryVersionEntity rv2 = helper.getOrCreateRepositoryVersion(stackId.getStackId(), v2);
+ RepositoryVersionEntity rv2 = helper.getOrCreateRepositoryVersion(stackId,
+ v2);
for(String hostName : clusters.getHostsForCluster(clusterName).keySet()) {
HostEntity host = hostDAO.findByName(hostName);
HostVersionEntity hve = new HostVersionEntity(hostName, rv2, RepositoryVersionState.INSTALLED);
hve.setHostEntity(host);
hostVersionDAO.create(hve);
}
- cluster.createClusterVersion(stackId.getStackId(), v2, "admin", RepositoryVersionState.INSTALLING);
- cluster.transitionClusterVersion(stackId.getStackId(), v2, RepositoryVersionState.INSTALLED);
+ cluster.createClusterVersion(stackId, v2, "admin",
+ RepositoryVersionState.INSTALLING);
+ cluster.transitionClusterVersion(stackId, v2,
+ RepositoryVersionState.INSTALLED);
- ClusterVersionEntity cv2 = clusterVersionDAO.findByClusterAndStackAndVersion(clusterName, stackId.getStackId(), v2);
+ ClusterVersionEntity cv2 = clusterVersionDAO.findByClusterAndStackAndVersion(clusterName, stackId, v2);
Assert.assertNotNull(cv2);
Assert.assertEquals(cv2.getState(), RepositoryVersionState.INSTALLED);
@@ -1540,7 +1642,7 @@ public class ClusterTest {
schHost5Serv3CompB.persist();
// Host 5 will be in OUT_OF_SYNC, so redistribute bits to it so that it reaches a state of INSTALLED
- HostVersionEntity h5Version2 = hostVersionDAO.findByClusterStackVersionAndHost(clusterName, stackId.getStackId(), v2, "h-5");
+ HostVersionEntity h5Version2 = hostVersionDAO.findByClusterStackVersionAndHost(clusterName, stackId, v2, "h-5");
Assert.assertNotNull(h5Version2);
Assert.assertEquals(h5Version2.getState(), RepositoryVersionState.OUT_OF_SYNC);
@@ -1578,13 +1680,13 @@ public class ClusterTest {
if (versionedComponentCount > 0) {
// On the first component with a version, a RepoVersion should have been created
- RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion(stackId.getStackId(), v2);
+ RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion(stackId, v2);
Assert.assertNotNull(repositoryVersion);
Assert.assertTrue(clusterVersions != null && clusterVersions.size() == 2);
// First component to report a version should cause the ClusterVersion to go to UPGRADING
if (versionedComponentCount == 1 && i < (hostComponentStates.size() - 1)) {
- cv2 = clusterVersionDAO.findByClusterAndStackAndVersion(clusterName, stackId.getStackId(), v2);
+ cv2 = clusterVersionDAO.findByClusterAndStackAndVersion(clusterName, stackId, v2);
Assert.assertEquals(cv2.getState(), RepositoryVersionState.UPGRADING);
}
}
@@ -1592,10 +1694,10 @@ public class ClusterTest {
// Last component to report a version should still keep the ClusterVersion in UPGRADING because
// hosts 3 and 5 only have Ganglia and the HostVersion will remain in INSTALLED
- cv2 = clusterVersionDAO.findByClusterAndStackAndVersion(clusterName, stackId.getStackId(), v2);
+ cv2 = clusterVersionDAO.findByClusterAndStackAndVersion(clusterName, stackId, v2);
Assert.assertEquals(cv2.getState(), RepositoryVersionState.UPGRADING);
- Collection<HostVersionEntity> v2HostVersions = hostVersionDAO.findByClusterStackAndVersion(clusterName, stackId.getStackId(), v2);
+ Collection<HostVersionEntity> v2HostVersions = hostVersionDAO.findByClusterStackAndVersion(clusterName, stackId, v2);
Assert.assertEquals(v2HostVersions.size(), clusters.getHostsForCluster(clusterName).size());
for (HostVersionEntity hve : v2HostVersions) {
if (hve.getHostName().equals("h-3") || hve.getHostName().equals("h-5")) {
@@ -1608,8 +1710,10 @@ public class ClusterTest {
@Test
public void testTransitionNonReportableHost() throws Exception {
+ StackId stackId = new StackId("HDP-2.0.5");
+
String clusterName = "c1";
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
Cluster c1 = clusters.getCluster(clusterName);
Assert.assertEquals(clusterName, c1.getClusterName());
Assert.assertEquals(1, c1.getClusterId());
@@ -1632,14 +1736,16 @@ public class ClusterTest {
String v1 = "2.0.5-1";
String v2 = "2.0.5-2";
- StackId stackId = new StackId("HDP-2.0.5");
c1.setDesiredStackVersion(stackId);
- RepositoryVersionEntity rve1 = helper.getOrCreateRepositoryVersion(stackId.getStackName(), v1);
- RepositoryVersionEntity rve2 = helper.getOrCreateRepositoryVersion(stackId.getStackName(), v2);
+ RepositoryVersionEntity rve1 = helper.getOrCreateRepositoryVersion(stackId,
+ v1);
+ RepositoryVersionEntity rve2 = helper.getOrCreateRepositoryVersion(stackId,
+ v2);
c1.setCurrentStackVersion(stackId);
- c1.createClusterVersion(stackId.getStackName(), v1, "admin", RepositoryVersionState.UPGRADING);
- c1.transitionClusterVersion(stackId.getStackName(), v1, RepositoryVersionState.CURRENT);
+ c1.createClusterVersion(stackId, v1, "admin",
+ RepositoryVersionState.UPGRADING);
+ c1.transitionClusterVersion(stackId, v1, RepositoryVersionState.CURRENT);
clusters.mapHostToCluster("h-1", clusterName);
clusters.mapHostToCluster("h-2", clusterName);
@@ -1658,12 +1764,13 @@ public class ClusterTest {
List<HostVersionEntity> entities = hostVersionDAO.findByClusterAndHost(clusterName, "h-3");
assertTrue("Expected no host versions", null == entities || 0 == entities.size());
- c1.createClusterVersion(stackId.getStackName(), v2, "admin", RepositoryVersionState.INSTALLING);
- c1.transitionClusterVersion(stackId.getStackName(), v2, RepositoryVersionState.INSTALLED);
- c1.transitionClusterVersion(stackId.getStackName(), v2, RepositoryVersionState.UPGRADING);
- c1.transitionClusterVersion(stackId.getStackName(), v2, RepositoryVersionState.UPGRADED);
+ c1.createClusterVersion(stackId, v2, "admin",
+ RepositoryVersionState.INSTALLING);
+ c1.transitionClusterVersion(stackId, v2, RepositoryVersionState.INSTALLED);
+ c1.transitionClusterVersion(stackId, v2, RepositoryVersionState.UPGRADING);
+ c1.transitionClusterVersion(stackId, v2, RepositoryVersionState.UPGRADED);
- c1.transitionClusterVersion(stackId.getStackName(), v2, RepositoryVersionState.CURRENT);
+ c1.transitionClusterVersion(stackId, v2, RepositoryVersionState.CURRENT);
entities = hostVersionDAO.findByClusterAndHost(clusterName, "h-3");
@@ -1677,8 +1784,9 @@ public class ClusterTest {
* and we add a new host to cluster. On a new host, both CURRENT and OUT_OF_SYNC host
* versions should be present
*/
+ StackId stackId = new StackId("HDP-2.0.5");
String clusterName = "c1";
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
final Cluster c1 = clusters.getCluster(clusterName);
Assert.assertEquals(clusterName, c1.getClusterName());
Assert.assertEquals(1, c1.getClusterId());
@@ -1702,15 +1810,16 @@ public class ClusterTest {
String v1 = "2.0.5-1";
String v2 = "2.0.5-2";
- StackId stackId = new StackId("HDP-2.0.5");
c1.setDesiredStackVersion(stackId);
- RepositoryVersionEntity rve1 = helper.getOrCreateRepositoryVersion(stackId.getStackId()
- , v1);
- RepositoryVersionEntity rve2 = helper.getOrCreateRepositoryVersion(stackId.getStackId(), v2);
+ RepositoryVersionEntity rve1 = helper.getOrCreateRepositoryVersion(stackId,
+ v1);
+ RepositoryVersionEntity rve2 = helper.getOrCreateRepositoryVersion(stackId,
+ v2);
c1.setCurrentStackVersion(stackId);
- c1.createClusterVersion(stackId.getStackId(), v1, "admin", RepositoryVersionState.UPGRADING);
- c1.transitionClusterVersion(stackId.getStackId(), v1, RepositoryVersionState.CURRENT);
+ c1.createClusterVersion(stackId, v1, "admin",
+ RepositoryVersionState.UPGRADING);
+ c1.transitionClusterVersion(stackId, v1, RepositoryVersionState.CURRENT);
clusters.mapHostToCluster("h-1", clusterName);
clusters.mapHostToCluster("h-2", clusterName);
@@ -1722,9 +1831,10 @@ public class ClusterTest {
sc.addServiceComponentHost("h-1");
sc.addServiceComponentHost("h-2");
- c1.createClusterVersion(stackId.getStackId(), v2, "admin", RepositoryVersionState.INSTALLING);
- c1.transitionClusterVersion(stackId.getStackId(), v2, RepositoryVersionState.INSTALLED);
- c1.transitionClusterVersion(stackId.getStackId(), v2, RepositoryVersionState.OUT_OF_SYNC);
+ c1.createClusterVersion(stackId, v2, "admin",
+ RepositoryVersionState.INSTALLING);
+ c1.transitionClusterVersion(stackId, v2, RepositoryVersionState.INSTALLED);
+ c1.transitionClusterVersion(stackId, v2, RepositoryVersionState.OUT_OF_SYNC);
clusters.mapHostToCluster(h3, clusterName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersDeadlockTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersDeadlockTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersDeadlockTest.java
index d771eba..7cb7679 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersDeadlockTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersDeadlockTest.java
@@ -29,6 +29,7 @@ import junit.framework.Assert;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.ServiceComponentNotFoundException;
import org.apache.ambari.server.ServiceNotFoundException;
+import org.apache.ambari.server.events.listeners.upgrade.HostVersionOutOfSyncListener;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
@@ -44,14 +45,18 @@ import org.apache.ambari.server.state.ServiceComponentHostFactory;
import org.apache.ambari.server.state.ServiceFactory;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
+import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
+import com.google.inject.Module;
import com.google.inject.persist.PersistService;
+import com.google.inject.util.Modules;
/**
* Tests AMBARI-9738 which produced a deadlock during read and writes between
@@ -88,16 +93,19 @@ public class ClustersDeadlockTest {
@Before
public void setup() throws Exception {
- injector = Guice.createInjector(new InMemoryDefaultTestModule());
+ injector = Guice.createInjector(Modules.override(
+ new InMemoryDefaultTestModule()).with(new MockModule()));
+
injector.getInstance(GuiceJpaInitializer.class);
injector.injectMembers(this);
- clusters.addCluster(CLUSTER_NAME);
StackId stackId = new StackId("HDP-0.1");
+ clusters.addCluster(CLUSTER_NAME, stackId);
+
cluster = clusters.getCluster(CLUSTER_NAME);
- 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);
// install HDFS
installService("HDFS");
@@ -114,7 +122,7 @@ public class ClustersDeadlockTest {
*
* @throws Exception
*/
- @Test(timeout = 35000)
+ @Test(timeout = 40000)
public void testDeadlockWhileMappingHosts() throws Exception {
List<Thread> threads = new ArrayList<Thread>();
for (int i = 0; i < NUMBER_OF_THREADS; i++) {
@@ -143,7 +151,7 @@ public class ClustersDeadlockTest {
*
* @throws Exception
*/
- @Test(timeout = 35000)
+ @Test(timeout = 40000)
public void testDeadlockWhileMappingHostsWithExistingServices()
throws Exception {
List<Thread> threads = new ArrayList<Thread>();
@@ -169,7 +177,7 @@ public class ClustersDeadlockTest {
*
* @throws Exception
*/
- @Test(timeout = 35000)
+ @Test(timeout = 40000)
public void testDeadlockWhileUnmappingHosts() throws Exception {
List<Thread> threads = new ArrayList<Thread>();
for (int i = 0; i < NUMBER_OF_THREADS; i++) {
@@ -363,4 +371,20 @@ public class ClustersDeadlockTest {
sch.persist();
return sch;
}
+
+ /**
+ *
+ */
+ private class MockModule implements Module {
+ /**
+ *
+ */
+ @Override
+ public void configure(Binder binder) {
+ // this listener gets in the way of actually testing the concurrency
+ // between the threads; it slows them down too much, so mock it out
+ binder.bind(HostVersionOutOfSyncListener.class).toInstance(
+ EasyMock.createNiceMock(HostVersionOutOfSyncListener.class));
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/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 20eafe0..ce1fd34 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
@@ -116,12 +116,14 @@ public class ClustersTest {
@Test
public void testAddAndGetCluster() throws AmbariException {
+ StackId stackId = new StackId("HDP-2.1.1");
+
String c1 = "foo";
String c2 = "foo";
- clusters.addCluster(c1);
+ clusters.addCluster(c1, stackId);
try {
- clusters.addCluster(c1);
+ clusters.addCluster(c1, stackId);
fail("Exception should be thrown on invalid add");
}
catch (AmbariException e) {
@@ -129,7 +131,7 @@ public class ClustersTest {
}
try {
- clusters.addCluster(c2);
+ clusters.addCluster(c2, stackId);
fail("Exception should be thrown on invalid add");
}
catch (AmbariException e) {
@@ -137,7 +139,7 @@ public class ClustersTest {
}
c2 = "foo2";
- clusters.addCluster(c2);
+ clusters.addCluster(c2, stackId);
Assert.assertNotNull(clusters.getCluster(c1));
Assert.assertNotNull(clusters.getCluster(c2));
@@ -218,21 +220,27 @@ public class ClustersTest {
// Expected
}
- clusters.addCluster(c1);
- clusters.addCluster(c2);
+ StackId stackId = new StackId("HDP-0.1");
+
+ clusters.addCluster(c1, stackId);
+ clusters.addCluster(c2, stackId);
Cluster cluster1 = clusters.getCluster(c1);
Cluster cluster2 = clusters.getCluster(c2);
Assert.assertNotNull(clusters.getCluster(c1));
Assert.assertNotNull(clusters.getCluster(c2));
- StackId stackId = new StackId("HDP-0.1");
+
cluster1.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- cluster1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
- cluster1.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ cluster1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+ cluster1.transitionClusterVersion(stackId, stackId.getStackVersion(),
+ RepositoryVersionState.CURRENT);
cluster2.setDesiredStackVersion(stackId);
- cluster2.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
- cluster2.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+ cluster2.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+ cluster2.transitionClusterVersion(stackId, stackId.getStackVersion(),
+ RepositoryVersionState.CURRENT);
try {
clusters.mapHostToCluster(h1, c1);
@@ -307,20 +315,26 @@ public class ClustersTest {
String h1 = "h1";
String h2 = "h2";
String h3 = "h3";
- clusters.addCluster(c1);
- clusters.addCluster(c2);
+
+ StackId stackId = new StackId("HDP-0.1");
+
+ clusters.addCluster(c1, stackId);
+ clusters.addCluster(c2, stackId);
Cluster cluster1 = clusters.getCluster(c1);
Cluster cluster2 = clusters.getCluster(c2);
Assert.assertNotNull(clusters.getCluster(c1));
Assert.assertNotNull(clusters.getCluster(c2));
- StackId stackId = new StackId("HDP-0.1");
- cluster1.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- cluster1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
- cluster1.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ cluster1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+ cluster1.transitionClusterVersion(stackId, stackId.getStackVersion(),
+ RepositoryVersionState.CURRENT);
cluster2.setDesiredStackVersion(stackId);
- cluster2.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
- cluster2.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+ cluster2.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+ cluster2.transitionClusterVersion(stackId, stackId.getStackVersion(),
+ RepositoryVersionState.CURRENT);
clusters.addHost(h1);
clusters.addHost(h2);
clusters.addHost(h3);
@@ -344,15 +358,18 @@ public class ClustersTest {
final String h1 = "h1";
final String h2 = "h2";
- clusters.addCluster(c1);
+ StackId stackId = new StackId("HDP-0.1");
+ clusters.addCluster(c1, stackId);
Cluster cluster = clusters.getCluster(c1);
- StackId stackId = new StackId("HDP-0.1");
+
cluster.setDesiredStackVersion(stackId);
cluster.setCurrentStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- cluster.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
- cluster.transitionClusterVersion(stackId.getStackName(), stackId.getStackVersion(), RepositoryVersionState.CURRENT);
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+ cluster.transitionClusterVersion(stackId, stackId.getStackVersion(),
+ RepositoryVersionState.CURRENT);
final Config config1 = injector.getInstance(ConfigFactory.class).createNew(cluster, "t1",
new HashMap<String, String>() {{
@@ -479,14 +496,18 @@ public class ClustersTest {
Assert.assertTrue(e.getMessage().contains("Cluster not found"));
}
- clusters.addCluster(c1);
+ clusters.addCluster(c1, stackId);
clusters.setCurrentStackVersion(c1, stackId);
Assert.assertNotNull(clusters.getCluster(c1));
ClusterStateEntity entity = injector.getInstance(ClusterStateDAO.class).findByPK(clusters.getCluster(c1).getClusterId());
Assert.assertNotNull(entity);
- Assert.assertTrue(entity.getCurrentStackVersion().contains(stackId.getStackName()) &&
- entity.getCurrentStackVersion().contains(stackId.getStackVersion()));
+
+ Assert.assertTrue(entity.getCurrentStack().getStackName().equals(
+ stackId.getStackName())
+ && entity.getCurrentStack().getStackVersion().equals(
+ stackId.getStackVersion()));
+
Assert.assertTrue(clusters.getCluster(c1).getCurrentStackVersion().getStackName().equals(stackId.getStackName()));
Assert.assertTrue(
clusters.getCluster(c1).getCurrentStackVersion().getStackVersion().equals(stackId.getStackVersion()));
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java
index 27b2a0e..4248d13 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/host/HostTest.java
@@ -359,11 +359,13 @@ public class HostTest {
public void testHostDesiredConfig() throws Exception {
AmbariMetaInfo metaInfo = injector.getInstance(AmbariMetaInfo.class);
- clusters.addCluster("c1");
- Cluster c1 = clusters.getCluster("c1");
StackId stackId = new StackId("HDP-0.1");
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ clusters.addCluster("c1", stackId);
+ Cluster c1 = clusters.getCluster("c1");
+
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
Assert.assertEquals("c1", c1.getClusterName());
Assert.assertEquals(1, c1.getClusterId());
clusters.addHost("h1");
@@ -420,7 +422,8 @@ public class HostTest {
public void testHostMaintenance() throws Exception {
AmbariMetaInfo metaInfo = injector.getInstance(AmbariMetaInfo.class);
- clusters.addCluster("c1");
+ StackId stackId = new StackId("HDP-0.1");
+ clusters.addCluster("c1", stackId);
Cluster c1 = clusters.getCluster("c1");
Assert.assertEquals("c1", c1.getClusterName());
Assert.assertEquals(1, c1.getClusterId());
@@ -435,9 +438,10 @@ public class HostTest {
host.setHostAttributes(hostAttributes);
host.persist();
- StackId stackId = new StackId("HDP-0.1");
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
c1.setDesiredStackVersion(stackId);
clusters.mapHostToCluster("h1", "c1");
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java
index 137575e..fde1945 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java
@@ -109,15 +109,16 @@ public class ServiceComponentHostTest {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
injector.injectMembers(this);
- clusters.addCluster("C1");
+ StackId stackId = new StackId("HDP-0.1");
+ clusters.addCluster("C1", stackId);
clusters.addHost("h1");
setOsFamily(clusters.getHost("h1"), "redhat", "5.9");
clusters.getHost("h1").persist();
- StackId stackId = new StackId("HDP-0.1");
+
Cluster c1 = clusters.getCluster("C1");
- c1.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c1.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
clusters.mapHostToCluster("h1","C1");
}
@@ -190,7 +191,7 @@ public class ServiceComponentHostTest {
Assert.assertFalse(
impl.getDesiredStackVersion().getStackId().isEmpty());
- Assert.assertTrue(impl.getStackVersion().getStackId().isEmpty());
+ Assert.assertFalse(impl.getStackVersion().getStackId().isEmpty());
return impl;
}
@@ -263,7 +264,6 @@ public class ServiceComponentHostTest {
boolean checkStack = false;
if (startEventType == ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL) {
checkStack = true;
- impl.setStackVersion(null);
}
Assert.assertEquals(startState,
@@ -515,14 +515,14 @@ public class ServiceComponentHostTest {
createNewServiceComponentHost("HDFS", "NAMENODE", "h1", false);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLING);
- sch.setStackVersion(new StackId("HDP-1.0.0"));
- sch.setDesiredStackVersion(new StackId("HDP-1.1.0"));
+ sch.setStackVersion(new StackId("HDP-1.2.0"));
+ sch.setDesiredStackVersion(new StackId("HDP-1.2.0"));
Assert.assertEquals(State.INSTALLING, sch.getState());
Assert.assertEquals(State.INSTALLED, sch.getDesiredState());
- Assert.assertEquals("HDP-1.0.0",
+ Assert.assertEquals("HDP-1.2.0",
sch.getStackVersion().getStackId());
- Assert.assertEquals("HDP-1.1.0",
+ Assert.assertEquals("HDP-1.2.0",
sch.getDesiredStackVersion().getStackId());
}
@@ -532,8 +532,8 @@ public class ServiceComponentHostTest {
createNewServiceComponentHost("HDFS", "NAMENODE", "h1", false);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLING);
- sch.setStackVersion(new StackId("HDP-1.0.0"));
- sch.setDesiredStackVersion(new StackId("HDP-1.1.0"));
+ sch.setStackVersion(new StackId("HDP-1.2.0"));
+ sch.setDesiredStackVersion(new StackId("HDP-1.2.0"));
Cluster cluster = clusters.getCluster("C1");
@@ -567,7 +567,7 @@ public class ServiceComponentHostTest {
createNewServiceComponentHost("HDFS", "DATANODE", "h1", false);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLING);
- sch.setStackVersion(new StackId("HDP-1.0.0"));
+ sch.setStackVersion(new StackId("HDP-1.2.0"));
ServiceComponentHostResponse r =
sch.convertToResponse();
Assert.assertEquals("HDFS", r.getServiceName());
@@ -576,7 +576,7 @@ public class ServiceComponentHostTest {
Assert.assertEquals("C1", r.getClusterName());
Assert.assertEquals(State.INSTALLED.toString(), r.getDesiredState());
Assert.assertEquals(State.INSTALLING.toString(), r.getLiveState());
- Assert.assertEquals("HDP-1.0.0", r.getStackVersion());
+ Assert.assertEquals("HDP-1.2.0", r.getStackVersion());
Assert.assertFalse(r.isStaleConfig());
@@ -715,16 +715,17 @@ public class ServiceComponentHostTest {
String stackVersion="HDP-2.0.6";
String clusterName = "c2";
String hostName = "h3";
+ StackId stackId = new StackId(stackVersion);
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
clusters.addHost(hostName);
setOsFamily(clusters.getHost(hostName), "redhat", "5.9");
clusters.getHost(hostName).persist();
Cluster c2 = clusters.getCluster(clusterName);
- StackId stackId = new StackId(stackVersion);
- c2.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c2.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c2.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
clusters.mapHostToCluster(hostName, clusterName);
Cluster cluster = clusters.getCluster(clusterName);
@@ -942,15 +943,17 @@ public class ServiceComponentHostTest {
String clusterName = "c2";
String hostName = "h3";
- clusters.addCluster(clusterName);
+ StackId stackId = new StackId(stackVersion);
+
+ clusters.addCluster(clusterName, stackId);
clusters.addHost(hostName);
setOsFamily(clusters.getHost(hostName), "redhat", "5.9");
clusters.getHost(hostName).persist();
Cluster c2 = clusters.getCluster(clusterName);
- StackId stackId = new StackId(stackVersion);
- c2.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c2.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c2.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
clusters.mapHostToCluster(hostName, clusterName);
@@ -1076,15 +1079,17 @@ public class ServiceComponentHostTest {
String clusterName = "c2";
String hostName = "h3";
- clusters.addCluster(clusterName);
+ StackId stackId = new StackId(stackVersion);
+
+ clusters.addCluster(clusterName, stackId);
clusters.addHost(hostName);
setOsFamily(clusters.getHost(hostName), "redhat", "5.9");
clusters.getHost(hostName).persist();
Cluster c2 = clusters.getCluster(clusterName);
- StackId stackId = new StackId(stackVersion);
- c2.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c2.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c2.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
clusters.mapHostToCluster(hostName, clusterName);
HostEntity hostEntity = hostDAO.findByName(hostName);
Assert.assertNotNull(hostEntity);
@@ -1119,8 +1124,9 @@ public class ServiceComponentHostTest {
String stackVersion="HDP-2.0.6";
String clusterName = "c2";
String hostName = "h3";
+ StackId stackId = new StackId(stackVersion);
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
clusters.addHost(hostName);
setOsFamily(clusters.getHost(hostName), "redhat", "5.9");
clusters.getHost(hostName).persist();
@@ -1128,10 +1134,11 @@ public class ServiceComponentHostTest {
Assert.assertNotNull(hostEntity);
Cluster c2 = clusters.getCluster(clusterName);
- StackId stackId = new StackId(stackVersion);
+
c2.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- c2.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ c2.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
clusters.mapHostToCluster(hostName, clusterName);
Cluster cluster = clusters.getCluster(clusterName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java
index 37328e8..39dd815 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog150Test.java
@@ -22,11 +22,13 @@ import javax.persistence.EntityManager;
import junit.framework.Assert;
import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.KeyValueDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
import org.apache.ambari.server.orm.entities.ClusterConfigMappingEntity;
import org.apache.ambari.server.orm.entities.ClusterEntity;
@@ -35,7 +37,9 @@ import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.orm.entities.KeyValueEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.HostComponentAdminState;
+import org.apache.ambari.server.state.StackId;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -48,15 +52,28 @@ public class UpgradeCatalog150Test {
private Injector injector;
private final String CLUSTER_NAME = "c1";
private final String HOST_NAME = "h1";
- private final String DESIRED_STACK_VERSION = "{\"stackName\":\"HDP\",\"stackVersion\":\"1.3.4\"}";
+
+ public static final StackId DESIRED_STACK = new StackId("HDP", "1.3.4");
private UpgradeCatalogHelper upgradeCatalogHelper;
+ private StackEntity desiredStackEntity;
@Before
public void setup() throws Exception {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
upgradeCatalogHelper = injector.getInstance(UpgradeCatalogHelper.class);
+
+ // inject AmbariMetaInfo to ensure that stacks get populated in the DB
+ injector.getInstance(AmbariMetaInfo.class);
+
+ // load the stack entity
+ StackDAO stackDAO = injector.getInstance(StackDAO.class);
+
+ desiredStackEntity = stackDAO.find(DESIRED_STACK.getStackName(),
+ DESIRED_STACK.getStackVersion());
+
+ Assert.assertNotNull(desiredStackEntity);
}
@After
@@ -87,9 +104,9 @@ public class UpgradeCatalog150Test {
@Test
public void testAddHistoryServer() throws AmbariException {
final ClusterEntity clusterEntity = upgradeCatalogHelper.createCluster(
- injector, CLUSTER_NAME, DESIRED_STACK_VERSION);
+ injector, CLUSTER_NAME, desiredStackEntity);
final ClusterServiceEntity clusterServiceEntityMR = upgradeCatalogHelper.addService(
- injector, clusterEntity, "MAPREDUCE", DESIRED_STACK_VERSION);
+ injector, clusterEntity, "MAPREDUCE", desiredStackEntity);
final HostEntity hostEntity = upgradeCatalogHelper.createHost(injector,
clusterEntity, HOST_NAME);
@@ -98,7 +115,7 @@ public class UpgradeCatalog150Test {
public void run() {
upgradeCatalogHelper.addComponent(injector, clusterEntity,
clusterServiceEntityMR, hostEntity, "JOBTRACKER",
- DESIRED_STACK_VERSION);
+ desiredStackEntity);
}
});
@@ -109,7 +126,7 @@ public class UpgradeCatalog150Test {
@Test
public void testProcessDecommissionedDatanodes() throws Exception {
ClusterEntity clusterEntity = upgradeCatalogHelper.createCluster(injector,
- CLUSTER_NAME, DESIRED_STACK_VERSION);
+ CLUSTER_NAME, desiredStackEntity);
ClusterServiceEntity clusterServiceEntity = upgradeCatalogHelper.createService(
injector, clusterEntity, "HDFS");
HostEntity hostEntity = upgradeCatalogHelper.createHost(injector,
@@ -121,6 +138,7 @@ public class UpgradeCatalog150Test {
componentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
componentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
componentDesiredStateEntity.setComponentName("DATANODE");
+ componentDesiredStateEntity.setDesiredStack(desiredStackEntity);
//componentDesiredStateDAO.create(componentDesiredStateEntity);
@@ -136,6 +154,7 @@ public class UpgradeCatalog150Test {
hostComponentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
hostComponentDesiredStateEntity.setServiceComponentDesiredStateEntity(componentDesiredStateEntity);
hostComponentDesiredStateEntity.setHostEntity(hostEntity);
+ hostComponentDesiredStateEntity.setDesiredStack(desiredStackEntity);
hostComponentDesiredStateDAO.create(hostComponentDesiredStateEntity);
@@ -157,6 +176,9 @@ public class UpgradeCatalog150Test {
configEntity.setTag("1394147791230");
configEntity.setData("{\"datanodes\":\"" + HOST_NAME + "\"}");
configEntity.setTimestamp(System.currentTimeMillis());
+ configEntity.setStack(desiredStackEntity);
+ configEntity.setStack(clusterEntity.getDesiredStack());
+
clusterDAO.createConfig(configEntity);
UpgradeCatalog150 upgradeCatalog150 = injector.getInstance(UpgradeCatalog150.class);
@@ -179,10 +201,10 @@ public class UpgradeCatalog150Test {
ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
ClusterEntity clusterEntity = upgradeCatalogHelper.createCluster(injector,
- CLUSTER_NAME, DESIRED_STACK_VERSION);
+ CLUSTER_NAME, desiredStackEntity);
ClusterServiceEntity clusterServiceEntityMR = upgradeCatalogHelper.addService(
- injector, clusterEntity, "HDFS", DESIRED_STACK_VERSION);
+ injector, clusterEntity, "HDFS", desiredStackEntity);
Long clusterId = clusterEntity.getClusterId();
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
index 2bf6d96..377c0f7 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
@@ -69,6 +69,7 @@ import javax.persistence.criteria.Root;
import javax.persistence.metamodel.SingularAttribute;
import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.orm.DBAccessor;
@@ -86,6 +87,7 @@ import org.apache.ambari.server.orm.dao.PrivilegeDAO;
import org.apache.ambari.server.orm.dao.ResourceDAO;
import org.apache.ambari.server.orm.dao.ResourceTypeDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.dao.UserDAO;
import org.apache.ambari.server.orm.dao.ViewDAO;
import org.apache.ambari.server.orm.dao.ViewInstanceDAO;
@@ -108,6 +110,7 @@ import org.apache.ambari.server.orm.entities.PrivilegeEntity;
import org.apache.ambari.server.orm.entities.ResourceEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntityPK;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.orm.entities.UserEntity;
import org.apache.ambari.server.orm.entities.ViewEntity;
import org.apache.ambari.server.orm.entities.ViewInstanceEntity;
@@ -141,7 +144,8 @@ public class UpgradeCatalog170Test {
private final String CLUSTER_NAME = "c1";
private final String SERVICE_NAME = "HDFS";
private final String HOST_NAME = "h1";
- private final String DESIRED_STACK_VERSION = "{\"stackName\":\"HDP\",\"stackVersion\":\"2.0.6\"}";
+
+ public static final StackId DESIRED_STACK = new StackId("HDP", "2.0.6");
Provider<EntityManager> entityManagerProvider = createStrictMock(Provider.class);
EntityManager entityManager = createNiceMock(EntityManager.class);
@@ -480,10 +484,17 @@ public class UpgradeCatalog170Test {
ClusterConfigMappingEntity configMappingEntity = createNiceMock(ClusterConfigMappingEntity.class);
ClusterStateEntity clusterStateEntity = createNiceMock(ClusterStateEntity.class);
+ StackEntity stackEntity = createNiceMock(StackEntity.class);
+ expect(stackEntity.getStackName()).andReturn(
+ CLUSTER_STATE_STACK_HDP_2_1.getStackName());
+
+ expect(stackEntity.getStackVersion()).andReturn(
+ CLUSTER_STATE_STACK_HDP_2_1.getStackVersion());
+
expect(clusterEntity.getClusterId()).andReturn(1L).anyTimes();
expect(clusterEntity.getConfigMappingEntities()).andReturn(Collections.singleton(configMappingEntity)).times(2);
expect(clusterEntity.getClusterStateEntity()).andReturn(clusterStateEntity).anyTimes();
- expect(clusterStateEntity.getCurrentStackVersion()).andReturn(CLUSTER_STATE_STACK_HDP_2_1);
+ expect(clusterStateEntity.getCurrentStack()).andReturn(stackEntity);
expect(configMappingEntity.getType()).andReturn(YARN_SITE).anyTimes();
expect(configMappingEntity.isSelected()).andReturn(1).anyTimes();
expect(configMappingEntity.getTag()).andReturn("version1");
@@ -518,7 +529,7 @@ public class UpgradeCatalog170Test {
replay(jobsView, showJobsKeyValue, user);
replay(userEntity1, userEntity2, userPrincipal1, userPrincipal2, userPrivileges1, userPrivileges2);
replay(viewRegistry, viewUsePermission, adminPermission);
- replay(clusterEntity, configEntity, configMappingEntity, clusterStateEntity);
+ replay(clusterEntity, configEntity, configMappingEntity, clusterStateEntity, stackEntity);
Class<?> c = AbstractUpgradeCatalog.class;
Field f = c.getDeclaredField("configuration");
@@ -545,29 +556,47 @@ public class UpgradeCatalog170Test {
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO = injector.getInstance(ServiceComponentDesiredStateDAO.class);
HostComponentDesiredStateDAO hostComponentDesiredStateDAO = injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentStateDAO hostComponentStateDAO = injector.getInstance(HostComponentStateDAO.class);
+ StackDAO stackDAO = injector.getInstance(StackDAO.class);
+
+ // inject AmbariMetaInfo to ensure that stacks get populated in the DB
+ injector.getInstance(AmbariMetaInfo.class);
+
+ StackEntity desiredStackEntity = stackDAO.find(
+ DESIRED_STACK.getStackName(),
+ DESIRED_STACK.getStackVersion());
+
+ assertNotNull(desiredStackEntity);
final ClusterEntity clusterEntity = upgradeCatalogHelper.createCluster(
- injector, CLUSTER_NAME, DESIRED_STACK_VERSION);
+ injector, CLUSTER_NAME, desiredStackEntity);
+
final ClusterServiceEntity clusterServiceEntityHDFS = upgradeCatalogHelper.addService(
- injector, clusterEntity, "HDFS", DESIRED_STACK_VERSION);
+ injector, clusterEntity, "HDFS", desiredStackEntity);
+
final ClusterServiceEntity clusterServiceEntityHIVE = upgradeCatalogHelper.addService(
- injector, clusterEntity, "HIVE", DESIRED_STACK_VERSION);
+ injector, clusterEntity, "HIVE", desiredStackEntity);
+
final ClusterServiceEntity clusterServiceEntityHCATALOG = upgradeCatalogHelper.addService(
- injector, clusterEntity, "HCATALOG", DESIRED_STACK_VERSION);
+ injector, clusterEntity, "HCATALOG", desiredStackEntity);
+
final ClusterServiceEntity clusterServiceEntityWEBHCAT = upgradeCatalogHelper.addService(
- injector, clusterEntity, "WEBHCAT", DESIRED_STACK_VERSION);
+ injector, clusterEntity, "WEBHCAT", desiredStackEntity);
+
final HostEntity hostEntity = upgradeCatalogHelper.createHost(injector,
clusterEntity, HOST_NAME);
+
upgradeCatalogHelper.addComponent(injector, clusterEntity,
- clusterServiceEntityHDFS, hostEntity, "NAMENODE", DESIRED_STACK_VERSION);
+ clusterServiceEntityHDFS, hostEntity, "NAMENODE", desiredStackEntity);
+
upgradeCatalogHelper.addComponent(injector, clusterEntity,
- clusterServiceEntityHIVE, hostEntity, "HIVE_SERVER",
- DESIRED_STACK_VERSION);
+ clusterServiceEntityHIVE, hostEntity, "HIVE_SERVER", desiredStackEntity);
+
upgradeCatalogHelper.addComponent(injector, clusterEntity,
- clusterServiceEntityHCATALOG, hostEntity, "HCAT", DESIRED_STACK_VERSION);
+ clusterServiceEntityHCATALOG, hostEntity, "HCAT", desiredStackEntity);
+
upgradeCatalogHelper.addComponent(injector, clusterEntity,
clusterServiceEntityWEBHCAT, hostEntity, "WEBHCAT_SERVER",
- DESIRED_STACK_VERSION);
+ desiredStackEntity);
upgradeCatalog170.moveHcatalogIntoHiveService();
@@ -597,8 +626,19 @@ public class UpgradeCatalog170Test {
@Test
public void updateClusterProvisionState() throws AmbariException {
+ StackDAO stackDAO = injector.getInstance(StackDAO.class);
+
+ // inject AmbariMetaInfo to ensure that stacks get populated in the DB
+ injector.getInstance(AmbariMetaInfo.class);
+
+ StackEntity desiredStackEntity = stackDAO.find(
+ DESIRED_STACK.getStackName(), DESIRED_STACK.getStackVersion());
+
+ assertNotNull(desiredStackEntity);
+
ClusterEntity clusterEntity = upgradeCatalogHelper.createCluster(injector,
- CLUSTER_NAME, DESIRED_STACK_VERSION);
+ CLUSTER_NAME, desiredStackEntity);
+
UpgradeCatalog170 upgradeCatalog170 = injector.getInstance(UpgradeCatalog170.class);
upgradeCatalog170.updateClusterProvisionState(); //action
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
index 96d5134..804aa60 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
@@ -58,6 +58,7 @@ import org.apache.ambari.server.orm.dao.ClusterServiceDAO;
import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterEntity;
import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
@@ -67,6 +68,7 @@ import org.apache.ambari.server.orm.entities.HostComponentStateEntityPK;
import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntityPK;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
@@ -99,7 +101,8 @@ import com.google.inject.persist.PersistService;
public class UpgradeCatalog200Test {
private final String CLUSTER_NAME = "c1";
private final String HOST_NAME = "h1";
- private final String DESIRED_STACK_VERSION = "{\"stackName\":\"HDP\",\"stackVersion\":\"2.0.6\"}";
+
+ private final StackId DESIRED_STACK = new StackId("HDP", "2.0.6");
private Injector injector;
private Provider<EntityManager> entityManagerProvider = createStrictMock(Provider.class);
@@ -536,19 +539,27 @@ public class UpgradeCatalog200Test {
HostComponentDesiredStateDAO hostComponentDesiredStateDAO = injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentStateDAO hostComponentStateDAO = injector.getInstance(HostComponentStateDAO.class);
ClusterServiceDAO clusterServiceDao = injector.getInstance(ClusterServiceDAO.class);
+ StackDAO stackDAO = injector.getInstance(StackDAO.class);
+
+ // inject AmbariMetaInfo to ensure that stacks get populated in the DB
+ injector.getInstance(AmbariMetaInfo.class);
+
+ StackEntity stackEntity = stackDAO.find(DESIRED_STACK.getStackName(),
+ DESIRED_STACK.getStackVersion());
+
+ assertNotNull(stackEntity);
final ClusterEntity clusterEntity = upgradeCatalogHelper.createCluster(
- injector, CLUSTER_NAME, DESIRED_STACK_VERSION);
+ injector, CLUSTER_NAME, stackEntity);
final ClusterServiceEntity clusterServiceEntityNagios = upgradeCatalogHelper.addService(
- injector, clusterEntity, "NAGIOS", DESIRED_STACK_VERSION);
+ injector, clusterEntity, "NAGIOS", stackEntity);
final HostEntity hostEntity = upgradeCatalogHelper.createHost(injector,
clusterEntity, HOST_NAME);
upgradeCatalogHelper.addComponent(injector, clusterEntity,
- clusterServiceEntityNagios, hostEntity, "NAGIOS_SERVER",
- DESIRED_STACK_VERSION);
+ clusterServiceEntityNagios, hostEntity, "NAGIOS_SERVER", stackEntity);
ServiceComponentDesiredStateEntityPK pkNagiosServer = new ServiceComponentDesiredStateEntityPK();
pkNagiosServer.setComponentName("NAGIOS_SERVER");
[6/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity
Relationships (jonathanhurley)
Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
index 9ec0370..ffa085a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
@@ -17,12 +17,14 @@
*/
package org.apache.ambari.server.state.configgroup;
-import com.google.gson.Gson;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
-import com.google.inject.assistedinject.Assisted;
-import com.google.inject.assistedinject.AssistedInject;
-import com.google.inject.persist.Transactional;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.DuplicateResourceException;
import org.apache.ambari.server.controller.ConfigGroupResponse;
@@ -46,13 +48,13 @@ import org.apache.ambari.server.state.ConfigFactory;
import org.apache.ambari.server.state.Host;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import com.google.gson.Gson;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.assistedinject.Assisted;
+import com.google.inject.assistedinject.AssistedInject;
+import com.google.inject.persist.Transactional;
public class ConfigGroupImpl implements ConfigGroup {
private static final Logger LOG = LoggerFactory.getLogger(ConfigGroupImpl.class);
@@ -105,9 +107,9 @@ public class ConfigGroupImpl implements ConfigGroup {
}
if (configs != null) {
- this.configurations = configs;
+ configurations = configs;
} else {
- this.configurations = new HashMap<String, Config>();
+ configurations = new HashMap<String, Config>();
}
}
@@ -119,8 +121,8 @@ public class ConfigGroupImpl implements ConfigGroup {
this.cluster = cluster;
this.configGroupEntity = configGroupEntity;
- this.configurations = new HashMap<String, Config>();
- this.hosts = new HashMap<String, Host>();
+ configurations = new HashMap<String, Config>();
+ hosts = new HashMap<String, Host>();
// Populate configs
for (ConfigGroupConfigMappingEntity configMappingEntity : configGroupEntity
@@ -130,7 +132,7 @@ public class ConfigGroupImpl implements ConfigGroup {
configMappingEntity.getVersionTag());
if (config != null) {
- this.configurations.put(config.getType(), config);
+ configurations.put(config.getType(), config);
} else {
LOG.warn("Unable to find config mapping for config group"
+ ", clusterName = " + cluster.getClusterName()
@@ -146,7 +148,7 @@ public class ConfigGroupImpl implements ConfigGroup {
try {
Host host = clusters.getHost(hostMappingEntity.getHostname());
if (host != null) {
- this.hosts.put(host.getHostName(), host);
+ hosts.put(host.getHostName(), host);
}
} catch (AmbariException e) {
String msg = "Host seems to be deleted but Config group mapping still " +
@@ -178,7 +180,7 @@ public class ConfigGroupImpl implements ConfigGroup {
public void setName(String name) {
readWriteLock.writeLock().lock();
try {
- this.configGroupEntity.setGroupName(name);
+ configGroupEntity.setGroupName(name);
} finally {
readWriteLock.writeLock().unlock();
}
@@ -204,7 +206,7 @@ public class ConfigGroupImpl implements ConfigGroup {
public void setTag(String tag) {
readWriteLock.writeLock().lock();
try {
- this.configGroupEntity.setTag(tag);
+ configGroupEntity.setTag(tag);
} finally {
readWriteLock.writeLock().unlock();
}
@@ -225,7 +227,7 @@ public class ConfigGroupImpl implements ConfigGroup {
public void setDescription(String description) {
readWriteLock.writeLock().lock();
try {
- this.configGroupEntity.setDescription(description);
+ configGroupEntity.setDescription(description);
} finally {
readWriteLock.writeLock().unlock();
}
@@ -276,7 +278,7 @@ public class ConfigGroupImpl implements ConfigGroup {
public void setConfigurations(Map<String, Config> configs) {
readWriteLock.writeLock().lock();
try {
- this.configurations = configs;
+ configurations = configs;
} finally {
readWriteLock.writeLock().unlock();
}
@@ -405,6 +407,7 @@ public class ConfigGroupImpl implements ConfigGroup {
clusterConfigEntity = new ClusterConfigEntity();
clusterConfigEntity.setClusterId(clusterEntity.getClusterId());
clusterConfigEntity.setClusterEntity(clusterEntity);
+ clusterConfigEntity.setStack(clusterEntity.getDesiredStack());
clusterConfigEntity.setType(config.getType());
clusterConfigEntity.setVersion(config.getVersion());
clusterConfigEntity.setTag(config.getTag());
@@ -545,6 +548,7 @@ public class ConfigGroupImpl implements ConfigGroup {
}
}
+ @Override
@Transactional
public void refresh() {
readWriteLock.writeLock().lock();
@@ -565,7 +569,7 @@ public class ConfigGroupImpl implements ConfigGroup {
public String getServiceName() {
readWriteLock.readLock().lock();
try {
- return this.configGroupEntity.getServiceName();
+ return configGroupEntity.getServiceName();
} finally {
readWriteLock.readLock().unlock();
}
@@ -576,7 +580,7 @@ public class ConfigGroupImpl implements ConfigGroup {
public void setServiceName(String serviceName) {
readWriteLock.writeLock().lock();
try {
- this.configGroupEntity.setServiceName(serviceName);
+ configGroupEntity.setServiceName(serviceName);
} finally {
readWriteLock.writeLock().unlock();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
index 370cd48..4c9c499 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
@@ -43,6 +43,7 @@ import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
@@ -51,6 +52,7 @@ import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntityPK;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.ConfigHelper;
@@ -78,7 +80,6 @@ import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.assistedinject.Assisted;
@@ -102,8 +103,6 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
private boolean persisted = false;
@Inject
- Gson gson;
- @Inject
HostComponentStateDAO hostComponentStateDAO;
@Inject
HostComponentDesiredStateDAO hostComponentDesiredStateDAO;
@@ -135,6 +134,12 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
@Inject
private AmbariEventPublisher eventPublisher;
+ /**
+ * Data access object for stack.
+ */
+ @Inject
+ private StackDAO stackDAO;
+
// TODO : caching the JPA entities here causes issues if they become stale and get re-merged.
private HostComponentStateEntity stateEntity;
private HostComponentDesiredStateEntity desiredStateEntity;
@@ -702,6 +707,10 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
throw new RuntimeException(e);
}
+ StackId stackId = serviceComponent.getDesiredStackVersion();
+ StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+ stackId.getStackVersion());
+
stateEntity = new HostComponentStateEntity();
stateEntity.setClusterId(serviceComponent.getClusterId());
stateEntity.setComponentName(serviceComponent.getName());
@@ -710,7 +719,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
stateEntity.setHostEntity(hostEntity);
stateEntity.setCurrentState(stateMachine.getCurrentState());
stateEntity.setUpgradeState(UpgradeState.NONE);
- stateEntity.setCurrentStackVersion(gson.toJson(new StackId()));
+ stateEntity.setCurrentStack(stackEntity);
stateEntityPK = getHostComponentStateEntityPK(stateEntity);
@@ -720,8 +729,8 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
desiredStateEntity.setServiceName(serviceComponent.getServiceName());
desiredStateEntity.setHostEntity(hostEntity);
desiredStateEntity.setDesiredState(State.INIT);
- desiredStateEntity.setDesiredStackVersion(
- gson.toJson(serviceComponent.getDesiredStackVersion()));
+ desiredStateEntity.setDesiredStack(stackEntity);
+
if(!serviceComponent.isMasterComponent() && !serviceComponent.isClientComponent()) {
desiredStateEntity.setAdminState(HostComponentAdminState.INSERVICE);
} else {
@@ -1022,17 +1031,23 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
if (schStateEntity == null) {
return new StackId();
}
- return gson.fromJson(schStateEntity.getCurrentStackVersion(), StackId.class);
+
+ StackEntity currentStackEntity = schStateEntity.getCurrentStack();
+ return new StackId(currentStackEntity.getStackName(),
+ currentStackEntity.getStackVersion());
} finally {
readLock.unlock();
}
}
@Override
- public void setStackVersion(StackId stackVersion) {
+ public void setStackVersion(StackId stackId) {
writeLock.lock();
try {
- getStateEntity().setCurrentStackVersion(gson.toJson(stackVersion));
+ StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+ stackId.getStackVersion());
+
+ getStateEntity().setCurrentStack(stackEntity);
saveIfPersisted();
} finally {
writeLock.unlock();
@@ -1064,18 +1079,22 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
public StackId getDesiredStackVersion() {
readLock.lock();
try {
- return gson.fromJson(getDesiredStateEntity().getDesiredStackVersion(),
- StackId.class);
+ StackEntity desiredStackEntity = getDesiredStateEntity().getDesiredStack();
+ return new StackId(desiredStackEntity.getStackName(),
+ desiredStackEntity.getStackVersion());
} finally {
readLock.unlock();
}
}
@Override
- public void setDesiredStackVersion(StackId stackVersion) {
+ public void setDesiredStackVersion(StackId stackId) {
writeLock.lock();
try {
- getDesiredStateEntity().setDesiredStackVersion(gson.toJson(stackVersion));
+ StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+ stackId.getStackVersion());
+
+ getDesiredStateEntity().setDesiredStack(stackEntity);
saveIfPersisted();
} finally {
writeLock.unlock();
@@ -1478,7 +1497,14 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
private RepositoryVersionEntity createRepositoryVersion(String version, final StackId stackId, final StackInfo stackInfo) throws AmbariException {
// During an Ambari Upgrade from 1.7.0 -> 2.0.0, the Repo Version will not exist, so bootstrap it.
LOG.info("Creating new repository version " + stackId.getStackName() + "-" + version);
- return repositoryVersionDAO.create(stackId.getStackId(), version, stackId.getStackName() + "-" + version,
+
+ StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+ stackId.getStackVersion());
+
+ return repositoryVersionDAO.create(
+ stackEntity,
+ version,
+ stackId.getStackName() + "-" + version,
repositoryVersionHelper.getUpgradePackageNameSafe(stackId.getStackName(), stackId.getStackVersion(), version),
repositoryVersionHelper.serializeOperatingSystems(stackInfo.getRepositories()));
}
@@ -1509,7 +1535,8 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
writeLock.lock();
try {
- RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion(stackId.getStackId(), version);
+ RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion(
+ stackId, version);
if (repositoryVersion == null) {
repositoryVersion = createRepositoryVersion(version, stackId, stackInfo);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/upgrade/StackUpgradeUtil.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/StackUpgradeUtil.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/StackUpgradeUtil.java
index 388bea9..8c629ca 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/StackUpgradeUtil.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/StackUpgradeUtil.java
@@ -28,6 +28,7 @@ import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.MetainfoDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.ServiceDesiredStateDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterEntity;
import org.apache.ambari.server.orm.entities.ClusterStateEntity;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
@@ -35,46 +36,31 @@ import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
import org.apache.ambari.server.orm.entities.MetainfoEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.OperatingSystemInfo;
-import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.stack.OsFamily;
-import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.persist.Transactional;
public class StackUpgradeUtil {
@Inject
- private Gson gson;
- @Inject
private Injector injector;
- private String getStackIdString(String originalStackId, String stackName,
- String stackVersion) {
- if (stackVersion == null) {
- stackVersion = gson.fromJson(originalStackId, StackId.class).getStackVersion();
- }
-
- return String.format(
- "{\"stackName\":\"%s\",\"stackVersion\":\"%s\"}",
- stackName,
- stackVersion
- );
- }
-
@Transactional
public void updateStackDetails(String stackName, String stackVersion) {
ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
+ StackDAO stackDAO = injector.getInstance(StackDAO.class);
List<Long> clusterIds = new ArrayList<Long>();
+ StackEntity stackEntity = stackDAO.find(stackName, stackVersion);
+
List<ClusterEntity> clusterEntities = clusterDAO.findAll();
if (clusterEntities != null && !clusterEntities.isEmpty()) {
for (ClusterEntity entity : clusterEntities) {
clusterIds.add(entity.getClusterId());
- String stackIdString = entity.getDesiredStackVersion();
- entity.setDesiredStackVersion(getStackIdString(stackIdString,
- stackName, stackVersion));
+ entity.setDesiredStack(stackEntity);
clusterDAO.merge(entity);
}
}
@@ -83,9 +69,7 @@ public class StackUpgradeUtil {
for (Long clusterId : clusterIds) {
ClusterStateEntity clusterStateEntity = clusterStateDAO.findByPK(clusterId);
- String currentStackVersion = clusterStateEntity.getCurrentStackVersion();
- clusterStateEntity.setCurrentStackVersion(getStackIdString
- (currentStackVersion, stackName, stackVersion));
+ clusterStateEntity.setCurrentStack(stackEntity);
clusterStateDAO.merge(clusterStateEntity);
}
@@ -95,9 +79,7 @@ public class StackUpgradeUtil {
if (hcEntities != null) {
for (HostComponentStateEntity hc : hcEntities) {
- String currentStackVersion = hc.getCurrentStackVersion();
- hc.setCurrentStackVersion(getStackIdString(currentStackVersion,
- stackName, stackVersion));
+ hc.setCurrentStack(stackEntity);
hostComponentStateDAO.merge(hc);
}
}
@@ -109,9 +91,7 @@ public class StackUpgradeUtil {
if (hcdEntities != null) {
for (HostComponentDesiredStateEntity hcd : hcdEntities) {
- String desiredStackVersion = hcd.getDesiredStackVersion();
- hcd.setDesiredStackVersion(getStackIdString(desiredStackVersion,
- stackName, stackVersion));
+ hcd.setDesiredStack(stackEntity);
hostComponentDesiredStateDAO.merge(hcd);
}
}
@@ -124,9 +104,7 @@ public class StackUpgradeUtil {
if (scdEntities != null) {
for (ServiceComponentDesiredStateEntity scd : scdEntities) {
- String desiredStackVersion = scd.getDesiredStackVersion();
- scd.setDesiredStackVersion(getStackIdString(desiredStackVersion,
- stackName, stackVersion));
+ scd.setDesiredStack(stackEntity);
serviceComponentDesiredStateDAO.merge(scd);
}
}
@@ -137,14 +115,10 @@ public class StackUpgradeUtil {
if (sdEntities != null) {
for (ServiceDesiredStateEntity sd : sdEntities) {
- String desiredStackVersion = sd.getDesiredStackVersion();
- sd.setDesiredStackVersion(getStackIdString(desiredStackVersion,
- stackName, stackVersion));
+ sd.setDesiredStack(stackEntity);
serviceDesiredStateDAO.merge(sd);
}
}
-
-
}
/**
@@ -159,31 +133,32 @@ public class StackUpgradeUtil {
if (null == repoUrl ||
repoUrl.isEmpty() ||
- !repoUrl.startsWith("http"))
+ !repoUrl.startsWith("http")) {
return;
-
- String[] oses = new String[0];
-
+ }
+
+ String[] oses = new String[0];
+
if (null != repoUrlOs) {
oses = repoUrlOs.split(",");
}
-
+
AmbariMetaInfo ami = injector.getInstance(AmbariMetaInfo.class);
MetainfoDAO metaDao = injector.getInstance(MetainfoDAO.class);
OsFamily os_family = injector.getInstance(OsFamily.class);
-
+
String stackRepoId = stackName + "-" + stackVersion;
-
+
if (0 == oses.length) {
// do them all
for (OperatingSystemInfo osi : ami.getOperatingSystems(stackName, stackVersion)) {
ami.updateRepoBaseURL(stackName, stackVersion, osi.getOsType(),
stackRepoId, repoUrl);
}
-
+
} else {
for (String os : oses) {
-
+
String family = os_family.find(os);
if (null != family) {
String key = ami.generateRepoMetaKey(stackName, stackVersion, os,
@@ -191,7 +166,7 @@ public class StackUpgradeUtil {
String familyKey = ami.generateRepoMetaKey(stackName, stackVersion, family,
stackRepoId, AmbariMetaInfo.REPOSITORY_XML_PROPERTY_BASEURL);
-
+
// need to use (for example) redhat6 if the os is centos6
MetainfoEntity entity = metaDao.findByKey(key);
if (null == entity) {
@@ -203,7 +178,7 @@ public class StackUpgradeUtil {
entity.setMetainfoValue(repoUrl);
metaDao.merge(entity);
}
-
+
entity = metaDao.findByKey(familyKey);
if (null == entity) {
entity = new MetainfoEntity();
@@ -214,7 +189,7 @@ public class StackUpgradeUtil {
entity.setMetainfoValue(repoUrl);
metaDao.merge(entity);
}
- }
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java
index d80909b..03b995a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java
@@ -64,6 +64,7 @@ import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
import org.apache.ambari.server.orm.entities.KeyValueEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntityPK;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.HostComponentAdminState;
import org.apache.ambari.server.state.PropertyInfo;
import org.apache.ambari.server.state.ServiceInfo;
@@ -544,7 +545,7 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog {
if (clusterStateDAO.findByPK(clusterEntity.getClusterId()) == null) {
ClusterStateEntity clusterStateEntity = new ClusterStateEntity();
clusterStateEntity.setClusterEntity(clusterEntity);
- clusterStateEntity.setCurrentStackVersion(clusterEntity.getDesiredStackVersion());
+ clusterStateEntity.setCurrentStack(clusterEntity.getDesiredStack());
clusterStateDAO.create(clusterStateEntity);
@@ -635,7 +636,7 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog {
final ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity = new ServiceComponentDesiredStateEntity();
serviceComponentDesiredStateEntity.setComponentName("HISTORYSERVER");
- serviceComponentDesiredStateEntity.setDesiredStackVersion(clusterEntity.getDesiredStackVersion());
+ serviceComponentDesiredStateEntity.setDesiredStack(clusterEntity.getDesiredStack());
serviceComponentDesiredStateEntity.setDesiredState(jtServiceComponentDesiredState);
serviceComponentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
serviceComponentDesiredStateEntity.setHostComponentDesiredStateEntities(new ArrayList<HostComponentDesiredStateEntity>());
@@ -648,11 +649,11 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog {
final HostComponentStateEntity stateEntity = new HostComponentStateEntity();
stateEntity.setHostEntity(host);
stateEntity.setCurrentState(jtCurrState);
- stateEntity.setCurrentStackVersion(clusterEntity.getDesiredStackVersion());
+ stateEntity.setCurrentStack(clusterEntity.getDesiredStack());
final HostComponentDesiredStateEntity desiredStateEntity = new HostComponentDesiredStateEntity();
desiredStateEntity.setDesiredState(jtHostComponentDesiredState);
- desiredStateEntity.setDesiredStackVersion(clusterEntity.getDesiredStackVersion());
+ desiredStateEntity.setDesiredStack(clusterEntity.getDesiredStack());
persistComponentEntities(stateEntity, desiredStateEntity, serviceComponentDesiredStateEntity);
}
@@ -698,13 +699,9 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog {
List <ClusterEntity> clusterEntities = clusterDAO.findAll();
for (final ClusterEntity clusterEntity : clusterEntities) {
Long clusterId = clusterEntity.getClusterId();
- String desiredStackVersion = clusterEntity.getDesiredStackVersion();
-
- Map<String, String> clusterInfo =
- gson.<Map<String, String>>fromJson(desiredStackVersion, Map.class);
-
- String stackName = clusterInfo.get("stackName");
- String stackVersion = clusterInfo.get("stackVersion");
+ StackEntity stackEntity = clusterEntity.getDesiredStack();
+ String stackName = stackEntity.getStackName();
+ String stackVersion = stackEntity.getStackVersion();
List<ClusterServiceEntity> clusterServiceEntities = clusterServiceDAO.findAll();
for (final ClusterServiceEntity clusterServiceEntity : clusterServiceEntities) {
@@ -740,6 +737,8 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog {
configEntity.setVersion(1L);
configEntity.setTimestamp(System.currentTimeMillis());
configEntity.setClusterEntity(clusterEntity);
+ configEntity.setStack(stackEntity);
+
LOG.debug("Creating new " + configType + " config...");
clusterDAO.createConfig(configEntity);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
index 2259c92..d6d4567 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
@@ -87,6 +87,7 @@ import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntityPK;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.orm.entities.UserEntity;
import org.apache.ambari.server.orm.entities.ViewEntity;
import org.apache.ambari.server.orm.entities.ViewInstanceEntity;
@@ -94,6 +95,7 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigHelper;
+import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
import org.apache.ambari.server.state.alert.Scope;
import org.apache.ambari.server.utils.StageUtils;
@@ -128,13 +130,15 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
public static final String JOBS_VIEW_INSTANCE_NAME = "JOBS_1";
public static final String SHOW_JOBS_FOR_NON_ADMIN_KEY = "showJobsForNonAdmin";
public static final String JOBS_VIEW_INSTANCE_LABEL = "Jobs";
- public static final String CLUSTER_STATE_STACK_HDP_2_1 = "{\"stackName\":\"HDP\",\"stackVersion\":\"2.1\"}";
public static final String YARN_TIMELINE_SERVICE_WEBAPP_ADDRESS_PROPERTY = "yarn.timeline-service.webapp.address";
public static final String YARN_RESOURCEMANAGER_WEBAPP_ADDRESS_PROPERTY = "yarn.resourcemanager.webapp.address";
public static final String YARN_SITE = "yarn-site";
public static final String YARN_ATS_URL_PROPERTY = "yarn.ats.url";
public static final String YARN_RESOURCEMANAGER_URL_PROPERTY = "yarn.resourcemanager.url";
+ public static final StackId CLUSTER_STATE_STACK_HDP_2_1 = new StackId("HDP",
+ "2.1");
+
//SourceVersion is only for book-keeping purpos
@Override
public String getSourceVersion() {
@@ -759,7 +763,7 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
serviceComponentDesiredStateEntity.setServiceName(serviceName);
serviceComponentDesiredStateEntity.setComponentName(serviceComponentDesiredStateEntityToDelete.getComponentName());
serviceComponentDesiredStateEntity.setClusterId(clusterEntity.getClusterId());
- serviceComponentDesiredStateEntity.setDesiredStackVersion(serviceComponentDesiredStateEntityToDelete.getDesiredStackVersion());
+ serviceComponentDesiredStateEntity.setDesiredStack(serviceComponentDesiredStateEntityToDelete.getDesiredStack());
serviceComponentDesiredStateEntity.setDesiredState(serviceComponentDesiredStateEntityToDelete.getDesiredState());
serviceComponentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
@@ -771,7 +775,7 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
HostComponentDesiredStateEntity hostComponentDesiredStateEntity = new HostComponentDesiredStateEntity();
hostComponentDesiredStateEntity.setClusterId(clusterEntity.getClusterId());
hostComponentDesiredStateEntity.setComponentName(hcDesiredStateEntityToBeDeleted.getComponentName());
- hostComponentDesiredStateEntity.setDesiredStackVersion(hcDesiredStateEntityToBeDeleted.getDesiredStackVersion());
+ hostComponentDesiredStateEntity.setDesiredStack(hcDesiredStateEntityToBeDeleted.getDesiredStack());
hostComponentDesiredStateEntity.setDesiredState(hcDesiredStateEntityToBeDeleted.getDesiredState());
hostComponentDesiredStateEntity.setHostEntity(hcDesiredStateEntityToBeDeleted.getHostEntity());
hostComponentDesiredStateEntity.setAdminState(hcDesiredStateEntityToBeDeleted.getAdminState());
@@ -793,7 +797,7 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
HostComponentStateEntity hostComponentStateEntity = new HostComponentStateEntity();
hostComponentStateEntity.setClusterId(clusterEntity.getClusterId());
hostComponentStateEntity.setComponentName(hcStateToBeDeleted.getComponentName());
- hostComponentStateEntity.setCurrentStackVersion(hcStateToBeDeleted.getCurrentStackVersion());
+ hostComponentStateEntity.setCurrentStack(hcStateToBeDeleted.getCurrentStack());
hostComponentStateEntity.setCurrentState(hcStateToBeDeleted.getCurrentState());
hostComponentStateEntity.setHostEntity(hcStateToBeDeleted.getHostEntity());
hostComponentStateEntity.setServiceName(serviceName);
@@ -827,6 +831,8 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
for (ConfigGroupConfigMappingEntity entity : configGroupsWithGlobalConfigs) {
String configData = entity.getClusterConfigEntity().getData();
+ StackEntity stackEntity = entity.getClusterConfigEntity().getStack();
+
Map<String, String> properties = StageUtils.getGson().fromJson(configData, type);
Cluster cluster = ambariManagementController.getClusters().getClusterById(entity.getClusterId());
HashMap<String, HashMap<String, String>> configs = new HashMap<String, HashMap<String, String>>();
@@ -866,8 +872,9 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
clusterConfigEntity.setTag(tag);
clusterConfigEntity.setTimestamp(new Date().getTime());
clusterConfigEntity.setData(StageUtils.getGson().toJson(config.getValue()));
- clusterDAO.createConfig(clusterConfigEntity);
+ clusterConfigEntity.setStack(stackEntity);
+ clusterDAO.createConfig(clusterConfigEntity);
ConfigGroupConfigMappingEntity configGroupConfigMappingEntity = new ConfigGroupConfigMappingEntity();
configGroupConfigMappingEntity.setTimestamp(System.currentTimeMillis());
@@ -1400,8 +1407,14 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
List<ClusterEntity> clusters = clusterDAO.findAll();
if (!clusters.isEmpty()) {
ClusterEntity currentCluster = clusters.get(0);
- String currentStackVersion = currentCluster.getClusterStateEntity().getCurrentStackVersion();
- if (CLUSTER_STATE_STACK_HDP_2_1.equals(currentStackVersion)) {
+ StackEntity currentStack = currentCluster.getClusterStateEntity().getCurrentStack();
+
+ boolean isStackHdp21 = CLUSTER_STATE_STACK_HDP_2_1.getStackName().equals(
+ currentStack.getStackName())
+ && CLUSTER_STATE_STACK_HDP_2_1.getStackVersion().equals(
+ currentStack.getStackVersion());
+
+ if (isStackHdp21) {
ViewRegistry.initInstance(viewRegistry);
viewRegistry.readViewArchives(VIEW_NAME_REG_EXP);
ViewEntity jobsView = viewDAO.findByCommonName(JOBS_VIEW_NAME);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
index c3488f2..62a8541 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -1,5 +1,5 @@
--
--- Licensed to the Apache Software Foundation (ASF) under one
+-- Licensed to the stackpache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
@@ -30,6 +30,14 @@ delimiter ;
-- Ambari is transitioning to make the host_id the FK instead of the host_name.
-- Please do not remove lines that are related to this change and are being staged.
+CREATE TABLE stack(
+ stack_id BIGINT NOT NULL,
+ stack_name VARCHAR(255) NOT NULL,
+ stack_version VARCHAR(255) NOT NULL,
+ PRIMARY KEY (stack_id),
+ CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
+);
+
CREATE TABLE clusters (
cluster_id BIGINT NOT NULL,
resource_id BIGINT NOT NULL,
@@ -38,8 +46,9 @@ CREATE TABLE clusters (
provisioning_state VARCHAR(255) NOT NULL DEFAULT 'INIT',
security_type VARCHAR(32) NOT NULL DEFAULT 'NONE',
desired_cluster_state VARCHAR(255) NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (cluster_id));
+ desired_stack_id BIGINT NOT NULL,
+ PRIMARY KEY (cluster_id),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE clusterconfig (
config_id BIGINT NOT NULL,
@@ -47,10 +56,12 @@ CREATE TABLE clusterconfig (
version BIGINT NOT NULL,
type_name VARCHAR(255) NOT NULL,
cluster_id BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
config_data LONGTEXT NOT NULL,
config_attributes LONGTEXT,
create_timestamp BIGINT NOT NULL,
- PRIMARY KEY (config_id));
+ PRIMARY KEY (config_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE serviceconfig (
service_config_id BIGINT NOT NULL,
@@ -58,10 +69,12 @@ CREATE TABLE serviceconfig (
service_name VARCHAR(255) NOT NULL,
version BIGINT NOT NULL,
create_timestamp BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
user_name VARCHAR(255) NOT NULL DEFAULT '_db',
group_id BIGINT,
note LONGTEXT,
- PRIMARY KEY (service_config_id));
+ PRIMARY KEY (service_config_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE serviceconfighosts (
service_config_id BIGINT NOT NULL,
@@ -84,8 +97,9 @@ CREATE TABLE clusterservices (
CREATE TABLE clusterstate (
cluster_id BIGINT NOT NULL,
current_cluster_state VARCHAR(255) NOT NULL,
- current_stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (cluster_id));
+ current_stack_id BIGINT NOT NULL,
+ PRIMARY KEY (cluster_id),
+ FOREIGN KEY (current_stack_id) REFERENCES stack(stack_id));
CREATE TABLE cluster_version (
id BIGINT NOT NULL,
@@ -100,7 +114,7 @@ CREATE TABLE cluster_version (
CREATE TABLE hostcomponentdesiredstate (
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
host_id BIGINT NOT NULL,
service_name VARCHAR(255) NOT NULL,
@@ -108,19 +122,21 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE',
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required TINYINT(1) NOT NULL DEFAULT 0,
- PRIMARY KEY (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE hostcomponentstate (
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
- current_stack_version VARCHAR(255) NOT NULL,
+ current_stack_id BIGINT NOT NULL,
current_state VARCHAR(255) NOT NULL,
host_id BIGINT NOT NULL,
service_name VARCHAR(255) NOT NULL,
upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE',
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
- PRIMARY KEY (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (current_stack_id) REFERENCES stack(stack_id));
CREATE TABLE hosts (
host_id BIGINT NOT NULL,
@@ -162,20 +178,22 @@ CREATE TABLE host_version (
CREATE TABLE servicecomponentdesiredstate (
component_name VARCHAR(255) NOT NULL,
cluster_id BIGINT NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
service_name VARCHAR(255) NOT NULL,
- PRIMARY KEY (component_name, cluster_id, service_name));
+ PRIMARY KEY (component_name, cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE servicedesiredstate (
cluster_id BIGINT NOT NULL,
desired_host_role_mapping INTEGER NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
service_name VARCHAR(255) NOT NULL,
maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE',
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
- PRIMARY KEY (cluster_id, service_name));
+ PRIMARY KEY (cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE users (
user_id INTEGER,
@@ -387,9 +405,9 @@ CREATE TABLE requestschedulebatchrequest (
CREATE TABLE blueprint (
blueprint_name VARCHAR(255) NOT NULL,
- stack_name VARCHAR(255) NOT NULL,
- stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY(blueprint_name));
+ stack_id BIGINT NOT NULL,
+ PRIMARY KEY(blueprint_name),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE hostgroup (
blueprint_name VARCHAR(255) NOT NULL,
@@ -527,13 +545,13 @@ CREATE TABLE adminprivilege (
CREATE TABLE repo_version (
repo_version_id BIGINT NOT NULL,
- stack VARCHAR(255) NOT NULL,
+ stack_id BIGINT NOT NULL,
version VARCHAR(255) NOT NULL,
display_name VARCHAR(128) NOT NULL,
upgrade_package VARCHAR(255) NOT NULL,
repositories LONGTEXT NOT NULL,
- PRIMARY KEY(repo_version_id)
-);
+ PRIMARY KEY(repo_version_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE widget (
id BIGINT NOT NULL,
@@ -587,7 +605,7 @@ ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_ins
ALTER TABLE serviceconfig ADD CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version);
ALTER TABLE adminpermission ADD CONSTRAINT UQ_perm_name_resource_type_id UNIQUE (permission_name, resource_type_id);
ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_display_name UNIQUE (display_name);
-ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack, version);
+ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack_id, version);
-- altering tables by creating foreign keys----------
ALTER TABLE members ADD CONSTRAINT FK_members_group_id FOREIGN KEY (group_id) REFERENCES groups (group_id);
@@ -826,14 +844,6 @@ CREATE TABLE upgrade_item (
FOREIGN KEY (upgrade_group_id) REFERENCES upgrade_group(upgrade_group_id)
);
-CREATE TABLE stack(
- stack_id BIGINT NOT NULL,
- stack_name VARCHAR(255) NOT NULL,
- stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (stack_id),
- CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
-);
-
-- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('cluster_id_seq', 1);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('host_id_seq', 0);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
index 0455e9e..436e438 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@ -21,6 +21,14 @@
-- Please do not remove lines that are related to this change and are being staged.
------create tables---------
+CREATE TABLE stack(
+ stack_id NUMBER(19) NOT NULL,
+ stack_name VARCHAR2(255) NOT NULL,
+ stack_version VARCHAR2(255) NOT NULL,
+ PRIMARY KEY (stack_id),
+ CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
+);
+
CREATE TABLE clusters (
cluster_id NUMBER(19) NOT NULL,
resource_id NUMBER(19) NOT NULL,
@@ -29,8 +37,9 @@ CREATE TABLE clusters (
provisioning_state VARCHAR2(255) DEFAULT 'INIT' NOT NULL,
security_type VARCHAR2(32) DEFAULT 'NONE' NOT NULL,
desired_cluster_state VARCHAR2(255) NULL,
- desired_stack_version VARCHAR2(255) NULL,
- PRIMARY KEY (cluster_id));
+ desired_stack_id NUMBER(19) NOT NULL,
+ PRIMARY KEY (cluster_id),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE clusterconfig (
config_id NUMBER(19) NOT NULL,
@@ -38,10 +47,12 @@ CREATE TABLE clusterconfig (
version NUMBER(19) NOT NULL,
type_name VARCHAR2(255) NOT NULL,
cluster_id NUMBER(19) NOT NULL,
+ stack_id NUMBER(19) NOT NULL,
config_data CLOB NOT NULL,
config_attributes CLOB,
create_timestamp NUMBER(19) NOT NULL,
- PRIMARY KEY (config_id));
+ PRIMARY KEY (config_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE serviceconfig (
service_config_id NUMBER(19) NOT NULL,
@@ -49,10 +60,12 @@ CREATE TABLE serviceconfig (
service_name VARCHAR(255) NOT NULL,
version NUMBER(19) NOT NULL,
create_timestamp NUMBER(19) NOT NULL,
+ stack_id NUMBER(19) NOT NULL,
user_name VARCHAR(255) DEFAULT '_db' NOT NULL,
group_id NUMBER(19),
note CLOB,
- PRIMARY KEY (service_config_id));
+ PRIMARY KEY (service_config_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE serviceconfighosts (
service_config_id NUMBER(19) NOT NULL,
@@ -73,8 +86,9 @@ CREATE TABLE clusterservices (
CREATE TABLE clusterstate (
cluster_id NUMBER(19) NOT NULL,
current_cluster_state VARCHAR2(255) NULL,
- current_stack_version VARCHAR2(255) NULL,
- PRIMARY KEY (cluster_id));
+ current_stack_id NUMBER(19) NULL,
+ PRIMARY KEY (cluster_id),
+ FOREIGN KEY (current_stack_id) REFERENCES stack(stack_id));
CREATE TABLE cluster_version (
id NUMBER(19) NULL,
@@ -89,7 +103,7 @@ CREATE TABLE cluster_version (
CREATE TABLE hostcomponentdesiredstate (
cluster_id NUMBER(19) NOT NULL,
component_name VARCHAR2(255) NOT NULL,
- desired_stack_version VARCHAR2(255) NULL,
+ desired_stack_id NUMBER(19) NULL,
desired_state VARCHAR2(255) NOT NULL,
host_id NUMBER(19) NOT NULL,
service_name VARCHAR2(255) NOT NULL,
@@ -97,19 +111,21 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR2(32) NOT NULL,
security_state VARCHAR2(32) DEFAULT 'UNSECURED' NOT NULL,
restart_required NUMBER(1) DEFAULT 0 NOT NULL,
- PRIMARY KEY (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE hostcomponentstate (
cluster_id NUMBER(19) NOT NULL,
component_name VARCHAR2(255) NOT NULL,
version VARCHAR2(32) DEFAULT 'UNKNOWN' NOT NULL,
- current_stack_version VARCHAR2(255) NOT NULL,
+ current_stack_id NUMBER(19) NOT NULL,
current_state VARCHAR2(255) NOT NULL,
host_id NUMBER(19) NOT NULL,
service_name VARCHAR2(255) NOT NULL,
upgrade_state VARCHAR2(32) DEFAULT 'NONE' NOT NULL,
security_state VARCHAR2(32) DEFAULT 'UNSECURED' NOT NULL,
- PRIMARY KEY (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (current_stack_id) REFERENCES stack(stack_id));
CREATE TABLE hosts (
host_id NUMBER(19) NOT NULL,
@@ -151,20 +167,22 @@ CREATE TABLE host_version (
CREATE TABLE servicecomponentdesiredstate (
component_name VARCHAR2(255) NOT NULL,
cluster_id NUMBER(19) NOT NULL,
- desired_stack_version VARCHAR2(255) NULL,
+ desired_stack_id NUMBER(19) NOT NULL,
desired_state VARCHAR2(255) NOT NULL,
service_name VARCHAR2(255) NOT NULL,
- PRIMARY KEY (component_name, cluster_id, service_name));
+ PRIMARY KEY (component_name, cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE servicedesiredstate (
cluster_id NUMBER(19) NOT NULL,
desired_host_role_mapping NUMBER(10) NOT NULL,
- desired_stack_version VARCHAR2(255) NULL,
+ desired_stack_id NUMBER(19) NOT NULL,
desired_state VARCHAR2(255) NOT NULL,
service_name VARCHAR2(255) NOT NULL,
maintenance_state VARCHAR2(32) NOT NULL,
security_state VARCHAR2(32) DEFAULT 'UNSECURED' NOT NULL,
- PRIMARY KEY (cluster_id, service_name));
+ PRIMARY KEY (cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE users (
user_id NUMBER(10) NOT NULL,
@@ -377,9 +395,9 @@ CREATE TABLE requestschedulebatchrequest (
CREATE TABLE blueprint (
blueprint_name VARCHAR2(255) NOT NULL,
- stack_name VARCHAR2(255) NOT NULL,
- stack_version VARCHAR2(255) NOT NULL,
- PRIMARY KEY(blueprint_name));
+ stack_id NUMBER(19) NOT NULL,
+ PRIMARY KEY(blueprint_name),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE hostgroup (
blueprint_name VARCHAR2(255) NOT NULL,
@@ -515,12 +533,13 @@ CREATE TABLE adminprivilege (
CREATE TABLE repo_version (
repo_version_id NUMBER(19) NOT NULL,
- stack VARCHAR2(255) NOT NULL,
+ stack_id NUMBER(19) NOT NULL,
version VARCHAR2(255) NOT NULL,
display_name VARCHAR2(128) NOT NULL,
upgrade_package VARCHAR2(255) NOT NULL,
repositories CLOB NOT NULL,
- PRIMARY KEY(repo_version_id)
+ PRIMARY KEY(repo_version_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id)
);
CREATE TABLE widget (
@@ -575,7 +594,7 @@ ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_ins
ALTER TABLE serviceconfig ADD CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version);
ALTER TABLE adminpermission ADD CONSTRAINT UQ_perm_name_resource_type_id UNIQUE (permission_name, resource_type_id);
ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_display_name UNIQUE (display_name);
-ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack, version);
+ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack_id, version);
--------altering tables by creating foreign keys----------
ALTER TABLE members ADD CONSTRAINT FK_members_group_id FOREIGN KEY (group_id) REFERENCES groups (group_id);
@@ -816,14 +835,6 @@ CREATE TABLE upgrade_item (
FOREIGN KEY (upgrade_group_id) REFERENCES upgrade_group(upgrade_group_id)
);
-CREATE TABLE stack(
- stack_id NUMBER(19) NOT NULL,
- stack_name VARCHAR2(255) NOT NULL,
- stack_version VARCHAR2(255) NOT NULL,
- PRIMARY KEY (stack_id),
- CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
-);
-
---------inserting some data-----------
-- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('host_role_command_id_seq', 0);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index 2c381b2..2cec20a 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -21,6 +21,14 @@
-- Please do not remove lines that are related to this change and are being staged.
------create tables and grant privileges to db user---------
+CREATE TABLE stack(
+ stack_id BIGINT NOT NULL,
+ stack_name VARCHAR(255) NOT NULL,
+ stack_version VARCHAR(255) NOT NULL,
+ PRIMARY KEY (stack_id),
+ CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
+);
+
CREATE TABLE clusters (
cluster_id BIGINT NOT NULL,
resource_id BIGINT NOT NULL,
@@ -29,8 +37,9 @@ CREATE TABLE clusters (
provisioning_state VARCHAR(255) NOT NULL DEFAULT 'INIT',
security_type VARCHAR(32) NOT NULL DEFAULT 'NONE',
desired_cluster_state VARCHAR(255) NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (cluster_id));
+ desired_stack_id BIGINT NOT NULL,
+ PRIMARY KEY (cluster_id),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE clusterconfig (
config_id BIGINT NOT NULL,
@@ -38,10 +47,12 @@ CREATE TABLE clusterconfig (
version BIGINT NOT NULL,
type_name VARCHAR(255) NOT NULL,
cluster_id BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
config_data TEXT NOT NULL,
config_attributes VARCHAR(32000),
create_timestamp BIGINT NOT NULL,
- PRIMARY KEY (config_id));
+ PRIMARY KEY (config_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE clusterconfigmapping (
cluster_id BIGINT NOT NULL,
@@ -58,10 +69,12 @@ CREATE TABLE serviceconfig (
service_name VARCHAR(255) NOT NULL,
version BIGINT NOT NULL,
create_timestamp BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
user_name VARCHAR(255) NOT NULL DEFAULT '_db',
group_id BIGINT,
note TEXT,
- PRIMARY KEY (service_config_id));
+ PRIMARY KEY (service_config_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE serviceconfighosts (
service_config_id BIGINT NOT NULL,
@@ -82,9 +95,10 @@ CREATE TABLE clusterservices (
CREATE TABLE clusterstate (
cluster_id BIGINT NOT NULL,
current_cluster_state VARCHAR(255) NOT NULL,
- current_stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (cluster_id));
-
+ current_stack_id BIGINT NOT NULL,
+ PRIMARY KEY (cluster_id),
+ FOREIGN KEY (current_stack_id) REFERENCES stack(stack_id));
+
CREATE TABLE cluster_version (
id BIGINT NOT NULL,
repo_version_id BIGINT NOT NULL,
@@ -98,7 +112,7 @@ CREATE TABLE cluster_version (
CREATE TABLE hostcomponentdesiredstate (
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
host_id BIGINT NOT NULL,
service_name VARCHAR(255) NOT NULL,
@@ -106,19 +120,21 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL,
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required SMALLINT NOT NULL DEFAULT 0,
- PRIMARY KEY (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE hostcomponentstate (
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
- current_stack_version VARCHAR(255) NOT NULL,
+ current_stack_id BIGINT NOT NULL,
current_state VARCHAR(255) NOT NULL,
host_id BIGINT NOT NULL,
service_name VARCHAR(255) NOT NULL,
upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE',
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
- PRIMARY KEY (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (current_stack_id) REFERENCES stack(stack_id));
CREATE TABLE hosts (
host_id BIGINT NOT NULL,
@@ -160,20 +176,22 @@ CREATE TABLE host_version (
CREATE TABLE servicecomponentdesiredstate (
component_name VARCHAR(255) NOT NULL,
cluster_id BIGINT NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
service_name VARCHAR(255) NOT NULL,
- PRIMARY KEY (component_name, cluster_id, service_name));
+ PRIMARY KEY (component_name, cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE servicedesiredstate (
cluster_id BIGINT NOT NULL,
desired_host_role_mapping INTEGER NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
service_name VARCHAR(255) NOT NULL,
maintenance_state VARCHAR(32) NOT NULL,
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
- PRIMARY KEY (cluster_id, service_name));
+ PRIMARY KEY (cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id));
CREATE TABLE users (
user_id INTEGER,
@@ -379,9 +397,9 @@ CREATE TABLE requestschedulebatchrequest (
CREATE TABLE blueprint (
blueprint_name VARCHAR(255) NOT NULL,
- stack_name VARCHAR(255) NOT NULL,
- stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY(blueprint_name));
+ stack_id BIGINT NOT NULL,
+ PRIMARY KEY(blueprint_name),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
CREATE TABLE hostgroup (
blueprint_name VARCHAR(255) NOT NULL,
@@ -520,12 +538,13 @@ CREATE TABLE adminprivilege (
CREATE TABLE repo_version (
repo_version_id BIGINT NOT NULL,
- stack VARCHAR(255) NOT NULL,
+ stack_id BIGINT NOT NULL,
version VARCHAR(255) NOT NULL,
display_name VARCHAR(128) NOT NULL,
upgrade_package VARCHAR(255) NOT NULL,
repositories TEXT NOT NULL,
- PRIMARY KEY(repo_version_id)
+ PRIMARY KEY(repo_version_id),
+ FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
);
CREATE TABLE widget (
@@ -577,7 +596,7 @@ ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_ins
ALTER TABLE serviceconfig ADD CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version);
ALTER TABLE adminpermission ADD CONSTRAINT UQ_perm_name_resource_type_id UNIQUE (permission_name, resource_type_id);
ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_display_name UNIQUE (display_name);
-ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack, version);
+ALTER TABLE repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack_id, version);
--------altering tables by creating foreign keys----------
ALTER TABLE members ADD CONSTRAINT FK_members_group_id FOREIGN KEY (group_id) REFERENCES groups (group_id);
@@ -818,14 +837,6 @@ CREATE TABLE upgrade_item (
FOREIGN KEY (upgrade_group_id) REFERENCES upgrade_group(upgrade_group_id)
);
-CREATE TABLE stack(
- stack_id BIGINT NOT NULL,
- stack_name VARCHAR(255) NOT NULL,
- stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (stack_id),
- CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
-);
-
---------inserting some data-----------
-- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
BEGIN;
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
index 24762eb..d2edab0 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
@@ -32,6 +32,15 @@ ALTER ROLE :username SET search_path TO 'ambari';
-- Please do not remove lines that are related to this change and are being staged.
------create tables and grant privileges to db user---------
+CREATE TABLE ambari.stack(
+ stack_id BIGINT NOT NULL,
+ stack_name VARCHAR(255) NOT NULL,
+ stack_version VARCHAR(255) NOT NULL,
+ PRIMARY KEY (stack_id),
+ CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
+);
+GRANT ALL PRIVILEGES ON TABLE ambari.stack TO :username;
+
CREATE TABLE ambari.clusters (
cluster_id BIGINT NOT NULL,
resource_id BIGINT NOT NULL,
@@ -40,8 +49,9 @@ CREATE TABLE ambari.clusters (
provisioning_state VARCHAR(255) NOT NULL DEFAULT 'INIT',
security_type VARCHAR(32) NOT NULL DEFAULT 'NONE',
desired_cluster_state VARCHAR(255) NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (cluster_id));
+ desired_stack_id BIGINT NOT NULL,
+ PRIMARY KEY (cluster_id),
+ FOREIGN KEY (desired_stack_id) REFERENCES ambari.stack(stack_id));
GRANT ALL PRIVILEGES ON TABLE ambari.clusters TO :username;
CREATE TABLE ambari.clusterconfig (
@@ -50,10 +60,12 @@ CREATE TABLE ambari.clusterconfig (
version BIGINT NOT NULL,
type_name VARCHAR(255) NOT NULL,
cluster_id BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
config_data TEXT NOT NULL,
config_attributes VARCHAR(32000),
create_timestamp BIGINT NOT NULL,
- PRIMARY KEY (config_id));
+ PRIMARY KEY (config_id),
+ FOREIGN KEY (stack_id) REFERENCES ambari.stack(stack_id));
GRANT ALL PRIVILEGES ON TABLE ambari.clusterconfig TO :username;
CREATE TABLE ambari.clusterconfigmapping (
@@ -72,10 +84,12 @@ CREATE TABLE ambari.serviceconfig (
service_name VARCHAR(255) NOT NULL,
version BIGINT NOT NULL,
create_timestamp BIGINT NOT NULL,
+ stack_id BIGINT NOT NULL,
user_name VARCHAR(255) NOT NULL DEFAULT '_db',
group_id BIGINT,
note TEXT,
- PRIMARY KEY (service_config_id));
+ PRIMARY KEY (service_config_id),
+ FOREIGN KEY (stack_id) REFERENCES ambari.stack(stack_id));
GRANT ALL PRIVILEGES ON TABLE ambari.serviceconfig TO :username;
CREATE TABLE ambari.serviceconfighosts (
@@ -100,8 +114,9 @@ GRANT ALL PRIVILEGES ON TABLE ambari.clusterservices TO :username;
CREATE TABLE ambari.clusterstate (
cluster_id BIGINT NOT NULL,
current_cluster_state VARCHAR(255) NOT NULL,
- current_stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (cluster_id));
+ current_stack_id BIGINT NOT NULL,
+ PRIMARY KEY (cluster_id),
+ FOREIGN KEY (current_stack_id) REFERENCES ambari.stack(stack_id));
GRANT ALL PRIVILEGES ON TABLE ambari.clusterstate TO :username;
CREATE TABLE ambari.cluster_version (
@@ -118,7 +133,7 @@ GRANT ALL PRIVILEGES ON TABLE ambari.cluster_version TO :username;
CREATE TABLE ambari.hostcomponentdesiredstate (
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
host_id BIGINT NOT NULL,
service_name VARCHAR(255) NOT NULL,
@@ -126,20 +141,22 @@ CREATE TABLE ambari.hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL,
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required SMALLINT NOT NULL DEFAULT 0,
- PRIMARY KEY (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES ambari.stack(stack_id));
GRANT ALL PRIVILEGES ON TABLE ambari.hostcomponentdesiredstate TO :username;
CREATE TABLE ambari.hostcomponentstate (
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
- current_stack_version VARCHAR(255) NOT NULL,
+ current_stack_id BIGINT NOT NULL,
current_state VARCHAR(255) NOT NULL,
host_id BIGINT NOT NULL,
service_name VARCHAR(255) NOT NULL,
upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE',
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
- PRIMARY KEY (cluster_id, component_name, host_id, service_name));
+ PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ FOREIGN KEY (current_stack_id) REFERENCES ambari.stack(stack_id));
GRANT ALL PRIVILEGES ON TABLE ambari.hostcomponentstate TO :username;
CREATE TABLE ambari.hosts (
@@ -185,21 +202,23 @@ GRANT ALL PRIVILEGES ON TABLE ambari.host_version TO :username;
CREATE TABLE ambari.servicecomponentdesiredstate (
component_name VARCHAR(255) NOT NULL,
cluster_id BIGINT NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
service_name VARCHAR(255) NOT NULL,
- PRIMARY KEY (component_name, cluster_id, service_name));
+ PRIMARY KEY (component_name, cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES ambari.stack(stack_id));
GRANT ALL PRIVILEGES ON TABLE ambari.servicecomponentdesiredstate TO :username;
CREATE TABLE ambari.servicedesiredstate (
cluster_id BIGINT NOT NULL,
desired_host_role_mapping INTEGER NOT NULL,
- desired_stack_version VARCHAR(255) NOT NULL,
+ desired_stack_id BIGINT NOT NULL,
desired_state VARCHAR(255) NOT NULL,
service_name VARCHAR(255) NOT NULL,
maintenance_state VARCHAR(32) NOT NULL,
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
- PRIMARY KEY (cluster_id, service_name));
+ PRIMARY KEY (cluster_id, service_name),
+ FOREIGN KEY (desired_stack_id) REFERENCES ambari.stack(stack_id));
GRANT ALL PRIVILEGES ON TABLE ambari.servicedesiredstate TO :username;
CREATE TABLE ambari.users (
@@ -426,9 +445,9 @@ GRANT ALL PRIVILEGES ON TABLE ambari.requestschedulebatchrequest TO :username;
CREATE TABLE ambari.blueprint (
blueprint_name VARCHAR(255) NOT NULL,
- stack_name VARCHAR(255) NOT NULL,
- stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY(blueprint_name));
+ stack_id BIGINT NOT NULL,
+ PRIMARY KEY(blueprint_name),
+ FOREIGN KEY (stack_id) REFERENCES ambari.stack(stack_id));
CREATE TABLE ambari.hostgroup (
blueprint_name VARCHAR(255) NOT NULL,
@@ -587,12 +606,13 @@ GRANT ALL PRIVILEGES ON TABLE ambari.adminprivilege TO :username;
CREATE TABLE ambari.repo_version (
repo_version_id BIGINT NOT NULL,
- stack VARCHAR(255) NOT NULL,
+ stack_id BIGINT NOT NULL,
version VARCHAR(255) NOT NULL,
display_name VARCHAR(128) NOT NULL,
upgrade_package VARCHAR(255) NOT NULL,
repositories TEXT NOT NULL,
- PRIMARY KEY(repo_version_id)
+ PRIMARY KEY(repo_version_id),
+ FOREIGN KEY (stack_id) REFERENCES ambari.stack(stack_id)
);
GRANT ALL PRIVILEGES ON TABLE ambari.repo_version TO :username;
@@ -649,7 +669,7 @@ ALTER TABLE ambari.viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (v
ALTER TABLE ambari.serviceconfig ADD CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version);
ALTER TABLE ambari.adminpermission ADD CONSTRAINT UQ_perm_name_resource_type_id UNIQUE (permission_name, resource_type_id);
ALTER TABLE ambari.repo_version ADD CONSTRAINT UQ_repo_version_display_name UNIQUE (display_name);
-ALTER TABLE ambari.repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack, version);
+ALTER TABLE ambari.repo_version ADD CONSTRAINT UQ_repo_version_stack_version UNIQUE (stack_id, version);
--------altering tables by creating foreign keys----------
ALTER TABLE ambari.members ADD CONSTRAINT FK_members_group_id FOREIGN KEY (group_id) REFERENCES ambari.groups (group_id);
@@ -906,16 +926,6 @@ GRANT ALL PRIVILEGES ON TABLE ambari.upgrade TO :username;
GRANT ALL PRIVILEGES ON TABLE ambari.upgrade_group TO :username;
GRANT ALL PRIVILEGES ON TABLE ambari.upgrade_item TO :username;
-CREATE TABLE ambari.stack(
- stack_id BIGINT NOT NULL,
- stack_name VARCHAR(255) NOT NULL,
- stack_version VARCHAR(255) NOT NULL,
- PRIMARY KEY (stack_id),
- CONSTRAINT unq_stack UNIQUE(stack_name,stack_version)
-);
-
-GRANT ALL PRIVILEGES ON TABLE ambari.stack TO :username;
-
---------inserting some data-----------
-- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
BEGIN;
[3/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity
Relationships (jonathanhurley)
Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java
index 4837764..6a1c80d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java
@@ -18,21 +18,21 @@
package org.apache.ambari.server.orm.dao;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
-
import org.apache.ambari.server.orm.entities.ClusterEntity;
+import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
import org.apache.ambari.server.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
-import org.junit.Assert;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
/**
* ClusterVersionDAO unit tests.
@@ -57,6 +57,9 @@ public class ClusterVersionDAOTest {
ClusterVersionEntity cvC;
long cvCId = 0L;
+ private final static StackId HDP_22_STACK = new StackId("HDP", "2.2.0");
+ private final static StackId BAD_STACK = new StackId("BADSTACK", "1.0");
+
@Before
public void before() {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
@@ -76,7 +79,7 @@ public class ClusterVersionDAOTest {
clusterId = helper.createCluster();
cluster = clusterDAO.findById(clusterId);
- cvA = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
+ cvA = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.0-995"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
clusterVersionDAO.create(cvA);
cvAId = cvA.getId();
} else {
@@ -87,7 +90,7 @@ public class ClusterVersionDAOTest {
// Install B
if (currStep >= 2) {
if (lastStep <= 1) {
- cvB = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.1-998"), RepositoryVersionState.INSTALLED, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
+ cvB = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.1-998"), RepositoryVersionState.INSTALLED, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
clusterVersionDAO.create(cvB);
cvBId = cvB.getId();
} else {
@@ -106,7 +109,7 @@ public class ClusterVersionDAOTest {
// Start upgrading C
if (currStep >= 4) {
if (lastStep <= 3) {
- cvC = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-100"), RepositoryVersionState.UPGRADING, System.currentTimeMillis(), "admin");
+ cvC = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-100"), RepositoryVersionState.UPGRADING, System.currentTimeMillis(), "admin");
clusterVersionDAO.create(cvC);
cvCId = cvC.getId();
} else {
@@ -140,14 +143,21 @@ public class ClusterVersionDAOTest {
clusterVersionDAO.merge(cvB);
}
- this.lastStep = currStep;
+ lastStep = currStep;
}
@Test
public void testFindByStackAndVersion() {
createRecordsUntilStep(1);
- Assert.assertEquals(0, clusterVersionDAO.findByStackAndVersion("non existing", "non existing").size());
- Assert.assertEquals(1, clusterVersionDAO.findByStackAndVersion("HDP-2.2", "2.2.0.0-995").size());
+ Assert.assertEquals(
+ 0,
+ clusterVersionDAO.findByStackAndVersion("non existing", "non existing",
+ "non existing").size());
+
+ Assert.assertEquals(
+ 1,
+ clusterVersionDAO.findByStackAndVersion(HDP_22_STACK.getStackName(),
+ HDP_22_STACK.getStackVersion(), "2.2.0.0-995").size());
}
@Test
@@ -160,8 +170,11 @@ public class ClusterVersionDAOTest {
@Test
public void testFindByClusterAndStackAndVersion() {
createRecordsUntilStep(1);
- Assert.assertNull(clusterVersionDAO.findByClusterAndStackAndVersion(cluster.getClusterName(), "non existing", "non existing"));
- Assert.assertNotNull(clusterVersionDAO.findByClusterAndStackAndVersion(cluster.getClusterName(), "HDP-2.2", "2.2.0.0-995"));
+ Assert.assertNull(clusterVersionDAO.findByClusterAndStackAndVersion(
+ cluster.getClusterName(), BAD_STACK, "non existing"));
+
+ Assert.assertNotNull(clusterVersionDAO.findByClusterAndStackAndVersion(
+ cluster.getClusterName(), HDP_22_STACK, "2.2.0.0-995"));
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
index 304f5b6..2adbf9d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
@@ -17,11 +17,15 @@
*/
package org.apache.ambari.server.orm.dao;
-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.List;
+import java.util.Set;
+
import junit.framework.Assert;
+
import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.cache.ConfigGroupHostMapping;
@@ -33,13 +37,14 @@ import org.apache.ambari.server.orm.entities.ConfigGroupHostMappingEntity;
import org.apache.ambari.server.orm.entities.HostEntity;
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.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
public class ConfigGroupDAOTest {
private Injector injector;
@@ -49,12 +54,17 @@ public class ConfigGroupDAOTest {
private ConfigGroupHostMappingDAO configGroupHostMappingDAO;
private HostDAO hostDAO;
private ResourceTypeDAO resourceTypeDAO;
+ private StackDAO stackDAO;
@Before
public void setup() throws Exception {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
+ // required to populate the database with stacks
+ injector.getInstance(AmbariMetaInfo.class);
+
+ stackDAO = injector.getInstance(StackDAO.class);
clusterDAO = injector.getInstance(ClusterDAO.class);
configGroupDAO = injector.getInstance(ConfigGroupDAO.class);
configGroupConfigMappingDAO = injector.getInstance
@@ -83,12 +93,17 @@ public class ConfigGroupDAOTest {
resourceTypeEntity.setName(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE_NAME);
resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity);
}
+
+ StackEntity stackEntity = stackDAO.find("HDP", "0.1");
+
ResourceEntity resourceEntity = new ResourceEntity();
resourceEntity.setResourceType(resourceTypeEntity);
ClusterEntity clusterEntity = new ClusterEntity();
clusterEntity.setClusterName(clusterName);
clusterEntity.setResource(resourceEntity);
+ clusterEntity.setDesiredStack(stackEntity);
+
clusterDAO.create(clusterEntity);
configGroupEntity.setClusterEntity(clusterEntity);
@@ -104,6 +119,7 @@ public class ConfigGroupDAOTest {
ArrayList<ConfigGroupHostMappingEntity>();
for (HostEntity host : hosts) {
+ host.setClusterEntities(Arrays.asList(clusterEntity));
hostDAO.create(host);
ConfigGroupHostMappingEntity hostMappingEntity = new
@@ -213,9 +229,9 @@ public class ConfigGroupDAOTest {
.findByHost("h1");
Assert.assertNotNull(hostMappingEntities);
-
+
for (ConfigGroupHostMapping hostMappingEntity : hostMappingEntities) {
-
+
Assert.assertEquals("h1", hostMappingEntity.getHostname());
Assert.assertEquals("centOS", hostMappingEntity.getHost().getOsType());
}
@@ -223,11 +239,14 @@ public class ConfigGroupDAOTest {
@Test
public void testFindConfigsByGroup() throws Exception {
+ StackEntity stackEntity = stackDAO.find("HDP", "0.1");
+
ClusterConfigEntity configEntity = new ClusterConfigEntity();
configEntity.setType("core-site");
configEntity.setTag("version1");
configEntity.setData("someData");
configEntity.setAttributes("someAttributes");
+ configEntity.setStack(stackEntity);
List<ClusterConfigEntity> configEntities = new
ArrayList<ClusterConfigEntity>();
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
index 7568150..8777d33 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
@@ -18,9 +18,12 @@
package org.apache.ambari.server.orm.dao;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
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.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -41,18 +44,31 @@ public class CrudDAOTest {
private int uniqueCounter = 0;
private static final long FIRST_ID = 1L;
+ private static final StackId HDP_206 = new StackId("HDP", "2.0.6");
+
+ private StackDAO stackDAO;
+
@Before
public void before() {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
+ stackDAO = injector.getInstance(StackDAO.class);
repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
injector.getInstance(GuiceJpaInitializer.class);
+
+ // required to populate stacks into the database
+ injector.getInstance(AmbariMetaInfo.class);
}
private void createSingleRecord() {
+ StackEntity stackEntity = stackDAO.find(HDP_206.getStackName(),
+ HDP_206.getStackVersion());
+
+ Assert.assertNotNull(stackEntity);
+
final RepositoryVersionEntity entity = new RepositoryVersionEntity();
entity.setDisplayName("display name" + uniqueCounter);
entity.setOperatingSystems("repositories");
- entity.setStack("stack" + uniqueCounter);
+ entity.setStack(stackEntity);
entity.setUpgradePackage("upgrade package");
entity.setVersion("version");
repositoryVersionDAO.create(entity);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java
index 7cf59e9..5ae9f0c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java
@@ -18,23 +18,31 @@
package org.apache.ambari.server.orm.dao;
-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.List;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
-import org.apache.ambari.server.orm.entities.*;
+import org.apache.ambari.server.orm.entities.ClusterEntity;
+import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
+import org.apache.ambari.server.orm.entities.HostEntity;
+import org.apache.ambari.server.orm.entities.HostVersionEntity;
+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.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
/**
@@ -45,11 +53,15 @@ public class HostVersionDAOTest {
private static Injector injector;
private ResourceTypeDAO resourceTypeDAO;
private ClusterDAO clusterDAO;
+ private StackDAO stackDAO;
private ClusterVersionDAO clusterVersionDAO;
private HostDAO hostDAO;
private HostVersionDAO hostVersionDAO;
private OrmTestHelper helper;
+ private final static StackId HDP_22_STACK = new StackId("HDP", "2.2.0");
+ private final static StackId BAD_STACK = new StackId("BADSTACK", "1.0");
+
@Before
public void before() {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
@@ -57,11 +69,15 @@ public class HostVersionDAOTest {
resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
clusterDAO = injector.getInstance(ClusterDAO.class);
+ stackDAO = injector.getInstance(StackDAO.class);
clusterVersionDAO = injector.getInstance(ClusterVersionDAO.class);
hostDAO = injector.getInstance(HostDAO.class);
hostVersionDAO = injector.getInstance(HostVersionDAO.class);
helper = injector.getInstance(OrmTestHelper.class);
+ // required to populate the database with stacks
+ injector.getInstance(AmbariMetaInfo.class);
+
createDefaultData();
}
@@ -69,6 +85,9 @@ public class HostVersionDAOTest {
* Helper function to bootstrap some basic data about clusters, cluster version, host, and host versions.
*/
private void createDefaultData() {
+ StackEntity stackEntity = stackDAO.find(HDP_22_STACK.getStackName(), HDP_22_STACK.getStackVersion());
+ Assert.assertNotNull(stackEntity);
+
// Create the cluster
ResourceTypeEntity resourceTypeEntity = new ResourceTypeEntity();
resourceTypeEntity.setId(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE);
@@ -82,10 +101,15 @@ public class HostVersionDAOTest {
clusterEntity.setClusterName("test_cluster1");
clusterEntity.setClusterInfo("test_cluster_info1");
clusterEntity.setResource(resourceEntity);
+ clusterEntity.setDesiredStack(stackEntity);
+
clusterDAO.create(clusterEntity);
// Create the Cluster Version and link it to the cluster
- ClusterVersionEntity clusterVersionEntity = new ClusterVersionEntity(clusterEntity, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
+ ClusterVersionEntity clusterVersionEntity = new ClusterVersionEntity(
+ clusterEntity, helper.getOrCreateRepositoryVersion(HDP_22_STACK,
+ "2.2.0.0-995"), RepositoryVersionState.CURRENT,
+ System.currentTimeMillis(), System.currentTimeMillis(), "admin");
List<ClusterVersionEntity> clusterVersionEntities = new ArrayList<ClusterVersionEntity>();
clusterVersionEntities.add(clusterVersionEntity);
clusterEntity.setClusterVersionEntities(clusterVersionEntities);
@@ -110,7 +134,6 @@ public class HostVersionDAOTest {
hostEntities.add(host2);
hostEntities.add(host3);
- clusterEntity.setHostEntities(hostEntities);
// Both sides of relation should be set when modifying in runtime
host1.setClusterEntities(Arrays.asList(clusterEntity));
host2.setClusterEntities(Arrays.asList(clusterEntity));
@@ -119,6 +142,8 @@ public class HostVersionDAOTest {
hostDAO.create(host1);
hostDAO.create(host2);
hostDAO.create(host3);
+
+ clusterEntity.setHostEntities(hostEntities);
clusterDAO.merge(clusterEntity);
// Create the Host Versions
@@ -149,7 +174,7 @@ public class HostVersionDAOTest {
Assert.fail("Cluster is expected to have at least one cluster version");
}
- ClusterVersionEntity newClusterVersionEntity = new ClusterVersionEntity(clusterEntity, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.1-996"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
+ ClusterVersionEntity newClusterVersionEntity = new ClusterVersionEntity(clusterEntity, helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.1-996"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
clusterEntity.addClusterVersionEntity(newClusterVersionEntity);
clusterVersionDAO.create(newClusterVersionEntity);
@@ -159,7 +184,7 @@ public class HostVersionDAOTest {
// For each of the hosts, add a host version
for (HostEntity host : hostEntities) {
- HostVersionEntity hostVersionEntity = new HostVersionEntity(host.getHostName(), helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.1-996"), RepositoryVersionState.INSTALLED);
+ HostVersionEntity hostVersionEntity = new HostVersionEntity(host.getHostName(), helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.1-996"), RepositoryVersionState.INSTALLED);
hostVersionEntity.setHostEntity(host);
hostVersionDAO.create(hostVersionEntity);
}
@@ -177,7 +202,7 @@ public class HostVersionDAOTest {
desiredState = RepositoryVersionState.UPGRADE_FAILED;
}
- HostVersionEntity hostVersionEntity = new HostVersionEntity(hostEntities[i].getHostName(), helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-500"), desiredState);
+ HostVersionEntity hostVersionEntity = new HostVersionEntity(hostEntities[i].getHostName(), helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-500"), desiredState);
hostVersionEntity.setHostEntity(hostEntities[i]);
hostVersionDAO.create(hostVersionEntity);
}
@@ -212,13 +237,13 @@ public class HostVersionDAOTest {
*/
@Test
public void testFindByClusterStackAndVersion() {
- Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", "HDP-2.2", "2.2.0.0-995").size());
+ Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", HDP_22_STACK, "2.2.0.0-995").size());
Assert.assertEquals(3, hostVersionDAO.findAll().size());
addMoreVersions();
- Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", "HDP-2.2", "2.2.0.1-996").size());
- Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", "HDP-2.2", "2.2.1.0-500").size());
+ Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", HDP_22_STACK, "2.2.0.1-996").size());
+ Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", HDP_22_STACK, "2.2.1.0-500").size());
Assert.assertEquals(9, hostVersionDAO.findAll().size());
}
@@ -264,37 +289,37 @@ public class HostVersionDAOTest {
*/
@Test
public void testFindByClusterStackVersionAndHost() {
- HostVersionEntity hostVersionEntity1 = new HostVersionEntity("test_host1", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.CURRENT);
+ HostVersionEntity hostVersionEntity1 = new HostVersionEntity("test_host1", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.0-995"), RepositoryVersionState.CURRENT);
hostVersionEntity1.setId(1L);
hostVersionEntity1.setHostEntity(hostDAO.findByName("test_host1"));
- HostVersionEntity hostVersionEntity2 = new HostVersionEntity("test_host2", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.INSTALLED);
+ HostVersionEntity hostVersionEntity2 = new HostVersionEntity("test_host2", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.0-995"), RepositoryVersionState.INSTALLED);
hostVersionEntity2.setId(2L);
hostVersionEntity2.setHostEntity(hostDAO.findByName("test_host2"));
- HostVersionEntity hostVersionEntity3 = new HostVersionEntity("test_host3", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.INSTALLED);
+ HostVersionEntity hostVersionEntity3 = new HostVersionEntity("test_host3", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.0-995"), RepositoryVersionState.INSTALLED);
hostVersionEntity3.setId(3L);
hostVersionEntity3.setHostEntity(hostDAO.findByName("test_host3"));
- Assert.assertEquals(hostVersionEntity1, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.0.0-995", "test_host1"));
- Assert.assertEquals(hostVersionEntity2, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.0.0-995", "test_host2"));
- Assert.assertEquals(hostVersionEntity3, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.0.0-995", "test_host3"));
+ Assert.assertEquals(hostVersionEntity1, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.0.0-995", "test_host1"));
+ Assert.assertEquals(hostVersionEntity2, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.0.0-995", "test_host2"));
+ Assert.assertEquals(hostVersionEntity3, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.0.0-995", "test_host3"));
// Test non-existent objects
- Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("non_existent_cluster", "HDP-2.2", "2.2.0.0-995", "test_host3"));
- Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "non_existent_stack", "2.2.0.0-995", "test_host3"));
- Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "non_existent_version", "test_host3"));
- Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "non_existent_version", "non_existent_host"));
+ Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("non_existent_cluster", HDP_22_STACK, "2.2.0.0-995", "test_host3"));
+ Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", BAD_STACK, "2.2.0.0-995", "test_host3"));
+ Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "non_existent_version", "test_host3"));
+ Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "non_existent_version", "non_existent_host"));
addMoreVersions();
// Expected
- HostVersionEntity hostVersionEntity1LastExpected = new HostVersionEntity("test_host1", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-500"), RepositoryVersionState.INSTALLED);
- HostVersionEntity hostVersionEntity2LastExpected = new HostVersionEntity("test_host2", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-500"), RepositoryVersionState.UPGRADING);
- HostVersionEntity hostVersionEntity3LastExpected = new HostVersionEntity("test_host3", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-500"), RepositoryVersionState.UPGRADE_FAILED);
+ HostVersionEntity hostVersionEntity1LastExpected = new HostVersionEntity("test_host1", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-500"), RepositoryVersionState.INSTALLED);
+ HostVersionEntity hostVersionEntity2LastExpected = new HostVersionEntity("test_host2", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-500"), RepositoryVersionState.UPGRADING);
+ HostVersionEntity hostVersionEntity3LastExpected = new HostVersionEntity("test_host3", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-500"), RepositoryVersionState.UPGRADE_FAILED);
// Actual
- HostVersionEntity hostVersionEntity1LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.1.0-500", "test_host1");
- HostVersionEntity hostVersionEntity2LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.1.0-500", "test_host2");
- HostVersionEntity hostVersionEntity3LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.1.0-500", "test_host3");
+ HostVersionEntity hostVersionEntity1LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.1.0-500", "test_host1");
+ HostVersionEntity hostVersionEntity2LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.1.0-500", "test_host2");
+ HostVersionEntity hostVersionEntity3LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.1.0-500", "test_host3");
// Trying to Mock the actual objects to override the getId() method will not work because the class that mockito creates
// is still a Mockito wrapper. Instead, take advantage of an overloaded constructor that ignores the Id.
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
index 09c8453..9a4ee5c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
@@ -18,32 +18,40 @@
package org.apache.ambari.server.orm.dao;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
import org.apache.ambari.server.orm.entities.ClusterEntity;
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.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
+
/**
* RepositoryVersionDAO unit tests.
*/
public class RepositoryVersionDAOTest {
private static Injector injector;
+
+ private static final StackId HDP_206 = new StackId("HDP", "2.0.6");
+ private static final StackId BAD_STACK = new StackId("BADSTACK", "1.0");
+
private RepositoryVersionDAO repositoryVersionDAO;
private ClusterVersionDAO clusterVersionDAO;
- private HostVersionDAO hostVersionDAO;
-
+
private ClusterDAO clusterDAO;
+ private StackDAO stackDAO;
private OrmTestHelper helper;
@Before
@@ -51,17 +59,25 @@ public class RepositoryVersionDAOTest {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
clusterVersionDAO = injector.getInstance(ClusterVersionDAO.class);
- hostVersionDAO = injector.getInstance(HostVersionDAO.class);
clusterDAO = injector.getInstance(ClusterDAO.class);
- helper = injector.getInstance(OrmTestHelper.class);
+ stackDAO = injector.getInstance(StackDAO.class);
+ helper = injector.getInstance(OrmTestHelper.class);
injector.getInstance(GuiceJpaInitializer.class);
+
+ // required to populate stacks into the database
+ injector.getInstance(AmbariMetaInfo.class);
}
private void createSingleRecord() {
+ StackEntity stackEntity = stackDAO.find(HDP_206.getStackName(),
+ HDP_206.getStackVersion());
+
+ Assert.assertNotNull(stackEntity);
+
final RepositoryVersionEntity entity = new RepositoryVersionEntity();
entity.setDisplayName("display name");
entity.setOperatingSystems("repositories");
- entity.setStack("stack");
+ entity.setStack(stackEntity);
entity.setUpgradePackage("upgrade package");
entity.setVersion("version");
repositoryVersionDAO.create(entity);
@@ -77,49 +93,58 @@ public class RepositoryVersionDAOTest {
@Test
public void testFindByStackAndVersion() {
createSingleRecord();
- Assert.assertNull(repositoryVersionDAO.findByStackAndVersion("non existing", "non existing"));
- Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion("stack", "version"));
+ Assert.assertNull(repositoryVersionDAO.findByStackAndVersion(BAD_STACK,
+ "non existing"));
+ Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,
+ "version"));
}
@Test
public void testFindByStack() {
createSingleRecord();
- Assert.assertEquals(0, repositoryVersionDAO.findByStack("non existing").size());
- Assert.assertEquals(1, repositoryVersionDAO.findByStack("stack").size());
+ Assert.assertEquals(0, repositoryVersionDAO.findByStack(BAD_STACK).size());
+ Assert.assertEquals(1, repositoryVersionDAO.findByStack(HDP_206).size());
}
@Test
public void testDelete() {
createSingleRecord();
- Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion("stack", "version"));
- final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion("stack", "version");
+ Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,
+ "version"));
+
+ final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion(
+ HDP_206, "version");
+
repositoryVersionDAO.remove(entity);
- Assert.assertNull(repositoryVersionDAO.findByStackAndVersion("stack", "version"));
- }
+ Assert.assertNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,
+ "version"));
+ }
@Test
- public void testDeleteCascade() {
+ public void testDeleteCascade() {
long clusterId = helper.createCluster();
ClusterEntity cluster = clusterDAO.findById(clusterId);
createSingleRecord();
- final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion("stack", "version");
-
+ final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion(
+ HDP_206, "version");
+
ClusterVersionEntity cvA = new ClusterVersionEntity(cluster, entity, RepositoryVersionState.INSTALLED, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
clusterVersionDAO.create(cvA);
long cvAId = cvA.getId();
cvA = clusterVersionDAO.findByPK(cvAId);
Assert.assertNotNull(cvA.getRepositoryVersion());
- final RepositoryVersionEntity newEntity = repositoryVersionDAO.findByStackAndVersion("stack", "version");
+ final RepositoryVersionEntity newEntity = repositoryVersionDAO.findByStackAndVersion(
+ HDP_206, "version");
try {
repositoryVersionDAO.remove(newEntity);
} catch (Exception e) {
//Cascade deletion will fail because absent integrity in in-memory DB
Assert.assertNotNull(clusterVersionDAO.findByPK(cvAId));
- }
+ }
//
-
- }
-
+
+ }
+
@After
public void after() {
injector.getInstance(PersistService.class).stop();
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java
index 8ca53f7..7ebcdf9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java
@@ -28,6 +28,7 @@ import org.apache.ambari.server.AmbariException;
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.controller.internal.CalculatedStatus;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
@@ -54,15 +55,16 @@ import com.google.inject.persist.PersistService;
public class RequestDAOTest {
private Injector injector;
private ClusterDAO clusterDAO;
- StageDAO stageDAO;
- HostRoleCommandDAO hostRoleCommandDAO;
- HostDAO hostDAO;
- RequestDAO requestDAO;
+ private StageDAO stageDAO;
+ private HostRoleCommandDAO hostRoleCommandDAO;
+ private HostDAO hostDAO;
+ private RequestDAO requestDAO;
@Before
public void setup() throws Exception {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
+ injector.getInstance(AmbariMetaInfo.class);
clusterDAO = injector.getInstance(ClusterDAO.class);
stageDAO = injector.getInstance(StageDAO.class);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java
index b3a3ef2..75b937c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java
@@ -17,11 +17,12 @@
*/
package org.apache.ambari.server.orm.dao;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import java.util.List;
+
import junit.framework.Assert;
+
import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.entities.ClusterEntity;
@@ -30,12 +31,15 @@ import org.apache.ambari.server.orm.entities.RequestScheduleBatchRequestEntity;
import org.apache.ambari.server.orm.entities.RequestScheduleEntity;
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.state.scheduler.BatchRequest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.util.List;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
public class RequestScheduleDAOTest {
private Injector injector;
@@ -53,6 +57,9 @@ public class RequestScheduleDAOTest {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
+ // required to load stacks into the DB
+ injector.getInstance(AmbariMetaInfo.class);
+
clusterDAO = injector.getInstance(ClusterDAO.class);
hostDAO = injector.getInstance(HostDAO.class);
clusterDAO = injector.getInstance(ClusterDAO.class);
@@ -77,12 +84,18 @@ public class RequestScheduleDAOTest {
resourceTypeEntity.setName(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE_NAME);
resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity);
}
+
+ StackDAO stackDAO = injector.getInstance(StackDAO.class);
+ StackEntity stackEntity = stackDAO.find("HDP", "2.2.0");
+
ResourceEntity resourceEntity = new ResourceEntity();
resourceEntity.setResourceType(resourceTypeEntity);
ClusterEntity clusterEntity = new ClusterEntity();
clusterEntity.setClusterName("c1");
clusterEntity.setResource(resourceEntity);
+ clusterEntity.setDesiredStack(stackEntity);
+
clusterDAO.create(clusterEntity);
scheduleEntity.setClusterEntity(clusterEntity);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
index 5118156..3cde243 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
@@ -17,45 +17,46 @@
*/
package org.apache.ambari.server.orm.dao;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import java.util.List;
+import java.util.Map;
+
import junit.framework.Assert;
+
import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
-import org.apache.ambari.server.orm.cache.ConfigGroupHostMapping;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
import org.apache.ambari.server.orm.entities.ClusterEntity;
-import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntity;
-import org.apache.ambari.server.orm.entities.ConfigGroupEntity;
-import org.apache.ambari.server.orm.entities.ConfigGroupHostMappingEntity;
-import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.orm.entities.ResourceEntity;
import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
import org.apache.ambari.server.orm.entities.ServiceConfigEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
public class ServiceConfigDAOTest {
private Injector injector;
private ServiceConfigDAO serviceConfigDAO;
private ClusterDAO clusterDAO;
private ResourceTypeDAO resourceTypeDAO;
-
+ private StackDAO stackDAO;
@Before
public void setup() throws Exception {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
+ // required to load stack information into the DB
+ injector.getInstance(AmbariMetaInfo.class);
+
clusterDAO = injector.getInstance(ClusterDAO.class);
+ stackDAO = injector.getInstance(StackDAO.class);
serviceConfigDAO = injector.getInstance(ServiceConfigDAO.class);
resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
}
@@ -78,6 +79,9 @@ public class ServiceConfigDAOTest {
resourceTypeEntity.setName(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE_NAME);
resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity);
}
+
+ StackEntity stackEntity = stackDAO.find("HDP", "0.1");
+
ResourceEntity resourceEntity = new ResourceEntity();
resourceEntity.setResourceType(resourceTypeEntity);
@@ -86,6 +90,8 @@ public class ServiceConfigDAOTest {
clusterEntity = new ClusterEntity();
clusterEntity.setClusterName("c1");
clusterEntity.setResource(resourceEntity);
+ clusterEntity.setDesiredStack(stackEntity);
+
clusterDAO.create(clusterEntity);
}
@@ -98,6 +104,7 @@ public class ServiceConfigDAOTest {
serviceConfigEntity.setCreateTimestamp(createTimestamp);
serviceConfigEntity.setClusterConfigEntities(clusterConfigEntities);
serviceConfigEntity.setClusterEntity(clusterEntity);
+ serviceConfigEntity.setStack(clusterEntity.getDesiredStack());
serviceConfigDAO.create(serviceConfigEntity);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
index b965554..2587f6d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
@@ -18,12 +18,13 @@
package org.apache.ambari.server.orm.entities;
-import com.google.gson.Gson;
-
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
-import org.apache.ambari.server.state.PropertyInfo;
-import org.apache.ambari.server.state.ServiceInfo;
-import org.junit.Test;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Collection;
@@ -34,18 +35,28 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.state.PropertyInfo;
+import org.apache.ambari.server.state.ServiceInfo;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.gson.Gson;
/**
* BlueprintEntity unit tests
*/
public class BlueprintEntityTest {
+
+ private StackEntity stackEntity = new StackEntity();
+
+ @Before
+ public void setup() {
+ stackEntity = new StackEntity();
+ stackEntity.setStackName("HDP");
+ stackEntity.setStackVersion("2.0.6");
+ }
+
@Test
public void testSetGetBlueprintName() {
BlueprintEntity entity = new BlueprintEntity();
@@ -54,17 +65,10 @@ public class BlueprintEntityTest {
}
@Test
- public void testSetGetStackName() {
- BlueprintEntity entity = new BlueprintEntity();
- entity.setStackName("foo");
- assertEquals("foo", entity.getStackName());
- }
-
- @Test
- public void testSetGetStackVersion() {
+ public void testSetGetStack() {
BlueprintEntity entity = new BlueprintEntity();
- entity.setStackVersion("1");
- assertEquals("1", entity.getStackVersion());
+ entity.setStack(stackEntity);
+ assertEquals(stackEntity, entity.getStack());
}
@Test
@@ -104,8 +108,7 @@ public class BlueprintEntityTest {
service.getProperties().addAll(serviceProperties);
BlueprintEntity entity = new BlueprintEntity();
- entity.setStackName("stackName");
- entity.setStackVersion("version");
+ entity.setStack(stackEntity);
Collection<BlueprintConfigEntity> configurations = new HashSet<BlueprintConfigEntity>();
BlueprintConfigEntity configEntity = new BlueprintConfigEntity();
@@ -137,8 +140,8 @@ public class BlueprintEntityTest {
hostGroupEntities.add(hostGroupEntity);
entity.setHostGroups(hostGroupEntities);
- expect(metaInfo.getComponentToService("stackName", "version", "component1")).andReturn("service1");
- expect(metaInfo.getService("stackName", "version", "service1")).andReturn(service);
+ expect(metaInfo.getComponentToService("HDP", "2.0.6", "component1")).andReturn("service1");
+ expect(metaInfo.getService("HDP", "2.0.6", "service1")).andReturn(service);
replay(metaInfo);
@@ -169,8 +172,7 @@ public class BlueprintEntityTest {
service.getProperties().addAll(serviceProperties);
BlueprintEntity entity = new BlueprintEntity();
- entity.setStackName("stackName");
- entity.setStackVersion("version");
+ entity.setStack(stackEntity);
entity.setConfigurations(Collections.<BlueprintConfigEntity>emptyList());
@@ -203,8 +205,8 @@ public class BlueprintEntityTest {
hostGroupEntities.add(hostGroupEntity);
entity.setHostGroups(hostGroupEntities);
- expect(metaInfo.getComponentToService("stackName", "version", "component1")).andReturn("service1");
- expect(metaInfo.getService("stackName", "version", "service1")).andReturn(service);
+ expect(metaInfo.getComponentToService("HDP", "2.0.6", "component1")).andReturn("service1");
+ expect(metaInfo.getService("HDP", "2.0.6", "service1")).andReturn(service);
replay(metaInfo);
@@ -247,8 +249,7 @@ public class BlueprintEntityTest {
service.getProperties().addAll(serviceProperties);
BlueprintEntity entity = new BlueprintEntity();
- entity.setStackName("stackName");
- entity.setStackVersion("version");
+ entity.setStack(stackEntity);
Collection<BlueprintConfigEntity> configurations = new HashSet<BlueprintConfigEntity>();
BlueprintConfigEntity configEntity = new BlueprintConfigEntity();
@@ -280,8 +281,9 @@ public class BlueprintEntityTest {
hostGroupEntities.add(hostGroupEntity);
entity.setHostGroups(hostGroupEntities);
- expect(metaInfo.getComponentToService("stackName", "version", "component1")).andReturn("service1");
- expect(metaInfo.getService("stackName", "version", "service1")).andReturn(service);
+ expect(metaInfo.getComponentToService("HDP", "2.0.6", "component1")).andReturn(
+ "service1");
+ expect(metaInfo.getService("HDP", "2.0.6", "service1")).andReturn(service);
replay(metaInfo);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
index 41050c6..8743142 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
@@ -117,9 +117,8 @@ public class ExecutionScheduleManagerTest {
requestExecutionFactory = injector.getInstance(RequestExecutionFactory.class);
clusterName = "c1";
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, new StackId("HDP-0.1"));
cluster = clusters.getCluster(clusterName);
- cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
Assert.assertNotNull(cluster);
assertThat(executionScheduler, instanceOf(TestExecutionScheduler.class));
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
index 87dd18b..df65319 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
@@ -39,8 +39,10 @@ import org.apache.ambari.server.orm.dao.ClusterVersionDAO;
import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.HostVersionDAO;
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.HostVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Host;
@@ -84,13 +86,11 @@ public class UpgradeActionTest {
String clusterName = "c1";
String hostName = "h1";
- Clusters clusters = m_injector.getInstance(Clusters.class);
- clusters.addCluster(clusterName);
-
StackId stackId = new StackId("HDP-2.1.1");
+ Clusters clusters = m_injector.getInstance(Clusters.class);
+ clusters.addCluster(clusterName, stackId);
Cluster c = clusters.getCluster(clusterName);
- c.setDesiredStackVersion(stackId);
// add a host component
clusters.addHost(hostName);
@@ -106,20 +106,23 @@ public class UpgradeActionTest {
OrmTestHelper helper = m_injector.getInstance(OrmTestHelper.class);
- helper.getOrCreateRepositoryVersion(stackId.getStackId(), DOWNGRADE_VERSION);
- helper.getOrCreateRepositoryVersion(stackId.getStackId(), UPGRADE_VERSION);
+ helper.getOrCreateRepositoryVersion(stackId, DOWNGRADE_VERSION);
+ helper.getOrCreateRepositoryVersion(stackId, UPGRADE_VERSION);
RepositoryVersionDAO repoVersionDao = m_injector.getInstance(RepositoryVersionDAO.class);
HostVersionDAO hostVersionDao = m_injector.getInstance(HostVersionDAO.class);
- c.createClusterVersion(stackId.getStackId(), DOWNGRADE_VERSION, "admin",
+ c.createClusterVersion(stackId, DOWNGRADE_VERSION, "admin",
RepositoryVersionState.UPGRADING);
- c.createClusterVersion(stackId.getStackId(), UPGRADE_VERSION, "admin",
+ c.createClusterVersion(stackId, UPGRADE_VERSION, "admin",
RepositoryVersionState.INSTALLING);
- c.transitionClusterVersion(stackId.getStackId(), DOWNGRADE_VERSION, RepositoryVersionState.CURRENT);
- c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.INSTALLED);
- c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.UPGRADING);
+ c.transitionClusterVersion(stackId, DOWNGRADE_VERSION,
+ RepositoryVersionState.CURRENT);
+ c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+ RepositoryVersionState.INSTALLED);
+ c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+ RepositoryVersionState.UPGRADING);
c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
RepositoryVersionState.CURRENT);
@@ -129,8 +132,8 @@ public class UpgradeActionTest {
HostVersionEntity entity = new HostVersionEntity();
entity.setHostEntity(hostDAO.findByName(hostName));
entity.setHostName(hostName);
- entity.setRepositoryVersion(
- repoVersionDao.findByStackAndVersion(stackId.getStackId(), UPGRADE_VERSION));
+ entity.setRepositoryVersion(repoVersionDao.findByStackAndVersion(stackId,
+ UPGRADE_VERSION));
entity.setState(RepositoryVersionState.UPGRADING);
hostVersionDao.create(entity);
}
@@ -139,10 +142,15 @@ public class UpgradeActionTest {
String clusterName = "c1";
String hostName = "h1";
+ StackId stackId = new StackId("HDP-2.1.1");
Clusters clusters = m_injector.getInstance(Clusters.class);
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, stackId);
- StackId stackId = new StackId("HDP-2.1.1");
+ StackDAO stackDAO = m_injector.getInstance(StackDAO.class);
+ StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+ stackId.getStackVersion());
+
+ assertNotNull(stackEntity);
Cluster c = clusters.getCluster(clusterName);
c.setDesiredStackVersion(stackId);
@@ -165,24 +173,28 @@ public class UpgradeActionTest {
"{'Repositories/base_url':'http://foo1','Repositories/repo_name':'HDP','Repositories/repo_id':'HDP-2.1.1'}" +
"], 'OperatingSystems/os_type':'redhat6'}]";
- helper.getOrCreateRepositoryVersion(stackId.getStackId(), DOWNGRADE_VERSION);
-// helper.getOrCreateRepositoryVersion(stackId.getStackId(), UPGRADE_VERSION);
- repositoryVersionDAO.create(
- stackId.getStackId (), UPGRADE_VERSION, String.valueOf(System.currentTimeMillis()), "pack",
+ helper.getOrCreateRepositoryVersion(stackId, DOWNGRADE_VERSION);
+
+ repositoryVersionDAO.create(stackEntity, UPGRADE_VERSION,
+ String.valueOf(System.currentTimeMillis()), "pack",
urlInfo);
RepositoryVersionDAO repoVersionDao = m_injector.getInstance(RepositoryVersionDAO.class);
HostVersionDAO hostVersionDao = m_injector.getInstance(HostVersionDAO.class);
- c.createClusterVersion(stackId.getStackId(), DOWNGRADE_VERSION, "admin",
+ c.createClusterVersion(stackId, DOWNGRADE_VERSION, "admin",
RepositoryVersionState.UPGRADING);
- c.createClusterVersion(stackId.getStackId(), UPGRADE_VERSION, "admin",
+ c.createClusterVersion(stackId, UPGRADE_VERSION, "admin",
RepositoryVersionState.INSTALLING);
- c.transitionClusterVersion(stackId.getStackId(), DOWNGRADE_VERSION, RepositoryVersionState.CURRENT);
- c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.INSTALLED);
- c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.UPGRADING);
- c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.UPGRADED);
+ c.transitionClusterVersion(stackId, DOWNGRADE_VERSION,
+ RepositoryVersionState.CURRENT);
+ c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+ RepositoryVersionState.INSTALLED);
+ c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+ RepositoryVersionState.UPGRADING);
+ c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+ RepositoryVersionState.UPGRADED);
c.setCurrentStackVersion(stackId);
c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
@@ -193,8 +205,8 @@ public class UpgradeActionTest {
HostVersionEntity entity = new HostVersionEntity();
entity.setHostEntity(hostDAO.findByName(hostName));
entity.setHostName(hostName);
- entity.setRepositoryVersion(
- repoVersionDao.findByStackAndVersion(stackId.getStackId(), UPGRADE_VERSION));
+ entity.setRepositoryVersion(repoVersionDao.findByStackAndVersion(stackId,
+ UPGRADE_VERSION));
entity.setState(RepositoryVersionState.UPGRADED);
hostVersionDao.create(entity);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java
index 4d4d674..28059c0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java
@@ -71,9 +71,8 @@ public class ConfigGroupTest {
(ConfigGroupHostMappingDAO.class);
clusterName = "foo";
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, new StackId("HDP-0.1"));
cluster = clusters.getCluster(clusterName);
- cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
Assert.assertNotNull(cluster);
clusters.addHost("h1");
clusters.addHost("h2");
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
index 751583e..930e45f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
@@ -94,9 +94,8 @@ public class ConfigHelperTest {
managementController = injector.getInstance(AmbariManagementController.class);
clusterName = "c1";
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, new StackId("HDP-2.0.6"));
cluster = clusters.getCluster(clusterName);
- cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
Assert.assertNotNull(cluster);
clusters.addHost("h1");
clusters.addHost("h2");
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java
index abbee45..46dcc8d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java
@@ -65,9 +65,8 @@ public class RequestExecutionTest {
requestScheduleDAO = injector.getInstance(RequestScheduleDAO.class);
clusterName = "foo";
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, new StackId("HDP-0.1"));
cluster = clusters.getCluster(clusterName);
- cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
Assert.assertNotNull(cluster);
clusters.addHost("h1");
clusters.addHost("h2");
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
index 00894f1..96bbb1d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
@@ -82,13 +82,16 @@ public class ServiceComponentTest {
clusterName = "foo";
serviceName = "HDFS";
- clusters.addCluster(clusterName);
- cluster = clusters.getCluster(clusterName);
+
StackId stackId = new StackId("HDP-0.1");
+ clusters.addCluster(clusterName, stackId);
+ cluster = clusters.getCluster(clusterName);
+
cluster.setDesiredStackVersion(stackId);
Assert.assertNotNull(cluster);
- 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);
Service s = serviceFactory.createNew(cluster, serviceName);
cluster.addService(s);
@@ -140,8 +143,8 @@ public class ServiceComponentTest {
sc.setDesiredState(State.INSTALLED);
Assert.assertEquals(State.INSTALLED, sc.getDesiredState());
- sc.setDesiredStackVersion(new StackId("HDP-1.0.0"));
- Assert.assertEquals("HDP-1.0.0", sc.getDesiredStackVersion().getStackId());
+ sc.setDesiredStackVersion(new StackId("HDP-1.2.0"));
+ Assert.assertEquals("HDP-1.2.0", sc.getDesiredStackVersion().getStackId());
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO =
injector.getInstance(ServiceComponentDesiredStateDAO.class);
@@ -159,7 +162,7 @@ public class ServiceComponentTest {
serviceComponentDesiredStateEntity);
Assert.assertNotNull(sc1);
Assert.assertEquals(State.INSTALLED, sc1.getDesiredState());
- Assert.assertEquals("HDP-1.0.0",
+ Assert.assertEquals("HDP-1.2.0",
sc1.getDesiredStackVersion().getStackId());
}
@@ -256,9 +259,9 @@ public class ServiceComponentTest {
sch3.persist();
Assert.assertNotNull(sc.getServiceComponentHost("h3"));
- sch1.setDesiredStackVersion(new StackId("HDP-1.1.0"));
+ sch1.setDesiredStackVersion(new StackId("HDP-1.2.0"));
sch1.setState(State.STARTING);
- sch1.setStackVersion(new StackId("HDP-1.0.0"));
+ sch1.setStackVersion(new StackId("HDP-1.2.0"));
sch1.setDesiredState(State.STARTED);
HostComponentDesiredStateDAO desiredStateDAO = injector.getInstance(
@@ -290,9 +293,9 @@ public class ServiceComponentTest {
Assert.assertNotNull(sch);
Assert.assertEquals(State.STARTING, sch.getState());
Assert.assertEquals(State.STARTED, sch.getDesiredState());
- Assert.assertEquals("HDP-1.0.0",
+ Assert.assertEquals("HDP-1.2.0",
sch.getStackVersion().getStackId());
- Assert.assertEquals("HDP-1.1.0",
+ Assert.assertEquals("HDP-1.2.0",
sch.getDesiredStackVersion().getStackId());
}
@@ -319,7 +322,7 @@ public class ServiceComponentTest {
ServiceComponent sc = service.getServiceComponent(componentName);
Assert.assertNotNull(sc);
sc.setDesiredState(State.INSTALLED);
- sc.setDesiredStackVersion(new StackId("HDP-1.0.0"));
+ sc.setDesiredStackVersion(new StackId("HDP-1.2.0"));
ServiceComponentResponse r = sc.convertToResponse();
Assert.assertEquals(sc.getClusterName(), r.getClusterName());
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java
index 552edec..ccceac9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java
@@ -63,9 +63,8 @@ public class ServiceTest {
ServiceComponentFactory.class);
metaInfo = injector.getInstance(AmbariMetaInfo.class);
clusterName = "foo";
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, new StackId("HDP-0.1"));
cluster = clusters.getCluster(clusterName);
- cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
Assert.assertNotNull(cluster);
}
@@ -104,8 +103,8 @@ public class ServiceTest {
Service service = cluster.getService(serviceName);
Assert.assertNotNull(service);
- service.setDesiredStackVersion(new StackId("HDP-1.1.0"));
- Assert.assertEquals("HDP-1.1.0",
+ service.setDesiredStackVersion(new StackId("HDP-1.2.0"));
+ Assert.assertEquals("HDP-1.2.0",
service.getDesiredStackVersion().getStackId());
service.setDesiredState(State.INSTALLING);
@@ -210,7 +209,7 @@ public class ServiceTest {
Assert.assertEquals(s.getDesiredState().toString(),
r.getDesiredState());
- service.setDesiredStackVersion(new StackId("HDP-1.1.0"));
+ service.setDesiredStackVersion(new StackId("HDP-1.2.0"));
service.setDesiredState(State.INSTALLING);
r = s.convertToResponse();
Assert.assertEquals(s.getName(), r.getServiceName());
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
index e05d16e..9c129e8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
@@ -536,16 +536,17 @@ public class UpgradeHelperTest {
String clusterName = "c1";
- clusters.addCluster(clusterName);
-
+ StackId stackId = new StackId("HDP-2.1.1");
+ clusters.addCluster(clusterName, stackId);
Cluster c = clusters.getCluster(clusterName);
- c.setDesiredStackVersion(new StackId("HDP-2.1.1"));
- helper.getOrCreateRepositoryVersion(c.getDesiredStackVersion().getStackName(),
+ helper.getOrCreateRepositoryVersion(stackId,
c.getDesiredStackVersion().getStackVersion());
- c.createClusterVersion(c.getDesiredStackVersion().getStackName(),
- c.getDesiredStackVersion().getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+ c.createClusterVersion(stackId,
+ c.getDesiredStackVersion().getStackVersion(), "admin",
+ RepositoryVersionState.UPGRADING);
+
for (int i = 0; i < 4; i++) {
String hostName = "h" + (i+1);
clusters.addHost(hostName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
index 1c4567f..d1b27a9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
@@ -93,9 +93,8 @@ public class AlertEventPublisherTest {
aggregateMapping = injector.getInstance(AggregateDefinitionMapping.class);
clusterName = "foo";
- clusters.addCluster(clusterName);
+ clusters.addCluster(clusterName, new StackId("HDP", "2.0.6"));
cluster = clusters.getCluster(clusterName);
- cluster.setDesiredStackVersion(new StackId("HDP", "2.0.6"));
Assert.assertNotNull(cluster);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
index 73bf6c4..f3694c9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
@@ -91,9 +91,8 @@ public class InitialAlertEventTest {
m_alertsDao = m_injector.getInstance(AlertsDAO.class);
m_clusterName = "c1";
- m_clusters.addCluster(m_clusterName);
+ m_clusters.addCluster(m_clusterName, new StackId("HDP", "2.0.6"));
m_cluster = m_clusters.getCluster(m_clusterName);
- m_cluster.setDesiredStackVersion(new StackId("HDP", "2.0.6"));
Assert.assertNotNull(m_cluster);
// install HDFS to get 6 definitions
http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
index ff039a9..2f064ab 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.ServiceComponentNotFoundException;
import org.apache.ambari.server.ServiceNotFoundException;
+import org.apache.ambari.server.events.listeners.upgrade.HostVersionOutOfSyncListener;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
@@ -43,15 +44,19 @@ import org.apache.ambari.server.state.ServiceComponentHostFactory;
import org.apache.ambari.server.state.ServiceFactory;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
+import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
+import com.google.inject.Module;
import com.google.inject.persist.PersistService;
+import com.google.inject.util.Modules;
/**
* Tests AMBARI-9368 and AMBARI-9761 which produced a deadlock during read and
@@ -100,14 +105,15 @@ public class ClusterDeadlockTest {
*/
@Before
public void setup() throws Exception {
- injector = Guice.createInjector(new InMemoryDefaultTestModule());
+ injector = Guice.createInjector(Modules.override(
+ new InMemoryDefaultTestModule()).with(new MockModule()));
+
injector.getInstance(GuiceJpaInitializer.class);
injector.injectMembers(this);
- clusters.addCluster("c1");
+ clusters.addCluster("c1", stackId);
cluster = clusters.getCluster("c1");
- cluster.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
- cluster.createClusterVersion(stackId.getStackName(),
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ cluster.createClusterVersion(stackId,
stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
// 100 hosts
@@ -199,7 +205,7 @@ public class ClusterDeadlockTest {
*
* @throws Exception
*/
- @Test(timeout = 60000)
+ @Test(timeout = 75000)
public void testDeadlockWhileRestartingComponents() throws Exception {
// for each host, install both components
List<ServiceComponentHost> serviceComponentHosts = new ArrayList<ServiceComponentHost>();
@@ -509,4 +515,20 @@ public class ClusterDeadlockTest {
return serviceComponent;
}
+
+ /**
+ *
+ */
+ private class MockModule implements Module {
+ /**
+ *
+ */
+ @Override
+ public void configure(Binder binder) {
+ // this listener gets in the way of actually testing the concurrency
+ // between the threads; it slows them down too much, so mock it out
+ binder.bind(HostVersionOutOfSyncListener.class).toInstance(
+ EasyMock.createNiceMock(HostVersionOutOfSyncListener.class));
+ }
+ }
}