You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ad...@apache.org on 2018/06/06 11:19:47 UTC

[ambari] branch branch-feature-AMBARI-14714 updated: AMBARI-14714. Fix some unit tests (#1464)

This is an automated email from the ASF dual-hosted git repository.

adoroszlai pushed a commit to branch branch-feature-AMBARI-14714
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/branch-feature-AMBARI-14714 by this push:
     new a0fdfc1  AMBARI-14714. Fix some unit tests (#1464)
a0fdfc1 is described below

commit a0fdfc1f43f951c125c3143c1923b41c20ba13e3
Author: Doroszlai, Attila <64...@users.noreply.github.com>
AuthorDate: Wed Jun 6 13:19:38 2018 +0200

    AMBARI-14714. Fix some unit tests (#1464)
---
 .../controller/AmbariManagementControllerImpl.java |  6 +-
 .../internal/ProvisionClusterRequest.java          | 12 +++
 .../ambari/server/orm/dao/ServiceConfigDAO.java    |  2 +-
 .../server/orm/entities/ClusterServiceEntity.java  |  4 +-
 .../server/serveraction/kerberos/Component.java    | 12 +++
 .../ambari/server/state/ServiceGroupImpl.java      |  1 +
 .../api/resources/HostResourceDefinitionTest.java  | 21 ++----
 .../checks/DatabaseConsistencyCheckHelperTest.java | 16 +---
 .../AmbariManagementControllerImplTest.java        | 34 ++++++---
 .../controller/AmbariManagementControllerTest.java | 86 +++++++++++-----------
 .../ambari/server/controller/AmbariServerTest.java | 22 +++---
 .../BackgroundCustomCommandExecutionTest.java      | 72 +++++++++---------
 .../controller/internal/RequestImplTest.java       |  1 -
 .../utilities/KerberosIdentityCleanerTest.java     | 11 +--
 .../orm/entities/ServiceConfigEntityTest.java      | 16 ++--
 ...apAuthenticationProviderForDNWithSpaceTest.java |  1 +
 .../AmbariLdapAuthenticationProviderTest.java      |  1 +
 .../kerberos/FinalizeKerberosServerActionTest.java |  1 +
 .../kerberos/KerberosServerActionTest.java         |  1 +
 .../stack/StackManagerCommonServicesTest.java      | 19 -----
 .../ambari/server/stack/StackModuleTest.java       | 72 ------------------
 .../ambari/server/state/ConfigHelperTest.java      | 12 ---
 .../ambari/server/state/cluster/ClustersTest.java  | 29 +++-----
 .../topology/ClusterDeployWithStartOnlyTest.java   | 25 ++++++-
 ...terInstallWithoutStartOnComponentLevelTest.java | 25 ++++++-
 .../topology/ClusterInstallWithoutStartTest.java   | 25 ++++++-
 .../ambari/server/update/HostUpdateHelperTest.java |  2 +-
 .../server/upgrade/UpgradeCatalog251Test.java      | 14 ++++
 .../server/upgrade/UpgradeCatalog252Test.java      | 24 +++++-
 .../server/upgrade/UpgradeCatalog260Test.java      | 37 +++++++++-
 .../server/upgrade/UpgradeCatalog270Test.java      | 18 ++++-
 .../cust_action_definitions1.xml                   |  6 +-
 .../cust_action_definitions_invalid.xml            |  3 +-
 33 files changed, 339 insertions(+), 292 deletions(-)

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 d7597d2..9b09655 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
@@ -1397,7 +1397,9 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
       // filter on component name if provided
       Set<ServiceComponent> components = new HashSet<>();
       if (request.getComponentName() != null) {
-        components.add(s.getServiceComponent(request.getComponentName()));
+        if (s.getServiceComponents().keySet().contains(request.getComponentName())) {
+          components.add(s.getServiceComponent(request.getComponentName()));
+        }
       } else {
         components.addAll(s.getServiceComponents().values());
       }
@@ -3725,6 +3727,8 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
         request.setServiceName(s.getName());
         request.setComponentName(hostComponentStateEntity.getComponentName());
         request.setComponentType(hostComponentStateEntity.getComponentType());
+      } else {
+        s = cluster.getService(request.getServiceGroupName(), request.getServiceName());
       }
 
       LOG.info("Received a hostComponent DELETE request"
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java
index 3b3700e..4dd0e68 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java
@@ -36,6 +36,7 @@ import org.apache.ambari.server.state.SecurityType;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.quicklinksprofile.QuickLinksProfileBuilder;
 import org.apache.ambari.server.state.quicklinksprofile.QuickLinksProfileEvaluationException;
+import org.apache.ambari.server.topology.Blueprint;
 import org.apache.ambari.server.topology.BlueprintFactory;
 import org.apache.ambari.server.topology.ConfigRecommendationStrategy;
 import org.apache.ambari.server.topology.Configuration;
@@ -54,6 +55,7 @@ import org.slf4j.LoggerFactory;
 import com.google.common.base.Enums;
 import com.google.common.base.Optional;
 import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
 /**
@@ -207,6 +209,16 @@ public class ProvisionClusterRequest extends BaseClusterRequest implements Provi
     }
   }
 
+  // for tests
+  public ProvisionClusterRequest(Blueprint blueprint, Configuration configuration) {
+    configRecommendationStrategy = ConfigRecommendationStrategy.NEVER_APPLY;
+    quickLinksProfileJson = null;
+    mpackInstances = ImmutableList.of();
+    stackIds = ImmutableSet.of();
+    setBlueprint(blueprint);
+    setConfiguration(configuration);
+  }
+
   private String processQuickLinksProfile(Map<String, Object> properties) throws QuickLinksProfileEvaluationException {
     Object globalFilters = properties.get(QUICKLINKS_PROFILE_FILTERS_PROPERTY);
     Object serviceFilters = properties.get(QUICKLINKS_PROFILE_SERVICES_PROPERTY);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java
index 5c4a59e..17fda91 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java
@@ -197,7 +197,7 @@ public class ServiceConfigDAO {
         stackId.getStackVersion());
 
     TypedQuery<ServiceConfigEntity> query = entityManagerProvider.get().createNamedQuery(
-        "ServiceConfigEntity.findAllServiceConfigsByStack",
+        "ServiceConfigEntity.findServiceConfigsByStack",
         ServiceConfigEntity.class);
 
     query.setParameter("clusterId", clusterId);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java
index 4ed7cbb..e0146e3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java
@@ -64,7 +64,7 @@ import javax.persistence.UniqueConstraint;
 )
 public class ClusterServiceEntity {
 
-  @Column(name = "cluster_id", nullable = false, insertable = true, updatable = false, length = 10)
+  @Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
   private Long clusterId;
 
   @Column(name = "service_group_id", nullable = false, insertable = false, updatable = false, length = 10)
@@ -87,7 +87,7 @@ public class ClusterServiceEntity {
 
 
   @ManyToOne
-  @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false, insertable = false, updatable = false)
+  @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
   private ClusterEntity clusterEntity;
 
   @ManyToOne
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/Component.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/Component.java
index ed7642c..0260a31 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/Component.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/Component.java
@@ -21,6 +21,8 @@ import org.apache.ambari.server.state.ServiceComponentHost;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
+import com.google.common.base.MoreObjects;
+
 public class Component {
   private final String hostName;
   private final String serviceName;
@@ -80,4 +82,14 @@ public class Component {
       .append(hostId)
       .toHashCode();
   }
+
+  @Override
+  public String toString() {
+    return MoreObjects.toStringHelper(this)
+      .add("hostName", hostName)
+      .add("serviceName", serviceName)
+      .add("serviceComponentName", serviceComponentName)
+      .add("hostId", hostId)
+      .toString();
+  }
 }
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceGroupImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceGroupImpl.java
index 6813024..04623de 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceGroupImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceGroupImpl.java
@@ -367,6 +367,7 @@ public class ServiceGroupImpl implements ServiceGroup {
     ServiceGroupEntity serviceGroupEntity = getServiceGroupEntity();
     serviceGroupEntity.setStack(stackEntity);
     serviceGroupEntity = serviceGroupDAO.merge(serviceGroupEntity);
+    stackId = new StackId(stackEntity.getStackName(), stackEntity.getStackVersion());
   }
 
   @Override
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/resources/HostResourceDefinitionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/resources/HostResourceDefinitionTest.java
index 70375d2..535ed48 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/resources/HostResourceDefinitionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/resources/HostResourceDefinitionTest.java
@@ -18,9 +18,9 @@
 
 package org.apache.ambari.server.api.resources;
 
+import static java.util.stream.Collectors.toSet;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
 
 import java.util.Set;
 
@@ -29,6 +29,8 @@ import org.apache.ambari.server.api.query.render.HostSummaryRenderer;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.junit.Test;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * HostResourceDefinition unit tests.
  */
@@ -49,10 +51,10 @@ public class HostResourceDefinitionTest {
     final ResourceDefinition resource = new HostResourceDefinition();
     Set<SubResourceDefinition> subResources = resource.getSubResourceDefinitions();
 
-    assertEquals(4, subResources.size());
-    assertTrue(includesType(subResources, Resource.Type.HostComponent));
-    assertTrue(includesType(subResources, Resource.Type.Alert));
-    assertTrue(includesType(subResources, Resource.Type.HostKerberosIdentity));
+    assertEquals(
+      ImmutableSet.of(Resource.Type.Alert, Resource.Type.HostComponent, Resource.Type.HostKerberosIdentity),
+      subResources.stream().map(SubResourceDefinition::getType).collect(toSet())
+    );
   }
 
   @Test
@@ -61,13 +63,4 @@ public class HostResourceDefinitionTest {
     assertSame(HostSummaryRenderer.class, resource.getRenderer("summary").getClass());
     assertSame(DefaultRenderer.class, resource.getRenderer(null).getClass());
   }
-
-  private boolean includesType(Set<SubResourceDefinition> resources, Resource.Type type) {
-    for (SubResourceDefinition subResource : resources) {
-      if (subResource.getType() == type) {
-        return true;
-      }
-    }
-    return false;
-  }
 }
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java
index 43ae195..5bfac54 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java
@@ -494,23 +494,11 @@ public class DatabaseConsistencyCheckHelperTest {
     final ServiceInfo mockHDFSServiceInfo = easyMockSupport.createNiceMock(ServiceInfo.class);
 
     final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class);
-    final MpackManagerFactory mockMpackManagerFacgtory = easyMockSupport.createNiceMock(MpackManagerFactory.class);
+    final MpackManagerFactory mockMpackManagerFactory = easyMockSupport.createNiceMock(MpackManagerFactory.class);
     final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class);
     final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class);
     final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class);
-    final Injector mockInjector = Guice.createInjector(new AbstractModule() {
-      @Override
-      protected void configure() {
-        bind(RootLevelSettingsManagerFactory.class).toInstance(rootLevelSettingsManagerFactoryMock);
-        bind(AmbariMetaInfo.class).toInstance(mockAmbariMetainfo);
-        bind(StackManagerFactory.class).toInstance(mockStackManagerFactory);
-        bind(EntityManager.class).toInstance(mockEntityManager);
-        bind(DBAccessor.class).toInstance(mockDBDbAccessor);
-        bind(Clusters.class).toInstance(mockClusters);
-        bind(OsFamily.class).toInstance(mockOSFamily);
-        bind(MpackManagerFactory.class).toInstance(mockMpackManagerFacgtory);
-      }
-    });
+    final Injector mockInjector = createInjectorWithAmbariMetaInfo(mockAmbariMetainfo, mockDBDbAccessor, rootLevelSettingsManagerFactoryMock, mockStackManagerFactory, mockEntityManager, mockClusters, mockOSFamily, mockMpackManagerFactory);
 
     Map<String, ServiceInfo> services = new HashMap<>();
     services.put("HDFS", mockHDFSServiceInfo);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
index 741455a..e12d4ec 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
@@ -907,7 +907,8 @@ public class AmbariManagementControllerImplTest {
     expect(cluster.getService("CORE", "service1")).andReturn(service).anyTimes();
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
     expect(service.getName()).andReturn("service1").anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component).anyTimes();
     expect(component.getId()).andReturn(1L).times(2);
     expect(component.getServiceComponentHosts()).andReturn(
         new HashMap<String, ServiceComponentHost>() {{
@@ -977,7 +978,8 @@ public class AmbariManagementControllerImplTest {
     expect(cluster.getServicesByServiceGroup("CORE")).andReturn(ImmutableList.of(service)).anyTimes();
     expect(cluster.getService("CORE", "service1")).andReturn(service).anyTimes();
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component).anyTimes();
     expect(component.getId()).andReturn(1L).anyTimes();
     expect(component.getServiceComponentHosts()).andReturn(null);
 
@@ -1066,7 +1068,8 @@ public class AmbariManagementControllerImplTest {
     expect(cluster.getServicesByServiceGroup("CORE")).andReturn(ImmutableList.of(service)).anyTimes();
     expect(cluster.getService("CORE", "service1")).andReturn(service).anyTimes();
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component).anyTimes();
     expect(service.getName()).andReturn("service1").anyTimes();
     expect(component.getName()).andReturn("component1").anyTimes();
     expect(component.getServiceComponentHosts()).andReturn(new HashMap<String, ServiceComponentHost>() {{
@@ -1142,7 +1145,8 @@ public class AmbariManagementControllerImplTest {
     expect(cluster.getServicesByServiceGroup("CORE")).andReturn(ImmutableList.of(service)).anyTimes();
     expect(cluster.getService("CORE", "service1")).andReturn(service).anyTimes();
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component).anyTimes();
     expect(service.getName()).andReturn("service1").anyTimes();
     expect(component.getName()).andReturn("component1").anyTimes();
     expect(component.getServiceComponentHosts()).andReturn(new HashMap<String, ServiceComponentHost>() {{
@@ -1229,7 +1233,8 @@ public class AmbariManagementControllerImplTest {
     expect(cluster.getService("CORE", "service1")).andReturn(service).anyTimes();
 
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component1);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component1, "component2", component2, "component3", component3)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component1).anyTimes();
     expect(service.getName()).andReturn("service1").anyTimes();
     expect(component1.getServiceComponentHosts()).andReturn(
         new HashMap<String, ServiceComponentHost>() {{
@@ -1371,7 +1376,8 @@ public class AmbariManagementControllerImplTest {
     expect(cluster.getServicesByServiceGroup("CORE")).andReturn(ImmutableList.of(service)).anyTimes();
     expect(cluster.getService("CORE", "service1")).andReturn(service).anyTimes();
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component1);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component1, "component2", component2, "component3", component3)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component1).anyTimes();
     expect(component1.getServiceComponentHosts()).andReturn(ImmutableMap.of("host1", componentHost1));
     expect(componentHost1.convertToResponse(null)).andReturn(response1);
     expect(componentHost1.getHostName()).andReturn("host1");
@@ -1380,7 +1386,7 @@ public class AmbariManagementControllerImplTest {
 
     expect(service.getName()).andReturn("service1").anyTimes();
     expect(cluster.getServiceByComponentName("component3")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component3")).andReturn(component3);
+    expect(service.getServiceComponent("component3")).andReturn(component3).anyTimes();
     expect(component3.getServiceComponentHosts()).andReturn(ImmutableMap.of("host1", componentHost2));
     expect(componentHost2.convertToResponse(null)).andReturn(response2);
     expect(componentHost2.getHostName()).andReturn("host1");
@@ -1507,7 +1513,8 @@ public class AmbariManagementControllerImplTest {
     expect(cluster.getServicesByServiceGroup("CORE")).andReturn(ImmutableList.of(service, service2)).anyTimes();
     expect(cluster.getService("CORE", "service1")).andReturn(service).anyTimes();
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component, "component3", component3)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component).anyTimes();
     expect(component.getServiceComponentHosts()).andReturn(ImmutableMap.<String, ServiceComponentHost>builder()
         .put("host1", componentHost1)
         .build());
@@ -1517,8 +1524,9 @@ public class AmbariManagementControllerImplTest {
 //    expect(ambariMetaInfo.getComponentToService("stackName", "stackVersion", "component2")).andReturn("service2");
     expect(cluster.getService("CORE", "service2")).andReturn(service2);
     expect(cluster.getServiceByComponentName("component2")).andReturn(service2).anyTimes();
+    expect(service2.getServiceComponents()).andReturn(ImmutableMap.of()).anyTimes();
     expect(service2.getServiceComponent("component2")).
-        andThrow(new ServiceComponentNotFoundException("cluster1", "service2", "service2", "CORE", "component2"));
+        andThrow(new ServiceComponentNotFoundException("cluster1", "service2", "service2", "CORE", "component2")).anyTimes();
 
 //    expect(ambariMetaInfo.getComponentToService("stackName", "stackVersion", "component3")).andReturn("service1");
     expect(cluster.getServiceByComponentName("component3")).andReturn(service).anyTimes();
@@ -1649,7 +1657,8 @@ public class AmbariManagementControllerImplTest {
     expect(cluster.getServicesByServiceGroup("CORE")).andReturn(ImmutableList.of(service)).anyTimes();
     expect(cluster.getService("CORE", "service1")).andReturn(service).anyTimes();
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component, "component3", component3)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component).anyTimes();
     expect(service.getName()).andReturn("service1").anyTimes();
     expect(component.getServiceComponentHosts()).andReturn(Collections.singletonMap("foo", componentHost1));
     expect(componentHost1.convertToResponse(null)).andReturn(response1);
@@ -1658,7 +1667,7 @@ public class AmbariManagementControllerImplTest {
     expect(clusters.getClustersForHost("host2")).andThrow(new HostNotFoundException("host2"));
 
     expect(cluster.getServiceByComponentName("component3")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component3")).andReturn(component3);
+    expect(service.getServiceComponent("component3")).andReturn(component3).anyTimes();
     expect(component3.getServiceComponentHosts()).andReturn(Collections.singletonMap("foo", componentHost2));
     expect(componentHost2.convertToResponse(null)).andReturn(response2);
     expect(componentHost2.getHostName()).andReturn("host1");
@@ -1887,7 +1896,8 @@ public class AmbariManagementControllerImplTest {
     expect(service.getName()).andReturn("service1").anyTimes();
     expect(component.getName()).andReturn("component1").anyTimes();
     expect(cluster.getServiceByComponentName("component1")).andReturn(service).anyTimes();
-    expect(service.getServiceComponent("component1")).andReturn(component);
+    expect(service.getServiceComponents()).andReturn(ImmutableMap.of("component1", component)).anyTimes();
+    expect(service.getServiceComponent("component1")).andReturn(component).anyTimes();
     expect(component.getServiceComponentHosts()).andReturn(mapHostComponents);
     expect(componentHost1.convertToResponse(null)).andReturn(response1);
     expect(componentHost2.convertToResponse(null)).andReturn(response2);
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 34b54ed..446b87a 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
@@ -229,16 +229,17 @@ public class AmbariManagementControllerTest {
   private HostRoleCommandDAO hostRoleCommandDAO;
   private StackManagerMock stackManagerMock;
 
-  StackId stackId01;
-  StackId stackId02;
-  StackId stackId120;
-  StackId stackId131;
-  StackId stackId201;
-  StackId stackId205;
-  StackId stackId206;
-  StackId stackId207;
-  StackId stackId208;
-  StackId stackId220;
+  private StackId stackId01;
+  private StackId stackId02;
+  private StackId stackId120;
+  private StackId stackId131;
+  private StackId stackId201;
+  private StackId stackId205;
+  private StackId stackId206;
+  private StackId stackId207;
+  private StackId stackId208;
+  private StackId stackId220;
+  private StackId other20;
 
   @Rule
   public ExpectedException expectedException = ExpectedException.none();
@@ -295,6 +296,7 @@ public class AmbariManagementControllerTest {
     stackId207 = helper.createMpack(new StackId("HDP-2.0.7")).getStackId();
     stackId208 = helper.createMpack(new StackId("HDP-2.0.8")).getStackId();
     stackId220 = helper.createMpack(new StackId("HDP-2.2.0")).getStackId();
+    other20 = helper.createMpack(new StackId("OTHER-2.0")).getStackId();
 
     for (Host host : clusters.getHosts()) {
       clusters.updateHostMappings(host);
@@ -3698,33 +3700,29 @@ public class AmbariManagementControllerTest {
 //      // Expected
 //    }
 
-    try {
-      reqs.clear();
-      req1 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
-          componentName1, componentName1, host1,
-          State.INSTALLED.toString());
-      req2 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
-          componentName1, componentName2, host2,
-          State.INSTALLED.toString());
-      req3 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
-          componentName2, componentName2, host1,
-          State.INSTALLED.toString());
-      req4 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
-          componentName2, componentName2, host2,
-          State.INSTALLED.toString());
-      req5 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
-          componentName3, componentName3, host1,
-          State.STARTED.toString());
-      reqs.add(req1);
-      reqs.add(req2);
-      reqs.add(req3);
-      reqs.add(req4);
-      reqs.add(req5);
-      updateHostComponents(reqs, Collections.emptyMap(), true);
-      // Expected, now client components with STARTED status will be ignored
-    } catch (Exception e) {
-      fail("Failure for invalid states");
-    }
+    reqs.clear();
+    req1 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
+        componentName1, componentName1, host1,
+        State.INSTALLED.toString());
+    req2 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
+        componentName1, componentName2, host2,
+        State.INSTALLED.toString());
+    req3 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
+        componentName2, componentName2, host1,
+        State.INSTALLED.toString());
+    req4 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
+        componentName2, componentName2, host2,
+        State.INSTALLED.toString());
+    req5 = new ServiceComponentHostRequest(cluster1, serviceGroupName, serviceName1,
+        componentName3, componentName3, host1,
+        State.STARTED.toString());
+    reqs.add(req1);
+    reqs.add(req2);
+    reqs.add(req3);
+    reqs.add(req4);
+    reqs.add(req5);
+    updateHostComponents(reqs, Collections.emptyMap(), true);
+    // Expected, now client components with STARTED status will be ignored
 
     reqs.clear();
     req1 = new ServiceComponentHostRequest(cluster1, serviceGroupName, null,
@@ -5194,7 +5192,7 @@ public class AmbariManagementControllerTest {
         host1, null);
     createServiceComponentHost(cluster1, serviceGroupName, serviceName, componentName1,
         host2, null);
-    createServiceComponentHost(cluster1, serviceGroupName, null, "SOME_CLIENT_FOR_SERVICE_CHECK",
+    createServiceComponentHost(cluster1, serviceGroupName, serviceName, "SOME_CLIENT_FOR_SERVICE_CHECK",
         host2, null);
 
     ServiceRequest r = new ServiceRequest(cluster1, serviceGroupName, serviceName, null,
@@ -8449,7 +8447,7 @@ public class AmbariManagementControllerTest {
 
     clusters.addHost(HOST1);
     Host host = clusters.getHost(HOST1);
-    setOsFamily(host, "redhat", "5.9");
+    setOsFamily(host, "redhat", "6.3");
     clusters.getHost(HOST1).setState(HostState.HEALTHY);
     clusters.updateHostMappings(host);
 
@@ -8490,12 +8488,12 @@ public class AmbariManagementControllerTest {
     Set<ServiceComponentHostRequest> componentHostRequests = new HashSet<>();
     componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, "HDFS", "DATANODE", "DATANODE", HOST1, null));
     componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, "HDFS", "NAMENODE", "NAMENODE", HOST1, null));
-    componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, null, "HDFS_CLIENT", "HDFS_CLIENT", HOST1, null));
+    componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, "HDFS", "HDFS_CLIENT", "HDFS_CLIENT", HOST1, null));
     componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, "HDFS", "SECONDARY_NAMENODE", "SECONDARY_NAMENODE", HOST1, null));
     componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, "MAPREDUCE2", "HISTORYSERVER", "HISTORYSERVER", HOST1, null));
     componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, "YARN", "RESOURCEMANAGER", "RESOURCEMANAGER", HOST1, null));
     componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, "YARN", "NODEMANAGER", "NODEMANAGER", HOST1, null));
-    componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, null, "YARN_CLIENT", "YARN_CLIENT", HOST1, null));
+    componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME, serviceGroupName, "YARN", "YARN_CLIENT", "YARN_CLIENT", HOST1, null));
 
     amc.createHostComponents(componentHostRequests);
 
@@ -9988,12 +9986,12 @@ public class AmbariManagementControllerTest {
   public void testServiceWidgetCreationOnServiceCreate() throws Exception {
     String cluster1 = getUniqueName();
     ClusterRequest r = new ClusterRequest(null, cluster1,
-      State.INSTALLED.name(), SecurityType.NONE, "OTHER-2.0", null);
+      State.INSTALLED.name(), SecurityType.NONE, other20.getStackId(), null);
     controller.createCluster(r);
     String serviceGroupName = "CORE";
-    ServiceGroupResourceProviderTest.createServiceGroup(controller, cluster1, serviceGroupName, "OTHER-2.0");
+    ServiceGroupResourceProviderTest.createServiceGroup(controller, cluster1, serviceGroupName, other20.getStackId());
     String serviceName = "HBASE";
-    clusters.getCluster(cluster1).setDesiredStackVersion(new StackId("OTHER-2.0"));
+    clusters.getCluster(cluster1).setDesiredStackVersion(other20);
 
     createService(cluster1, serviceGroupName, serviceName, State.INIT);
 
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 ffd86d3..c3edefe 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
@@ -106,6 +106,7 @@ public class AmbariServerTest {
     Configuration configuration = createNiceMock(Configuration.class);
     SessionHandler sessionHandler = createNiceMock(SessionHandler.class);
     SessionCookieConfig sessionCookieConfig = createNiceMock(SessionCookieConfig.class);
+    expect(sessionHandler.getSessionCookieConfig()).andReturn(sessionCookieConfig).anyTimes();
 
     sessionHandlerConfigurer.configuration = configuration;
 
@@ -241,8 +242,6 @@ public class AmbariServerTest {
     final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class);
     final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class);
     final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class);
-    final MpackManagerFactory mpackManagerFactory = easyMockSupport.createNiceMock(MpackManagerFactory.class);
-    final RootLevelSettingsManagerFactory rootLevelSettingsManagerFactory = easyMockSupport.createNiceMock(RootLevelSettingsManagerFactory.class);
     AmbariServer ambariServer = new AmbariServer();
 
 
@@ -258,7 +257,8 @@ public class AmbariServerTest {
 
 
     final Injector mockInjector = createMockInjector(mockAmbariMetainfo,
-        mockDBDbAccessor, mockOSFamily, mockEntityManager, mockClusters, mockConfiguration, rootLevelSettingsManagerFactory, mpackManagerFactory);
+        mockDBDbAccessor, mockOSFamily, mockEntityManager, mockClusters, mockConfiguration
+    );
 
 
     expect(mockDBDbAccessor.getConnection()).andReturn(mockConnection).atLeastOnce();
@@ -321,7 +321,8 @@ public class AmbariServerTest {
     replay(mockConfiguration);
 
     final Injector mockInjector = createMockInjector(mockAmbariMetainfo,
-        mockDBDbAccessor, mockOSFamily, mockEntityManager, mockClusters, mockConfiguration, rootLevelSettingsManagerFactory, mpackManagerFactory);
+        mockDBDbAccessor, mockOSFamily, mockEntityManager, mockClusters, mockConfiguration
+    );
 
 
     expect(mockDBDbAccessor.getConnection()).andReturn(null);
@@ -346,11 +347,12 @@ public class AmbariServerTest {
   }
 
   private Injector createMockInjector(final AmbariMetaInfo mockAmbariMetainfo,
-                                      final DBAccessor mockDBDbAccessor,
-                                      final OsFamily mockOSFamily,
-                                      final EntityManager mockEntityManager,
-                                      final Clusters mockClusters,
-                                      final Configuration mockConfiguration, final RootLevelSettingsManagerFactory mockRootLevelSettingsManagerFactory, MpackManagerFactory mockMpackManagerFactory) {
+    final DBAccessor mockDBDbAccessor,
+    final OsFamily mockOSFamily,
+    final EntityManager mockEntityManager,
+    final Clusters mockClusters,
+    final Configuration mockConfiguration
+  ) {
     return Guice.createInjector(new AbstractModule() {
       @Override
       protected void configure() {
@@ -363,8 +365,6 @@ public class AmbariServerTest {
         bind(EntityManager.class).toInstance(mockEntityManager);
         bind(Clusters.class).toInstance(mockClusters);
         bind(Configuration.class).toInstance(mockConfiguration);
-        bind(RootLevelSettingsManagerFactory.class).toInstance(mockRootLevelSettingsManagerFactory);
-        bind(MpackManagerFactory.class).toInstance(mockMpackManagerFactory);
       }
     });
   }
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java
index 59e1c0e..390dac6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java
@@ -80,6 +80,7 @@ public class BackgroundCustomCommandExecutionTest {
 
   private static final String STACK_VERSION = "2.0.6";
   private static final StackId STACK_ID = new StackId("HDP", STACK_VERSION);
+  private static final String HOSTNAME = "c6401";
 
   @Before
   public void setup() throws Exception {
@@ -125,64 +126,57 @@ public class BackgroundCustomCommandExecutionTest {
     SecurityContextHolder.getContext().setAuthentication(null);
   }
 
-  @SuppressWarnings("serial")
   @Test
-  public void testRebalanceHdfsCustomCommand() {
-    try {
-      createClusterFixture();
-
-      Map<String, String> requestProperties = new HashMap<String, String>() {
-        {
-          put(REQUEST_CONTEXT_PROPERTY, "Refresh YARN Capacity Scheduler");
-          put("command", "REBALANCEHDFS");
-          put("namenode" , "{\"threshold\":13}");//case is important here
-        }
-      };
-
-      ExecuteActionRequest actionRequest = new ExecuteActionRequest("c1",
-          "REBALANCEHDFS", new HashMap<>(), false);
-      actionRequest.getResourceFilters().add(new RequestResourceFilter("CORE", "HDFS", "NAMENODE",Collections.singletonList("c6401")));
+  public void testRebalanceHdfsCustomCommand() throws Exception {
+    createClusterFixture();
+
+    Map<String, String> requestProperties = new HashMap<String, String>() {
+      {
+        put(REQUEST_CONTEXT_PROPERTY, "Refresh YARN Capacity Scheduler");
+        put("command", "REBALANCEHDFS");
+        put("namenode" , "{\"threshold\":13}");//case is important here
+      }
+    };
 
-      controller.createAction(actionRequest, requestProperties);
+    ExecuteActionRequest actionRequest = new ExecuteActionRequest("c1",
+        "REBALANCEHDFS", new HashMap<>(), false);
+    actionRequest.getResourceFilters().add(new RequestResourceFilter("CORE", "HDFS", "NAMENODE", Collections.singletonList(HOSTNAME)));
 
-      Mockito.verify(am, Mockito.times(1)).sendActions(requestCapture.capture(), any(ExecuteActionRequest.class));
+    controller.createAction(actionRequest, requestProperties);
 
-      Request request = requestCapture.getValue();
-      Assert.assertNotNull(request);
-      Assert.assertNotNull(request.getStages());
-      Assert.assertEquals(1, request.getStages().size());
-      Stage stage = request.getStages().iterator().next();
+    Mockito.verify(am, Mockito.times(1)).sendActions(requestCapture.capture(), any(ExecuteActionRequest.class));
 
-      System.out.println(stage);
+    Request request = requestCapture.getValue();
+    Assert.assertNotNull(request);
+    Assert.assertNotNull(request.getStages());
+    Assert.assertEquals(1, request.getStages().size());
+    Stage stage = request.getStages().iterator().next();
 
-      Assert.assertEquals(1, stage.getHosts().size());
+    System.out.println(stage);
 
-      List<ExecutionCommandWrapper> commands = stage.getExecutionCommands("c6401");
-      Assert.assertEquals(1, commands.size());
+    Assert.assertEquals(1, stage.getHosts().size());
 
-      ExecutionCommand command = commands.get(0).getExecutionCommand();
+    List<ExecutionCommandWrapper> commands = stage.getExecutionCommands(HOSTNAME);
+    Assert.assertEquals(1, commands.size());
 
-      Assert.assertEquals(AgentCommandType.BACKGROUND_EXECUTION_COMMAND, command.getCommandType());
-      Assert.assertEquals("{\"threshold\":13}", command.getCommandParams().get("namenode"));
+    ExecutionCommand command = commands.get(0).getExecutionCommand();
 
-    } catch (Exception e) {
-      Assert.fail(e.getMessage());
-    }
+    Assert.assertEquals(AgentCommandType.BACKGROUND_EXECUTION_COMMAND, command.getCommandType());
+    Assert.assertEquals("{\"threshold\":13}", command.getCommandParams().get("namenode"));
   }
 
   private void createClusterFixture() throws AmbariException, AuthorizationException, IllegalAccessException , NoSuchFieldException{
     String clusterName = "c1";
     createCluster(clusterName);
-    addHost("c6401", clusterName);
-    addHost("c6402", clusterName);
-    clusters.getCluster(clusterName);
+
+    addHost(HOSTNAME, clusterName);
+    clusters.updateHostMappings(clusters.getHost(HOSTNAME));
+
     String serviceGroupName = "CORE";
     ServiceGroupResourceProviderTest.createServiceGroup(controller, clusterName, serviceGroupName, STACK_ID.getStackId());
     createService(clusterName, serviceGroupName, "HDFS", null);
-
     createServiceComponent(clusterName, serviceGroupName, "HDFS","NAMENODE", State.INIT);
-
-    createServiceComponentHost(clusterName, serviceGroupName, "HDFS","NAMENODE","c6401", null);
+    createServiceComponentHost(clusterName, serviceGroupName, "HDFS","NAMENODE", HOSTNAME, null);
   }
 
   private void addHost(String hostname, String clusterName) throws AmbariException {
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java
index 51fa566..cb3a859 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java
@@ -85,7 +85,6 @@ public class RequestImplTest {
     Assert.assertTrue(validPropertyIds.contains("HostRoles/actual_configs"));
     Assert.assertTrue(validPropertyIds.contains("HostRoles/desired_stack_id"));
     Assert.assertTrue(validPropertyIds.contains("HostRoles/version"));
-    Assert.assertTrue(validPropertyIds.contains("HostRoles/desired_repository_version"));
     Assert.assertTrue(validPropertyIds.contains("HostRoles/desired_state"));
     Assert.assertTrue(validPropertyIds.contains("HostRoles/state"));
     Assert.assertTrue(validPropertyIds.contains("HostRoles/component_name"));
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java
index 3f7d318..fe01a90 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java
@@ -52,6 +52,7 @@ import org.junit.Test;
 
 public class KerberosIdentityCleanerTest extends EasyMockSupport {
   @Rule public EasyMockRule mocks = new EasyMockRule(this);
+  private static final long HOST_ID = -1;
   private static final String HOST = "c6401";
   private static final String HOST2 = "c6402";
   private static final String OOZIE = "OOZIE";
@@ -77,7 +78,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
   @Test
   public void removesAllKerberosIdentitesOfComponentAfterComponentWasUninstalled() throws Exception {
     installComponent(OOZIE, OOZIE_SERVER, HOST);
-    kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER, -1l)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1", "/OOZIE/OOZIE_SERVER/oozie_server2"));
+    kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER, HOST_ID)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1", "/OOZIE/OOZIE_SERVER/oozie_server2"));
     expectLastCall().once();
     replayAll();
     uninstallComponent(OOZIE, OOZIE_SERVER, HOST);
@@ -95,7 +96,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
   public void skipsRemovingIdentityThatIsSharedByPrincipalName() throws Exception {
     installComponent(OOZIE, OOZIE_SERVER, HOST);
     installComponent(OOZIE_2, OOZIE_SERVER_2, HOST);
-    kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER, -1l)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1"));
+    kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER, HOST_ID)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1"));
     expectLastCall().once();
     replayAll();
     uninstallComponent(OOZIE, OOZIE_SERVER, HOST);
@@ -106,7 +107,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
   public void skipsRemovingIdentityThatIsSharedByKeyTabFilePath() throws Exception {
     installComponent(YARN, RESOURCE_MANAGER, HOST);
     installComponent(YARN_2, RESOURCE_MANAGER_2, HOST);
-    kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, YARN, RESOURCE_MANAGER, -1l)), newHashSet("/YARN/RESOURCE_MANAGER/rm_unique"));
+    kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, YARN, RESOURCE_MANAGER, HOST_ID)), newHashSet("/YARN/RESOURCE_MANAGER/rm_unique"));
     expectLastCall().once();
     replayAll();
     uninstallComponent(YARN, RESOURCE_MANAGER, HOST);
@@ -141,7 +142,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
   }
 
   private ArrayList<Component> hdfsComponents() {
-    return newArrayList(new Component(HOST, HDFS, NAMENODE, 0l), new Component(HOST, HDFS, DATANODE, 0l));
+    return newArrayList(new Component(HOST, HDFS, NAMENODE, HOST_ID), new Component(HOST, HDFS, DATANODE, HOST_ID));
   }
 
   private void installComponent(String serviceName, String componentName, String... hostNames) {
@@ -163,7 +164,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
   }
 
   private void uninstallComponent(String service, String component, String host) throws KerberosMissingAdminCredentialsException {
-    kerberosIdentityCleaner.componentRemoved(new ServiceComponentUninstalledEvent(CLUSTER_ID, "any", "any", service, "", "", component, host, false, false, 1L));
+    kerberosIdentityCleaner.componentRemoved(new ServiceComponentUninstalledEvent(CLUSTER_ID, "any", "any", service, "", "", component, host, false, false, HOST_ID));
   }
 
   private void uninstallService(String service, List<Component> components) throws KerberosMissingAdminCredentialsException {
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ServiceConfigEntityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ServiceConfigEntityTest.java
index fe0fcaa..48f7589 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ServiceConfigEntityTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ServiceConfigEntityTest.java
@@ -29,19 +29,19 @@ public class ServiceConfigEntityTest {
   @Test
   public void testSettersGetters() {
     ServiceConfigEntity entity = new ServiceConfigEntity();
-    //entity.setServiceName("foo");
+    entity.setServiceId(1L);
     entity.setUser("bar");
     entity.setNote("note");
-    entity.setVersion(1L);
-    entity.setServiceConfigId(1L);
-    entity.setClusterId(1L);
+    entity.setVersion(2L);
+    entity.setServiceConfigId(3L);
+    entity.setClusterId(4L);
     entity.setCreateTimestamp(1111L);
-    assertEquals("foo", entity.getServiceName());
+    assertEquals(Long.valueOf(1L), entity.getServiceId());
     assertEquals("bar", entity.getUser());
     assertEquals("note", entity.getNote());
-    assertEquals(Long.valueOf(1), entity.getVersion());
-    assertEquals(Long.valueOf(1), entity.getServiceConfigId());
-    assertEquals(Long.valueOf(1), entity.getClusterId());
+    assertEquals(Long.valueOf(2), entity.getVersion());
+    assertEquals(Long.valueOf(3), entity.getServiceConfigId());
+    assertEquals(Long.valueOf(4), entity.getClusterId());
     assertEquals(Long.valueOf(1111), entity.getCreateTimestamp());
   }
 
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java
index 75dbd2a..1fda935 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java
@@ -179,6 +179,7 @@ public class AmbariLdapAuthenticationProviderForDNWithSpaceTest extends AmbariLd
     properties.setProperty(Configuration.SERVER_VERSION_FILE.getKey(), "src/test/resources/version");
     properties.setProperty(Configuration.OS_VERSION.getKey(), "centos5");
     properties.setProperty(Configuration.SHARED_RESOURCES_DIR.getKey(), "src/test/resources/");
+    properties.setProperty(Configuration.MPACKS_V2_STAGING_DIR_PATH.getKey(), "src/test/resources/mpacks-v2");
     return properties;
   }
 }
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
index f062dc0..97be709 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
@@ -118,6 +118,7 @@ public class AmbariLdapAuthenticationProviderTest extends AmbariLdapAuthenticati
     injector.getInstance(GuiceJpaInitializer.class);
     injector.injectMembers(this);
     configuration.setClientSecurityType(ClientSecurityType.LDAP);
+    configuration.setProperty(Configuration.MPACKS_V2_STAGING_DIR_PATH.getKey(), "src/test/resources/mpacks-v2");
     ldapConfiguration = new AmbariLdapConfiguration();
     ldapConfiguration.setValueFor(AmbariServerConfigurationKey.ALTERNATE_USER_SEARCH_ENABLED, "false");
     ldapConfiguration.setValueFor(AmbariServerConfigurationKey.ALTERNATE_USER_SEARCH_FILTER, "(&(mail={0})(objectClass={userObjectClass}))");
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/FinalizeKerberosServerActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/FinalizeKerberosServerActionTest.java
index 2241120..235d5f8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/FinalizeKerberosServerActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/FinalizeKerberosServerActionTest.java
@@ -162,6 +162,7 @@ public class FinalizeKerberosServerActionTest extends EasyMockSupport {
     expect(executionCommand.getConfigurationTags()).andReturn(Collections.emptyMap()).anyTimes();
     expect(executionCommand.getServiceName()).andReturn(RootComponent.AMBARI_SERVER.name()).anyTimes();
     expect(executionCommand.getTaskId()).andReturn(3L).anyTimes();
+    expect(executionCommand.getMpackId()).andReturn(4L).anyTimes();
 
     return executionCommand;
   }
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerActionTest.java
index 27f30d8..60e873a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerActionTest.java
@@ -163,6 +163,7 @@ public class KerberosServerActionTest extends EasyMockSupport {
     expect(mockExecutionCommand.getRole()).andReturn(null).anyTimes();
     expect(mockExecutionCommand.getServiceName()).andReturn(null).anyTimes();
     expect(mockExecutionCommand.getTaskId()).andReturn(1L).anyTimes();
+    expect(mockExecutionCommand.getMpackId()).andReturn(4L).anyTimes();
 
     expect(mockHostRoleCommand.getRequestId()).andReturn(1L).anyTimes();
     expect(mockHostRoleCommand.getStageId()).andReturn(1L).anyTimes();
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerCommonServicesTest.java b/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerCommonServicesTest.java
index d5626eb..70dd566 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerCommonServicesTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerCommonServicesTest.java
@@ -48,7 +48,6 @@ import org.apache.ambari.server.state.CommandScriptDefinition;
 import org.apache.ambari.server.state.ComponentInfo;
 import org.apache.ambari.server.state.OsSpecific;
 import org.apache.ambari.server.state.PropertyInfo;
-import org.apache.ambari.server.state.RepositoryInfo;
 import org.apache.ambari.server.state.ServiceInfo;
 import org.apache.ambari.server.state.StackInfo;
 import org.apache.ambari.server.state.stack.OsFamily;
@@ -57,9 +56,6 @@ import org.easymock.EasyMock;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-
 
 /**
  * StackManager unit tests.
@@ -150,21 +146,6 @@ public class StackManagerCommonServicesTest {
   }
 
   @Test
-  public void testAddOnServiceRepoIsLoaded() {
-    Collection<StackInfo> stacks = stackManager.getStacks("HDP");
-    StackInfo stack = null;
-    for(StackInfo stackInfo: stackManager.getStacks()) {
-      if ("0.2".equals(stackInfo.getVersion())) {
-        stack = stackInfo;
-        break;
-      }
-    }
-    List<RepositoryInfo> repos = stack.getRepositoriesByOs().get("redhat6");
-    ImmutableSet<String> repoIds = ImmutableSet.copyOf(Lists.transform(repos, RepositoryInfo.GET_REPO_ID_FUNCTION));
-    assertTrue("Repos are expected to contain MSFT_R-8.1", repoIds.contains("ADDON_REPO-1.0"));
-  }
-
-  @Test
   public void testGetStack() {
     StackInfo stack = stackManager.getStack("HDP", "0.1");
     assertNotNull(stack);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/stack/StackModuleTest.java b/ambari-server/src/test/java/org/apache/ambari/server/stack/StackModuleTest.java
index ef2918c..a8a03de 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/stack/StackModuleTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/stack/StackModuleTest.java
@@ -49,78 +49,6 @@ import com.google.common.collect.Multiset;
 public class StackModuleTest {
 
   @Test
-  public void stackServiceReposAreRead() throws Exception {
-    StackModule sm = createStackModule("FooBar",
-        "2.4",
-        Optional.of(Lists.newArrayList(repoInfo("foo", "1.0.1", "http://foo.org"))),
-        Lists.newArrayList(repoInfo("bar", "2.0.1", "http://bar.org")));
-    Set<String> repoIds = getIds(sm.getModuleInfo().getRepositories());
-    assertEquals(ImmutableSet.of("foo:1.0.1", "bar:2.0.1"), repoIds);
-  }
-
-  /**
-   * If more add-on services define the same repo, the duplicate repo definitions should be disregarded.
-   * @throws Exception
-   */
-  @Test
-  public void duplicateStackServiceReposAreDiscarded() throws Exception {
-    StackModule sm = createStackModule("FooBar",
-        "2.4",
-        // stack repos
-        Optional.of(Lists.newArrayList(repoInfo("StackRepoA", "1.1.1", "http://repos.org/stackrepoA"),
-            repoInfo("StackRepoB", "2.2.2", "http://repos.org/stackrepoB"))),
-
-        // stack service repos
-        // These two should be preserved. even though duplicates, the contents are the same
-        Lists.newArrayList(repoInfo("serviceRepoA", "1.0.0", "http://bar.org/1_0_0")),
-        Lists.newArrayList(repoInfo("serviceRepoA", "1.0.0", "http://bar.org/1_0_0")),
-        // These should be dropped as the names are the same but contents are different
-        Lists.newArrayList(repoInfo("serviceRepoB", "1.2.1", "http://bar.org/1_1_1")),
-        Lists.newArrayList(repoInfo("serviceRepoB", "1.2.3", "http://bar.org/1_1_1")),
-        // The first one should be dropped (overrides a stack repo), the rest only generates warnings (duplicate urls)
-        Lists.newArrayList(repoInfo("StackRepoA", "2.0.0", "http://repos.org/stackrepoA_200"),
-            repoInfo("ShouldBeJustAWarning1", "3.1.1", "http://repos.org/stackrepoA"),
-            repoInfo("ShouldBeJustAWarning2", "1.0.0", "http://bar.org/1_0_0")));
-    List<RepositoryInfo> repos = sm.getModuleInfo().getRepositories();
-
-    Set<String> repoIds = getIds(repos);
-    assertEquals("Unexpected number of repos. Each repo should be added only once", repoIds.size(), repos.size());
-    assertEquals("Unexpected repositories",
-        ImmutableSet.of("StackRepoA:1.1.1",
-          "StackRepoB:2.2.2",
-          "serviceRepoA:1.0.0",
-          "ShouldBeJustAWarning1:3.1.1",
-          "ShouldBeJustAWarning2:1.0.0"), repoIds);
-  }
-
-  @Test
-  public void serviceReposAreProcessedEvenIfNoStackRepo() throws Exception {
-    StackModule sm = createStackModule("FooBar",
-        "2.4",
-        Optional.absent(),
-        Lists.newArrayList(repoInfo("bar", "2.0.1", "http://bar.org")));
-    Set<String> repoIds = getIds(sm.getModuleInfo().getRepositories());
-    assertEquals(ImmutableSet.of("bar:2.0.1"), repoIds);
-  }
-
-  /**
-   * If two add-on services define the same repo, the repo should be disregarded.
-   * This applies per os, so the same repo can be defined for multiple os'es (e.g redhat5 and redhat6)
-   * @throws Exception
-   */
-  @Test
-  public void duplicateStackServiceReposAreCheckedPerOs() throws Exception {
-    StackModule sm = createStackModule("FooBar",
-        "2.4",
-        Optional.absent(),
-        Lists.newArrayList(repoInfo("bar", "2.0.1", "http://bar.org", "centos6")),
-        Lists.newArrayList(repoInfo("bar", "2.0.1", "http://bar.org", "centos7")));
-    Multiset<String> repoIds = getIdsMultiple(sm.getModuleInfo().getRepositories());
-    assertEquals("Repo should be occur exactly twice, once for each os type.",
-        ImmutableMultiset.of("bar:2.0.1", "bar:2.0.1"), repoIds);
-  }
-
-  @Test
   public void removedServicesInitialValue () throws Exception {
     StackModule sm = createStackModule("FooBar",
         "2.4",
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 3000e0a..f30bbf4 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
@@ -47,14 +47,11 @@ import org.apache.ambari.server.controller.ClusterRequest;
 import org.apache.ambari.server.controller.ConfigurationRequest;
 import org.apache.ambari.server.controller.spi.ClusterController;
 import org.apache.ambari.server.events.publishers.StateUpdateEventPublisher;
-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.orm.OrmTestHelper;
 import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
-import org.apache.ambari.server.registry.RegistryManager;
-import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
 import org.apache.ambari.server.security.SecurityHelper;
 import org.apache.ambari.server.security.TestAuthenticationFactory;
 import org.apache.ambari.server.stack.StackManagerFactory;
@@ -62,8 +59,6 @@ import org.apache.ambari.server.state.configgroup.ConfigGroup;
 import org.apache.ambari.server.state.configgroup.ConfigGroupFactory;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.apache.ambari.server.testutils.PartialNiceMockBinder;
-import org.apache.ambari.server.topology.ComponentResolver;
-import org.apache.ambari.server.topology.StackFactory;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -1100,14 +1095,7 @@ public class ConfigHelperTest {
           bind(ClusterController.class).toInstance(clusterController);
           bind(StackManagerFactory.class).toInstance(createNiceMock(StackManagerFactory.class));
           bind(HostRoleCommandDAO.class).toInstance(createNiceMock(HostRoleCommandDAO.class));
-          bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
-          bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
           bind(StateUpdateEventPublisher.class).toInstance(createNiceMock(StateUpdateEventPublisher.class));
-          bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
-          bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
-          bind(ComponentResolver.class).toInstance(createNiceMock(ComponentResolver.class));
-          bind(ServiceGroupFactory.class).toInstance(createNiceMock(ServiceGroupFactory.class));
-          bind(StackFactory.class).toInstance(createNiceMock(StackFactory.class));
         }
       });
 
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 24c6283..10b59bf 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
@@ -75,7 +75,6 @@ import org.apache.ambari.server.topology.HostRequest;
 import org.apache.ambari.server.topology.LogicalRequest;
 import org.apache.ambari.server.topology.PersistedState;
 import org.apache.ambari.server.topology.TopologyManager;
-import org.apache.ambari.server.topology.TopologyRequest;
 import org.apache.ambari.server.utils.EventBusSynchronizer;
 import org.junit.After;
 import org.junit.Before;
@@ -459,18 +458,11 @@ public class ClustersTest {
       Maps.newHashMap()
       );
 
-    Map<String, HostGroupInfo> hostGroups = Maps.newHashMap();
+    ProvisionClusterRequest topologyRequest = new ProvisionClusterRequest(bp, clusterConfig);
+    topologyRequest.setClusterId(cluster.getClusterId());
+    topologyRequest.setClusterName("Test Cluster");
 
-    ProvisionClusterRequest topologyRequest = createNiceMock(ProvisionClusterRequest.class);
-    expect(topologyRequest.getType()).andReturn(TopologyRequest.Type.PROVISION).anyTimes();
-    expect(topologyRequest.getBlueprint()).andReturn(bp).anyTimes();
-    expect(topologyRequest.getClusterId()).andReturn(cluster.getClusterId()).anyTimes();
-    expect(topologyRequest.getConfiguration()).andReturn(clusterConfig).anyTimes();
-    expect(topologyRequest.getDescription()).andReturn("Test description").anyTimes();
-    expect(topologyRequest.getHostGroupInfo()).andReturn(hostGroups).anyTimes();
-
-
-    replay(bp, topologyRequest);
+    replay(bp);
 
     persistedState.persistTopologyRequest(topologyRequest);
 
@@ -563,15 +555,12 @@ public class ClustersTest {
     hostGroupInfo.addHost(hostName + "3");
     hostGroups.put(groupName, hostGroupInfo);
 
-    ProvisionClusterRequest topologyRequest = createNiceMock(ProvisionClusterRequest.class);
-    expect(topologyRequest.getType()).andReturn(TopologyRequest.Type.PROVISION).anyTimes();
-    expect(topologyRequest.getBlueprint()).andReturn(bp).anyTimes();
-    expect(topologyRequest.getClusterId()).andReturn(cluster.getClusterId()).anyTimes();
-    expect(topologyRequest.getConfiguration()).andReturn(clusterConfig).anyTimes();
-    expect(topologyRequest.getDescription()).andReturn("Test description").anyTimes();
-    expect(topologyRequest.getHostGroupInfo()).andReturn(hostGroups).anyTimes();
+    ProvisionClusterRequest topologyRequest = new ProvisionClusterRequest(bp, clusterConfig);
+    topologyRequest.setClusterId(cluster.getClusterId());
+    topologyRequest.setClusterName("Test Cluster");
+    topologyRequest.getHostGroupInfo().putAll(hostGroups);
 
-    replay(bp, topologyRequest);
+    replay(bp);
 
     persistedState.persistTopologyRequest(topologyRequest);
 
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
index a49f6d2..ab7e9e5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
@@ -50,11 +50,16 @@ import org.apache.ambari.server.controller.AmbariServer;
 import org.apache.ambari.server.controller.ClusterRequest;
 import org.apache.ambari.server.controller.ConfigurationRequest;
 import org.apache.ambari.server.controller.RequestStatusResponse;
+import org.apache.ambari.server.controller.internal.ArtifactResourceProvider;
+import org.apache.ambari.server.controller.internal.MpackResourceProvider;
 import org.apache.ambari.server.controller.internal.ProvisionAction;
 import org.apache.ambari.server.controller.internal.ProvisionClusterRequest;
 import org.apache.ambari.server.controller.internal.Stack;
 import org.apache.ambari.server.controller.spi.ClusterController;
+import org.apache.ambari.server.controller.spi.RequestStatus;
+import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.ResourceProvider;
+import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.entities.TopologyLogicalRequestEntity;
 import org.apache.ambari.server.security.encryption.CredentialStoreService;
 import org.apache.ambari.server.state.Cluster;
@@ -85,7 +90,7 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 
 @RunWith(PowerMockRunner.class)
-@PrepareForTest(AmbariServer.class)
+@PrepareForTest({ AmbariContext.class, AmbariServer.class })
 public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
   private static final String CLUSTER_NAME = "test-cluster";
   private static final long CLUSTER_ID = 1;
@@ -165,6 +170,10 @@ public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
   private ConfigureClusterTaskFactory configureClusterTaskFactory;
   @Mock(type = MockType.NICE)
   private ConfigureClusterTask configureClusterTask;
+  @Mock(type = MockType.NICE)
+  private ArtifactResourceProvider artifactResourceProvider;
+  @Mock(type = MockType.NICE)
+  private MpackResourceProvider mpackResourceProvider;
 
   @Mock(type = MockType.STRICT)
   private Future mockFuture;
@@ -311,11 +320,12 @@ public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
     expect(request.getDescription()).andReturn("Provision Cluster Test").anyTimes();
     expect(request.getConfiguration()).andReturn(topoConfiguration).anyTimes();
     expect(request.getHostGroupInfo()).andReturn(groupInfoMap).anyTimes();
-    expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY);
+    expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY).anyTimes();
     expect(request.getProvisionAction()).andReturn(ProvisionAction.START_ONLY).anyTimes();
     expect(request.getSecurityConfiguration()).andReturn(null).anyTimes();
     expect(request.getStackIds()).andReturn(ImmutableSet.of()).anyTimes();
     expect(request.getMpacks()).andReturn(ImmutableSet.of()).anyTimes();
+    expect(request.getAllMpacks()).andReturn(ImmutableSet.of()).anyTimes();
 
     expect(componentResolver.resolveComponents(anyObject())).andReturn(ImmutableMap.of(
       "group1", ImmutableSet.of(
@@ -354,6 +364,15 @@ public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
     PowerMock.mockStatic(AmbariServer.class);
     expect(AmbariServer.getController()).andReturn(managementController).anyTimes();
     PowerMock.replay(AmbariServer.class);
+    PowerMock.mockStatic(AmbariContext.class);
+    expect(AmbariContext.getClusterController()).andReturn(clusterController).anyTimes();
+    PowerMock.replay(AmbariContext.class);
+    expect(clusterController.ensureResourceProvider(Resource.Type.Mpack)).andReturn(mpackResourceProvider).anyTimes();
+    expect(clusterController.ensureResourceProvider(Resource.Type.Artifact)).andReturn(artifactResourceProvider).anyTimes();
+    RequestStatus completedStatus = createNiceMock(RequestStatus.class);
+    expect(completedStatus.getStatus()).andReturn(RequestStatus.Status.Complete).anyTimes();
+    expect(artifactResourceProvider.createResources(anyObject())).andReturn(completedStatus).anyTimes();
+    expect(managementController.getAmbariEventPublisher()).andReturn(createNiceMock(AmbariEventPublisher.class)).anyTimes();
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(clusters.getClusterById(anyLong())).andReturn(cluster).anyTimes();
     expect(cluster.getClusterName()).andReturn(CLUSTER_NAME).anyTimes();
@@ -382,10 +401,12 @@ public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
       anyString(), eq(AmbariContext.TaskType.INSTALL), anyBoolean())).andReturn(hostRoleCommandInstallComponent4).times(2);
 
     expect(hostRoleCommandInstallComponent3.getTaskId()).andReturn(1L).atLeastOnce();
+    expect(hostRoleCommandInstallComponent3.getRole()).andReturn(Role.valueOf("component3")).atLeastOnce();
     expect(hostRoleCommandInstallComponent3.getRoleCommand()).andReturn(RoleCommand.INSTALL).atLeastOnce();
     expect(hostRoleCommandInstallComponent3.getStatus()).andReturn(HostRoleStatus.COMPLETED).atLeastOnce();
 
     expect(hostRoleCommandInstallComponent4.getTaskId()).andReturn(2L).atLeastOnce();
+    expect(hostRoleCommandInstallComponent4.getRole()).andReturn(Role.valueOf("component4")).atLeastOnce();
     expect(hostRoleCommandInstallComponent4.getRoleCommand()).andReturn(RoleCommand.INSTALL).atLeastOnce();
     expect(hostRoleCommandInstallComponent4.getStatus()).andReturn(HostRoleStatus.COMPLETED).atLeastOnce();
 
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
index 4e12536..7d1ef83 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
@@ -42,6 +42,7 @@ import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 
+import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.HostRoleCommand;
 import org.apache.ambari.server.actionmanager.HostRoleStatus;
@@ -50,11 +51,16 @@ import org.apache.ambari.server.controller.AmbariServer;
 import org.apache.ambari.server.controller.ClusterRequest;
 import org.apache.ambari.server.controller.ConfigurationRequest;
 import org.apache.ambari.server.controller.RequestStatusResponse;
+import org.apache.ambari.server.controller.internal.ArtifactResourceProvider;
+import org.apache.ambari.server.controller.internal.MpackResourceProvider;
 import org.apache.ambari.server.controller.internal.ProvisionAction;
 import org.apache.ambari.server.controller.internal.ProvisionClusterRequest;
 import org.apache.ambari.server.controller.internal.Stack;
 import org.apache.ambari.server.controller.spi.ClusterController;
+import org.apache.ambari.server.controller.spi.RequestStatus;
+import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.ResourceProvider;
+import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.entities.TopologyLogicalRequestEntity;
 import org.apache.ambari.server.security.encryption.CredentialStoreService;
 import org.apache.ambari.server.state.Cluster;
@@ -85,7 +91,7 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 
 @RunWith(PowerMockRunner.class)
-@PrepareForTest(AmbariServer.class)
+@PrepareForTest({ AmbariContext.class, AmbariServer.class })
 public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupport {
   private static final String CLUSTER_NAME = "test-cluster";
   private static final long CLUSTER_ID = 1;
@@ -155,6 +161,10 @@ public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupp
   private ConfigureClusterTaskFactory configureClusterTaskFactory;
   @Mock(type = MockType.NICE)
   private ConfigureClusterTask configureClusterTask;
+  @Mock(type = MockType.NICE)
+  private ArtifactResourceProvider artifactResourceProvider;
+  @Mock(type = MockType.NICE)
+  private MpackResourceProvider mpackResourceProvider;
 
 
   @Mock(type = MockType.NICE)
@@ -308,11 +318,12 @@ public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupp
     expect(request.getDescription()).andReturn("Provision Cluster Test").anyTimes();
     expect(request.getConfiguration()).andReturn(topoConfiguration).anyTimes();
     expect(request.getHostGroupInfo()).andReturn(groupInfoMap).anyTimes();
-    expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY);
+    expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY).anyTimes();
     expect(request.getProvisionAction()).andReturn(INSTALL_AND_START).anyTimes();
     expect(request.getSecurityConfiguration()).andReturn(null).anyTimes();
     expect(request.getStackIds()).andReturn(ImmutableSet.of()).anyTimes();
     expect(request.getMpacks()).andReturn(ImmutableSet.of()).anyTimes();
+    expect(request.getAllMpacks()).andReturn(ImmutableSet.of()).anyTimes();
 
     expect(componentResolver.resolveComponents(anyObject())).andReturn(ImmutableMap.of(
       "group1", ImmutableSet.of(
@@ -357,6 +368,15 @@ public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupp
     PowerMock.mockStatic(AmbariServer.class);
     expect(AmbariServer.getController()).andReturn(managementController).anyTimes();
     PowerMock.replay(AmbariServer.class);
+    PowerMock.mockStatic(AmbariContext.class);
+    expect(AmbariContext.getClusterController()).andReturn(clusterController).anyTimes();
+    PowerMock.replay(AmbariContext.class);
+    expect(clusterController.ensureResourceProvider(Resource.Type.Mpack)).andReturn(mpackResourceProvider).anyTimes();
+    expect(clusterController.ensureResourceProvider(Resource.Type.Artifact)).andReturn(artifactResourceProvider).anyTimes();
+    RequestStatus completedStatus = createNiceMock(RequestStatus.class);
+    expect(completedStatus.getStatus()).andReturn(RequestStatus.Status.Complete).anyTimes();
+    expect(artifactResourceProvider.createResources(anyObject())).andReturn(completedStatus).anyTimes();
+    expect(managementController.getAmbariEventPublisher()).andReturn(createNiceMock(AmbariEventPublisher.class)).anyTimes();
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(clusters.getClusterById(anyLong())).andReturn(cluster).anyTimes();
     expect(cluster.getClusterName()).andReturn(CLUSTER_NAME).anyTimes();
@@ -382,6 +402,7 @@ public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupp
     expect(ambariContext.createAmbariTask(anyLong(), anyLong(), anyString(),
       anyString(), eq(AmbariContext.TaskType.START), anyBoolean())).andReturn(hostRoleCommand).times(1);
     expect(hostRoleCommand.getTaskId()).andReturn(1L).atLeastOnce();
+    expect(hostRoleCommand.getRole()).andReturn(Role.DATANODE).atLeastOnce();
     expect(hostRoleCommand.getRoleCommand()).andReturn(RoleCommand.INSTALL).atLeastOnce();
     expect(hostRoleCommand.getStatus()).andReturn(HostRoleStatus.COMPLETED).atLeastOnce();
 
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
index 61df17b..cbdd860 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
@@ -42,6 +42,7 @@ import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 
+import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.HostRoleCommand;
 import org.apache.ambari.server.actionmanager.HostRoleStatus;
@@ -50,11 +51,16 @@ import org.apache.ambari.server.controller.AmbariServer;
 import org.apache.ambari.server.controller.ClusterRequest;
 import org.apache.ambari.server.controller.ConfigurationRequest;
 import org.apache.ambari.server.controller.RequestStatusResponse;
+import org.apache.ambari.server.controller.internal.ArtifactResourceProvider;
+import org.apache.ambari.server.controller.internal.MpackResourceProvider;
 import org.apache.ambari.server.controller.internal.ProvisionAction;
 import org.apache.ambari.server.controller.internal.ProvisionClusterRequest;
 import org.apache.ambari.server.controller.internal.Stack;
 import org.apache.ambari.server.controller.spi.ClusterController;
+import org.apache.ambari.server.controller.spi.RequestStatus;
+import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.ResourceProvider;
+import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.entities.TopologyLogicalRequestEntity;
 import org.apache.ambari.server.security.encryption.CredentialStoreService;
 import org.apache.ambari.server.state.Cluster;
@@ -85,7 +91,7 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 
 @RunWith(PowerMockRunner.class)
-@PrepareForTest(AmbariServer.class)
+@PrepareForTest({ AmbariContext.class, AmbariServer.class })
 public class ClusterInstallWithoutStartTest extends EasyMockSupport {
 
   private static final String CLUSTER_NAME = "test-cluster";
@@ -157,6 +163,10 @@ public class ClusterInstallWithoutStartTest extends EasyMockSupport {
   private ConfigureClusterTaskFactory configureClusterTaskFactory;
   @Mock(type = MockType.NICE)
   private ConfigureClusterTask configureClusterTask;
+  @Mock(type = MockType.NICE)
+  private ArtifactResourceProvider artifactResourceProvider;
+  @Mock(type = MockType.NICE)
+  private MpackResourceProvider mpackResourceProvider;
 
 
   @Mock(type = MockType.NICE)
@@ -315,11 +325,12 @@ public class ClusterInstallWithoutStartTest extends EasyMockSupport {
     expect(request.getDescription()).andReturn("Provision Cluster Test").anyTimes();
     expect(request.getConfiguration()).andReturn(topoConfiguration).anyTimes();
     expect(request.getHostGroupInfo()).andReturn(groupInfoMap).anyTimes();
-    expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY);
+    expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY).anyTimes();
     expect(request.getProvisionAction()).andReturn(INSTALL_ONLY).anyTimes();
     expect(request.getSecurityConfiguration()).andReturn(null).anyTimes();
     expect(request.getStackIds()).andReturn(ImmutableSet.of(STACK_ID)).anyTimes();
     expect(request.getMpacks()).andReturn(ImmutableSet.of()).anyTimes();
+    expect(request.getAllMpacks()).andReturn(ImmutableSet.of()).anyTimes();
 
     expect(componentResolver.resolveComponents(anyObject())).andReturn(ImmutableMap.of(
       "group1", ImmutableSet.of(
@@ -359,6 +370,15 @@ public class ClusterInstallWithoutStartTest extends EasyMockSupport {
     PowerMock.mockStatic(AmbariServer.class);
     expect(AmbariServer.getController()).andReturn(managementController).anyTimes();
     PowerMock.replay(AmbariServer.class);
+    PowerMock.mockStatic(AmbariContext.class);
+    expect(AmbariContext.getClusterController()).andReturn(clusterController).anyTimes();
+    PowerMock.replay(AmbariContext.class);
+    expect(clusterController.ensureResourceProvider(Resource.Type.Mpack)).andReturn(mpackResourceProvider).anyTimes();
+    expect(clusterController.ensureResourceProvider(Resource.Type.Artifact)).andReturn(artifactResourceProvider).anyTimes();
+    RequestStatus completedStatus = createNiceMock(RequestStatus.class);
+    expect(completedStatus.getStatus()).andReturn(RequestStatus.Status.Complete).anyTimes();
+    expect(artifactResourceProvider.createResources(anyObject())).andReturn(completedStatus).anyTimes();
+    expect(managementController.getAmbariEventPublisher()).andReturn(createNiceMock(AmbariEventPublisher.class)).anyTimes();
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(clusters.getClusterById(anyLong())).andReturn(cluster).anyTimes();
     expect(cluster.getClusterName()).andReturn(CLUSTER_NAME).anyTimes();
@@ -382,6 +402,7 @@ public class ClusterInstallWithoutStartTest extends EasyMockSupport {
     expect(ambariContext.createAmbariTask(anyLong(), anyLong(), anyString(),
       anyString(), eq(AmbariContext.TaskType.INSTALL), anyBoolean())).andReturn(hostRoleCommand).atLeastOnce();
     expect(hostRoleCommand.getTaskId()).andReturn(1L).atLeastOnce();
+    expect(hostRoleCommand.getRole()).andReturn(Role.DATANODE).atLeastOnce();
     expect(hostRoleCommand.getRoleCommand()).andReturn(RoleCommand.INSTALL).atLeastOnce();
     expect(hostRoleCommand.getStatus()).andReturn(HostRoleStatus.COMPLETED).atLeastOnce();
 
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/update/HostUpdateHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/update/HostUpdateHelperTest.java
index 17f3b12..94c7b7d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/update/HostUpdateHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/update/HostUpdateHelperTest.java
@@ -492,7 +492,7 @@ public class HostUpdateHelperTest {
       @Override
       protected void configure() {
 
-        PartialNiceMockBinder.newBuilder().addConfigsBindings().addFactoriesInstallBinding().build().configure(binder());
+        PartialNiceMockBinder.newBuilder().addAmbariContextBindings().addConfigsBindings().addFactoriesInstallBinding().build().configure(binder());
 
         bind(DBAccessor.class).toInstance(dbAccessor);
         bind(EntityManager.class).toInstance(entityManager);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog251Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog251Test.java
index d35bd91..a5798a0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog251Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog251Test.java
@@ -65,21 +65,28 @@ import org.apache.ambari.server.hooks.HookService;
 import org.apache.ambari.server.hooks.users.UserHookService;
 import org.apache.ambari.server.metadata.CachedRoleCommandOrderProvider;
 import org.apache.ambari.server.metadata.RoleCommandOrderProvider;
+import org.apache.ambari.server.mpack.MpackManagerFactory;
 import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo;
+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.encryption.CredentialStoreService;
 import org.apache.ambari.server.stack.StackManagerFactory;
 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.Config;
 import org.apache.ambari.server.state.SecurityType;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
+import org.apache.ambari.server.state.ServiceGroupFactory;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.apache.ambari.server.testutils.PartialNiceMockBinder;
+import org.apache.ambari.server.topology.ComponentResolver;
 import org.apache.ambari.server.topology.PersistedState;
 import org.apache.ambari.server.topology.PersistedStateImpl;
+import org.apache.ambari.server.topology.StackFactory;
 import org.easymock.Capture;
 import org.easymock.EasyMockRunner;
 import org.easymock.EasyMockSupport;
@@ -316,6 +323,13 @@ public class UpgradeCatalog251Test {
         binder.bind(MetadataHolder.class).toInstance(metadataHolder);
         binder.bind(AgentConfigsHolder.class).toInstance(createNiceMock(AgentConfigsHolder.class));
         binder.bind(StackManagerFactory.class).toInstance(createNiceMock(StackManagerFactory.class));
+        binder.bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
+        binder.bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
+        binder.bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
+        binder.bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
+        binder.bind(ServiceGroupFactory.class).toInstance(createNiceMock(ServiceGroupFactory.class));
+        binder.bind(StackFactory.class).toInstance(createNiceMock(StackFactory.class));
+        binder.bind(ComponentResolver.class).toInstance(createNiceMock(ComponentResolver.class));
       }
     };
     return Guice.createInjector(module);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog252Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog252Test.java
index 8f9616d..595da6c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog252Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog252Test.java
@@ -69,26 +69,33 @@ import org.apache.ambari.server.hooks.users.UserHookService;
 import org.apache.ambari.server.metadata.CachedRoleCommandOrderProvider;
 import org.apache.ambari.server.metadata.ClusterMetadataGenerator;
 import org.apache.ambari.server.metadata.RoleCommandOrderProvider;
+import org.apache.ambari.server.mpack.MpackManagerFactory;
 import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo;
 import org.apache.ambari.server.orm.dao.ArtifactDAO;
 import org.apache.ambari.server.orm.entities.ArtifactEntity;
+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.encryption.CredentialStoreService;
 import org.apache.ambari.server.stack.StackManagerFactory;
 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.Config;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
+import org.apache.ambari.server.state.ServiceGroupFactory;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.kerberos.KerberosComponentDescriptor;
 import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
 import org.apache.ambari.server.state.kerberos.KerberosDescriptorFactory;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.apache.ambari.server.testutils.PartialNiceMockBinder;
+import org.apache.ambari.server.topology.ComponentResolver;
 import org.apache.ambari.server.topology.PersistedState;
 import org.apache.ambari.server.topology.PersistedStateImpl;
+import org.apache.ambari.server.topology.StackFactory;
 import org.easymock.Capture;
 import org.easymock.EasyMockRunner;
 import org.easymock.Mock;
@@ -163,10 +170,13 @@ public class UpgradeCatalog252Test {
   private MetadataHolder metadataHolder;
 
   @Mock(type = MockType.NICE)
+  private ClusterMetadataGenerator metadataGenerator;
+
+  @Mock(type = MockType.NICE)
   private Injector injector;
 
   @Before
-  public void init() {
+  public void init() throws Exception {
     reset(entityManagerProvider, injector);
 
     expect(entityManagerProvider.get()).andReturn(entityManager).anyTimes();
@@ -174,8 +184,9 @@ public class UpgradeCatalog252Test {
     expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
     expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
     expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper).anyTimes();
+    expect(metadataHolder.updateData(anyObject())).andReturn(Boolean.FALSE).anyTimes();
 
-    replay(entityManagerProvider, injector);
+    replay(entityManagerProvider, injector, metadataHolder);
   }
 
   @After
@@ -219,7 +230,6 @@ public class UpgradeCatalog252Test {
     final Service sparkMock = createNiceMock(Service.class);
     final Service spark2Mock = createNiceMock(Service.class);
     final AmbariManagementController controller = createMock(AmbariManagementController.class);
-    final ClusterMetadataGenerator metadataGenerator = createMock(ClusterMetadataGenerator.class);
 
     StackId stackId = new StackId("HDP", "2.2");
 
@@ -466,8 +476,16 @@ public class UpgradeCatalog252Test {
         binder.bind(AmbariMetaInfo.class).toInstance(createNiceMock(AmbariMetaInfo.class));
         binder.bind(KerberosHelper.class).toInstance(createNiceMock(KerberosHelperImpl.class));
         binder.bind(MetadataHolder.class).toInstance(metadataHolder);
+        binder.bind(ClusterMetadataGenerator.class).toInstance(metadataGenerator);
         binder.bind(AgentConfigsHolder.class).toInstance(createNiceMock(AgentConfigsHolder.class));
         binder.bind(StackManagerFactory.class).toInstance(createNiceMock(StackManagerFactory.class));
+        binder.bind(ComponentResolver.class).toInstance(createNiceMock(ComponentResolver.class));
+        binder.bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
+        binder.bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
+        binder.bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
+        binder.bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
+        binder.bind(ServiceGroupFactory.class).toInstance(createNiceMock(ServiceGroupFactory.class));
+        binder.bind(StackFactory.class).toInstance(createNiceMock(StackFactory.class));
       }
     };
     return Guice.createInjector(module);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
index bbee83b..f1b1b6a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
@@ -87,6 +87,7 @@ import org.apache.ambari.server.hooks.users.UserHookService;
 import org.apache.ambari.server.metadata.CachedRoleCommandOrderProvider;
 import org.apache.ambari.server.metadata.ClusterMetadataGenerator;
 import org.apache.ambari.server.metadata.RoleCommandOrderProvider;
+import org.apache.ambari.server.mpack.MpackManagerFactory;
 import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo;
 import org.apache.ambari.server.orm.dao.ArtifactDAO;
@@ -94,11 +95,14 @@ import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
 import org.apache.ambari.server.orm.dao.WidgetDAO;
 import org.apache.ambari.server.orm.entities.ArtifactEntity;
 import org.apache.ambari.server.orm.entities.WidgetEntity;
+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.encryption.CredentialStoreService;
 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.Config;
 import org.apache.ambari.server.state.ConfigFactory;
@@ -110,6 +114,7 @@ import org.apache.ambari.server.state.ServiceComponentFactory;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
 import org.apache.ambari.server.state.ServiceComponentImpl;
 import org.apache.ambari.server.state.ServiceFactory;
+import org.apache.ambari.server.state.ServiceGroupFactory;
 import org.apache.ambari.server.state.ServiceImpl;
 import org.apache.ambari.server.state.ServiceInfo;
 import org.apache.ambari.server.state.StackId;
@@ -135,8 +140,10 @@ import org.apache.ambari.server.state.scheduler.RequestExecutionFactory;
 import org.apache.ambari.server.state.scheduler.RequestExecutionImpl;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.apache.ambari.server.testutils.PartialNiceMockBinder;
+import org.apache.ambari.server.topology.ComponentResolver;
 import org.apache.ambari.server.topology.PersistedState;
 import org.apache.ambari.server.topology.PersistedStateImpl;
+import org.apache.ambari.server.topology.StackFactory;
 import org.apache.ambari.server.topology.tasks.ConfigureClusterTaskFactory;
 import org.apache.commons.io.FileUtils;
 import org.easymock.Capture;
@@ -809,7 +816,7 @@ public class UpgradeCatalog260Test {
     final ClusterMetadataGenerator metadataGenerator = createMock(ClusterMetadataGenerator.class);
     expect(metadataGenerator.getClusterMetadataOnConfigsUpdate(eq(cluster)))
         .andReturn(createNiceMock(MetadataUpdateEvent.class))
-        .once();
+        .anyTimes();
 
     replay(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, hsiConfig, newHsiConfig, response, response1, controller, stackId, metadataGenerator);
 
@@ -915,7 +922,7 @@ public class UpgradeCatalog260Test {
         .addMockedMethod("createConfiguration")
         .addMockedMethod("getClusters", new Class[] { })
         .addMockedMethod("createConfig")
-        .withConstructor(createNiceMock(ActionManager.class), clusters, injector)
+        .withConstructor(createNiceMock(ActionManager.class), clusters, createNiceMock(ClusterMetadataGenerator.class), injector)
         .createNiceMock();
 
     Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
@@ -971,13 +978,16 @@ public class UpgradeCatalog260Test {
     expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
     expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
 
-    replay(injector, clusters, mockHsiConfigs);
+    AgentConfigsHolder agentConfigsHolder = createNiceMock(AgentConfigsHolder.class);
+    MetadataHolder metadataHolder = createNiceMock(MetadataHolder.class);
+    ClusterMetadataGenerator metadataGenerator = easyMockSupport.createNiceMock(ClusterMetadataGenerator.class);
+    replay(injector, clusters, mockHsiConfigs, agentConfigsHolder, metadataGenerator, metadataHolder);
 
     AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
             .addMockedMethod("createConfiguration")
             .addMockedMethod("getClusters", new Class[] { })
             .addMockedMethod("createConfig")
-            .withConstructor(createNiceMock(ActionManager.class), clusters, injector)
+            .withConstructor(createNiceMock(ActionManager.class), clusters, metadataGenerator, injector)
             .createNiceMock();
 
     Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
@@ -989,6 +999,9 @@ public class UpgradeCatalog260Test {
     expect(controller.createConfig(anyObject(Cluster.class), anyObject(StackId.class), anyString(), capture(propertiesCapture), anyString(),
             anyObject(Map.class), anyLong())).andReturn(config).once();
     expect(cluster.getConfig(anyString(), anyString())).andReturn(config);
+    expect(injector2.getInstance(ClusterMetadataGenerator.class)).andReturn(metadataGenerator).anyTimes();
+    expect(injector2.getInstance(MetadataHolder.class)).andReturn(metadataHolder).anyTimes();
+    expect(injector2.getInstance(AgentConfigsHolder.class)).andReturn(agentConfigsHolder).anyTimes();
     replay(controller, injector2, config, cluster);
 
     // This tests the update of HSI config 'hive.llap.daemon.keytab.file'.
@@ -1069,7 +1082,16 @@ public class UpgradeCatalog260Test {
         bind(CredentialStoreService.class).toInstance(createNiceMock(CredentialStoreService.class));
         bind(ExecutionScheduler.class).toInstance(createNiceMock(ExecutionScheduler.class));
         bind(StateUpdateEventPublisher.class).toInstance(createNiceMock(StateUpdateEventPublisher.class));
+        bind(MetadataHolder.class).toInstance(createNiceMock(MetadataHolder.class));
+        bind(AgentConfigsHolder.class).toInstance(createNiceMock(AgentConfigsHolder.class));
         bind(KerberosHelper.class).toInstance(createNiceMock(KerberosHelperImpl.class));
+        bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
+        bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
+        bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
+        bind(ComponentResolver.class).toInstance(createNiceMock(ComponentResolver.class));
+        bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
+        bind(ServiceGroupFactory.class).toInstance(createNiceMock(ServiceGroupFactory.class));
+        bind(StackFactory.class).toInstance(createNiceMock(StackFactory.class));
       }
     });
     expect(controller.getClusters()).andReturn(clusters).anyTimes();
@@ -1129,6 +1151,13 @@ public class UpgradeCatalog260Test {
         binder.bind(KerberosHelper.class).toInstance(createNiceMock(KerberosHelperImpl.class));
         binder.bind(MetadataHolder.class).toInstance(createNiceMock(MetadataHolder.class));
         binder.bind(AgentConfigsHolder.class).toInstance(createNiceMock(AgentConfigsHolder.class));
+        binder.bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
+        binder.bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
+        binder.bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
+        binder.bind(ComponentResolver.class).toInstance(createNiceMock(ComponentResolver.class));
+        binder.bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
+        binder.bind(ServiceGroupFactory.class).toInstance(createNiceMock(ServiceGroupFactory.class));
+        binder.bind(StackFactory.class).toInstance(createNiceMock(StackFactory.class));
 
         binder.install(new FactoryModuleBuilder().build(RequestFactory.class));
         binder.install(new FactoryModuleBuilder().build(ConfigureClusterTaskFactory.class));
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog270Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog270Test.java
index 6601816..e699653 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog270Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog270Test.java
@@ -121,6 +121,7 @@ import static org.easymock.EasyMock.createNiceMock;
 import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.isNull;
 import static org.easymock.EasyMock.mock;
 import static org.easymock.EasyMock.newCapture;
 import static org.easymock.EasyMock.niceMock;
@@ -183,16 +184,20 @@ import org.apache.ambari.server.hooks.users.UserHookService;
 import org.apache.ambari.server.metadata.CachedRoleCommandOrderProvider;
 import org.apache.ambari.server.metadata.ClusterMetadataGenerator;
 import org.apache.ambari.server.metadata.RoleCommandOrderProvider;
+import org.apache.ambari.server.mpack.MpackManagerFactory;
 import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
 import org.apache.ambari.server.orm.dao.ArtifactDAO;
 import org.apache.ambari.server.orm.entities.ArtifactEntity;
+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.SecurityHelper;
 import org.apache.ambari.server.security.encryption.CredentialStoreService;
 import org.apache.ambari.server.serveraction.kerberos.PrepareKerberosIdentitiesServerAction;
 import org.apache.ambari.server.stack.StackManagerFactory;
 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.Config;
 import org.apache.ambari.server.state.ConfigHelper;
@@ -200,6 +205,7 @@ import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponentHostFactory;
 import org.apache.ambari.server.state.ServiceFactory;
+import org.apache.ambari.server.state.ServiceGroupFactory;
 import org.apache.ambari.server.state.ServiceImpl;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.State;
@@ -211,8 +217,10 @@ import org.apache.ambari.server.state.host.HostFactory;
 import org.apache.ambari.server.state.host.HostImpl;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.apache.ambari.server.testutils.PartialNiceMockBinder;
+import org.apache.ambari.server.topology.ComponentResolver;
 import org.apache.ambari.server.topology.PersistedState;
 import org.apache.ambari.server.topology.PersistedStateImpl;
+import org.apache.ambari.server.topology.StackFactory;
 import org.apache.commons.io.IOUtils;
 import org.easymock.Capture;
 import org.easymock.CaptureType;
@@ -577,6 +585,13 @@ public class UpgradeCatalog270Test {
         bind(AmbariMetaInfo.class).toInstance(createNiceMock(AmbariMetaInfo.class));
         bind(KerberosHelper.class).toInstance(createNiceMock(KerberosHelperImpl.class));
         bind(StackManagerFactory.class).toInstance(createNiceMock(StackManagerFactory.class));
+        bind(ComponentResolver.class).toInstance(createNiceMock(ComponentResolver.class));
+        bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
+        bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
+        bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
+        bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
+        bind(ServiceGroupFactory.class).toInstance(createNiceMock(ServiceGroupFactory.class));
+        bind(StackFactory.class).toInstance(createNiceMock(StackFactory.class));
 
         install(new FactoryModuleBuilder().implement(
             Host.class, HostImpl.class).build(HostFactory.class));
@@ -1131,7 +1146,7 @@ public class UpgradeCatalog270Test {
         .addMockedMethod("createConfig")
         .createMock();
     expect(controller.getClusters()).andReturn(clusters).anyTimes();
-    expect(controller.createConfig(eq(cluster1), eq(stackId), eq("kerberos-env"), capture(capturedProperties), anyString(), anyObject(Map.class), 1L)).andReturn(newConfig).once();
+    expect(controller.createConfig(eq(cluster1), eq(stackId), eq("kerberos-env"), capture(capturedProperties), anyString(), anyObject(Map.class), isNull())).andReturn(newConfig).once();
     final ClusterMetadataGenerator metadataGenerator = createMock(ClusterMetadataGenerator.class);
     expect(metadataGenerator.getClusterMetadataOnConfigsUpdate(eq(cluster1))).andReturn(createNiceMock(MetadataUpdateEvent.class)).once();
 
@@ -1139,6 +1154,7 @@ public class UpgradeCatalog270Test {
     Injector injector = createNiceMock(Injector.class);
     expect(injector.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
     expect(injector.getInstance(MetadataHolder.class)).andReturn(createNiceMock(MetadataHolder.class)).anyTimes();
+    expect(injector.getInstance(ClusterMetadataGenerator.class)).andReturn(metadataGenerator).anyTimes();
     expect(injector.getInstance(AgentConfigsHolder.class)).andReturn(createNiceMock(AgentConfigsHolder.class)).anyTimes();
     expect(injector.getInstance(AmbariServer.class)).andReturn(createNiceMock(AmbariServer.class)).anyTimes();
     KerberosHelper kerberosHelperMock = createNiceMock(KerberosHelper.class);
diff --git a/ambari-server/src/test/resources/custom_action_definitions/cust_action_definitions1.xml b/ambari-server/src/test/resources/custom_action_definitions/cust_action_definitions1.xml
index e8e6bc8..80cc489 100644
--- a/ambari-server/src/test/resources/custom_action_definitions/cust_action_definitions1.xml
+++ b/ambari-server/src/test/resources/custom_action_definitions/cust_action_definitions1.xml
@@ -23,6 +23,7 @@
     <actionName>customAction1</actionName>
     <actionType>USER</actionType>
     <inputs>threshold</inputs>
+    <targetServiceGroup>HDPCORE</targetServiceGroup>
     <targetService>MAPREDUCE</targetService>
     <targetComponent>TASKTRACKER</targetComponent>
     <description>A random test</description>
@@ -32,6 +33,7 @@
   <actionDefinition>
     <actionName>customAction2</actionName>
     <actionType>USER</actionType>
+    <targetServiceGroup>HDPCORE</targetServiceGroup>
     <targetService>MAPREDUCE</targetService>
     <targetComponent>TASKTRACKER</targetComponent>
     <description>A random test</description>
@@ -40,6 +42,7 @@
   <actionDefinition>
     <actionName>customAction3</actionName>
     <actionType>USER</actionType>
+    <targetServiceGroup>HDPCORE</targetServiceGroup>
     <targetService>MAPREDUCE</targetService>
     <targetComponent>TASKTRACKER</targetComponent>
     <description>A random test</description>
@@ -47,8 +50,9 @@
   <actionDefinition>
     <actionName>customAction4</actionName>
     <actionType>USERS_OWN</actionType>
+    <targetServiceGroup>HDPCORE</targetServiceGroup>
     <targetService>MAPREDUCE</targetService>
     <targetComponent>TASKTRACKER</targetComponent>
     <description>A random test</description>
   </actionDefinition>
-</actionDefinitions>
\ No newline at end of file
+</actionDefinitions>
diff --git a/ambari-server/src/test/resources/custom_action_definitions_invalid/cust_action_definitions_invalid.xml b/ambari-server/src/test/resources/custom_action_definitions_invalid/cust_action_definitions_invalid.xml
index a6fd71e..cabec0e 100644
--- a/ambari-server/src/test/resources/custom_action_definitions_invalid/cust_action_definitions_invalid.xml
+++ b/ambari-server/src/test/resources/custom_action_definitions_invalid/cust_action_definitions_invalid.xml
@@ -24,10 +24,11 @@
     <actionName>invalidCustomAction1</actionName>
     <actionType>USER</actionType>
     <inputs>threshold</inputs>
+    <targetServiceGroup>HDPCORE</targetServiceGroup>
     <targetService>MAPREDUCE</targetService>
     <targetComponent>TASKTRACKER</targetComponent>
     <description>A random test</description>
     <targetType>ALL</targetType>
     <permissions>NOT.A.PERMISSION</permissions>
   </actionDefinition>
-</actionDefinitions>
\ No newline at end of file
+</actionDefinitions>

-- 
To stop receiving notification emails like this one, please contact
adoroszlai@apache.org.