You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2014/11/20 20:04:01 UTC

ambari git commit: AMBARI-8392. Upgrade Execute: create request/stage/tasks out of upgrade items (ncole)

Repository: ambari
Updated Branches:
  refs/heads/trunk beccf117a -> 6adc6a500


AMBARI-8392. Upgrade Execute: create request/stage/tasks out of upgrade items (ncole)


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

Branch: refs/heads/trunk
Commit: 6adc6a500b43bcf0fccb00cb44b439e7bb8cd722
Parents: beccf11
Author: Nate Cole <nc...@hortonworks.com>
Authored: Thu Nov 20 00:44:26 2014 -0500
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Thu Nov 20 13:32:16 2014 -0500

----------------------------------------------------------------------
 .../controller/ActionExecutionContext.java      |   4 +
 .../controller/AmbariActionExecutionHelper.java |   3 +-
 .../internal/RequestStageContainer.java         |  16 ++
 .../internal/UpgradeResourceProvider.java       | 122 +++++++++++----
 .../system_action_definitions.xml               |   9 ++
 .../custom_actions/scripts/ru_execute_tasks.py  |  49 ++++++
 .../internal/UpgradeResourceProviderTest.java   | 152 +++++++++----------
 7 files changed, 245 insertions(+), 110 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/6adc6a50/ambari-server/src/main/java/org/apache/ambari/server/controller/ActionExecutionContext.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ActionExecutionContext.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ActionExecutionContext.java
index ee64c0d..89f7307 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ActionExecutionContext.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ActionExecutionContext.java
@@ -95,6 +95,10 @@ public class ActionExecutionContext {
     return timeout;
   }
 
+  public void setTimeout(Short timeout) {
+    this.timeout = timeout;
+  }
+
   public List<RequestResourceFilter> getResourceFilters() {
     return resourceFilters;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6adc6a50/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
index 006ab9f..17d5782 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
@@ -48,6 +48,7 @@ import org.apache.ambari.server.state.ServiceInfo;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.svccomphost.ServiceComponentHostOpInProgressEvent;
 import org.apache.ambari.server.utils.StageUtils;
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -335,7 +336,7 @@ public class AmbariActionExecutionHelper {
       Map<String, Map<String, String>> configurations = new TreeMap<String, Map<String, String>>();
       Map<String, Map<String, Map<String, String>>> configurationAttributes = new TreeMap<String, Map<String, Map<String, String>>>();
       Map<String, Map<String, String>> configTags = null;
-      if (!serviceName.isEmpty() && null != cluster) {
+      if (!StringUtils.isEmpty(serviceName) && null != cluster) {
         configTags = managementController.findConfigurationTagsWithOverrides(cluster, hostName);
       }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/6adc6a50/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestStageContainer.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestStageContainer.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestStageContainer.java
index 512ea14..12b7f71 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestStageContainer.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestStageContainer.java
@@ -60,6 +60,8 @@ public class RequestStageContainer {
    */
   private ActionManager actionManager;
 
+  private String requestContext = null;
+
   /**
    * Logger
    */
@@ -120,6 +122,15 @@ public class RequestStageContainer {
   }
 
   /**
+   * Sets the context for the request (optional operation)
+   *
+   * @param context the new context
+   */
+  public void setRequestContext(String context) {
+    requestContext = context;
+  }
+
+  /**
    * Determine the projected state for a host component from the existing stages.
    *
    * @param host       host name
@@ -173,6 +184,11 @@ public class RequestStageContainer {
   public void persist() throws AmbariException {
     if (!stages.isEmpty()) {
       Request request = requestFactory.createNewFromStages(stages);
+
+      if (null != requestContext) {
+        request.setRequestContext(requestContext);
+      }
+
       if (request != null && request.getStages()!= null && !request.getStages().isEmpty()) {
         if (LOG.isDebugEnabled()) {
           LOG.debug(String.format("Triggering Action Manager, request=%s", request));

http://git-wip-us.apache.org/repos/asf/ambari/blob/6adc6a50/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index 4746155..9138ec2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@ -17,6 +17,8 @@
  */
 package org.apache.ambari.server.controller.internal;
 
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -30,9 +32,13 @@ import java.util.Set;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.StaticallyInject;
 import org.apache.ambari.server.actionmanager.ActionManager;
+import org.apache.ambari.server.actionmanager.HostRoleCommand;
 import org.apache.ambari.server.actionmanager.RequestFactory;
+import org.apache.ambari.server.actionmanager.Stage;
 import org.apache.ambari.server.actionmanager.StageFactory;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.controller.ActionExecutionContext;
+import org.apache.ambari.server.controller.AmbariActionExecutionHelper;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
 import org.apache.ambari.server.controller.spi.NoSuchResourceException;
@@ -54,9 +60,8 @@ import org.apache.ambari.server.state.ServiceComponent;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.stack.UpgradePack;
 import org.apache.ambari.server.state.stack.UpgradePack.ProcessingComponent;
-import org.apache.ambari.server.state.stack.upgrade.CountBatch;
-import org.apache.ambari.server.state.stack.upgrade.PercentBatch;
 import org.apache.ambari.server.state.stack.upgrade.Task;
+import org.apache.ambari.server.utils.StageUtils;
 
 import com.google.gson.Gson;
 import com.google.inject.Inject;
@@ -85,9 +90,11 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
   @Inject
   private static RepositoryVersionDAO m_repoVersionDAO = null;
   @Inject
-  private RequestFactory requestFactory;
+  private static Provider<RequestFactory> requestFactory;
+  @Inject
+  private static Provider<StageFactory> stageFactory;
   @Inject
-  private StageFactory stageFactory;
+  private static Provider<AmbariActionExecutionHelper> actionExecutionHelper;
 
 
   static {
@@ -305,7 +312,6 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
       }
     }
 
-
     Gson gson = new Gson();
 
     UpgradeEntity entity = new UpgradeEntity();
@@ -333,11 +339,24 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
 
     m_upgradeDAO.create(entity);
 
-//    RequestStageContainer req = createRequest();
-//
-//    req.getRequestStatusResponse();
+    RequestStageContainer req = createRequest((String) requestMap.get(UPGRADE_VERSION));
+
+    for (StageHolder holder : preUpgrades) {
+      createUpgradeTaskStage(cluster, req, holder);
+    }
+
+    for (StageHolder holder : restart) {
+      createRestartStage(cluster, req, holder);
+    }
+
+    for (StageHolder holder : postUpgrades) {
+      createUpgradeTaskStage(cluster, req, holder);
+    }
+
+    req.getRequestStatusResponse();
+
+    req.persist();
 
-//  TODO req.persist();
     return entity;
   }
 
@@ -449,32 +468,81 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
     private TaskHolder taskHolder;
     private UpgradeItemEntity upgradeItemEntity;
     private Set<String> hosts;
-
-    @Override
-    public String toString() {
-      // TODO Auto-generated method stub
-      return upgradeItemEntity.toString();
-    }
   }
 
 
-  private RequestStageContainer createRequest() {
-
+  private RequestStageContainer createRequest(String version) {
     ActionManager actionManager = getManagementController().getActionManager();
 
     RequestStageContainer requestStages = new RequestStageContainer(
-        actionManager.getNextRequestId(), null, requestFactory, actionManager);
+        actionManager.getNextRequestId(), null, requestFactory.get(), actionManager);
+    requestStages.setRequestContext(String.format("Upgrading to %s", version));
 
-    /*
-    List<Stage> stages = doStageCreation(requestStages, cluster, changedServices, changedComponents,
-        changedHosts, requestParameters, requestProperties,
-        runSmokeTest, reconfigureClients);
-    LOG.debug("Created {} stages", ((stages != null) ? stages.size() : 0));
-
-    requestStages.addStages(stages);
-    updateServiceStates(changedServices, changedComponents, changedHosts, ignoredHosts);
-    */
     return requestStages;
   }
 
+  /**
+   * Creates a stage and appends it to the request.
+   * @param cluster the cluster
+   * @param request the request container
+   * @param holder the holder
+   * @throws AmbariException
+   */
+  private void createUpgradeTaskStage(Cluster cluster, RequestStageContainer request,
+      StageHolder holder) throws AmbariException {
+
+    Map<String, String> hostLevelParams = new HashMap<String, String>();
+    hostLevelParams.put(JDK_LOCATION, getManagementController().getJdkResourceUrl());
+
+    Stage stage = stageFactory.get().createNew(request.getId().longValue(),
+        "/tmp/ambari",
+        cluster.getClusterName(),
+        cluster.getClusterId(),
+        holder.upgradeItemEntity.getText(),
+        "{}", "{}",
+        StageUtils.getGson().toJson(hostLevelParams));
+
+    long stageId = request.getLastStageId() + 1;
+    if (0L == stageId) {
+      stageId = 1L;
+    }
+
+    stage.setStageId(stageId);
+
+    // add each host to this stage
+    RequestResourceFilter filter = new RequestResourceFilter("", "",
+        new ArrayList<String>(holder.hosts));
+
+    // !!! TODO when the custom action is underway, change this
+    Map<String, String> params = new HashMap<String, String>();
+    params.put("tasks", "TheTaskInfo");
+
+    ActionExecutionContext actionContext = new ActionExecutionContext(
+        cluster.getClusterName(), "ru_execute_tasks",
+        Collections.singletonList(filter),
+        params);
+    actionContext.setTimeout(Short.valueOf((short)60));
+
+    // !!! TODO validate the action is valid
+
+    actionExecutionHelper.get().addExecutionCommandsToStage(actionContext, stage);
+
+    // need to set meaningful text on the command
+    for (Map<String, HostRoleCommand> map : stage.getHostRoleCommands().values()) {
+      for (HostRoleCommand hrc : map.values()) {
+        hrc.setCommandDetail(holder.upgradeItemEntity.getText());
+      }
+    }
+
+    request.addStages(Collections.singletonList(stage));
+  }
+
+  private void createRestartStage(Cluster cluster, RequestStageContainer request,
+      StageHolder holder) throws AmbariException {
+
+    // !!! TODO make a restart command
+    createUpgradeTaskStage(cluster, request, holder);
+
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6adc6a50/ambari-server/src/main/resources/custom_action_definitions/system_action_definitions.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/custom_action_definitions/system_action_definitions.xml b/ambari-server/src/main/resources/custom_action_definitions/system_action_definitions.xml
index fb362cc..777ced7 100644
--- a/ambari-server/src/main/resources/custom_action_definitions/system_action_definitions.xml
+++ b/ambari-server/src/main/resources/custom_action_definitions/system_action_definitions.xml
@@ -49,4 +49,13 @@
     <description>Distribute repositories and install packages</description>
     <targetType>ALL</targetType>
   </actionDefinition>
+  <actionDefinition>
+    <actionName>ru_execute_tasks</actionName>
+    <actionType>SYSTEM</actionType>
+    <inputs>tasks</inputs>
+    <targetService/>
+    <targetComponent/>
+    <description>Perform upgrade action</description>
+    <targetType>ANY</targetType>
+  </actionDefinition>
 </actionDefinitions>

http://git-wip-us.apache.org/repos/asf/ambari/blob/6adc6a50/ambari-server/src/main/resources/custom_actions/scripts/ru_execute_tasks.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/custom_actions/scripts/ru_execute_tasks.py b/ambari-server/src/main/resources/custom_actions/scripts/ru_execute_tasks.py
new file mode 100644
index 0000000..cd3e36e
--- /dev/null
+++ b/ambari-server/src/main/resources/custom_actions/scripts/ru_execute_tasks.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Ambari Agent
+
+"""
+
+import json
+import sys
+import traceback
+from resource_management import *
+from resource_management.libraries.functions.list_ambari_managed_repos import *
+from ambari_commons.os_check import OSCheck, OSConst
+
+
+class ExecuteUpgradeTasks(Script):
+  """
+  This script is a part of Rolling Upgrade workflow and is described at
+  appropriate design doc.
+
+  It executes tasks used for rolling upgrades.
+  """
+
+  def actionexecute(self, env):
+
+    # Parse parameters
+    config = Script.get_config()
+    #tasks = json.loads(config['roleParams']['tasks'])
+
+    print str(config)
+
+
+if __name__ == "__main__":
+  ExecuteUpgradeTasks().execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/6adc6a50/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index 15db70e..b23845c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -17,22 +17,18 @@
  */
 package org.apache.ambari.server.controller.internal;
 
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.capture;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.createStrictMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
+import org.apache.ambari.server.actionmanager.ActionManager;
+import org.apache.ambari.server.actionmanager.HostRoleCommand;
+import org.apache.ambari.server.actionmanager.RequestStatus;
+import org.apache.ambari.server.actionmanager.Stage;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
@@ -44,21 +40,17 @@ import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
 import org.apache.ambari.server.orm.entities.UpgradeEntity;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponent;
-import org.apache.ambari.server.state.ServiceComponentHost;
 import org.apache.ambari.server.state.StackId;
-import org.easymock.Capture;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.inject.Binder;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.Module;
 import com.google.inject.persist.PersistService;
-import com.google.inject.util.Modules;
 
 /**
  * UpgradeResourceDefinition tests.
@@ -67,30 +59,57 @@ public class UpgradeResourceProviderTest {
 
   private UpgradeDAO upgradeDao = null;
   private RepositoryVersionDAO repoVersionDao = null;
-  private Injector m_injector;
+  private Injector injector;
+  private Clusters clusters;
 
   @Before
-  public void before() {
-    upgradeDao = createStrictMock(UpgradeDAO.class);
-    repoVersionDao = createStrictMock(RepositoryVersionDAO.class);
-
-    m_injector = Guice.createInjector(Modules.override(
-        new InMemoryDefaultTestModule()).with(new Module() {
-
-          @Override
-          public void configure(Binder binder) {
-            // TODO Auto-generated method stub
-            binder.bind(UpgradeDAO.class).toInstance(upgradeDao);
-            binder.bind(RepositoryVersionDAO.class).toInstance(repoVersionDao);
-          }
-        }));
-    m_injector.getInstance(GuiceJpaInitializer.class);
+  public void before() throws Exception {
+
+    injector = Guice.createInjector(new InMemoryDefaultTestModule());
+    injector.getInstance(GuiceJpaInitializer.class);
+
+    upgradeDao = injector.getInstance(UpgradeDAO.class);
+    repoVersionDao = injector.getInstance(RepositoryVersionDAO.class);
+
+    RepositoryVersionEntity repoVersionEntity = new RepositoryVersionEntity();
+    repoVersionEntity.setDisplayName("My New Version");
+    repoVersionEntity.setRepositories("");
+    repoVersionEntity.setStack("HDP-2.1.1");
+    repoVersionEntity.setUpgradePackage("upgrade_test");
+    repoVersionEntity.setVersion("2.2.2.2");
+
+    repoVersionDao.create(repoVersionEntity);
+
+    clusters = injector.getInstance(Clusters.class);
+    clusters.addCluster("c1");
+    Cluster cluster = clusters.getCluster("c1");
+    cluster.setDesiredStackVersion(new StackId("HDP-2.1.1"));
+
+    clusters.addHost("h1");
+    Host host = clusters.getHost("h1");
+    Map<String, String> hostAttributes = new HashMap<String, String>();
+    hostAttributes.put("os_family", "redhat");
+    hostAttributes.put("os_release_version", "6.3");
+    host.setHostAttributes(hostAttributes);
+    host.persist();
+
+    clusters.mapHostToCluster("h1", "c1");
+
+    // add a single ZK server
+    Service service = cluster.addService("ZOOKEEPER");
+    service.setDesiredStackVersion(cluster.getDesiredStackVersion());
+    service.persist();
+
+    ServiceComponent component = service.addServiceComponent("ZOOKEEPER_SERVER");
+    component.addServiceComponentHost("h1");
+
+
   }
 
   @After
   public void after() {
-    m_injector.getInstance(PersistService.class).stop();
-    m_injector = null;
+    injector.getInstance(PersistService.class).stop();
+    injector = null;
   }
 
   /**
@@ -98,23 +117,13 @@ public class UpgradeResourceProviderTest {
    */
   @Test
   public void testCreateResources() throws Exception {
-    AmbariManagementController amc = createMock(AmbariManagementController.class);
-    Clusters clusters = createMock(Clusters.class);
-    Cluster cluster = createCluster();
-
-    expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
-    expect(clusters.getCluster((String) anyObject())).andReturn(cluster).atLeastOnce();
 
-    RepositoryVersionEntity repoVersionEntity = new RepositoryVersionEntity();
-    repoVersionEntity.setUpgradePackage("upgrade_test");
+    Cluster cluster = clusters.getCluster("c1");
 
-    expect(repoVersionDao.findByStackAndVersion((String)anyObject(),(String)anyObject())).andReturn(repoVersionEntity).atLeastOnce();
+    List<UpgradeEntity> upgrades = upgradeDao.findUpgrades(cluster.getClusterId());
+    assertEquals(0, upgrades.size());
 
-    Capture<UpgradeEntity> entityCapture = new Capture<UpgradeEntity>();
-    upgradeDao.create(capture(entityCapture));
-    expectLastCall();
-
-    replay(amc, clusters, cluster, upgradeDao, repoVersionDao);
+    AmbariManagementController amc = injector.getInstance(AmbariManagementController.class);
 
     UpgradeResourceProvider provider = createProvider(amc);
 
@@ -125,17 +134,27 @@ public class UpgradeResourceProviderTest {
     Request request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), null);
     provider.createResources(request);
 
-    assertTrue(entityCapture.hasCaptured());
-    UpgradeEntity entity = entityCapture.getValue();
-    assertNotNull(entity);
-    assertEquals(Long.valueOf(1), entity.getClusterId());
+
+    upgrades = upgradeDao.findUpgrades(cluster.getClusterId());
+    assertEquals(1, upgrades.size());
+
+    UpgradeEntity entity = upgrades.get(0);
+    assertEquals(cluster.getClusterId(), entity.getClusterId().longValue());
     assertEquals(3, entity.getUpgradeItems().size());
 
     assertTrue(entity.getUpgradeItems().get(0).getText().contains("Preparing"));
     assertTrue(entity.getUpgradeItems().get(1).getText().contains("Restarting"));
     assertTrue(entity.getUpgradeItems().get(2).getText().contains("Finalizing"));
 
-    verify(amc, clusters, cluster, upgradeDao);
+    ActionManager am = injector.getInstance(ActionManager.class);
+    List<Long> requests = am.getRequestsByStatus(RequestStatus.IN_PROGRESS, 100, true);
+
+    assertEquals(1, requests.size());
+    List<Stage> stages = am.getRequestStatus(requests.get(0).longValue());
+    assertEquals(3, stages.size());
+
+    List<HostRoleCommand> tasks = am.getRequestTasks(requests.get(0).longValue());
+    assertEquals(3, tasks.size());
   }
 
 
@@ -147,36 +166,5 @@ public class UpgradeResourceProviderTest {
     return new UpgradeResourceProvider(amc);
   }
 
-  private Cluster createCluster() {
-    Cluster cluster = createMock(Cluster.class);
-
-    expect(cluster.getClusterId()).andReturn(Long.valueOf(1)).anyTimes();
-    expect(cluster.getDesiredStackVersion()).andReturn(new StackId("HDP-2.1.1")).atLeastOnce();
-
-    final ServiceComponentHost zk_server_host_comp = createStrictMock(ServiceComponentHost.class);
-    Map<String, ServiceComponentHost> zk_host_comp_map = new HashMap<String, ServiceComponentHost>() {{
-      put("h1", zk_server_host_comp);
-    }};
-
-    final ServiceComponent zk_server_comp = createStrictMock(ServiceComponent.class);
-    expect(zk_server_comp.getServiceComponentHosts()).andReturn(zk_host_comp_map).atLeastOnce();
-
-    Map<String, ServiceComponent> zk_comp_map = new HashMap<String, ServiceComponent>() {{
-      put("ZOOKEEPER_SERVER", zk_server_comp);
-    }};
-
-    final Service zk = createStrictMock(Service.class);
-    expect(zk.getServiceComponents()).andReturn(zk_comp_map).atLeastOnce();
-
-    Map<String, Service> servicesMap = new HashMap<String, Service>() {{
-      put("ZOOKEEPER", zk);
-    }};
-    expect(cluster.getServices()).andReturn(servicesMap).anyTimes();
-
-    replay(zk_server_host_comp, zk_server_comp, zk);
-
-
-    return cluster;
-  }
 
 }