AMBARI-22614. Fix unit tests in feature branch to make them 
workable.(vbrodetskyi)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/481175d1
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/481175d1
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/481175d1

Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 481175d129d110a8529aa7a9d45735e97dc41ca5
Parents: bfeaa10
Author: Vitaly Brodetskyi <[email protected]>
Authored: Thu Dec 14 16:28:42 2017 +0200
Committer: Vitaly Brodetskyi <[email protected]>
Committed: Thu Dec 14 16:29:51 2017 +0200

----------------------------------------------------------------------
 .../ComponentVersionAlertRunnableTest.java      |  2 +
 .../api/query/render/DefaultRendererTest.java   |  4 +-
 .../api/query/render/MinimalRendererTest.java   |  4 +-
 .../server/checks/ServicesUpCheckTest.java      |  6 +--
 .../AmbariCustomCommandExecutionHelperTest.java | 53 +++++++++++---------
 .../server/controller/AmbariServerTest.java     |  3 ++
 .../server/controller/KerberosHelperTest.java   |  3 ++
 ...hYarnCapacitySchedulerReleaseConfigTest.java |  7 +--
 .../ActiveWidgetLayoutResourceProviderTest.java |  4 ++
 .../ClientConfigResourceProviderTest.java       | 10 ++--
 ...ClusterStackVersionResourceProviderTest.java | 23 +++++++++
 .../internal/ComponentResourceProviderTest.java |  7 +--
 .../HostComponentResourceProviderTest.java      |  1 +
 .../internal/JMXHostProviderTest.java           |  6 ++-
 .../RepositoryVersionResourceProviderTest.java  |  1 +
 ...erviceHostComponentResourceProviderTest.java |  2 +
 .../internal/ServiceResourceProviderTest.java   | 20 +++++---
 .../StackConfigurationResourceProviderTest.java |  9 ++--
 .../UserAuthorizationResourceProviderTest.java  |  6 ++-
 .../internal/UserResourceProviderTest.java      |  4 ++
 .../timeline/AMSPropertyProviderTest.java       |  2 +
 .../apache/ambari/server/orm/OrmTestHelper.java | 15 +++---
 .../server/orm/dao/AlertDispatchDAOTest.java    | 21 ++++----
 .../ambari/server/orm/dao/AlertsDAOTest.java    | 13 +++--
 .../svccomphost/ServiceComponentHostTest.java   | 52 ++++++++++++-------
 .../server/testing/DBInconsistencyTests.java    |  4 +-
 .../ambari/server/utils/StageUtilsTest.java     |  2 +
 27 files changed, 189 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/alerts/ComponentVersionAlertRunnableTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/alerts/ComponentVersionAlertRunnableTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/alerts/ComponentVersionAlertRunnableTest.java
index 62ff3d3..13a866a 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/alerts/ComponentVersionAlertRunnableTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/alerts/ComponentVersionAlertRunnableTest.java
@@ -41,6 +41,7 @@ import org.apache.ambari.server.orm.dao.AlertDefinitionDAO;
 import org.apache.ambari.server.orm.entities.AlertDefinitionEntity;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
 import org.apache.ambari.server.orm.entities.UpgradeEntity;
+import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
 import org.apache.ambari.server.stack.StackManagerFactory;
 import org.apache.ambari.server.state.Alert;
 import org.apache.ambari.server.state.AlertState;
@@ -360,6 +361,7 @@ public class ComponentVersionAlertRunnableTest extends 
EasyMockSupport {
       
binder.bind(AmbariMetaInfo.class).toInstance(createNiceMock(AmbariMetaInfo.class));
       
binder.bind(StackManagerFactory.class).toInstance(createNiceMock(StackManagerFactory.class));
       
binder.bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
+      
binder.bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/DefaultRendererTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/DefaultRendererTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/DefaultRendererTest.java
index 96f80b1..f895bef 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/DefaultRendererTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/DefaultRendererTest.java
@@ -55,6 +55,8 @@ public class DefaultRendererTest {
     
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(schema).anyTimes();
     
expect(schemaFactory.getSchema(Resource.Type.Alert)).andReturn(schema).anyTimes();
     
expect(schemaFactory.getSchema(Resource.Type.Artifact)).andReturn(schema).anyTimes();
+    
expect(schemaFactory.getSchema(Resource.Type.ServiceDependency)).andReturn(schema).anyTimes();
+    
expect(schemaFactory.getSchema(Resource.Type.Configuration)).andReturn(schema).anyTimes();
     
expect(schema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
     
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceComponentInfo/service_name").anyTimes();
 
@@ -68,7 +70,7 @@ public class DefaultRendererTest {
     TreeNode<Set<String>> propertyTree = 
renderer.finalizeProperties(queryTree, false);
     // no properties should have been added
     assertTrue(propertyTree.getObject().isEmpty());
-    assertEquals(3, propertyTree.getChildren().size());
+    assertEquals(5, propertyTree.getChildren().size());
 
     TreeNode<Set<String>> componentNode = propertyTree.getChild("Component");
     assertEquals(2, componentNode.getObject().size());

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/MinimalRendererTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/MinimalRendererTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/MinimalRendererTest.java
index 782f148..ad65c88 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/MinimalRendererTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/api/query/render/MinimalRendererTest.java
@@ -59,6 +59,8 @@ public class MinimalRendererTest {
     
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(schema).anyTimes();
     
expect(schemaFactory.getSchema(Resource.Type.Alert)).andReturn(schema).anyTimes();
     
expect(schemaFactory.getSchema(Resource.Type.Artifact)).andReturn(schema).anyTimes();
+    
expect(schemaFactory.getSchema(Resource.Type.Configuration)).andReturn(schema).anyTimes();
+    
expect(schemaFactory.getSchema(Resource.Type.ServiceDependency)).andReturn(schema).anyTimes();
     
expect(schema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
 
     replay(schemaFactory, schema);
@@ -71,7 +73,7 @@ public class MinimalRendererTest {
     TreeNode<Set<String>> propertyTree = 
renderer.finalizeProperties(queryTree, false);
     // no properties should have been added
     assertTrue(propertyTree.getObject().isEmpty());
-    assertEquals(3, propertyTree.getChildren().size());
+    assertEquals(5, propertyTree.getChildren().size());
 
     TreeNode<Set<String>> componentNode = propertyTree.getChild("Component");
     assertEquals(1, componentNode.getObject().size());

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java
index c79e761..ab7b6c4 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java
@@ -276,9 +276,9 @@ public class ServicesUpCheckTest {
     allHostComponentSummaries.add(hcsMetricsCollector);
     allHostComponentSummaries.add(hcsMetricsMonitor);
 
-    long clusterId = 1;
-    long serviceGroupId = 1;
-    long serviceId = 1;
+    long clusterId = 0;
+    long serviceGroupId = 0;
+    long serviceId = 0;
 
     // Mock the static method
     Mockito.when(HostComponentSummary.getHostComponentSummaries(clusterId, 
serviceGroupId, serviceId, "NAMENODE")).thenReturn(Arrays.asList(hcsNameNode));

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
index f2ee106..aff6d74 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
@@ -70,6 +70,7 @@ import org.apache.ambari.server.state.RepositoryInfo;
 import org.apache.ambari.server.state.SecurityType;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponent;
+import org.apache.ambari.server.state.ServiceGroup;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.StackInfo;
 import org.apache.ambari.server.state.State;
@@ -638,31 +639,32 @@ public class AmbariCustomCommandExecutionHelperTest {
     addHost(hostC6402, clusterName);
 
     Cluster cluster = clusters.getCluster(clusterName);
+    ServiceGroup serviceGroup = cluster.addServiceGroup("CORE");
     Assert.assertNotNull(cluster);
 
-    createService(clusterName, "YARN", repositoryVersion);
-    createService(clusterName, "GANGLIA", repositoryVersion);
-    createService(clusterName, "ZOOKEEPER", repositoryVersion);
-    createService(clusterName, "FLUME", repositoryVersion);
+    createService(clusterName, "YARN", repositoryVersion, 
serviceGroup.getServiceGroupName(), stackId);
+    createService(clusterName, "GANGLIA", repositoryVersion, 
serviceGroup.getServiceGroupName(), stackId);
+    createService(clusterName, "ZOOKEEPER", repositoryVersion, 
serviceGroup.getServiceGroupName(), stackId);
+    createService(clusterName, "FLUME", repositoryVersion, 
serviceGroup.getServiceGroupName(), stackId);
 
-    createServiceComponent(clusterName, "YARN", "RESOURCEMANAGER", State.INIT);
-    createServiceComponent(clusterName, "YARN", "NODEMANAGER", State.INIT);
-    createServiceComponent(clusterName, "GANGLIA", "GANGLIA_SERVER", 
State.INIT);
-    createServiceComponent(clusterName, "GANGLIA", "GANGLIA_MONITOR", 
State.INIT);
-    createServiceComponent(clusterName, "ZOOKEEPER", "ZOOKEEPER_CLIENT", 
State.INIT);
+    createServiceComponent(clusterName, "YARN", "RESOURCEMANAGER", State.INIT, 
serviceGroup.getServiceGroupName());
+    createServiceComponent(clusterName, "YARN", "NODEMANAGER", State.INIT, 
serviceGroup.getServiceGroupName());
+    createServiceComponent(clusterName, "GANGLIA", "GANGLIA_SERVER", 
State.INIT, serviceGroup.getServiceGroupName());
+    createServiceComponent(clusterName, "GANGLIA", "GANGLIA_MONITOR", 
State.INIT, serviceGroup.getServiceGroupName());
+    createServiceComponent(clusterName, "ZOOKEEPER", "ZOOKEEPER_CLIENT", 
State.INIT, serviceGroup.getServiceGroupName());
 
     // this component should be not installed on any host
-    createServiceComponent(clusterName, "FLUME", "FLUME_HANDLER", State.INIT);
+    createServiceComponent(clusterName, "FLUME", "FLUME_HANDLER", State.INIT, 
serviceGroup.getServiceGroupName());
 
-    createServiceComponentHost(clusterName, "YARN", "RESOURCEMANAGER", 
hostC6401, null);
-    createServiceComponentHost(clusterName, "YARN", "NODEMANAGER", hostC6401, 
null);
-    createServiceComponentHost(clusterName, "GANGLIA", "GANGLIA_SERVER", 
hostC6401, State.INIT);
-    createServiceComponentHost(clusterName, "GANGLIA", "GANGLIA_MONITOR", 
hostC6401, State.INIT);
-    createServiceComponentHost(clusterName, "ZOOKEEPER", "ZOOKEEPER_CLIENT", 
hostC6401, State.INIT);
+    createServiceComponentHost(clusterName, "YARN", "RESOURCEMANAGER", 
hostC6401, null, serviceGroup.getServiceGroupName());
+    createServiceComponentHost(clusterName, "YARN", "NODEMANAGER", hostC6401, 
null, serviceGroup.getServiceGroupName());
+    createServiceComponentHost(clusterName, "GANGLIA", "GANGLIA_SERVER", 
hostC6401, State.INIT, serviceGroup.getServiceGroupName());
+    createServiceComponentHost(clusterName, "GANGLIA", "GANGLIA_MONITOR", 
hostC6401, State.INIT, serviceGroup.getServiceGroupName());
+    createServiceComponentHost(clusterName, "ZOOKEEPER", "ZOOKEEPER_CLIENT", 
hostC6401, State.INIT, serviceGroup.getServiceGroupName());
 
-    createServiceComponentHost(clusterName, "YARN", "NODEMANAGER", hostC6402, 
null);
-    createServiceComponentHost(clusterName, "GANGLIA", "GANGLIA_MONITOR", 
hostC6402, State.INIT);
-    createServiceComponentHost(clusterName, "ZOOKEEPER", "ZOOKEEPER_CLIENT", 
hostC6402, State.INIT);
+    createServiceComponentHost(clusterName, "YARN", "NODEMANAGER", hostC6402, 
null, serviceGroup.getServiceGroupName());
+    createServiceComponentHost(clusterName, "GANGLIA", "GANGLIA_MONITOR", 
hostC6402, State.INIT, serviceGroup.getServiceGroupName());
+    createServiceComponentHost(clusterName, "ZOOKEEPER", "ZOOKEEPER_CLIENT", 
hostC6402, State.INIT, serviceGroup.getServiceGroupName());
   }
   private void addHost(String hostname, String clusterName) throws 
AmbariException {
     clusters.addHost(hostname);
@@ -687,11 +689,11 @@ public class AmbariCustomCommandExecutionHelperTest {
   }
 
   private void createService(String clusterName, String serviceName,
-      RepositoryVersionEntity repositoryVersion) throws AmbariException, 
AuthorizationException {
+      RepositoryVersionEntity repositoryVersion, String serviceGroupName, 
StackId stackId) throws AmbariException, AuthorizationException {
 
 
-    ServiceRequest r1 = new ServiceRequest(clusterName, "", serviceName,
-        repositoryVersion.getId(), null, null);
+    ServiceRequest r1 = new ServiceRequest(clusterName, serviceGroupName, 
serviceName,
+        repositoryVersion.getId(), null, stackId);
 
     Set<ServiceRequest> requests = new HashSet<>();
     requests.add(r1);
@@ -701,13 +703,13 @@ public class AmbariCustomCommandExecutionHelperTest {
   }
 
   private void createServiceComponent(String clusterName,
-      String serviceName, String componentName, State desiredState)
+      String serviceName, String componentName, State desiredState, String 
serviceGroupName)
       throws AmbariException, AuthorizationException {
     String dStateStr = null;
     if (desiredState != null) {
       dStateStr = desiredState.toString();
     }
-    ServiceComponentRequest r = new ServiceComponentRequest(clusterName, "",
+    ServiceComponentRequest r = new ServiceComponentRequest(clusterName, 
serviceGroupName,
         serviceName, componentName, dStateStr);
     Set<ServiceComponentRequest> requests =
       new HashSet<>();
@@ -715,13 +717,14 @@ public class AmbariCustomCommandExecutionHelperTest {
     ComponentResourceProviderTest.createComponents(ambariManagementController, 
requests);
   }
 
-  private void createServiceComponentHost(String clusterName, String 
serviceName, String componentName, String hostname, State desiredState)
+  private void createServiceComponentHost(String clusterName, String 
serviceName, String componentName, String hostname,
+                                          State desiredState, String 
serviceGroupName)
       throws AmbariException, AuthorizationException {
     String dStateStr = null;
     if (desiredState != null) {
       dStateStr = desiredState.toString();
     }
-    ServiceComponentHostRequest r = new 
ServiceComponentHostRequest(clusterName, "",
+    ServiceComponentHostRequest r = new 
ServiceComponentHostRequest(clusterName, serviceGroupName,
         serviceName, componentName, hostname, dStateStr);
     Set<ServiceComponentHostRequest> requests =
       new HashSet<>();

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
index 3e4baed..96745c1 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
@@ -52,6 +52,7 @@ import org.apache.ambari.server.mpack.MpackManagerFactory;
 import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
 import org.apache.ambari.server.stack.StackManagerFactory;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.stack.OsFamily;
@@ -268,6 +269,7 @@ public class AmbariServerTest {
         bind(Clusters.class).toInstance(mockClusters);
         bind(Configuration.class).toInstance(mockConfiguration);
         bind(MpackManagerFactory.class).toInstance(mpackManagerFactory);
+        
bind(RootLevelSettingsManagerFactory.class).toInstance(easyMockSupport.createNiceMock(RootLevelSettingsManagerFactory.class));
       }
     });
 
@@ -342,6 +344,7 @@ public class AmbariServerTest {
         bind(Clusters.class).toInstance(mockClusters);
         bind(Configuration.class).toInstance(mockConfiguration);
         bind(MpackManagerFactory.class).toInstance(mpackManagerFactory);
+        
bind(RootLevelSettingsManagerFactory.class).toInstance(easyMockSupport.createNiceMock(RootLevelSettingsManagerFactory.class));
       }
     });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
index 0f99b08..462b917 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
@@ -81,6 +81,7 @@ import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.dao.ArtifactDAO;
 import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
 import org.apache.ambari.server.orm.dao.KerberosPrincipalDAO;
+import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
 import org.apache.ambari.server.security.SecurityHelper;
 import org.apache.ambari.server.security.credential.PrincipalKeyCredential;
 import org.apache.ambari.server.security.encryption.CredentialStoreService;
@@ -262,6 +263,7 @@ public class KerberosHelperTest extends EasyMockSupport {
         
bind(RoleCommandOrderProvider.class).to(CachedRoleCommandOrderProvider.class);
         
bind(HostRoleCommandFactory.class).to(HostRoleCommandFactoryImpl.class);
         
bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
+        
bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
 
         requestStaticInjection(KerberosChecker.class);
       }
@@ -3496,6 +3498,7 @@ public class KerberosHelperTest extends EasyMockSupport {
 
 
       expect(cluster.getClusterName()).andReturn("c1").anyTimes();
+      expect(cluster.getClusterId()).andReturn(1L).anyTimes();
       expect(cluster.getServices())
           .andReturn(new HashMap<String, Service>() {
             {

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
index 3ce6686..990000a 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
@@ -200,6 +200,7 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest {
   private void createCluster(String clusterName, String stackName) throws 
AmbariException, AuthorizationException {
     ClusterRequest r = new ClusterRequest(null, clusterName, 
State.INSTALLED.name(), SecurityType.NONE, stackName, null);
     controller.createCluster(r);
+    clusters.getCluster(clusterName).addServiceGroup("CORE");
   }
 
   private void createService(String clusterName,
@@ -213,7 +214,7 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest {
     RepositoryVersionEntity repositoryVersion = 
ormTestHelper.getOrCreateRepositoryVersion(
         new StackId("HDP-2.0.7"), "2.0.7-1234");
 
-    ServiceRequest r1 = new ServiceRequest(clusterName, "", serviceName,
+    ServiceRequest r1 = new ServiceRequest(clusterName, "CORE", serviceName,
         repositoryVersion.getId(), dStateStr, null);
 
     Set<ServiceRequest> requests = new HashSet<>();
@@ -230,7 +231,7 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest {
     if (desiredState != null) {
       dStateStr = desiredState.toString();
     }
-    ServiceComponentRequest r = new ServiceComponentRequest(clusterName, "",
+    ServiceComponentRequest r = new ServiceComponentRequest(clusterName, 
"CORE",
         serviceName, componentName, dStateStr);
     Set<ServiceComponentRequest> requests =
       new HashSet<>();
@@ -244,7 +245,7 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest {
     if (desiredState != null) {
       dStateStr = desiredState.toString();
     }
-    ServiceComponentHostRequest r = new 
ServiceComponentHostRequest(clusterName, "",
+    ServiceComponentHostRequest r = new 
ServiceComponentHostRequest(clusterName, "CORE",
         serviceName, componentName, hostname, dStateStr);
     Set<ServiceComponentHostRequest> requests =
       new HashSet<>();

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActiveWidgetLayoutResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActiveWidgetLayoutResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActiveWidgetLayoutResourceProviderTest.java
index 7ccdadd..546e6c3 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActiveWidgetLayoutResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActiveWidgetLayoutResourceProviderTest.java
@@ -63,6 +63,7 @@ import org.apache.ambari.server.orm.entities.UserEntity;
 import org.apache.ambari.server.orm.entities.WidgetLayoutEntity;
 import org.apache.ambari.server.registry.RegistryFactory;
 import org.apache.ambari.server.registry.RegistryManager;
+import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
 import org.apache.ambari.server.scheduler.ExecutionScheduler;
 import org.apache.ambari.server.security.TestAuthenticationFactory;
 import org.apache.ambari.server.security.authorization.AuthorizationException;
@@ -73,6 +74,7 @@ import 
org.apache.ambari.server.security.encryption.CredentialStoreServiceImpl;
 import org.apache.ambari.server.stack.StackManagerFactory;
 import org.apache.ambari.server.stageplanner.RoleGraphFactory;
 import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.ClusterSettingFactory;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.ConfigFactory;
 import org.apache.ambari.server.state.ServiceComponentFactory;
@@ -418,6 +420,8 @@ public class ActiveWidgetLayoutResourceProviderTest extends 
EasyMockSupport {
         
bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
         
bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
         
bind(RegistryFactory.class).toInstance(createNiceMock(RegistryFactory.class));
+        
bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
+        
bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
       }
     });
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
index 4b5d6c0..e9f57b1 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
@@ -218,7 +218,7 @@ public class ClientConfigResourceProviderTest {
         PropertyHelper.getKeyPropertyIds(type),
         managementController);
 
-    String clusterName = "C1";
+    String clusterName = "c1";
     String serviceName = "PIG";
     String componentName = "PIG";
     String displayName = "Pig Client";
@@ -248,7 +248,7 @@ public class ClientConfigResourceProviderTest {
     HashMap<String, ServiceOsSpecific> serviceOsSpecificHashMap = new 
HashMap<>();
     serviceOsSpecificHashMap.put("key",serviceOsSpecific);
 
-    ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse(1L, 
clusterName, 1L, "", 1L, serviceName, "", 1L,
+    ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse(1L, 
clusterName, 1L, "CORE", 1L, serviceName, serviceName, 1L,
         componentName, displayName, hostName, publicHostname, desiredState, 
"", null, null, null,
         null);
 
@@ -323,6 +323,7 @@ public class ClientConfigResourceProviderTest {
     expect(clusters.getHost(hostName)).andReturn(host);
 
     expect(cluster.getService(serviceName)).andReturn(service).atLeastOnce();
+    expect(service.getServiceType()).andReturn(serviceName).atLeastOnce();
     
expect(service.getServiceComponent(componentName)).andReturn(serviceComponent).atLeastOnce();
     
expect(serviceComponent.getDesiredStackId()).andReturn(stackId).atLeastOnce();
 
@@ -475,7 +476,7 @@ public class ClientConfigResourceProviderTest {
       
and().property(ClientConfigResourceProvider.COMPONENT_SERVICE_NAME_PROPERTY_ID).equals("PIG").
       toPredicate();
 
-    String clusterName = "C1";
+    String clusterName = "c1";
     String serviceName = "PIG";
     String componentName = "PIG";
     String displayName = "Pig Client";
@@ -506,7 +507,7 @@ public class ClientConfigResourceProviderTest {
     HashMap<String, ServiceOsSpecific> serviceOsSpecificHashMap = new 
HashMap<>();
     serviceOsSpecificHashMap.put("key",serviceOsSpecific);
 
-    ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse(1L, 
clusterName, 1L, "", 1L, serviceName, "", 1L,
+    ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse(1L, 
clusterName, 1L, "CORE", 1L, serviceName, serviceName, 1L,
         componentName, displayName, hostName, publicHostName, desiredState, 
"", null, null, null,
         null);
 
@@ -582,6 +583,7 @@ public class ClientConfigResourceProviderTest {
     expect(clusters.getHost(hostName)).andReturn(host);
 
     expect(cluster.getService(serviceName)).andReturn(service).atLeastOnce();
+    expect(service.getServiceType()).andReturn(serviceName).atLeastOnce();
     
expect(service.getServiceComponent(componentName)).andReturn(serviceComponent).atLeastOnce();
     
expect(serviceComponent.getDesiredStackId()).andReturn(stackId).atLeastOnce();
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/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 a6fc919..c6ea264 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
@@ -256,12 +256,15 @@ public class ClusterStackVersionResourceProviderTest {
     final ServiceComponentHost schDatanode = 
createMock(ServiceComponentHost.class);
     expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+    expect(schDatanode.getServiceType()).andReturn("DATANODE").anyTimes();
     final ServiceComponentHost schNamenode = 
createMock(ServiceComponentHost.class);
     expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
+    expect(schNamenode.getServiceType()).andReturn("NAMENODE").anyTimes();
     final ServiceComponentHost schAMS = createMock(ServiceComponentHost.class);
     expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
     
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
+    expect(schAMS.getServiceType()).andReturn("METRICS_COLLECTOR").anyTimes();
     // First host contains versionable components
     final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, 
schNamenode, schAMS);
     // Second host does not contain versionable components
@@ -437,18 +440,22 @@ public class ClusterStackVersionResourceProviderTest {
     final ServiceComponentHost schDatanode = 
createMock(ServiceComponentHost.class);
     expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+    expect(schDatanode.getServiceType()).andReturn("DATANODE").anyTimes();
 
     final ServiceComponentHost schNamenode = 
createMock(ServiceComponentHost.class);
     expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
+    expect(schNamenode.getServiceType()).andReturn("NAMENODE").anyTimes();
 
     final ServiceComponentHost schAMS = createMock(ServiceComponentHost.class);
     expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
     
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
+    expect(schAMS.getServiceType()).andReturn("METRICS_COLLECTOR").anyTimes();
 
     final ServiceComponentHost schHBM = createMock(ServiceComponentHost.class);
     expect(schHBM.getServiceName()).andReturn("HBASE").anyTimes();
     
expect(schHBM.getServiceComponentName()).andReturn("HBASE_MASTER").anyTimes();
+    expect(schHBM.getServiceType()).andReturn("HBASE_MASTER").anyTimes();
 
     // First host contains versionable components
     final List<ServiceComponentHost> schsH1 = Arrays.asList(schDatanode, 
schNamenode, schAMS);
@@ -661,14 +668,17 @@ public class ClusterStackVersionResourceProviderTest {
     final ServiceComponentHost schDatanode = 
createMock(ServiceComponentHost.class);
     expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+    expect(schDatanode.getServiceType()).andReturn("DATANODE").anyTimes();
 
     final ServiceComponentHost schNamenode = 
createMock(ServiceComponentHost.class);
     expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
+    expect(schNamenode.getServiceType()).andReturn("NAMENODE").anyTimes();
 
     final ServiceComponentHost schHBM = createMock(ServiceComponentHost.class);
     expect(schHBM.getServiceName()).andReturn("HBASE").anyTimes();
     
expect(schHBM.getServiceComponentName()).andReturn("HBASE_MASTER").anyTimes();
+    expect(schHBM.getServiceType()).andReturn("HBASE_MASTER").anyTimes();
 
     // First host contains versionable components
     final List<ServiceComponentHost> schsH1 = Arrays.asList(schDatanode, 
schNamenode);
@@ -897,14 +907,17 @@ public class ClusterStackVersionResourceProviderTest {
     final ServiceComponentHost schDatanode = 
createMock(ServiceComponentHost.class);
     expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+     expect(schDatanode.getServiceType()).andReturn("DATANODE").anyTimes();
 
     final ServiceComponentHost schNamenode = 
createMock(ServiceComponentHost.class);
     expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
+    expect(schNamenode.getServiceType()).andReturn("NAMENODE").anyTimes();
 
     final ServiceComponentHost schHBM = createMock(ServiceComponentHost.class);
     expect(schHBM.getServiceName()).andReturn("HBASE").anyTimes();
     
expect(schHBM.getServiceComponentName()).andReturn("HBASE_MASTER").anyTimes();
+    expect(schHBM.getServiceType()).andReturn("HBASE_MASTER").anyTimes();
 
     // First host contains versionable components
     final List<ServiceComponentHost> schsH1 = Arrays.asList(schDatanode, 
schNamenode);
@@ -1120,12 +1133,15 @@ public class ClusterStackVersionResourceProviderTest {
     final ServiceComponentHost schDatanode = 
createMock(ServiceComponentHost.class);
     expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+    expect(schDatanode.getServiceType()).andReturn("DATANODE").anyTimes();
     final ServiceComponentHost schNamenode = 
createMock(ServiceComponentHost.class);
     expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
+    expect(schNamenode.getServiceType()).andReturn("NAMENODE").anyTimes();
     final ServiceComponentHost schAMS = createMock(ServiceComponentHost.class);
     expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
     
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
+    expect(schAMS.getServiceType()).andReturn("METRICS_COLLECTOR").anyTimes();
     // First host contains versionable components
     final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, 
schNamenode, schAMS);
     // Second host does not contain versionable components
@@ -1340,6 +1356,7 @@ public class ClusterStackVersionResourceProviderTest {
     final ServiceComponentHost schDatanode = 
createMock(ServiceComponentHost.class);
     expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+    expect(schDatanode.getServiceType()).andReturn("DATANODE").anyTimes();
 
     final List<ServiceComponentHost> serviceComponentHosts = 
Arrays.asList(schDatanode);
 
@@ -1496,12 +1513,15 @@ public class ClusterStackVersionResourceProviderTest {
     final ServiceComponentHost schDatanode = 
createMock(ServiceComponentHost.class);
     expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+    expect(schDatanode.getServiceType()).andReturn("DATANODE").anyTimes();
     final ServiceComponentHost schNamenode = 
createMock(ServiceComponentHost.class);
     expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
     
expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
+    expect(schNamenode.getServiceType()).andReturn("NAMENODE").anyTimes();
     final ServiceComponentHost schAMS = createMock(ServiceComponentHost.class);
     expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
     
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
+    expect(schAMS.getServiceType()).andReturn("METRICS_COLLECTOR").anyTimes();
     // First host contains versionable components
     final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, 
schNamenode, schAMS);
     // Second host does not contain versionable components
@@ -2015,14 +2035,17 @@ public class ClusterStackVersionResourceProviderTest {
      final ServiceComponentHost schDatanode = 
createMock(ServiceComponentHost.class);
      expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
      
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+     expect(schDatanode.getServiceType()).andReturn("DATANODE").anyTimes();
 
      final ServiceComponentHost schNamenode = 
createMock(ServiceComponentHost.class);
      expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
      
expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
+     expect(schNamenode.getServiceType()).andReturn("NAMENODE").anyTimes();
 
      final ServiceComponentHost schHBM = 
createMock(ServiceComponentHost.class);
      expect(schHBM.getServiceName()).andReturn("HBASE").anyTimes();
      
expect(schHBM.getServiceComponentName()).andReturn("HBASE_MASTER").anyTimes();
+     expect(schHBM.getServiceType()).andReturn("HBASE_MASTER").anyTimes();
 
      // First host contains versionable components
      final List<ServiceComponentHost> schsH1 = Arrays.asList(schDatanode, 
schNamenode);

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
index efa351a..be7134e 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
@@ -170,6 +170,7 @@ public class ComponentResourceProviderTest {
     // add properties to the request map
     
properties.put(ComponentResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID, 
"Cluster100");
     
properties.put(ComponentResourceProvider.COMPONENT_SERVICE_NAME_PROPERTY_ID, 
"Service100");
+    
properties.put(ComponentResourceProvider.COMPONENT_SERVICE_GROUP_NAME_PROPERTY_ID,
 "CORE");
     
properties.put(ComponentResourceProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"Component100");
 
     propertySet.add(properties);
@@ -244,13 +245,13 @@ public class ComponentResourceProviderTest {
     
expect(service.getServiceComponents()).andReturn(serviceComponentMap).anyTimes();
 
     expect(serviceComponent1.convertToResponse()).andReturn(
-      new ServiceComponentResponse(100L, "Cluster100", 1L, "", 1L, 
"Service100", "", "Component100", stackId, "", serviceComponentStateCountMap,
+      new ServiceComponentResponse(100L, "Cluster100", 1L, "CORE", 1L, 
"Service100", "Service100", "Component100", stackId, "", 
serviceComponentStateCountMap,
               true /* recovery enabled */, "Component100 Client", null, null));
     expect(serviceComponent2.convertToResponse()).andReturn(
-      new ServiceComponentResponse(100L, "Cluster100", 1L, "", 1L, 
"Service100", "", "Component101", stackId, "", serviceComponentStateCountMap,
+      new ServiceComponentResponse(100L, "Cluster100", 1L, "CORE", 1L, 
"Service100", "Service100", "Component101", stackId, "", 
serviceComponentStateCountMap,
               false /* recovery not enabled */, "Component101 Client", null, 
null));
     expect(serviceComponent3.convertToResponse()).andReturn(
-      new ServiceComponentResponse(100L, "Cluster100", 1L, "", 1L, 
"Service100", "", "Component102", stackId, "", serviceComponentStateCountMap,
+      new ServiceComponentResponse(100L, "Cluster100", 1L, "CORE", 1L, 
"Service100", "Service100", "Component102", stackId, "", 
serviceComponentStateCountMap,
               true /* recovery enabled */, "Component102 Client", "1.1", 
RepositoryVersionState.CURRENT));
 
     expect(ambariMetaInfo.getComponent("FOO", "1.0", null, 
"Component100")).andReturn(

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
index 6611c55..bad63b7 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
@@ -141,6 +141,7 @@ public class HostComponentResourceProviderTest {
     // add properties to the request map
     
properties.put(HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID,
 "Cluster100");
     
properties.put(HostComponentResourceProvider.HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID,
 "Service100");
+    
properties.put(HostComponentResourceProvider.HOST_COMPONENT_SERVICE_GROUP_NAME_PROPERTY_ID,
 "TEST_GROUP");
     
properties.put(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID,
 "Component100");
     
properties.put(HostComponentResourceProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID,
 "Host100");
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
index e23ad79..d8575e7 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
@@ -124,7 +124,7 @@ public class JMXHostProviderTest {
       dStateStr = desiredState.toString();
     }
 
-    ServiceRequest r1 = new ServiceRequest(clusterName, "", serviceName, 
m_repositoryVersion.getId(), dStateStr, null);
+    ServiceRequest r1 = new ServiceRequest(clusterName, "CORE", serviceName, 
m_repositoryVersion.getId(), dStateStr, null);
 
     Set<ServiceRequest> requests = new HashSet<>();
     requests.add(r1);
@@ -140,7 +140,7 @@ public class JMXHostProviderTest {
     if (desiredState != null) {
       dStateStr = desiredState.toString();
     }
-    ServiceComponentRequest r = new ServiceComponentRequest(clusterName, "",
+    ServiceComponentRequest r = new ServiceComponentRequest(clusterName, 
"CORE",
       serviceName, componentName, dStateStr);
     Set<ServiceComponentRequest> requests =
       new HashSet<>();
@@ -168,6 +168,7 @@ public class JMXHostProviderTest {
     ClusterRequest r = new ClusterRequest(null, clusterName, "HDP-0.1", null);
     controller.createCluster(r);
     Cluster cluster = clusters.getCluster(clusterName);
+    cluster.addServiceGroup("CORE");
     cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
     String serviceName = "HDFS";
     createService(clusterName, serviceName, null);
@@ -240,6 +241,7 @@ public class JMXHostProviderTest {
     ClusterRequest r = new ClusterRequest(null, clusterName, "HDP-2.0.6", 
null);
     controller.createCluster(r);
     Cluster cluster = clusters.getCluster(clusterName);
+    cluster.addServiceGroup("CORE");
     cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
     String serviceName = "HDFS";
     String serviceName2 = "YARN";

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/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 6bc8b95..4313ae6 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
@@ -188,6 +188,7 @@ public class RepositoryVersionResourceProviderTest {
     StackEntity stackEntity = new StackEntity();
     stackEntity.setStackName("HDP");
     stackEntity.setStackVersion("1.1");
+    stackEntity.setRepoVersion("");                                //TODO 
REMOVE AFTER MERGE WITH BP BRANCH
     stackDAO.create(stackEntity);
 
     Clusters clusters = injector.getInstance(Clusters.class);

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java
index ce3656c..23cabf1 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java
@@ -84,6 +84,8 @@ public class RootServiceHostComponentResourceProviderTest {
 
     
expect(clusters.getClustersForHost("Host100")).andReturn(clusterSet).anyTimes();
 
+    expect(cluster.getClusterId()).andReturn(1L).anyTimes();
+
     expect(host1.getHostName()).andReturn("Host100").anyTimes();
 
     expect(host1.convertToResponse()).andReturn(hostResponse1).anyTimes();

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
index 4593409..3a23968 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
@@ -115,6 +115,7 @@ public class ServiceResourceProviderTest {
     Clusters clusters = createNiceMock(Clusters.class);
     Cluster cluster = createNiceMock(Cluster.class);
     Service service = createNiceMock(Service.class);
+    ServiceResponse serviceResponse = createNiceMock(ServiceResponse.class);
     StackId stackId = new StackId("HDP-2.5");
     ServiceFactory serviceFactory = createNiceMock(ServiceFactory.class);
     AmbariMetaInfo ambariMetaInfo = createNiceMock(AmbariMetaInfo.class);
@@ -123,7 +124,7 @@ public class ServiceResourceProviderTest {
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
 
-    expect(cluster.addService(eq(anyObject()), eq("Service100"), 
eq(anyObject()),
+    expect(cluster.addService(anyObject(), eq("Service100"), anyObject(),
         EasyMock.anyObject(RepositoryVersionEntity.class))).andReturn(service);
 
     expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
@@ -132,12 +133,14 @@ public class ServiceResourceProviderTest {
     expect(cluster.getDesiredStackVersion()).andReturn(stackId).anyTimes();
     expect(cluster.getClusterId()).andReturn(2L).anyTimes();
 
+    expect(service.convertToResponse()).andReturn(serviceResponse).anyTimes();
+
     expect(ambariMetaInfo.isValidService( (String) anyObject(), (String) 
anyObject(), (String) anyObject())).andReturn(true);
     expect(ambariMetaInfo.getService((String)anyObject(), (String)anyObject(), 
(String)anyObject())).andReturn(serviceInfo).anyTimes();
 
     // replay
     replay(managementController, clusters, cluster, service,
-        ambariMetaInfo, serviceFactory, serviceInfo);
+        ambariMetaInfo, serviceFactory, serviceInfo, serviceResponse);
 
     SecurityContextHolder.getContext().setAuthentication(authentication);
 
@@ -152,6 +155,7 @@ public class ServiceResourceProviderTest {
     // add properties to the request map
     properties.put(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID, 
"Cluster100");
     properties.put(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID, 
"Service100");
+    
properties.put(ServiceResourceProvider.SERVICE_SERVICE_GROUP_NAME_PROPERTY_ID, 
"SERVICE_GROUP");
     properties.put(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID, 
"INIT");
     properties.put(ServiceResourceProvider.SERVICE_DESIRED_STACK_PROPERTY_ID, 
"HDP-1.1");
     
properties.put(ServiceResourceProvider.SERVICE_DESIRED_REPO_VERSION_ID_PROPERTY_ID,
 "1");
@@ -606,6 +610,7 @@ public class ServiceResourceProviderTest {
     Clusters clusters = createNiceMock(Clusters.class);
     Cluster cluster = createNiceMock(Cluster.class);
     Service service0 = createNiceMock(Service.class);
+    ServiceResponse serviceResponse = createNiceMock(ServiceResponse.class);
     ServiceFactory serviceFactory = createNiceMock(ServiceFactory.class);
     AmbariMetaInfo ambariMetaInfo = createNiceMock(AmbariMetaInfo.class);
     RequestStageContainer requestStages = 
createNiceMock(RequestStageContainer.class);
@@ -628,6 +633,9 @@ public class ServiceResourceProviderTest {
 
     expect(service0.getDesiredState()).andReturn(State.INSTALLED).anyTimes();
     
expect(service0.getServiceComponents()).andReturn(Collections.emptyMap()).anyTimes();
+    expect(service0.convertToResponse()).andReturn(serviceResponse).anyTimes();
+    
expect(serviceResponse.getServiceName()).andReturn("Service102").anyTimes();
+    
expect(serviceResponse.getClusterName()).andReturn("Cluster100").anyTimes();
 
     expect(stackId.getStackId()).andReturn("HDP-2.5").anyTimes();
     expect(stackId.getStackName()).andReturn("HDP").anyTimes();
@@ -663,7 +671,7 @@ public class ServiceResourceProviderTest {
     // replay
     replay(managementController, clusters, cluster, rco, 
maintenanceStateHelper,
         repositoryVersionDAO, service0, serviceFactory, ambariMetaInfo, 
requestStages,
-        requestStatusResponse, stackId, serviceInfo);
+        requestStatusResponse, stackId, serviceInfo, serviceResponse);
 
     SecurityContextHolder.getContext().setAuthentication(authentication);
 
@@ -1170,7 +1178,7 @@ public class ServiceResourceProviderTest {
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
 
-    expect(cluster.addService(eq(anyObject()), eq("Service200"), 
eq(anyObject()), 
EasyMock.anyObject(RepositoryVersionEntity.class))).andReturn(service2);
+    expect(cluster.addService(anyObject(), eq("Service200"), anyObject(), 
EasyMock.anyObject(RepositoryVersionEntity.class))).andReturn(service2);
 
     expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
 
@@ -1202,6 +1210,7 @@ public class ServiceResourceProviderTest {
     // add properties to the request map
     properties.put(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID, 
"Cluster100");
     properties.put(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID, 
"Service200");
+    
properties.put(ServiceResourceProvider.SERVICE_SERVICE_GROUP_NAME_PROPERTY_ID, 
"TEST_GROUP");
     properties.put(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID, 
"INIT");
     properties.put(ServiceResourceProvider.SERVICE_DESIRED_STACK_PROPERTY_ID, 
"HDP-1.1");
 
@@ -1242,7 +1251,7 @@ public class ServiceResourceProviderTest {
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
 
-    expect(cluster.addService(eq(anyObject()), eq("Service200"), 
eq(anyObject()), 
EasyMock.anyObject(RepositoryVersionEntity.class))).andReturn(service2);
+    expect(cluster.addService(anyObject(), eq("Service200"), anyObject(), 
EasyMock.anyObject(RepositoryVersionEntity.class))).andReturn(service2);
 
     expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
 
@@ -1404,7 +1413,6 @@ public class ServiceResourceProviderTest {
   public static ServiceResourceProvider getServiceProvider(
       AmbariManagementController managementController,
       MaintenanceStateHelper maintenanceStateHelper, RepositoryVersionDAO 
repositoryVersionDAO) {
-    Resource.Type type = Resource.Type.Service;
     return new ServiceResourceProvider(managementController, 
maintenanceStateHelper, repositoryVersionDAO);
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackConfigurationResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackConfigurationResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackConfigurationResourceProviderTest.java
index 91c048b..271ad8d 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackConfigurationResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackConfigurationResourceProviderTest.java
@@ -29,6 +29,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.ReadOnlyConfigurationResponse;
 import org.apache.ambari.server.controller.StackLevelConfigurationResponse;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
@@ -54,14 +55,14 @@ public class StackConfigurationResourceProviderTest {
 
     AmbariManagementController managementController = 
createMock(AmbariManagementController.class);
 
-    Set<StackLevelConfigurationResponse> allResponse = new HashSet<>();
+    Set<ReadOnlyConfigurationResponse> allResponse = new HashSet<>();
     
     allResponse.add(new StackLevelConfigurationResponse(PROPERTY_NAME, 
PROPERTY_VALUE, PROPERTY_DESC, TYPE, attributes));
    
     // set expectations
     expect(managementController.getStackConfigurations(
         
AbstractResourceProviderTest.Matcher.getStackConfigurationRequestSet(null, 
null, null, null))).
-        andReturn(null).times(1);
+        andReturn(allResponse).times(1);
     // replay
     replay(managementController);
 
@@ -126,14 +127,14 @@ public class StackConfigurationResourceProviderTest {
 
     AmbariManagementController managementController = 
createMock(AmbariManagementController.class);
 
-    Set<StackLevelConfigurationResponse> allResponse = new HashSet<>();
+    Set<ReadOnlyConfigurationResponse> allResponse = new HashSet<>();
 
     allResponse.add(new StackLevelConfigurationResponse(PROPERTY_NAME, 
PROPERTY_VALUE, PROPERTY_DESC, TYPE, attributes));
 
     // set expectations
     expect(managementController.getStackConfigurations(
         
AbstractResourceProviderTest.Matcher.getStackConfigurationRequestSet(null, 
null, null, null))).
-        andReturn(null).times(1);
+        andReturn(allResponse).times(1);
     // replay
     replay(managementController);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
index 1bc8776..7c429e9 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
@@ -63,6 +63,7 @@ import 
org.apache.ambari.server.orm.entities.ResourceTypeEntity;
 import org.apache.ambari.server.orm.entities.RoleAuthorizationEntity;
 import org.apache.ambari.server.registry.RegistryFactory;
 import org.apache.ambari.server.registry.RegistryManager;
+import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
 import org.apache.ambari.server.scheduler.ExecutionScheduler;
 import org.apache.ambari.server.security.TestAuthenticationFactory;
 import org.apache.ambari.server.security.authorization.AuthorizationException;
@@ -71,6 +72,7 @@ import 
org.apache.ambari.server.security.encryption.CredentialStoreService;
 import org.apache.ambari.server.security.encryption.CredentialStoreServiceImpl;
 import org.apache.ambari.server.stack.StackManagerFactory;
 import org.apache.ambari.server.stageplanner.RoleGraphFactory;
+import org.apache.ambari.server.state.ClusterSettingFactory;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.ConfigFactory;
 import org.apache.ambari.server.state.ServiceComponentFactory;
@@ -95,7 +97,6 @@ import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.assistedinject.FactoryModuleBuilder;
 
-
 /**
  * UserAuthorizationResourceProvider tests.
  */
@@ -431,7 +432,8 @@ public class UserAuthorizationResourceProviderTest extends 
EasyMockSupport {
         
bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
         
bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
         
bind(RegistryFactory.class).toInstance(createNiceMock(RegistryFactory.class));
-
+        
bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
+        
bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
       }
     });
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
index a38e44d..4ce9352 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
@@ -58,6 +58,7 @@ import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
 import org.apache.ambari.server.registry.RegistryFactory;
 import org.apache.ambari.server.registry.RegistryManager;
+import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
 import org.apache.ambari.server.scheduler.ExecutionScheduler;
 import org.apache.ambari.server.security.TestAuthenticationFactory;
 import org.apache.ambari.server.security.authorization.AuthorizationException;
@@ -68,6 +69,7 @@ import 
org.apache.ambari.server.security.encryption.CredentialStoreService;
 import org.apache.ambari.server.security.encryption.CredentialStoreServiceImpl;
 import org.apache.ambari.server.stack.StackManagerFactory;
 import org.apache.ambari.server.stageplanner.RoleGraphFactory;
+import org.apache.ambari.server.state.ClusterSettingFactory;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.ConfigFactory;
 import org.apache.ambari.server.state.ServiceComponentFactory;
@@ -266,6 +268,8 @@ public class UserResourceProviderTest extends 
EasyMockSupport {
         
bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
         
bind(RegistryFactory.class).toInstance(createNiceMock(RegistryFactory.class));
         
bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
+        
bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
+        
bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
       }
     });
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
index 9df236f..83b475e 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
@@ -557,6 +557,7 @@ public class AMSPropertyProviderTest {
     Service amsService = createNiceMock(Service.class);
     expect(amsService.getDesiredStackId()).andReturn(stackId);
     expect(amsService.getName()).andReturn("AMS");
+    expect(amsService.getServiceType()).andReturn("AMS");
     
expect(cluster.getServiceByComponentName("METRICS_COLLECTOR")).andReturn(amsService);
 
     expect(cluster.getCurrentStackVersion()).andReturn(stackId).anyTimes();
@@ -637,6 +638,7 @@ public class AMSPropertyProviderTest {
     Service hbaseService = createNiceMock(Service.class);
     expect(hbaseService.getDesiredStackId()).andReturn(stackId);
     expect(hbaseService.getName()).andReturn("HBASE");
+    expect(hbaseService.getServiceType()).andReturn("HBASE");
     
expect(cluster.getServiceByComponentName("HBASE_REGIONSERVER")).andReturn(hbaseService);
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/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 dafc5e8..1a8340a 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
@@ -88,6 +88,7 @@ import org.apache.ambari.server.state.ServiceComponentFactory;
 import org.apache.ambari.server.state.ServiceComponentHost;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
 import org.apache.ambari.server.state.ServiceFactory;
+import org.apache.ambari.server.state.ServiceGroup;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.alert.Scope;
@@ -421,13 +422,13 @@ public class OrmTestHelper {
 
     clusters.addCluster(clusterName, stackId);
     Cluster cluster = clusters.getCluster(clusterName);
+    ServiceGroup servcieGroup = cluster.addServiceGroup("CORE");
     cluster = initializeClusterWithStack(cluster);
 
     addHost(clusters, cluster, hostName);
 
-    installHdfsService(cluster, serviceFactory, componentFactory, schFactory, 
hostName);
-    installYarnService(cluster, serviceFactory, componentFactory, schFactory,
-        hostName);
+    installHdfsService(cluster, serviceFactory, componentFactory, schFactory, 
hostName, servcieGroup);
+    installYarnService(cluster, serviceFactory, componentFactory, schFactory, 
hostName, servcieGroup);
     return cluster;
   }
 
@@ -464,13 +465,13 @@ public class OrmTestHelper {
 
   public void installHdfsService(Cluster cluster,
       ServiceFactory serviceFactory, ServiceComponentFactory componentFactory,
-      ServiceComponentHostFactory schFactory, String hostName) throws 
Exception {
+      ServiceComponentHostFactory schFactory, String hostName, ServiceGroup 
serviceGroup) throws Exception {
 
     RepositoryVersionEntity repositoryVersion = 
repositoryVersionDAO.findByStackAndVersion(cluster.getDesiredStackVersion(),
         cluster.getDesiredStackVersion().getStackVersion());
 
     String serviceName = "HDFS";
-    Service service = serviceFactory.createNew(cluster, null, new 
ArrayList<ServiceKey>(), serviceName, "", repositoryVersion);
+    Service service = serviceFactory.createNew(cluster, serviceGroup, new 
ArrayList<ServiceKey>(), serviceName, serviceName, repositoryVersion);
     service = cluster.getService(serviceName);
     assertNotNull(service);
 
@@ -498,13 +499,13 @@ public class OrmTestHelper {
 
   public void installYarnService(Cluster cluster,
       ServiceFactory serviceFactory, ServiceComponentFactory componentFactory,
-      ServiceComponentHostFactory schFactory, String hostName) throws 
Exception {
+      ServiceComponentHostFactory schFactory, String hostName, ServiceGroup 
serviceGroup) throws Exception {
 
     RepositoryVersionEntity repositoryVersion = 
repositoryVersionDAO.findByStackAndVersion(cluster.getDesiredStackVersion(),
         cluster.getDesiredStackVersion().getStackVersion());
 
     String serviceName = "YARN";
-    Service service = serviceFactory.createNew(cluster, null, new 
ArrayList<ServiceKey>(), serviceName, "", repositoryVersion);
+    Service service = serviceFactory.createNew(cluster, serviceGroup, new 
ArrayList<ServiceKey>(), serviceName, serviceName, repositoryVersion);
     service = cluster.getService(serviceName);
     assertNotNull(service);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDispatchDAOTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDispatchDAOTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDispatchDAOTest.java
index 4dac019..b552565 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDispatchDAOTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDispatchDAOTest.java
@@ -62,6 +62,7 @@ import org.apache.ambari.server.state.NotificationState;
 import org.apache.ambari.server.state.ServiceComponentFactory;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
 import org.apache.ambari.server.state.ServiceFactory;
+import org.apache.ambari.server.state.ServiceGroup;
 import org.apache.ambari.server.state.alert.Scope;
 import org.apache.ambari.server.state.alert.SourceType;
 import org.apache.ambari.server.utils.EventBusSynchronizer;
@@ -82,6 +83,7 @@ public class AlertDispatchDAOTest {
 
   private Clusters m_clusters;
   private Cluster m_cluster;
+  private ServiceGroup serviceGroup;
   private Injector m_injector;
   private AlertDispatchDAO m_dao;
   private AlertDefinitionDAO m_definitionDao;
@@ -118,6 +120,7 @@ public class AlertDispatchDAOTest {
     EventBusSynchronizer.synchronizeAmbariEventPublisher(m_injector);
 
     m_cluster = m_clusters.getClusterById(m_helper.createCluster());
+    serviceGroup = m_cluster.addServiceGroup("CORE");
     m_helper.initializeClusterWithStack(m_cluster);
   }
 
@@ -564,8 +567,8 @@ public class AlertDispatchDAOTest {
   @Test
   public void testAlertNoticePredicate() throws Exception {
     m_helper.addHost(m_clusters, m_cluster, HOSTNAME);
-    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
-    m_helper.installYarnService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
+    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
+    m_helper.installYarnService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
 
     m_alertHelper.populateData(m_cluster);
 
@@ -643,8 +646,8 @@ public class AlertDispatchDAOTest {
   @Test
   public void testAlertNoticePagination() throws Exception {
     m_helper.addHost(m_clusters, m_cluster, HOSTNAME);
-    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
-    m_helper.installYarnService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
+    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
+    m_helper.installYarnService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
 
     m_alertHelper.populateData(m_cluster);
 
@@ -685,8 +688,8 @@ public class AlertDispatchDAOTest {
   @Test
   public void testAlertNoticeSorting() throws Exception {
     m_helper.addHost(m_clusters, m_cluster, HOSTNAME);
-    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
-    m_helper.installYarnService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
+    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
+    m_helper.installYarnService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
 
     m_alertHelper.populateData(m_cluster);
 
@@ -750,7 +753,7 @@ public class AlertDispatchDAOTest {
   @Test
   public void testDefaultGroupAutomaticCreation() throws Exception {
     m_helper.addHost(m_clusters, m_cluster, HOSTNAME);
-    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
+    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
     //m_helper.installYarnService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
 
     AlertGroupEntity hdfsGroup = m_dao.findDefaultServiceGroup(
@@ -788,7 +791,7 @@ public class AlertDispatchDAOTest {
   public void testDefaultGroupInvalidServiceNoCreation() throws Exception {
     initTestData();
     m_helper.addHost(m_clusters, m_cluster, HOSTNAME);
-    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
+    m_helper.installHdfsService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
     //m_helper.installYarnService(m_cluster, m_serviceFactory, 
m_componentFactory, m_schFactory, HOSTNAME);
 
     assertEquals(3, m_dao.findAllGroups().size());
@@ -823,7 +826,7 @@ public class AlertDispatchDAOTest {
     // install YARN (which doesn't have any alerts defined in the test JSON)
     // so that the definitions get created correctly
     m_helper.installYarnService(m_cluster, m_serviceFactory,
-        m_componentFactory, m_schFactory, HOSTNAME);
+        m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
 
     List<AlertDefinitionEntity> alertDefinitionEntities = new ArrayList<>();
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
index 933743f..60d7a24 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
@@ -65,6 +65,7 @@ import org.apache.ambari.server.state.ServiceComponentFactory;
 import org.apache.ambari.server.state.ServiceComponentHost;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
 import org.apache.ambari.server.state.ServiceFactory;
+import org.apache.ambari.server.state.ServiceGroup;
 import org.apache.ambari.server.state.alert.Scope;
 import org.apache.ambari.server.state.alert.SourceType;
 import org.apache.ambari.server.utils.EventBusSynchronizer;
@@ -86,6 +87,7 @@ public class AlertsDAOTest {
 
   private Clusters m_clusters;
   private Cluster m_cluster;
+  private ServiceGroup serviceGroup;
   private Injector m_injector;
   private OrmTestHelper m_helper;
   private AlertsDAO m_dao;
@@ -121,10 +123,11 @@ public class AlertsDAOTest {
     // install YARN so there is at least 1 service installed and no
     // unexpected alerts since the test YARN service doesn't have any alerts
     m_cluster = m_clusters.getClusterById(m_helper.createCluster());
+    serviceGroup = m_cluster.addServiceGroup("CORE");
     m_helper.initializeClusterWithStack(m_cluster);
     m_helper.addHost(m_clusters, m_cluster, HOSTNAME);
     m_helper.installYarnService(m_cluster, m_serviceFactory,
-        m_componentFactory, m_schFactory, HOSTNAME);
+        m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
 
     // create 5 definitions
     for (int i = 0; i < 5; i++) {
@@ -1030,7 +1033,7 @@ public class AlertsDAOTest {
   @Test
   public void testMaintenanceMode() throws Exception {
     m_helper.installHdfsService(m_cluster, m_serviceFactory,
-        m_componentFactory, m_schFactory, HOSTNAME);
+        m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
 
     List<AlertCurrentEntity> currents = m_dao.findCurrent();
     for (AlertCurrentEntity current : currents) {
@@ -1219,7 +1222,7 @@ public class AlertsDAOTest {
   @Test
   public void testAlertHistoryPredicate() throws Exception {
     m_helper.installHdfsService(m_cluster, m_serviceFactory,
-        m_componentFactory, m_schFactory, HOSTNAME);
+        m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
     m_alertHelper.populateData(m_cluster);
 
     Predicate clusterPredicate = null;
@@ -1312,7 +1315,7 @@ public class AlertsDAOTest {
   @Test
   public void testAlertHistoryPagination() throws Exception {
     m_helper.installHdfsService(m_cluster, m_serviceFactory,
-        m_componentFactory, m_schFactory, HOSTNAME);
+        m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
     m_alertHelper.populateData(m_cluster);
 
     AlertHistoryRequest request = new AlertHistoryRequest();
@@ -1352,7 +1355,7 @@ public class AlertsDAOTest {
   @Test
   public void testAlertHistorySorting() throws Exception {
     m_helper.installHdfsService(m_cluster, m_serviceFactory,
-        m_componentFactory, m_schFactory, HOSTNAME);
+        m_componentFactory, m_schFactory, HOSTNAME, serviceGroup);
     m_alertHelper.populateData(m_cluster);
 
     List<SortRequestProperty> sortProperties = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/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 658ba84..8568b8c 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
@@ -32,6 +32,7 @@ import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.ServiceComponentNotFoundException;
 import org.apache.ambari.server.ServiceNotFoundException;
+import org.apache.ambari.server.api.services.ServiceGroupKey;
 import org.apache.ambari.server.api.services.ServiceKey;
 import org.apache.ambari.server.controller.ServiceComponentHostResponse;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
@@ -63,6 +64,8 @@ import 
org.apache.ambari.server.state.ServiceComponentHostEvent;
 import org.apache.ambari.server.state.ServiceComponentHostEventType;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
 import org.apache.ambari.server.state.ServiceFactory;
+import org.apache.ambari.server.state.ServiceGroup;
+import org.apache.ambari.server.state.ServiceGroupFactory;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.UpgradeState;
@@ -109,11 +112,14 @@ public class ServiceComponentHostTest {
   private HostComponentDesiredStateDAO hostComponentDesiredStateDAO;
   @Inject
   private HostComponentStateDAO hostComponentStateDAO;
+  @Inject
+  private ServiceGroupFactory serviceGroupFactory;
 
   private String clusterName = "c1";
   private String hostName1 = "h1";
   private Map<String, String> hostAttributes = new HashMap<>();
   private RepositoryVersionEntity repositoryVersion;
+  private ServiceGroup serviceGroup;
 
 
   @Before
@@ -125,10 +131,11 @@ public class ServiceComponentHostTest {
     EventBusSynchronizer.synchronizeAmbariEventPublisher(injector);
 
     StackId stackId = new StackId("HDP-2.0.6");
-    createCluster(stackId, clusterName);
-
     repositoryVersion = helper.getOrCreateRepositoryVersion(stackId, 
stackId.getStackVersion());
+    createCluster(stackId, clusterName, repositoryVersion.getVersion());
+
 
+    serviceGroup = 
serviceGroupFactory.createNew(clusters.getCluster(clusterName), "test_group", 
new HashSet<ServiceGroupKey>());
     hostAttributes.put("os_family", "redhat");
     hostAttributes.put("os_release_version", "5.9");
     Set<String> hostNames = new HashSet<>();
@@ -142,8 +149,8 @@ public class ServiceComponentHostTest {
     H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
-  private ClusterEntity createCluster(StackId stackId, String clusterName) 
throws AmbariException {
-    helper.createStack(stackId);
+  private ClusterEntity createCluster(StackId stackId, String clusterName, 
String repoVersion) throws AmbariException {
+    helper.createStackWithRepoVersion(stackId, repoVersion);
     clusters.addCluster(clusterName, stackId);
     ClusterEntity clusterEntity = clusterDAO.findByName(clusterName);
     Assert.assertNotNull(clusterEntity);
@@ -172,14 +179,15 @@ public class ServiceComponentHostTest {
       String hostName, boolean isClient) throws AmbariException{
     Cluster c = clusters.getCluster(clusterName);
     Assert.assertNotNull(c.getConfigGroups());
-    return createNewServiceComponentHost(c, svc, svcComponent, hostName);
+    return createNewServiceComponentHost(c, svc, svcComponent, hostName, 
serviceGroup);
   }
 
   private ServiceComponentHost createNewServiceComponentHost(
       Cluster c,
       String svc,
       String svcComponent,
-      String hostName) throws AmbariException{
+      String hostName,
+      ServiceGroup customServiceGroup) throws AmbariException{
 
     Service s = null;
 
@@ -188,7 +196,7 @@ public class ServiceComponentHostTest {
     } catch (ServiceNotFoundException e) {
       LOG.debug("Calling service create, serviceName={}", svc);
 
-      s = serviceFactory.createNew(c, null, new ArrayList<ServiceKey>(), svc, 
"", repositoryVersion);
+      s = serviceFactory.createNew(c, customServiceGroup, new 
ArrayList<ServiceKey>(), svc, svc, repositoryVersion);
       c.addService(s);
     }
 
@@ -705,7 +713,9 @@ public class ServiceComponentHostTest {
     String stackVersion = "HDP-2.0.6";
     StackId stackId = new StackId(stackVersion);
     String clusterName = "c2";
-    createCluster(stackId, clusterName);
+    createCluster(stackId, clusterName, "");
+
+    ServiceGroup customServiceGroup = 
serviceGroupFactory.createNew(clusters.getCluster(clusterName), "custom_group", 
new HashSet<ServiceGroupKey>());
 
     final String hostName = "h3";
     Set<String> hostNames = new HashSet<>();
@@ -720,9 +730,9 @@ public class ServiceComponentHostTest {
 
     RepositoryVersionEntity repositoryVersion = 
helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
 
-    ServiceComponentHost sch1 = createNewServiceComponentHost(cluster, "HDFS", 
"NAMENODE", hostName);
-    ServiceComponentHost sch2 = createNewServiceComponentHost(cluster, "HDFS", 
"DATANODE", hostName);
-    ServiceComponentHost sch3 = createNewServiceComponentHost(cluster, 
"MAPREDUCE2", "HISTORYSERVER", hostName);
+    ServiceComponentHost sch1 = createNewServiceComponentHost(cluster, "HDFS", 
"NAMENODE", hostName, customServiceGroup);
+    ServiceComponentHost sch2 = createNewServiceComponentHost(cluster, "HDFS", 
"DATANODE", hostName, customServiceGroup);
+    ServiceComponentHost sch3 = createNewServiceComponentHost(cluster, 
"MAPREDUCE2", "HISTORYSERVER", hostName, customServiceGroup);
 
     sch1.getServiceComponent().setDesiredRepositoryVersion(repositoryVersion);
 
@@ -896,7 +906,9 @@ public class ServiceComponentHostTest {
     String stackVersion = "HDP-2.0.6";
     StackId stackId = new StackId(stackVersion);
     String clusterName = "c2";
-    createCluster(stackId, clusterName);
+    createCluster(stackId, clusterName, "");
+
+    ServiceGroup customServiceGroup = 
serviceGroupFactory.createNew(clusters.getCluster(clusterName), "custom_group", 
new HashSet<ServiceGroupKey>());
 
     final String hostName = "h3";
     Set<String> hostNames = new HashSet<>();
@@ -907,9 +919,9 @@ public class ServiceComponentHostTest {
 
     RepositoryVersionEntity repositoryVersion = 
helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
 
-    ServiceComponentHost sch1 = createNewServiceComponentHost(cluster, "HDFS", 
"NAMENODE", hostName);
-    ServiceComponentHost sch2 = createNewServiceComponentHost(cluster, "HDFS", 
"DATANODE", hostName);
-    ServiceComponentHost sch3 = createNewServiceComponentHost(cluster, 
"MAPREDUCE2", "HISTORYSERVER", hostName);
+    ServiceComponentHost sch1 = createNewServiceComponentHost(cluster, "HDFS", 
"NAMENODE", hostName, customServiceGroup);
+    ServiceComponentHost sch2 = createNewServiceComponentHost(cluster, "HDFS", 
"DATANODE", hostName, customServiceGroup);
+    ServiceComponentHost sch3 = createNewServiceComponentHost(cluster, 
"MAPREDUCE2", "HISTORYSERVER", hostName, customServiceGroup);
 
     sch1.getServiceComponent().setDesiredRepositoryVersion(repositoryVersion);
 
@@ -1023,7 +1035,9 @@ public class ServiceComponentHostTest {
     String stackVersion = "HDP-2.0.6";
     StackId stackId = new StackId(stackVersion);
     String clusterName = "c2";
-    createCluster(stackId, clusterName);
+    createCluster(stackId, clusterName, "");
+
+    ServiceGroup customServiceGroup = 
serviceGroupFactory.createNew(clusters.getCluster(clusterName), "custom_group", 
new HashSet<ServiceGroupKey>());
 
     final String hostName = "h3";
     Set<String> hostNames = new HashSet<>();
@@ -1037,9 +1051,9 @@ public class ServiceComponentHostTest {
     HostEntity hostEntity = hostDAO.findByName(hostName);
     Assert.assertNotNull(hostEntity);
 
-    ServiceComponentHost sch1 = createNewServiceComponentHost(cluster, "HDFS", 
"NAMENODE", hostName);
-    //ServiceComponentHost sch2 = createNewServiceComponentHost(cluster, 
"HDFS", "DATANODE", hostName);
-    //ServiceComponentHost sch3 = createNewServiceComponentHost(cluster, 
"MAPREDUCE2", "HISTORYSERVER", hostName);
+    ServiceComponentHost sch1 = createNewServiceComponentHost(cluster, "HDFS", 
"NAMENODE", hostName, customServiceGroup);
+    ServiceComponentHost sch2 = createNewServiceComponentHost(cluster, "HDFS", 
"DATANODE", hostName, customServiceGroup);
+    ServiceComponentHost sch3 = createNewServiceComponentHost(cluster, 
"MAPREDUCE2", "HISTORYSERVER", hostName, customServiceGroup);
 
     HostComponentDesiredStateEntity entity = 
hostComponentDesiredStateDAO.findByIndex(
       cluster.getClusterId(),

http://git-wip-us.apache.org/repos/asf/ambari/blob/481175d1/ambari-server/src/test/java/org/apache/ambari/server/testing/DBInconsistencyTests.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/testing/DBInconsistencyTests.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/testing/DBInconsistencyTests.java
index fafeaff..3b63605 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/testing/DBInconsistencyTests.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/testing/DBInconsistencyTests.java
@@ -39,6 +39,7 @@ import org.apache.ambari.server.state.ServiceComponentFactory;
 import org.apache.ambari.server.state.ServiceComponentHost;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
 import org.apache.ambari.server.state.ServiceFactory;
+import org.apache.ambari.server.state.ServiceGroup;
 import org.apache.ambari.server.state.State;
 import org.junit.After;
 import org.junit.Assert;
@@ -94,6 +95,7 @@ public class DBInconsistencyTests {
     Assert.assertNotNull(clusterId);
 
     Cluster cluster = clusters.getCluster(OrmTestHelper.CLUSTER_NAME);
+    ServiceGroup serviceGroup = cluster.addServiceGroup("CORE");
     Assert.assertNotNull(cluster);
 
     helper.addHost(clusters, cluster, "h1");
@@ -101,7 +103,7 @@ public class DBInconsistencyTests {
     helper.initializeClusterWithStack(cluster);
 
     helper.installHdfsService(cluster, serviceFactory,
-      serviceComponentFactory, serviceComponentHostFactory, "h1");
+      serviceComponentFactory, serviceComponentHostFactory, "h1", 
serviceGroup);
 
     Collection<ServiceComponentHost> schList = clusters.getCluster(
       OrmTestHelper.CLUSTER_NAME).getServiceComponentHosts("HDFS", "DATANODE");

Reply via email to