Procházet zdrojové kódy

AMBARI-797. Prototype for management spi interface continued. (Contributed by hitesh)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1393753 13f79535-47bb-0310-9956-ffa450edef68
Hitesh Shah před 13 roky
rodič
revize
3281b48903
40 změnil soubory, kde provedl 1957 přidání a 317 odebrání
  1. 2 0
      AMBARI-666-CHANGES.txt
  2. 4 5
      ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
  3. 7 7
      ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
  4. 0 2
      ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java
  5. 14 12
      ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
  6. 160 0
      ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
  7. 54 3
      ambari-server/src/main/java/org/apache/ambari/server/controller/ClusterRequest.java
  8. 22 10
      ambari-server/src/main/java/org/apache/ambari/server/controller/ClusterResponse.java
  9. 97 5
      ambari-server/src/main/java/org/apache/ambari/server/controller/ConfigurationRequest.java
  10. 70 5
      ambari-server/src/main/java/org/apache/ambari/server/controller/ConfigurationResponse.java
  11. 2 0
      ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
  12. 374 6
      ambari-server/src/main/java/org/apache/ambari/server/controller/HostResponse.java
  13. 125 8
      ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentHostRequest.java
  14. 162 8
      ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentHostResponse.java
  15. 106 6
      ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentRequest.java
  16. 106 9
      ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentResponse.java
  17. 89 5
      ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceRequest.java
  18. 107 6
      ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceResponse.java
  19. 1 1
      ambari-server/src/main/java/org/apache/ambari/server/state/AgentVersion.java
  20. 5 0
      ambari-server/src/main/java/org/apache/ambari/server/state/Config.java
  21. 48 16
      ambari-server/src/main/java/org/apache/ambari/server/state/DeployState.java
  22. 28 0
      ambari-server/src/main/java/org/apache/ambari/server/state/Service.java
  23. 29 0
      ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponent.java
  24. 102 0
      ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
  25. 17 19
      ambari-server/src/main/java/org/apache/ambari/server/state/State.java
  26. 6 3
      ambari-server/src/main/java/org/apache/ambari/server/state/live/Cluster.java
  27. 10 3
      ambari-server/src/main/java/org/apache/ambari/server/state/live/ClusterImpl.java
  28. 0 1
      ambari-server/src/main/java/org/apache/ambari/server/state/live/ClustersImpl.java
  29. 1 1
      ambari-server/src/main/java/org/apache/ambari/server/state/live/host/Host.java
  30. 1 1
      ambari-server/src/main/java/org/apache/ambari/server/state/live/host/HostImpl.java
  31. 1 1
      ambari-server/src/main/java/org/apache/ambari/server/state/live/host/HostRegistrationRequestEvent.java
  32. 1 1
      ambari-server/src/main/java/org/apache/ambari/server/state/live/job/JobEvent.java
  33. 3 2
      ambari-server/src/main/java/org/apache/ambari/server/state/live/svccomphost/ServiceComponentHost.java
  34. 1 1
      ambari-server/src/main/java/org/apache/ambari/server/state/live/svccomphost/ServiceComponentHostEvent.java
  35. 106 104
      ambari-server/src/main/java/org/apache/ambari/server/state/live/svccomphost/ServiceComponentHostImpl.java
  36. 1 1
      ambari-server/src/test/java/org/apache/ambari/server/resources/TestResources.java
  37. 7 5
      ambari-server/src/test/java/org/apache/ambari/server/state/DeployStateTest.java
  38. 15 14
      ambari-server/src/test/java/org/apache/ambari/server/state/live/TestClusterImpl.java
  39. 1 1
      ambari-server/src/test/java/org/apache/ambari/server/state/live/host/TestHostImpl.java
  40. 72 45
      ambari-server/src/test/java/org/apache/ambari/server/state/live/svccomphost/TestServiceComponentHostImpl.java

+ 2 - 0
AMBARI-666-CHANGES.txt

@@ -12,6 +12,8 @@ AMBARI-666 branch (unreleased changes)
 
   NEW FEATURES
 
+  AMBARI-797. Prototype for management spi interface continued. (hitesh)
+
   AMBARI-795. Fix failing tests for AgentResource and BootStrap. (mahadev)
 
   AMBARI-793. Make MapReduce, Nagios, and Ganglia optional during cluster

+ 4 - 5
ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java

@@ -26,8 +26,7 @@ import org.apache.ambari.server.Role;
 import org.apache.ambari.server.agent.ActionQueue;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
 import org.apache.ambari.server.state.live.Clusters;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostEvent;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostEventType;
+import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostOpFailedEvent;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -133,9 +132,9 @@ class ActionScheduler implements Runnable {
         if (stage.getAttemptCount(host) >= maxAttempts) {
           LOG.warn("Host:"+host+", role:"+hrc.getRole()+", actionId:"+stage.getActionId()+" expired");
           // final expired
-          ServiceComponentHostEvent timeoutEvent = new ServiceComponentHostEvent(
-              ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED, hrc
-                  .getRole().toString(), host, now);
+          ServiceComponentHostOpFailedEvent timeoutEvent =
+              new ServiceComponentHostOpFailedEvent(hrc.getRole().toString(),
+                  host, now);
           try {
             fsmObject.getCluster(stage.getClusterName())
                 .handleServiceComponentHostEvent("", hrc.getRole().toString(),

+ 7 - 7
ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java

@@ -22,8 +22,10 @@ import java.util.List;
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.actionmanager.ActionManager;
+import org.apache.ambari.server.state.AgentVersion;
+import org.apache.ambari.server.state.DeployState;
+import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
-import org.apache.ambari.server.state.live.AgentVersion;
 import org.apache.ambari.server.state.live.Cluster;
 import org.apache.ambari.server.state.live.Clusters;
 import org.apache.ambari.server.state.live.host.Host;
@@ -33,8 +35,6 @@ import org.apache.ambari.server.state.live.host.HostState;
 import org.apache.ambari.server.state.live.host.HostStatusUpdatesReceivedEvent;
 import org.apache.ambari.server.state.live.host.HostUnhealthyHeartbeatEvent;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHost;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostLiveState;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostState;
 
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
@@ -98,11 +98,11 @@ public class HeartBeatHandler {
         if (status.getClusterName() == cl.getClusterName()) {
           ServiceComponentHost scHost = cl.getServiceComponentHost(
               status.getServiceName(), status.getComponentName(), hostname);
-          ServiceComponentHostState currentState = scHost.getState();
-          ServiceComponentHostLiveState liveState = ServiceComponentHostLiveState
-              .valueOf(ServiceComponentHostLiveState.class, status.getStatus());
+          State currentState = scHost.getState();
+          DeployState liveState = DeployState
+              .valueOf(DeployState.class, status.getStatus());
           // Hack
-          scHost.setState(new ServiceComponentHostState(currentState
+          scHost.setState(new State(currentState
               .getConfigVersion(), currentState.getStackVersion(), liveState));
         }
       }

+ 0 - 2
ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatMonitor.java

@@ -24,8 +24,6 @@ import org.apache.ambari.server.actionmanager.ActionManager;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
 import org.apache.ambari.server.state.live.Clusters;
 import org.apache.ambari.server.state.live.host.Host;
-import org.apache.ambari.server.state.live.host.HostEvent;
-import org.apache.ambari.server.state.live.host.HostEventType;
 import org.apache.ambari.server.state.live.host.HostHeartbeatLostEvent;
 import org.apache.ambari.server.state.live.host.HostState;
 import org.apache.commons.logging.Log;

+ 14 - 12
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java

@@ -21,6 +21,7 @@ package org.apache.ambari.server.controller;
 import java.util.Set;
 
 import org.apache.ambari.api.controller.spi.Predicate;
+import org.apache.ambari.server.AmbariException;
 
 /**
  * Management controller interface.
@@ -30,21 +31,22 @@ public interface AmbariManagementController {
 
   // ----- Create -----------------------------------------------------------
 
-  public ClusterResponse createCluster(ClusterRequest request);
+  public void createCluster(ClusterRequest request) throws AmbariException;
 
-  public ServiceResponse createServices(ServiceRequest request);
+  public void createServices(ServiceRequest request) throws AmbariException;
 
-  public ServiceComponentResponse createComponents(ServiceComponentRequest request);
+  public void createComponents(ServiceComponentRequest request)
+      throws AmbariException;
 
-  public HostResponse createHosts(HostRequest request);
+  public void createHosts(HostRequest request) throws AmbariException;
 
-  public ServiceComponentHostResponse createHostComponents(ServiceComponentHostRequest request);
+  public void createHostComponents(ServiceComponentHostRequest request)
+      throws AmbariException;
 
 
   // ----- Read -------------------------------------------------------------
 
-  public ClusterResponse getCluster(ClusterRequest request);
-  public Set<ClusterResponse> getAllClusters();
+  public Set<ClusterResponse> getCluster(ClusterRequest request, Predicate predicate);
 
   public ServiceResponse getServices(ServiceRequest request, Predicate predicate);
 
@@ -57,15 +59,15 @@ public interface AmbariManagementController {
 
   // ----- Update -----------------------------------------------------------
 
-  public ClusterResponse updateCluster(ClusterRequest request);
+  public void updateCluster(ClusterRequest request);
 
-  public ServiceResponse updateServices(ServiceRequest request, Predicate predicate);
+  public void updateServices(ServiceRequest request, Predicate predicate);
 
-  public ServiceComponentResponse updateComponents(ServiceComponentRequest request, Predicate predicate);
+  public void updateComponents(ServiceComponentRequest request, Predicate predicate);
 
-  public HostResponse updateHosts(HostRequest request, Predicate predicate);
+  public void updateHosts(HostRequest request, Predicate predicate);
 
-  public ServiceComponentHostResponse updateHostComponents(ServiceComponentHostRequest request, Predicate predicate);
+  public void updateHostComponents(ServiceComponentHostRequest request, Predicate predicate);
 
 
   // ----- Delete -----------------------------------------------------------

+ 160 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java

@@ -0,0 +1,160 @@
+package org.apache.ambari.server.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.ambari.api.controller.spi.Predicate;
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.controller.ServiceRequest.PerServiceRequest;
+import org.apache.ambari.server.state.Config;
+import org.apache.ambari.server.state.DeployState;
+import org.apache.ambari.server.state.ServiceImpl;
+import org.apache.ambari.server.state.live.Cluster;
+import org.apache.ambari.server.state.live.Clusters;
+import org.apache.ambari.server.state.live.ClustersImpl;
+
+public class AmbariManagementControllerImpl implements
+    AmbariManagementController {
+
+  private final Clusters clusters;
+  
+  public AmbariManagementControllerImpl() {
+    this.clusters = new ClustersImpl();
+  }
+  
+  @Override
+  public void createCluster(ClusterRequest request) throws AmbariException {
+    if (request.getClusterName() == null
+        || request.getClusterName().isEmpty()) {
+      // TODO throw error
+    }
+    clusters.addCluster(request.getClusterName());
+  }
+
+  @Override
+  public void createServices(ServiceRequest request) throws AmbariException {
+    if (request.getClusterName() == null
+        || request.getClusterName().isEmpty()) {
+      // TODO throw error
+    }
+    Cluster cluster = clusters.getCluster(request.getClusterName());
+    for (PerServiceRequest service : request.getServices()) {
+      Map<String, Config> configs = new HashMap<String, Config>();
+      // TODO initialize configs based off service.configVersions
+      // TODO error check if service is already added and/or enabled/deployed      
+      cluster.addService(new ServiceImpl(cluster, service.getServiceName(),
+          DeployState.valueOf(service.getDesiredState()), configs));
+      
+      // TODO take action based on desired state
+    }
+  }
+
+  @Override
+  public void createComponents(
+      ServiceComponentRequest request) throws AmbariException {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public void createHosts(HostRequest request) throws AmbariException {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public void createHostComponents(
+      ServiceComponentHostRequest request) throws AmbariException {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public Set<ClusterResponse> getCluster(ClusterRequest request,
+      Predicate predicate) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public ServiceResponse getServices(ServiceRequest request, Predicate predicate) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public ServiceComponentResponse getComponents(
+      ServiceComponentRequest request, Predicate predicate) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public HostResponse getHosts(HostRequest request, Predicate predicate) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public ServiceComponentHostResponse getHostComponents(
+      ServiceComponentHostRequest request, Predicate predicate) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public void updateCluster(ClusterRequest request) {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public void updateServices(ServiceRequest request,
+      Predicate predicate) {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public void updateComponents(
+      ServiceComponentRequest request, Predicate predicate) {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public void updateHosts(HostRequest request, Predicate predicate) {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public void updateHostComponents(
+      ServiceComponentHostRequest request, Predicate predicate) {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public void deleteCluster(ClusterRequest request) {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public void deleteServices(ServiceRequest request) {
+    // TODO Auto-generated method stub
+
+  }
+
+  @Override
+  public void deleteComponents(ServiceComponentRequest request) {
+    // TODO Auto-generated method stub
+
+  }
+
+  @Override
+  public void deleteHosts(HostRequest request) {
+    // TODO Auto-generated method stub
+
+  }
+
+  @Override
+  public void deleteHostComponents(ServiceComponentHostRequest request) {
+    // TODO Auto-generated method stub
+
+  }
+
+}

+ 54 - 3
ambari-server/src/main/java/org/apache/ambari/server/controller/ClusterRequest.java

@@ -23,9 +23,60 @@ package org.apache.ambari.server.controller;
  */
 public class ClusterRequest {
 
-  Long clusterId; // for GET
+  private Long clusterId; // for GET
+  
+  private String clusterName; // for GET/CREATE/UPDATE
+  
+  private String stackVersion; // for CREATE/UPDATE
+
+  public ClusterRequest(Long clusterId, String clusterName, String stackVersion) {
+    super();
+    this.clusterId = clusterId;
+    this.clusterName = clusterName;
+    this.stackVersion = stackVersion;
+  }
+
+  /**
+   * @return the clusterId
+   */
+  public Long getClusterId() {
+    return clusterId;
+  }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
+
+  /**
+   * @return the stackVersion
+   */
+  public String getStackVersion() {
+    return stackVersion;
+  }
+
+  /**
+   * @param clusterId the clusterId to set
+   */
+  public void setClusterId(Long clusterId) {
+    this.clusterId = clusterId;
+  }
+
+  /**
+   * @param clusterName the clusterName to set
+   */
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+
+  /**
+   * @param stackVersion the stackVersion to set
+   */
+  public void setStackVersion(String stackVersion) {
+    this.stackVersion = stackVersion;
+  }
   
-  String clusterName; // for GET/CREATE/UPDATE
   
-  String stackVersion; // for CREATE/UPDATE
 }

+ 22 - 10
ambari-server/src/main/java/org/apache/ambari/server/controller/ClusterResponse.java

@@ -18,18 +18,30 @@
 
 package org.apache.ambari.server.controller;
 
-import java.util.Map;
-
-/**
- * Used for create Cluster
- */
 public class ClusterResponse {
 
-  Long clusterId; // for GET
-  
-  String clusterName; // for GET/CREATE/UPDATE
+  private final Long clusterId;
   
-  Map<String, ServiceResponse> services; // for GET
+  private final String clusterName;
+
+  public ClusterResponse(Long clusterId, String clusterName) {
+    super();
+    this.clusterId = clusterId;
+    this.clusterName = clusterName;
+  }
+
+  /**
+   * @return the clusterId
+   */
+  public Long getClusterId() {
+    return clusterId;
+  }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
   
-  Map<String, HostResponse> hosts; // for GET
 }

+ 97 - 5
ambari-server/src/main/java/org/apache/ambari/server/controller/ConfigurationRequest.java

@@ -27,17 +27,109 @@ import java.util.Map;
  */
 public class ConfigurationRequest {
 
-  String clusterName;
+  private String clusterName;
   
-  List<PerConfigurationRequest> configs;
+  private List<PerConfigurationRequest> configs;
   
+  public ConfigurationRequest(String clusterName,
+      List<PerConfigurationRequest> configs) {
+    super();
+    this.clusterName = clusterName;
+    this.configs = configs;
+  }
+
   public static class PerConfigurationRequest {
     
-    String type;
+    private String type;
+    
+    private String versionTag;
     
-    String versionTag;
+    private Map<String, String> configs;
+
+    public PerConfigurationRequest(String type, String versionTag,
+        Map<String, String> configs) {
+      super();
+      this.type = type;
+      this.versionTag = versionTag;
+      this.configs = configs;
+    }
+
+    /**
+     * @return the type
+     */
+    public String getType() {
+      return type;
+    }
+
+    /**
+     * @param type the type to set
+     */
+    public void setType(String type) {
+      this.type = type;
+    }
+
+    /**
+     * @return the versionTag
+     */
+    public String getVersionTag() {
+      return versionTag;
+    }
+
+    /**
+     * @param versionTag the versionTag to set
+     */
+    public void setVersionTag(String versionTag) {
+      this.versionTag = versionTag;
+    }
+
+    /**
+     * @return the configs
+     */
+    public Map<String, String> getConfigs() {
+      return configs;
+    }
+
+    /**
+     * @param configs the configs to set
+     */
+    public void setConfigs(Map<String, String> configs) {
+      this.configs = configs;
+    }
     
-    Map<String, String> configs;
+  }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
+
+
+
+  /**
+   * @param clusterName the clusterName to set
+   */
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+
+
+
+  /**
+   * @return the configs
+   */
+  public List<PerConfigurationRequest> getConfigs() {
+    return configs;
+  }
+
+
+
+  /**
+   * @param configs the configs to set
+   */
+  public void setConfigs(List<PerConfigurationRequest> configs) {
+    this.configs = configs;
   }
 
 }

+ 70 - 5
ambari-server/src/main/java/org/apache/ambari/server/controller/ConfigurationResponse.java

@@ -27,17 +27,82 @@ import java.util.Map;
  */
 public class ConfigurationResponse {
 
-  String clusterName;
+  private final String clusterName;
   
-  List<PerConfigurationResponse> configs;
+  private final List<PerConfigurationResponse> configs;
   
+  public ConfigurationResponse(String clusterName,
+      List<PerConfigurationResponse> configs) {
+    super();
+    this.clusterName = clusterName;
+    this.configs = configs;
+  }
+
   public static class PerConfigurationResponse {
     
-    String type;
+    private final String type;
     
-    String versionTag;
+    private String versionTag;
     
-    Map<String, String> configs;
+    private Map<String, String> configs;
+
+    public PerConfigurationResponse(String type, String versionTag,
+        Map<String, String> configs) {
+      super();
+      this.type = type;
+      this.versionTag = versionTag;
+      this.configs = configs;
+    }
+
+    /**
+     * @return the versionTag
+     */
+    public String getVersionTag() {
+      return versionTag;
+    }
+
+    /**
+     * @param versionTag the versionTag to set
+     */
+    public void setVersionTag(String versionTag) {
+      this.versionTag = versionTag;
+    }
+
+    /**
+     * @return the configs
+     */
+    public Map<String, String> getConfigs() {
+      return configs;
+    }
+
+    /**
+     * @param configs the configs to set
+     */
+    public void setConfigs(Map<String, String> configs) {
+      this.configs = configs;
+    }
+
+    /**
+     * @return the type
+     */
+    public String getType() {
+      return type;
+    }
+    
+  }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
   }
 
+  /**
+   * @return the configs
+   */
+  public List<PerConfigurationResponse> getConfigs() {
+    return configs;
+  }
+  
 }

+ 2 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java

@@ -15,7 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.ambari.server.controller;
+
 import org.apache.ambari.server.actionmanager.ActionDBAccessor;
 import org.apache.ambari.server.actionmanager.ActionDBInMemoryImpl;
 import org.apache.ambari.server.agent.rest.AgentResource;

+ 374 - 6
ambari-server/src/main/java/org/apache/ambari/server/controller/HostResponse.java

@@ -21,17 +21,385 @@ package org.apache.ambari.server.controller;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.ambari.server.agent.DiskInfo;
+import org.apache.ambari.server.state.AgentVersion;
+import org.apache.ambari.server.state.live.host.HostHealthStatus;
+
 public class HostResponse {
 
-  List<PerHostResponse> hosts;
+  private List<PerHostResponse> hosts;
   
+  public HostResponse(List<PerHostResponse> hosts) {
+    super();
+    this.hosts = hosts;
+  }
+
   public static class PerHostResponse {
-    String hostname;
-    
-    List<String> clusterNames;
+
+    private String hostname;
     
-    Map<String, String> hostAttributes; 
+    private List<String> clusterNames;
+
+    public PerHostResponse(String hostname, List<String> clusterNames,
+        String ipv4, String ipv6, int cpuCount, String osArch, String osType,
+        String osInfo, long availableMemBytes, long totalMemBytes,
+        List<DiskInfo> disksInfo, long lastHeartbeatTime,
+        long lastRegistrationTime, String rackInfo,
+        Map<String, String> hostAttributes, AgentVersion agentVersion,
+        HostHealthStatus healthStatus) {
+      super();
+      this.hostname = hostname;
+      this.clusterNames = clusterNames;
+      this.ipv4 = ipv4;
+      this.ipv6 = ipv6;
+      this.cpuCount = cpuCount;
+      this.osArch = osArch;
+      this.osType = osType;
+      this.osInfo = osInfo;
+      this.availableMemBytes = availableMemBytes;
+      this.totalMemBytes = totalMemBytes;
+      this.disksInfo = disksInfo;
+      this.lastHeartbeatTime = lastHeartbeatTime;
+      this.lastRegistrationTime = lastRegistrationTime;
+      this.rackInfo = rackInfo;
+      this.hostAttributes = hostAttributes;
+      this.agentVersion = agentVersion;
+      this.healthStatus = healthStatus;
+    }
+
+    public PerHostResponse(String hostname) {
+      super();
+      this.hostname = hostname;
+    }
+
+    /**
+     * Host IP if ipv4 interface available
+     */
+    private String ipv4;
+
+    /**
+     * Host IP if ipv6 interface available
+     */
+    private String ipv6;
+
+    /**
+     * Count of cores on Host
+     */
+    private int cpuCount;
+
+    /**
+     * Os Architecture
+     */
+    private String osArch;
+
+    /**
+     * OS Type
+     */
+    private String osType;
+
+    /**
+     * OS Information
+     */
+    private String osInfo;
+
+    /**
+     * Amount of available memory for the Host
+     */
+    private long availableMemBytes;
+
+    /**
+     * Amount of physical memory for the Host
+     */
+    private long totalMemBytes;
+
+    /**
+     * Disks mounted on the Host
+     */
+    private List<DiskInfo> disksInfo;
+
+    /**
+     * Last heartbeat timestamp from the Host
+     */
+    private long lastHeartbeatTime;
+
+    /**
+     * Last registration timestamp for the Host
+     */
+    private long lastRegistrationTime;
+
+    /**
+     * Rack to which the Host belongs to
+     */
+    private String rackInfo;
+
+    /**
+     * Additional Host attributes
+     */
+    private Map<String, String> hostAttributes;
+
+    /**
+     * Version of agent running on the Host
+     */
+    private AgentVersion agentVersion;
+
+    /**
+     * Host Health Status
+     */
+    private HostHealthStatus healthStatus;
+
+    /**
+     * @return the hostname
+     */
+    public String getHostname() {
+      return hostname;
+    }
+
+    /**
+     * @param hostname the hostname to set
+     */
+    public void setHostname(String hostname) {
+      this.hostname = hostname;
+    }
+
+    /**
+     * @return the clusterNames
+     */
+    public List<String> getClusterNames() {
+      return clusterNames;
+    }
+
+    /**
+     * @param clusterNames the clusterNames to set
+     */
+    public void setClusterNames(List<String> clusterNames) {
+      this.clusterNames = clusterNames;
+    }
+
+    /**
+     * @return the ipv4
+     */
+    public String getIpv4() {
+      return ipv4;
+    }
+
+    /**
+     * @param ipv4 the ipv4 to set
+     */
+    public void setIpv4(String ipv4) {
+      this.ipv4 = ipv4;
+    }
+
+    /**
+     * @return the ipv6
+     */
+    public String getIpv6() {
+      return ipv6;
+    }
+
+    /**
+     * @param ipv6 the ipv6 to set
+     */
+    public void setIpv6(String ipv6) {
+      this.ipv6 = ipv6;
+    }
+
+    /**
+     * @return the cpuCount
+     */
+    public int getCpuCount() {
+      return cpuCount;
+    }
+
+    /**
+     * @param cpuCount the cpuCount to set
+     */
+    public void setCpuCount(int cpuCount) {
+      this.cpuCount = cpuCount;
+    }
+
+    /**
+     * @return the osArch
+     */
+    public String getOsArch() {
+      return osArch;
+    }
+
+    /**
+     * @param osArch the osArch to set
+     */
+    public void setOsArch(String osArch) {
+      this.osArch = osArch;
+    }
+
+    /**
+     * @return the osType
+     */
+    public String getOsType() {
+      return osType;
+    }
+
+    /**
+     * @param osType the osType to set
+     */
+    public void setOsType(String osType) {
+      this.osType = osType;
+    }
+
+    /**
+     * @return the osInfo
+     */
+    public String getOsInfo() {
+      return osInfo;
+    }
+
+    /**
+     * @param osInfo the osInfo to set
+     */
+    public void setOsInfo(String osInfo) {
+      this.osInfo = osInfo;
+    }
+
+    /**
+     * @return the availableMemBytes
+     */
+    public long getAvailableMemBytes() {
+      return availableMemBytes;
+    }
+
+    /**
+     * @param availableMemBytes the availableMemBytes to set
+     */
+    public void setAvailableMemBytes(long availableMemBytes) {
+      this.availableMemBytes = availableMemBytes;
+    }
+
+    /**
+     * @return the totalMemBytes
+     */
+    public long getTotalMemBytes() {
+      return totalMemBytes;
+    }
+
+    /**
+     * @param totalMemBytes the totalMemBytes to set
+     */
+    public void setTotalMemBytes(long totalMemBytes) {
+      this.totalMemBytes = totalMemBytes;
+    }
+
+    /**
+     * @return the disksInfo
+     */
+    public List<DiskInfo> getDisksInfo() {
+      return disksInfo;
+    }
+
+    /**
+     * @param disksInfo the disksInfo to set
+     */
+    public void setDisksInfo(List<DiskInfo> disksInfo) {
+      this.disksInfo = disksInfo;
+    }
+
+    /**
+     * @return the lastHeartbeatTime
+     */
+    public long getLastHeartbeatTime() {
+      return lastHeartbeatTime;
+    }
+
+    /**
+     * @param lastHeartbeatTime the lastHeartbeatTime to set
+     */
+    public void setLastHeartbeatTime(long lastHeartbeatTime) {
+      this.lastHeartbeatTime = lastHeartbeatTime;
+    }
+
+    /**
+     * @return the lastRegistrationTime
+     */
+    public long getLastRegistrationTime() {
+      return lastRegistrationTime;
+    }
+
+    /**
+     * @param lastRegistrationTime the lastRegistrationTime to set
+     */
+    public void setLastRegistrationTime(long lastRegistrationTime) {
+      this.lastRegistrationTime = lastRegistrationTime;
+    }
+
+    /**
+     * @return the rackInfo
+     */
+    public String getRackInfo() {
+      return rackInfo;
+    }
+
+    /**
+     * @param rackInfo the rackInfo to set
+     */
+    public void setRackInfo(String rackInfo) {
+      this.rackInfo = rackInfo;
+    }
+
+    /**
+     * @return the hostAttributes
+     */
+    public Map<String, String> getHostAttributes() {
+      return hostAttributes;
+    }
+
+    /**
+     * @param hostAttributes the hostAttributes to set
+     */
+    public void setHostAttributes(Map<String, String> hostAttributes) {
+      this.hostAttributes = hostAttributes;
+    }
+
+    /**
+     * @return the agentVersion
+     */
+    public AgentVersion getAgentVersion() {
+      return agentVersion;
+    }
+
+    /**
+     * @param agentVersion the agentVersion to set
+     */
+    public void setAgentVersion(AgentVersion agentVersion) {
+      this.agentVersion = agentVersion;
+    }
+
+    /**
+     * @return the healthStatus
+     */
+    public HostHealthStatus getHealthStatus() {
+      return healthStatus;
+    }
+
+    /**
+     * @param healthStatus the healthStatus to set
+     */
+    public void setHealthStatus(HostHealthStatus healthStatus) {
+      this.healthStatus = healthStatus;
+    }
     
-    List<ServiceComponentHostResponse> hostComponents;
+  }
+
+  /**
+   * @return the hosts
+   */
+  public List<PerHostResponse> getHosts() {
+    return hosts;
+  }
+
+
+
+  /**
+   * @param hosts the hosts to set
+   */
+  public void setHosts(List<PerHostResponse> hosts) {
+    this.hosts = hosts;
   }
 }

+ 125 - 8
ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentHostRequest.java

@@ -23,23 +23,140 @@ import java.util.Map;
 
 public class ServiceComponentHostRequest {
 
-  String clusterName; // REF
-  
-  List<PerServiceComponentHostRequest> hostComponents;
+  private String clusterName; // REF
   
+  private List<PerServiceComponentHostRequest> hostComponents;
+
+  public ServiceComponentHostRequest(String clusterName,
+      List<PerServiceComponentHostRequest> hostComponents) {
+    super();
+    this.clusterName = clusterName;
+    this.hostComponents = hostComponents;
+  }
+
   public static class PerServiceComponentHostRequest {
     
-    String serviceName; 
+    private String serviceName; 
     
-    String componentName;
+    private String componentName;
     
-    String hostname;
+    private String hostname;
     
     // Config type -> version mapping
-    Map<String, String> configVersions; // CREATE/UPDATE
+    private Map<String, String> configVersions; // CREATE/UPDATE
     
-    String desiredState; // CREATE/UPDATE
+    private String desiredState; // CREATE/UPDATE
+
+    public PerServiceComponentHostRequest(String serviceName,
+        String componentName, String hostname,
+        Map<String, String> configVersions, String desiredState) {
+      super();
+      this.serviceName = serviceName;
+      this.componentName = componentName;
+      this.hostname = hostname;
+      this.configVersions = configVersions;
+      this.desiredState = desiredState;
+    }
+
+    /**
+     * @return the serviceName
+     */
+    public String getServiceName() {
+      return serviceName;
+    }
+
+    /**
+     * @param serviceName the serviceName to set
+     */
+    public void setServiceName(String serviceName) {
+      this.serviceName = serviceName;
+    }
+
+    /**
+     * @return the componentName
+     */
+    public String getComponentName() {
+      return componentName;
+    }
+
+    /**
+     * @param componentName the componentName to set
+     */
+    public void setComponentName(String componentName) {
+      this.componentName = componentName;
+    }
+
+    /**
+     * @return the hostname
+     */
+    public String getHostname() {
+      return hostname;
+    }
+
+    /**
+     * @param hostname the hostname to set
+     */
+    public void setHostname(String hostname) {
+      this.hostname = hostname;
+    }
+
+    /**
+     * @return the configVersions
+     */
+    public Map<String, String> getConfigVersions() {
+      return configVersions;
+    }
+
+    /**
+     * @param configVersions the configVersions to set
+     */
+    public void setConfigVersions(Map<String, String> configVersions) {
+      this.configVersions = configVersions;
+    }
+
+    /**
+     * @return the desiredState
+     */
+    public String getDesiredState() {
+      return desiredState;
+    }
+
+    /**
+     * @param desiredState the desiredState to set
+     */
+    public void setDesiredState(String desiredState) {
+      this.desiredState = desiredState;
+    }
+
+  }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
+
+  /**
+   * @param clusterName the clusterName to set
+   */
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+
+  /**
+   * @return the hostComponents
+   */
+  public List<PerServiceComponentHostRequest> getHostComponents() {
+    return hostComponents;
+  }
 
+  /**
+   * @param hostComponents the hostComponents to set
+   */
+  public void setHostComponents(
+      List<PerServiceComponentHostRequest> hostComponents) {
+    this.hostComponents = hostComponents;
   }
 
 }

+ 162 - 8
ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentHostResponse.java

@@ -23,25 +23,179 @@ import java.util.Map;
 
 public class ServiceComponentHostResponse {
 
-  String clusterName; // REF
+  private String clusterName; // REF
   
-  List<PerServiceComponentHostResponse> hostComponents;
+  private List<PerServiceComponentHostResponse> hostComponents;
   
+  public ServiceComponentHostResponse(String clusterName,
+      List<PerServiceComponentHostResponse> hostComponents) {
+    super();
+    this.clusterName = clusterName;
+    this.hostComponents = hostComponents;
+  }
+
   public static class PerServiceComponentHostResponse {
     
-    String serviceName; 
+    private String serviceName; 
     
-    String componentName;
+    private String componentName;
     
-    String hostname;
+    private String hostname;
     
     // Config type -> version mapping
-    Map<String, String> configVersions;
+    private Map<String, String> configVersions;
+
+    private String liveState;
+
+    private String stackVersion;
+
+    private String desiredState;
+
+    public PerServiceComponentHostResponse(String serviceName,
+        String componentName, String hostname,
+        Map<String, String> configVersions, String liveState,
+        String stackVersion, String desiredState) {
+      super();
+      this.serviceName = serviceName;
+      this.componentName = componentName;
+      this.hostname = hostname;
+      this.configVersions = configVersions;
+      this.liveState = liveState;
+      this.stackVersion = stackVersion;
+      this.desiredState = desiredState;
+    }
+
+    /**
+     * @return the serviceName
+     */
+    public String getServiceName() {
+      return serviceName;
+    }
+
+    /**
+     * @param serviceName the serviceName to set
+     */
+    public void setServiceName(String serviceName) {
+      this.serviceName = serviceName;
+    }
+
+    /**
+     * @return the componentName
+     */
+    public String getComponentName() {
+      return componentName;
+    }
+
+    /**
+     * @param componentName the componentName to set
+     */
+    public void setComponentName(String componentName) {
+      this.componentName = componentName;
+    }
+
+    /**
+     * @return the hostname
+     */
+    public String getHostname() {
+      return hostname;
+    }
+
+    /**
+     * @param hostname the hostname to set
+     */
+    public void setHostname(String hostname) {
+      this.hostname = hostname;
+    }
+
+    /**
+     * @return the configVersions
+     */
+    public Map<String, String> getConfigVersions() {
+      return configVersions;
+    }
+
+    /**
+     * @param configVersions the configVersions to set
+     */
+    public void setConfigVersions(Map<String, String> configVersions) {
+      this.configVersions = configVersions;
+    }
+
+    /**
+     * @return the liveState
+     */
+    public String getLiveState() {
+      return liveState;
+    }
+
+    /**
+     * @param liveState the liveState to set
+     */
+    public void setLiveState(String liveState) {
+      this.liveState = liveState;
+    }
+
+    /**
+     * @return the stackVersion
+     */
+    public String getStackVersion() {
+      return stackVersion;
+    }
+
+    /**
+     * @param stackVersion the stackVersion to set
+     */
+    public void setStackVersion(String stackVersion) {
+      this.stackVersion = stackVersion;
+    }
+
+    /**
+     * @return the desiredState
+     */
+    public String getDesiredState() {
+      return desiredState;
+    }
+
+    /**
+     * @param desiredState the desiredState to set
+     */
+    public void setDesiredState(String desiredState) {
+      this.desiredState = desiredState;
+    }
+    
+  }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
+
+  /**
+   * @param clusterName the clusterName to set
+   */
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+
+
+
+  /**
+   * @return the hostComponents
+   */
+  public List<PerServiceComponentHostResponse> getHostComponents() {
+    return hostComponents;
+  }
 
-    String liveState;
 
-    String stackVersion;
 
+  /**
+   * @param hostComponents the hostComponents to set
+   */
+  public void setHostComponents(
+      List<PerServiceComponentHostResponse> hostComponents) {
+    this.hostComponents = hostComponents;
   }
 
 }

+ 106 - 6
ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentRequest.java

@@ -23,21 +23,121 @@ import java.util.Map;
 
 public class ServiceComponentRequest {
 
-  String clusterName; // REF
+  private String clusterName; // REF
   
-  List<PerServiceComponentRequest> components;
+  private List<PerServiceComponentRequest> components;
+  
+  public ServiceComponentRequest(String clusterName,
+      List<PerServiceComponentRequest> components) {
+    super();
+    this.clusterName = clusterName;
+    this.components = components;
+  }
 
   public static class PerServiceComponentRequest {
 
-    String serviceName; // GET/CREATE/UPDATE/DELETE
+    private String serviceName; // GET/CREATE/UPDATE/DELETE
     
-    String componentName; // GET/CREATE/UPDATE/DELETE
+    private String componentName; // GET/CREATE/UPDATE/DELETE
         
     // Config type -> version mapping
-    Map<String, String> configVersions; // CREATE/UPDATE
+    private Map<String, String> configVersions; // CREATE/UPDATE
     
-    String desiredState; // CREATE/UPDATE
+    private String desiredState; // CREATE/UPDATE
+
+    public PerServiceComponentRequest(String serviceName, String componentName,
+        Map<String, String> configVersions, String desiredState) {
+      super();
+      this.serviceName = serviceName;
+      this.componentName = componentName;
+      this.configVersions = configVersions;
+      this.desiredState = desiredState;
+    }
+
+    /**
+     * @return the serviceName
+     */
+    public String getServiceName() {
+      return serviceName;
+    }
+
+    /**
+     * @param serviceName the serviceName to set
+     */
+    public void setServiceName(String serviceName) {
+      this.serviceName = serviceName;
+    }
+
+    /**
+     * @return the componentName
+     */
+    public String getComponentName() {
+      return componentName;
+    }
+
+    /**
+     * @param componentName the componentName to set
+     */
+    public void setComponentName(String componentName) {
+      this.componentName = componentName;
+    }
+
+    /**
+     * @return the configVersions
+     */
+    public Map<String, String> getConfigVersions() {
+      return configVersions;
+    }
+
+    /**
+     * @param configVersions the configVersions to set
+     */
+    public void setConfigVersions(Map<String, String> configVersions) {
+      this.configVersions = configVersions;
+    }
+
+    /**
+     * @return the desiredState
+     */
+    public String getDesiredState() {
+      return desiredState;
+    }
+
+    /**
+     * @param desiredState the desiredState to set
+     */
+    public void setDesiredState(String desiredState) {
+      this.desiredState = desiredState;
+    }
     
   }
 
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
+
+  /**
+   * @param clusterName the clusterName to set
+   */
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+
+  /**
+   * @return the components
+   */
+  public List<PerServiceComponentRequest> getComponents() {
+    return components;
+  }
+
+  /**
+   * @param components the components to set
+   */
+  public void setComponents(List<PerServiceComponentRequest> components) {
+    this.components = components;
+  }
+
 }

+ 106 - 9
ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceComponentResponse.java

@@ -23,24 +23,121 @@ import java.util.Map;
 
 public class ServiceComponentResponse {
 
-  Long clusterId; // REF
+  private Long clusterId; // REF
 
-  String clusterName; // REF
+  private String clusterName; // REF
   
-  List<PerServiceComponentResponse> components;
+  private List<PerServiceComponentResponse> components;
+
+  public ServiceComponentResponse(Long clusterId, String clusterName,
+      List<PerServiceComponentResponse> components) {
+    super();
+    this.clusterId = clusterId;
+    this.clusterName = clusterName;
+    this.components = components;
+  }
 
   public static class PerServiceComponentResponse {
 
-    String serviceName; // GET/CREATE/UPDATE/DELETE
+    private String serviceName; // GET/CREATE/UPDATE/DELETE
     
-    String componentName; // GET/CREATE/UPDATE/DELETE
+    private String componentName; // GET/CREATE/UPDATE/DELETE
         
     // Config type -> version mapping
-    Map<String, String> configVersions; // CREATE/UPDATE
-    
-    // hostname -> ServiceComponentHost mapping
-    Map<String, ServiceComponentHostResponse> serviceComponentHosts;
+    private Map<String, String> configVersions; // CREATE/UPDATE
+
+    public PerServiceComponentResponse(String serviceName,
+        String componentName, Map<String, String> configVersions) {
+      super();
+      this.serviceName = serviceName;
+      this.componentName = componentName;
+      this.configVersions = configVersions;
+    }
+
+    /**
+     * @return the serviceName
+     */
+    public String getServiceName() {
+      return serviceName;
+    }
+
+    /**
+     * @param serviceName the serviceName to set
+     */
+    public void setServiceName(String serviceName) {
+      this.serviceName = serviceName;
+    }
+
+    /**
+     * @return the componentName
+     */
+    public String getComponentName() {
+      return componentName;
+    }
+
+    /**
+     * @param componentName the componentName to set
+     */
+    public void setComponentName(String componentName) {
+      this.componentName = componentName;
+    }
+
+    /**
+     * @return the configVersions
+     */
+    public Map<String, String> getConfigVersions() {
+      return configVersions;
+    }
+
+    /**
+     * @param configVersions the configVersions to set
+     */
+    public void setConfigVersions(Map<String, String> configVersions) {
+      this.configVersions = configVersions;
+    }
     
   }
 
+  /**
+   * @return the clusterId
+   */
+  public Long getClusterId() {
+    return clusterId;
+  }
+
+  /**
+   * @param clusterId the clusterId to set
+   */
+  public void setClusterId(Long clusterId) {
+    this.clusterId = clusterId;
+  }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
+
+  /**
+   * @param clusterName the clusterName to set
+   */
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+
+  /**
+   * @return the components
+   */
+  public List<PerServiceComponentResponse> getComponents() {
+    return components;
+  }
+
+  /**
+   * @param components the components to set
+   */
+  public void setComponents(List<PerServiceComponentResponse> components) {
+    this.components = components;
+  }
+
 }

+ 89 - 5
ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceRequest.java

@@ -22,19 +22,103 @@ import java.util.Map;
 
 public class ServiceRequest {
 
-  String clusterName; // REF
+  private String clusterName; // REF
 
-  List<PerServiceRequest> services;
+  private List<PerServiceRequest> services;
+
+  public ServiceRequest(String clusterName, List<PerServiceRequest> services) {
+    super();
+    this.clusterName = clusterName;
+    this.services = services;
+  }
 
   public static class PerServiceRequest {
 
-    String serviceName; // GET/CREATE/UPDATE/DELETE
+    private String serviceName; // GET/CREATE/UPDATE/DELETE
     
     // Config type -> version mapping
-    Map<String, String> configVersions; // CREATE/UPDATE
+    private Map<String, String> configVersions; // CREATE/UPDATE
     
-    String desiredState; // CREATE/UPDATE
+    private String desiredState; // CREATE/UPDATE
+
+    public PerServiceRequest(String serviceName,
+        Map<String, String> configVersions, String desiredState) {
+      super();
+      this.serviceName = serviceName;
+      this.configVersions = configVersions;
+      this.desiredState = desiredState;
+    }
+
+    /**
+     * @return the serviceName
+     */
+    public String getServiceName() {
+      return serviceName;
+    }
+
+    /**
+     * @param serviceName the serviceName to set
+     */
+    public void setServiceName(String serviceName) {
+      this.serviceName = serviceName;
+    }
+
+    /**
+     * @return the configVersions
+     */
+    public Map<String, String> getConfigVersions() {
+      return configVersions;
+    }
+
+    /**
+     * @param configVersions the configVersions to set
+     */
+    public void setConfigVersions(Map<String, String> configVersions) {
+      this.configVersions = configVersions;
+    }
+
+    /**
+     * @return the desiredState
+     */
+    public String getDesiredState() {
+      return desiredState;
+    }
+
+    /**
+     * @param desiredState the desiredState to set
+     */
+    public void setDesiredState(String desiredState) {
+      this.desiredState = desiredState;
+    }
     
   }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
+
+  /**
+   * @param clusterName the clusterName to set
+   */
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+
+  /**
+   * @return the services
+   */
+  public List<PerServiceRequest> getServices() {
+    return services;
+  }
+
+  /**
+   * @param services the services to set
+   */
+  public void setServices(List<PerServiceRequest> services) {
+    this.services = services;
+  }
   
 }

+ 107 - 6
ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceResponse.java

@@ -23,19 +23,120 @@ import java.util.Map;
 
 public class ServiceResponse {
 
-  Long clusterId; // REF
+  private Long clusterId; // REF
 
-  String clusterName; // REF
+  private String clusterName; // REF
 
-  List<PerServiceResponse> services;
+  private List<PerServiceResponse> services;
   
+  public ServiceResponse(Long clusterId, String clusterName,
+      List<PerServiceResponse> services) {
+    super();
+    this.clusterId = clusterId;
+    this.clusterName = clusterName;
+    this.services = services;
+  }
+
   public static class PerServiceResponse {
     
-    String serviceName;
+    private String serviceName;
     
-    String currentStackVersion;
+    private String currentStackVersion;
     
-    Map<String, ServiceComponentResponse> components;
+    // Config type -> version mapping
+    private Map<String, String> configVersions; // CREATE/UPDATE
+
+    public PerServiceResponse(String serviceName, String currentStackVersion,
+        Map<String, String> configVersions) {
+      super();
+      this.serviceName = serviceName;
+      this.currentStackVersion = currentStackVersion;
+      this.configVersions = configVersions;
+    }
+
+    /**
+     * @return the serviceName
+     */
+    public String getServiceName() {
+      return serviceName;
+    }
+
+    /**
+     * @param serviceName the serviceName to set
+     */
+    public void setServiceName(String serviceName) {
+      this.serviceName = serviceName;
+    }
+
+    /**
+     * @return the currentStackVersion
+     */
+    public String getCurrentStackVersion() {
+      return currentStackVersion;
+    }
+
+    /**
+     * @param currentStackVersion the currentStackVersion to set
+     */
+    public void setCurrentStackVersion(String currentStackVersion) {
+      this.currentStackVersion = currentStackVersion;
+    }
+
+    /**
+     * @return the configVersions
+     */
+    public Map<String, String> getConfigVersions() {
+      return configVersions;
+    }
+
+    /**
+     * @param configVersions the configVersions to set
+     */
+    public void setConfigVersions(Map<String, String> configVersions) {
+      this.configVersions = configVersions;
+    }
     
   }
+
+  /**
+   * @return the clusterId
+   */
+  public Long getClusterId() {
+    return clusterId;
+  }
+
+  /**
+   * @param clusterId the clusterId to set
+   */
+  public void setClusterId(Long clusterId) {
+    this.clusterId = clusterId;
+  }
+
+  /**
+   * @return the clusterName
+   */
+  public String getClusterName() {
+    return clusterName;
+  }
+
+  /**
+   * @param clusterName the clusterName to set
+   */
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+
+  /**
+   * @return the services
+   */
+  public List<PerServiceResponse> getServices() {
+    return services;
+  }
+
+  /**
+   * @param services the services to set
+   */
+  public void setServices(List<PerServiceResponse> services) {
+    this.services = services;
+  }
 }

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/live/AgentVersion.java → ambari-server/src/main/java/org/apache/ambari/server/state/AgentVersion.java

@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.ambari.server.state.live;
+package org.apache.ambari.server.state;
 
 /**
  * Agent Version representation

+ 5 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/Config.java

@@ -0,0 +1,5 @@
+package org.apache.ambari.server.state;
+
+public interface Config {
+
+}

+ 48 - 16
ambari-server/src/main/java/org/apache/ambari/server/state/live/svccomphost/ServiceComponentHostLiveState.java → ambari-server/src/main/java/org/apache/ambari/server/state/DeployState.java

@@ -16,63 +16,95 @@
  * limitations under the License.
  */
 
-package org.apache.ambari.server.state.live.svccomphost;
+package org.apache.ambari.server.state;
 
-public enum ServiceComponentHostLiveState {
+public enum DeployState {
   /**
    * Initial/Clean state
    */
-  INIT,
+  INIT(0),
   /**
    * In the process of installing.
    */
-  INSTALLING,
+  INSTALLING(1),
   /**
    * Install failed
    */
-  INSTALL_FAILED,
+  INSTALL_FAILED(2),
   /**
    * State when install completed successfully
    */
-  INSTALLED,
+  INSTALLED(3),
   /**
    * In the process of starting.
    */
-  STARTING,
+  STARTING(4),
   /**
    * Start failed.
    */
-  START_FAILED,
+  START_FAILED(5),
   /**
    * State when start completed successfully.
    */
-  STARTED,
+  STARTED(6),
   /**
    * In the process of stopping.
    */
-  STOPPING,
+  STOPPING(7),
   /**
    * Stop failed
    */
-  STOP_FAILED,
+  STOP_FAILED(8),
   /**
    * In the process of uninstalling.
    */
-  UNINSTALLING,
+  UNINSTALLING(9),
   /**
    * Uninstall failed.
    */
-  UNINSTALL_FAILED,
+  UNINSTALL_FAILED(10),
   /**
    * State when uninstall completed successfully.
    */
-  UNINSTALLED,
+  UNINSTALLED(11),
   /**
    * In the process of wiping out the install
    */
-  WIPING_OUT,
+  WIPING_OUT(12),
   /**
    * State when wipeout fails
    */
-  WIPEOUT_FAILED
+  WIPEOUT_FAILED(13);
+  
+  private final int state;
+  
+  private DeployState(int state) {
+    this.state = state;
+  }
+  
+  public boolean isValidDesiredState() {
+    switch (DeployState.values()[this.state]) {
+      case INIT:
+      case INSTALLED:
+      case STARTED:
+      case UNINSTALLED:
+        return true;
+      default:
+        return false;
+    }
+  }
+  
+  public boolean isInProgressState() {
+    switch (DeployState.values()[this.state]) {
+      case INSTALLING:
+      case STARTING:
+      case STOPPING:
+      case UNINSTALLING:
+      case WIPING_OUT:
+        return true;
+      default:
+        return false;
+    }
+  }
+  
 }

+ 28 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/Service.java

@@ -0,0 +1,28 @@
+package org.apache.ambari.server.state;
+
+import java.util.Map;
+
+
+public interface Service {
+
+  public String getName();
+  
+  public long getClusterId();
+  
+  public long getCurrentHostComponentMappingVersion();
+
+  public Map<String, ServiceComponent> getServiceComponents();
+    
+  public State getState();
+  
+  public void setState(State state);
+
+  public Config getConfig();
+
+  public void setConfig(Config config);
+  
+  public StackVersion getStackVersion();
+  
+  public void setStackVersion(StackVersion stackVersion);
+  
+}

+ 29 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponent.java

@@ -0,0 +1,29 @@
+package org.apache.ambari.server.state;
+
+import java.util.Map;
+
+import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHost;
+
+public interface ServiceComponent {
+
+  public String getName();
+  
+  public String getServiceName();
+
+  public long getClusterId();
+  
+  public State getState();
+  
+  public void setState(State state);
+
+  public Config getConfig();
+
+  public void setConfig(Config config);
+  
+  public StackVersion getStackVersion();
+  
+  public void setStackVersion(StackVersion stackVersion);
+
+  public Map<String, ServiceComponentHost> getServiceComponentHosts();
+  
+}

+ 102 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java

@@ -0,0 +1,102 @@
+package org.apache.ambari.server.state;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.ambari.server.state.live.Cluster;
+
+public class ServiceImpl implements Service {
+
+  private final Cluster cluster;
+  private final String serviceName;
+  private DeployState state;
+  private Map<String, Config> configs;
+  private Map<String, ServiceComponent> components;
+  
+  private void init() {
+    // TODO
+    // initialize from DB 
+  }
+  
+  public ServiceImpl(Cluster cluster, String serviceName,
+      DeployState state, Map<String, Config> configs) {
+    this.cluster = cluster;
+    this.serviceName = serviceName;
+    this.state = state;
+    if (configs != null) {
+      this.configs = configs;
+    } else {
+      this.configs = new HashMap<String, Config>();
+    }
+    this.components = new HashMap<String, ServiceComponent>();
+    init();
+  }
+
+  public ServiceImpl(Cluster cluster, String serviceName,
+      Map<String, Config> configs) {
+    this(cluster, serviceName, DeployState.INIT, configs);
+  }
+  
+  public ServiceImpl(Cluster cluster, String serviceName) {
+    this(cluster, serviceName, DeployState.INIT, null);
+  }
+  
+  @Override
+  public String getName() {
+    return serviceName;
+  }
+
+  @Override
+  public long getClusterId() {
+    return cluster.getClusterId();
+  }
+
+  @Override
+  public long getCurrentHostComponentMappingVersion() {
+    // TODO Auto-generated method stub
+    return 0;
+  }
+
+  @Override
+  public Map<String, ServiceComponent> getServiceComponents() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public State getState() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public void setState(State state) {
+    // TODO Auto-generated method stub
+
+  }
+
+  @Override
+  public Config getConfig() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public void setConfig(Config config) {
+    // TODO Auto-generated method stub
+
+  }
+
+  @Override
+  public StackVersion getStackVersion() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public void setStackVersion(StackVersion stackVersion) {
+    // TODO Auto-generated method stub
+
+  }
+
+}

+ 17 - 19
ambari-server/src/main/java/org/apache/ambari/server/state/live/svccomphost/ServiceComponentHostState.java → ambari-server/src/main/java/org/apache/ambari/server/state/State.java

@@ -16,32 +16,30 @@
  * limitations under the License.
  */
 
-package org.apache.ambari.server.state.live.svccomphost;
+package org.apache.ambari.server.state;
 
-import org.apache.ambari.server.state.ConfigVersion;
-import org.apache.ambari.server.state.StackVersion;
 
-public class ServiceComponentHostState {
+public class State {
 
   private final int hashCodePrime = 131;
 
   private ConfigVersion configVersion;
   private StackVersion stackVersion;
-  private ServiceComponentHostLiveState liveState;
+  private DeployState deployState;
 
-  public ServiceComponentHostState(ConfigVersion configVersion,
-      StackVersion stackVersion, ServiceComponentHostLiveState state) {
+  public State(ConfigVersion configVersion,
+      StackVersion stackVersion, DeployState state) {
     super();
     this.configVersion = configVersion;
     this.stackVersion = stackVersion;
-    this.liveState = state;
+    this.deployState = state;
   }
 
-  public ServiceComponentHostState() {
+  public State() {
     super();
     this.configVersion = null;
     this.stackVersion = null;
-    this.liveState = ServiceComponentHostLiveState.INIT;
+    this.deployState = DeployState.INIT;
   }
 
 
@@ -72,14 +70,14 @@ public class ServiceComponentHostState {
   /**
    * @return the state
    */
-  public ServiceComponentHostLiveState getLiveState() {
-    return liveState;
+  public DeployState getLiveState() {
+    return deployState;
   }
   /**
    * @param state the state to set
    */
-  public void setState(ServiceComponentHostLiveState state) {
-    this.liveState = state;
+  public void setState(DeployState state) {
+    this.deployState = state;
   }
 
 
@@ -97,19 +95,19 @@ public class ServiceComponentHostState {
     } else {
       out += "null";
     }
-    out += ", state=" + liveState;
+    out += ", state=" + deployState;
     return out;
   }
 
   @Override
   public boolean equals(Object object) {
-    if (!(object instanceof ServiceComponentHostState)) {
+    if (!(object instanceof State)) {
       return false;
     }
     if (this == object) {
       return true;
     }
-    ServiceComponentHostState s = (ServiceComponentHostState) object;
+    State s = (State) object;
 
     if (configVersion != null ?
         !configVersion.equals(s.configVersion) : s.configVersion != null) {
@@ -119,7 +117,7 @@ public class ServiceComponentHostState {
         !stackVersion.equals(s.stackVersion) : s.stackVersion != null) {
       return false;
     }
-    return liveState.equals(s.liveState);
+    return deployState.equals(s.deployState);
   }
 
   @Override
@@ -127,7 +125,7 @@ public class ServiceComponentHostState {
     int result = configVersion != null ? configVersion.hashCode() : 0;
     result += hashCodePrime * result +
         ( stackVersion != null ? stackVersion.hashCode() : 0 );
-    result += liveState.hashCode();
+    result += deployState.hashCode();
     return result;
   }
 

+ 6 - 3
ambari-server/src/main/java/org/apache/ambari/server/state/live/Cluster.java

@@ -21,10 +21,11 @@ package org.apache.ambari.server.state.live;
 import java.util.List;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.state.Service;
+import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHost;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostEvent;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostState;
 
 public interface Cluster {
 
@@ -60,7 +61,7 @@ public interface Cluster {
    * @param hostname Host name
    * @return ServiceComponentHostState
    */
-  public ServiceComponentHostState getServiceComponentHostState(String service,
+  public State getServiceComponentHostState(String service,
       String serviceComponent, String hostname) throws AmbariException;
 
   /**
@@ -72,7 +73,7 @@ public interface Cluster {
    */
   public void setServiceComponentHostState(String service,
       String serviceComponent, String hostname,
-      ServiceComponentHostState state) throws AmbariException;
+      State state) throws AmbariException;
 
   /**
    * Send an Event to a given ServiceComponentHost
@@ -99,4 +100,6 @@ public interface Cluster {
 
   public List<ServiceComponentHost> getServiceComponentHosts(String hostname);
 
+  public void addService(Service service);
+
 }

+ 10 - 3
ambari-server/src/main/java/org/apache/ambari/server/state/live/ClusterImpl.java

@@ -24,11 +24,12 @@ import java.util.Map;
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.ServiceComponentHostNotFoundException;
+import org.apache.ambari.server.state.Service;
+import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHost;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostEvent;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostImpl;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostState;
 
 public class ClusterImpl implements Cluster {
 
@@ -140,7 +141,7 @@ public class ClusterImpl implements Cluster {
   }
 
   @Override
-  public synchronized ServiceComponentHostState getServiceComponentHostState(String service,
+  public synchronized State getServiceComponentHostState(String service,
       String serviceComponent, String hostname) throws AmbariException {
     return
         getServiceComponentHost(service, serviceComponent, hostname).getState();
@@ -149,7 +150,7 @@ public class ClusterImpl implements Cluster {
   @Override
   public synchronized void setServiceComponentHostState(String service,
       String serviceComponent, String hostname,
-      ServiceComponentHostState state) throws AmbariException {
+      State state) throws AmbariException {
     getServiceComponentHost(service, serviceComponent, hostname)
       .setState(state);
   }
@@ -175,4 +176,10 @@ public class ClusterImpl implements Cluster {
     return null;
   }
 
+  @Override
+  public void addService(Service service) {
+    // TODO Auto-generated method stub
+    
+  }
+
 }

+ 0 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/live/ClustersImpl.java

@@ -19,7 +19,6 @@
 package org.apache.ambari.server.state.live;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/live/host/Host.java

@@ -22,8 +22,8 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.ambari.server.agent.DiskInfo;
+import org.apache.ambari.server.state.AgentVersion;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
-import org.apache.ambari.server.state.live.AgentVersion;
 import org.apache.ambari.server.state.live.job.Job;
 
 public interface Host {

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/live/host/HostImpl.java

@@ -28,11 +28,11 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.apache.ambari.server.agent.DiskInfo;
 import org.apache.ambari.server.agent.HostInfo;
+import org.apache.ambari.server.state.AgentVersion;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
 import org.apache.ambari.server.state.fsm.SingleArcTransition;
 import org.apache.ambari.server.state.fsm.StateMachine;
 import org.apache.ambari.server.state.fsm.StateMachineFactory;
-import org.apache.ambari.server.state.live.AgentVersion;
 import org.apache.ambari.server.state.live.job.Job;
 import org.apache.ambari.server.state.live.host.HostHealthStatus.HealthStatus;
 import org.apache.commons.logging.Log;

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/live/host/HostRegistrationRequestEvent.java

@@ -19,7 +19,7 @@
 package org.apache.ambari.server.state.live.host;
 
 import org.apache.ambari.server.agent.HostInfo;
-import org.apache.ambari.server.state.live.AgentVersion;
+import org.apache.ambari.server.state.AgentVersion;
 
 public class HostRegistrationRequestEvent extends HostEvent {
 

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/live/job/JobEvent.java

@@ -23,7 +23,7 @@ import org.apache.ambari.server.state.fsm.event.AbstractEvent;
 /**
  * Base class for all events that affect the Job FSM
  */
-public class JobEvent extends AbstractEvent<JobEventType> {
+public abstract class JobEvent extends AbstractEvent<JobEventType> {
 
   /**
    * JobId identifying the job

+ 3 - 2
ambari-server/src/main/java/org/apache/ambari/server/state/live/svccomphost/ServiceComponentHost.java

@@ -20,6 +20,7 @@ package org.apache.ambari.server.state.live.svccomphost;
 
 import java.util.List;
 
+import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
 import org.apache.ambari.server.state.live.job.Job;
 
@@ -61,13 +62,13 @@ public interface ServiceComponentHost {
    * Get ServiceComponent-Host State
    * @return ServiceComponentHostState
    */
-  public ServiceComponentHostState getState();
+  public State getState();
 
   /**
    * Set the State for this ServiceComponent-Host
    * @param state ServiceComponentHostState to set to
    */
-  public void setState(ServiceComponentHostState state);
+  public void setState(State state);
 
   /**
    * Send a ServiceComponentHostState event to the StateMachine

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/live/svccomphost/ServiceComponentHostEvent.java

@@ -23,7 +23,7 @@ import org.apache.ambari.server.state.fsm.event.AbstractEvent;
 /**
  * Base class for all events that affect the ServiceComponentHost FSM
  */
-public class ServiceComponentHostEvent
+public abstract class ServiceComponentHostEvent
     extends AbstractEvent<ServiceComponentHostEventType> {
 
   /**

+ 106 - 104
ambari-server/src/main/java/org/apache/ambari/server/state/live/svccomphost/ServiceComponentHostImpl.java

@@ -23,23 +23,25 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
+import org.apache.ambari.server.state.DeployState;
+import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
 import org.apache.ambari.server.state.fsm.SingleArcTransition;
 import org.apache.ambari.server.state.fsm.StateMachine;
 import org.apache.ambari.server.state.fsm.StateMachineFactory;
 import org.apache.ambari.server.state.live.job.Job;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ServiceComponentHostImpl implements ServiceComponentHost {
 
-  private static final Log LOG =
-      LogFactory.getLog(ServiceComponentHostImpl.class);
+  private static final Logger LOG =
+      LoggerFactory.getLogger(ServiceComponentHostImpl.class);
 
   private final Lock readLock;
   private final Lock writeLock;
 
-  private ServiceComponentHostState state;
+  private State state;
 
   private final long clusterId;
   private final String serviceName;
@@ -51,233 +53,233 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
   private long lastOpLastUpdateTime;
 
   private static final StateMachineFactory
-  <ServiceComponentHostImpl, ServiceComponentHostLiveState,
+  <ServiceComponentHostImpl, DeployState,
   ServiceComponentHostEventType, ServiceComponentHostEvent>
     daemonStateMachineFactory
       = new StateMachineFactory<ServiceComponentHostImpl,
-          ServiceComponentHostLiveState, ServiceComponentHostEventType,
+          DeployState, ServiceComponentHostEventType,
           ServiceComponentHostEvent>
-          (ServiceComponentHostLiveState.INIT)
+          (DeployState.INIT)
 
   // define the state machine of a HostServiceComponent for runnable
   // components
 
-     .addTransition(ServiceComponentHostLiveState.INIT,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.INIT,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL,
          new ServiceComponentHostOpStartedTransition())
-     .addTransition(ServiceComponentHostLiveState.INSTALLING,
-         ServiceComponentHostLiveState.INSTALLED,
+     .addTransition(DeployState.INSTALLING,
+         DeployState.INSTALLED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_SUCCEEDED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.INSTALLING,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.INSTALLING,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_IN_PROGRESS,
          new ServiceComponentHostOpInProgressTransition())
-     .addTransition(ServiceComponentHostLiveState.INSTALLING,
-         ServiceComponentHostLiveState.INSTALL_FAILED,
+     .addTransition(DeployState.INSTALLING,
+         DeployState.INSTALL_FAILED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED,
          new ServiceComponentHostOpCompletedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.INSTALL_FAILED,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.INSTALL_FAILED,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_RESTART,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.INSTALLED,
-         ServiceComponentHostLiveState.STARTING,
+     .addTransition(DeployState.INSTALLED,
+         DeployState.STARTING,
          ServiceComponentHostEventType.HOST_SVCCOMP_START,
          new ServiceComponentHostOpStartedTransition())
-     .addTransition(ServiceComponentHostLiveState.INSTALLED,
-         ServiceComponentHostLiveState.UNINSTALLING,
+     .addTransition(DeployState.INSTALLED,
+         DeployState.UNINSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_UNINSTALL,
          new ServiceComponentHostOpStartedTransition())
-     .addTransition(ServiceComponentHostLiveState.INSTALLED,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.INSTALLED,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.STARTING,
-         ServiceComponentHostLiveState.STARTING,
+     .addTransition(DeployState.STARTING,
+         DeployState.STARTING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_IN_PROGRESS,
          new ServiceComponentHostOpInProgressTransition())
-     .addTransition(ServiceComponentHostLiveState.STARTING,
-         ServiceComponentHostLiveState.STARTED,
+     .addTransition(DeployState.STARTING,
+         DeployState.STARTED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_SUCCEEDED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.STARTING,
-         ServiceComponentHostLiveState.START_FAILED,
+     .addTransition(DeployState.STARTING,
+         DeployState.START_FAILED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED,
          new ServiceComponentHostOpCompletedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.START_FAILED,
-         ServiceComponentHostLiveState.STARTING,
+     .addTransition(DeployState.START_FAILED,
+         DeployState.STARTING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_RESTART,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.STARTED,
-         ServiceComponentHostLiveState.STOPPING,
+     .addTransition(DeployState.STARTED,
+         DeployState.STOPPING,
          ServiceComponentHostEventType.HOST_SVCCOMP_STOP,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.STOPPING,
-         ServiceComponentHostLiveState.STOPPING,
+     .addTransition(DeployState.STOPPING,
+         DeployState.STOPPING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_IN_PROGRESS,
          new ServiceComponentHostOpInProgressTransition())
-     .addTransition(ServiceComponentHostLiveState.STOPPING,
-         ServiceComponentHostLiveState.INSTALLED,
+     .addTransition(DeployState.STOPPING,
+         DeployState.INSTALLED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_SUCCEEDED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.STOPPING,
-         ServiceComponentHostLiveState.STOP_FAILED,
+     .addTransition(DeployState.STOPPING,
+         DeployState.STOP_FAILED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED,
          new ServiceComponentHostOpCompletedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.STOP_FAILED,
-         ServiceComponentHostLiveState.STOPPING,
+     .addTransition(DeployState.STOP_FAILED,
+         DeployState.STOPPING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_RESTART,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLING,
-         ServiceComponentHostLiveState.UNINSTALLING,
+     .addTransition(DeployState.UNINSTALLING,
+         DeployState.UNINSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_IN_PROGRESS,
          new ServiceComponentHostOpInProgressTransition())
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLING,
-         ServiceComponentHostLiveState.UNINSTALLED,
+     .addTransition(DeployState.UNINSTALLING,
+         DeployState.UNINSTALLED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_SUCCEEDED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLING,
-         ServiceComponentHostLiveState.UNINSTALL_FAILED,
+     .addTransition(DeployState.UNINSTALLING,
+         DeployState.UNINSTALL_FAILED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED,
          new ServiceComponentHostOpCompletedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.UNINSTALL_FAILED,
-         ServiceComponentHostLiveState.UNINSTALLING,
+     .addTransition(DeployState.UNINSTALL_FAILED,
+         DeployState.UNINSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_RESTART,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLED,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.UNINSTALLED,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLED,
-         ServiceComponentHostLiveState.WIPING_OUT,
+     .addTransition(DeployState.UNINSTALLED,
+         DeployState.WIPING_OUT,
          ServiceComponentHostEventType.HOST_SVCCOMP_WIPEOUT,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.WIPING_OUT,
-         ServiceComponentHostLiveState.WIPING_OUT,
+     .addTransition(DeployState.WIPING_OUT,
+         DeployState.WIPING_OUT,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_IN_PROGRESS,
          new ServiceComponentHostOpInProgressTransition())
-     .addTransition(ServiceComponentHostLiveState.WIPING_OUT,
-         ServiceComponentHostLiveState.INIT,
+     .addTransition(DeployState.WIPING_OUT,
+         DeployState.INIT,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_SUCCEEDED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.WIPING_OUT,
-         ServiceComponentHostLiveState.WIPEOUT_FAILED,
+     .addTransition(DeployState.WIPING_OUT,
+         DeployState.WIPEOUT_FAILED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.WIPEOUT_FAILED,
-         ServiceComponentHostLiveState.WIPING_OUT,
+     .addTransition(DeployState.WIPEOUT_FAILED,
+         DeployState.WIPING_OUT,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_RESTART,
          new ServiceComponentHostOpStartedTransition())
 
      .installTopology();
 
   private static final StateMachineFactory
-  <ServiceComponentHostImpl, ServiceComponentHostLiveState,
+  <ServiceComponentHostImpl, DeployState,
   ServiceComponentHostEventType, ServiceComponentHostEvent>
     clientStateMachineFactory
       = new StateMachineFactory<ServiceComponentHostImpl,
-          ServiceComponentHostLiveState, ServiceComponentHostEventType,
+          DeployState, ServiceComponentHostEventType,
           ServiceComponentHostEvent>
-          (ServiceComponentHostLiveState.INIT)
+          (DeployState.INIT)
 
   // define the state machine of a HostServiceComponent for client only
   // components
 
-     .addTransition(ServiceComponentHostLiveState.INIT,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.INIT,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.INSTALLING,
-         ServiceComponentHostLiveState.INSTALLED,
+     .addTransition(DeployState.INSTALLING,
+         DeployState.INSTALLED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_SUCCEEDED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.INSTALLING,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.INSTALLING,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_IN_PROGRESS,
          new ServiceComponentHostOpInProgressTransition())
-     .addTransition(ServiceComponentHostLiveState.INSTALLING,
-         ServiceComponentHostLiveState.INSTALL_FAILED,
+     .addTransition(DeployState.INSTALLING,
+         DeployState.INSTALL_FAILED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED,
          new ServiceComponentHostOpCompletedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.INSTALL_FAILED,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.INSTALL_FAILED,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_RESTART,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.INSTALLED,
-         ServiceComponentHostLiveState.UNINSTALLING,
+     .addTransition(DeployState.INSTALLED,
+         DeployState.UNINSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_UNINSTALL,
          new ServiceComponentHostOpStartedTransition())
-     .addTransition(ServiceComponentHostLiveState.INSTALLED,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.INSTALLED,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLING,
-         ServiceComponentHostLiveState.UNINSTALLING,
+     .addTransition(DeployState.UNINSTALLING,
+         DeployState.UNINSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_IN_PROGRESS,
          new ServiceComponentHostOpInProgressTransition())
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLING,
-         ServiceComponentHostLiveState.UNINSTALLED,
+     .addTransition(DeployState.UNINSTALLING,
+         DeployState.UNINSTALLED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_SUCCEEDED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLING,
-         ServiceComponentHostLiveState.UNINSTALL_FAILED,
+     .addTransition(DeployState.UNINSTALLING,
+         DeployState.UNINSTALL_FAILED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED,
          new ServiceComponentHostOpCompletedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.UNINSTALL_FAILED,
-         ServiceComponentHostLiveState.UNINSTALLING,
+     .addTransition(DeployState.UNINSTALL_FAILED,
+         DeployState.UNINSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_RESTART,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLED,
-         ServiceComponentHostLiveState.INSTALLING,
+     .addTransition(DeployState.UNINSTALLED,
+         DeployState.INSTALLING,
          ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.UNINSTALLED,
-         ServiceComponentHostLiveState.WIPING_OUT,
+     .addTransition(DeployState.UNINSTALLED,
+         DeployState.WIPING_OUT,
          ServiceComponentHostEventType.HOST_SVCCOMP_WIPEOUT,
          new ServiceComponentHostOpStartedTransition())
 
-     .addTransition(ServiceComponentHostLiveState.WIPING_OUT,
-         ServiceComponentHostLiveState.WIPING_OUT,
+     .addTransition(DeployState.WIPING_OUT,
+         DeployState.WIPING_OUT,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_IN_PROGRESS,
          new ServiceComponentHostOpInProgressTransition())
-     .addTransition(ServiceComponentHostLiveState.WIPING_OUT,
-         ServiceComponentHostLiveState.INIT,
+     .addTransition(DeployState.WIPING_OUT,
+         DeployState.INIT,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_SUCCEEDED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.WIPING_OUT,
-         ServiceComponentHostLiveState.WIPEOUT_FAILED,
+     .addTransition(DeployState.WIPING_OUT,
+         DeployState.WIPEOUT_FAILED,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_FAILED,
          new ServiceComponentHostOpCompletedTransition())
-     .addTransition(ServiceComponentHostLiveState.WIPEOUT_FAILED,
-         ServiceComponentHostLiveState.WIPING_OUT,
+     .addTransition(DeployState.WIPEOUT_FAILED,
+         DeployState.WIPING_OUT,
          ServiceComponentHostEventType.HOST_SVCCOMP_OP_RESTART,
          new ServiceComponentHostOpStartedTransition())
 
      .installTopology();
 
 
-  private final StateMachine<ServiceComponentHostLiveState,
+  private final StateMachine<DeployState,
       ServiceComponentHostEventType, ServiceComponentHostEvent> stateMachine;
 
   static class ServiceComponentHostOpCompletedTransition
@@ -375,12 +377,12 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
     this.serviceName = serviceName;
     this.serviceComponentName = serviceComponentName;
     this.hostName = hostName;
-    this.state = new ServiceComponentHostState();
+    this.state = new State();
     this.resetLastOpInfo();
   }
 
   @Override
-  public ServiceComponentHostState getState() {
+  public State getState() {
     try {
       readLock.lock();
       return state;
@@ -391,7 +393,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
   }
 
   @Override
-  public void setState(ServiceComponentHostState state) {
+  public void setState(State state) {
     try {
       writeLock.lock();
       this.state = state;
@@ -410,7 +412,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
           + " eventType=" + event.getType().name()
           + ", event=" + event.toString());
     }
-    ServiceComponentHostState oldState = getState();
+    State oldState = getState();
     try {
       writeLock.lock();
       try {

+ 1 - 1
ambari-server/src/test/java/org/apache/ambari/server/resources/TestResources.java

@@ -70,7 +70,7 @@ public class TestResources extends TestCase {
 	props.store(out, "");
 	out.close();
     resourceFile = tempFolder.newFile(RESOURCE_FILE_NAME);
-    FileUtils.write(resourceFile, RESOURCE_FILE_CONTENT);
+    FileUtils.writeStringToFile(resourceFile, RESOURCE_FILE_CONTENT);
     injector = Guice.createInjector(new ResourceModule());
     resMan = injector.getInstance(ResourceManager.class);
   }

+ 7 - 5
ambari-server/src/test/java/org/apache/ambari/server/state/live/svccomphost/TestServiceComponentHostState.java → ambari-server/src/test/java/org/apache/ambari/server/state/DeployStateTest.java

@@ -16,20 +16,22 @@
  * limitations under the License.
  */
 
-package org.apache.ambari.server.state.live.svccomphost;
+package org.apache.ambari.server.state;
 
 import junit.framework.Assert;
 
 import org.apache.ambari.server.state.ConfigVersion;
+import org.apache.ambari.server.state.DeployState;
 import org.apache.ambari.server.state.StackVersion;
+import org.apache.ambari.server.state.State;
 import org.junit.Test;
 
-public class TestServiceComponentHostState {
+public class DeployStateTest {
 
   @Test
   public void testEquals() {
-    ServiceComponentHostState s1 = new ServiceComponentHostState();
-    ServiceComponentHostState s2 = new ServiceComponentHostState();
+    State s1 = new State();
+    State s2 = new State();
 
     Assert.assertTrue(s1.equals(s2));
 
@@ -55,7 +57,7 @@ public class TestServiceComponentHostState {
     Assert.assertFalse(s1.equals(s2));
     Assert.assertFalse(s2.equals(s1));
 
-    s1.setState(ServiceComponentHostLiveState.INSTALLED);
+    s1.setState(DeployState.INSTALLED);
     Assert.assertFalse(s1.equals(s2));
 
   }

+ 15 - 14
ambari-server/src/test/java/org/apache/ambari/server/state/live/TestClusterImpl.java

@@ -28,16 +28,17 @@ import junit.framework.Assert;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.agent.DiskInfo;
 import org.apache.ambari.server.agent.HostInfo;
+import org.apache.ambari.server.state.AgentVersion;
 import org.apache.ambari.server.state.ConfigVersion;
+import org.apache.ambari.server.state.DeployState;
 import org.apache.ambari.server.state.StackVersion;
+import org.apache.ambari.server.state.State;
 import org.apache.ambari.server.state.fsm.InvalidStateTransitonException;
 import org.apache.ambari.server.state.live.host.HostHealthyHeartbeatEvent;
 import org.apache.ambari.server.state.live.host.HostRegistrationRequestEvent;
 import org.apache.ambari.server.state.live.host.HostState;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostInstallEvent;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostLiveState;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostOpRestartedEvent;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostState;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -158,7 +159,7 @@ public class TestClusterImpl {
   @Test
   public void testGetServiceComponentHostState() throws AmbariException {
     Assert.assertNotNull(c1.getServiceComponentHostState(s1, sc1, h1));
-    Assert.assertEquals(ServiceComponentHostLiveState.INIT,
+    Assert.assertEquals(DeployState.INIT,
         c1.getServiceComponentHostState(s1, sc1, h1).getLiveState());
   }
 
@@ -166,17 +167,17 @@ public class TestClusterImpl {
   public void testSetServiceComponentHostState() throws AmbariException {
     ConfigVersion cVersion = new ConfigVersion("0.0.c");
     StackVersion sVersion = new StackVersion("hadoop-x.y.z");
-    ServiceComponentHostLiveState liveState =
-        ServiceComponentHostLiveState.INSTALL_FAILED;
-    ServiceComponentHostState expected =
-        new ServiceComponentHostState(cVersion, sVersion, liveState);
+    DeployState liveState =
+        DeployState.INSTALL_FAILED;
+    State expected =
+        new State(cVersion, sVersion, liveState);
     c1.setServiceComponentHostState(s1, sc1, h1, expected);
 
-    ServiceComponentHostState actual =
+    State actual =
         c1.getServiceComponentHostState(s1, sc1, h1);
 
     Assert.assertEquals(expected, actual);
-    Assert.assertEquals(ServiceComponentHostLiveState.INSTALL_FAILED,
+    Assert.assertEquals(DeployState.INSTALL_FAILED,
         actual.getLiveState());
 
   }
@@ -186,10 +187,10 @@ public class TestClusterImpl {
       throws AmbariException, InvalidStateTransitonException {
     ConfigVersion cVersion = new ConfigVersion("0.0.c");
     StackVersion sVersion = new StackVersion("hadoop-x.y.z");
-    ServiceComponentHostLiveState liveState =
-        ServiceComponentHostLiveState.INSTALL_FAILED;
-    ServiceComponentHostState expected =
-        new ServiceComponentHostState(cVersion, sVersion, liveState);
+    DeployState liveState =
+        DeployState.INSTALL_FAILED;
+    State expected =
+        new State(cVersion, sVersion, liveState);
     c1.setServiceComponentHostState(s1, sc1, h1, expected);
 
     try {
@@ -204,7 +205,7 @@ public class TestClusterImpl {
     c1.handleServiceComponentHostEvent(s1, sc1, h1,
         new ServiceComponentHostOpRestartedEvent(sc1, h1, 1002));
 
-    Assert.assertEquals(ServiceComponentHostLiveState.INSTALLING,
+    Assert.assertEquals(DeployState.INSTALLING,
         c1.getServiceComponentHostState(s1, sc1, h1).getLiveState());
 
   }

+ 1 - 1
ambari-server/src/test/java/org/apache/ambari/server/state/live/host/TestHostImpl.java

@@ -25,7 +25,7 @@ import java.util.List;
 
 import org.apache.ambari.server.agent.DiskInfo;
 import org.apache.ambari.server.agent.HostInfo;
-import org.apache.ambari.server.state.live.AgentVersion;
+import org.apache.ambari.server.state.AgentVersion;
 import org.apache.ambari.server.state.live.host.HostHealthStatus.HealthStatus;
 import org.junit.Assert;
 import org.junit.Test;

+ 72 - 45
ambari-server/src/test/java/org/apache/ambari/server/state/live/svccomphost/TestServiceComponentHostImpl.java

@@ -18,10 +18,10 @@
 
 package org.apache.ambari.server.state.live.svccomphost;
 
+import org.apache.ambari.server.state.DeployState;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostEvent;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostEventType;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostImpl;
-import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostLiveState;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostOpFailedEvent;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostOpInProgressEvent;
 import org.apache.ambari.server.state.live.svccomphost.ServiceComponentHostOpRestartedEvent;
@@ -37,7 +37,7 @@ public class TestServiceComponentHostImpl {
       String hostName, boolean isClient) {
     ServiceComponentHostImpl impl = new ServiceComponentHostImpl(clusterId, svc,
         svcComponent, hostName, isClient);
-    Assert.assertEquals(ServiceComponentHostLiveState.INIT,
+    Assert.assertEquals(DeployState.INIT,
         impl.getState().getLiveState());
     return impl;
   }
@@ -50,17 +50,44 @@ public class TestServiceComponentHostImpl {
 
   private ServiceComponentHostEvent createEvent(ServiceComponentHostImpl impl,
       long timestamp, ServiceComponentHostEventType eventType) {
-    ServiceComponentHostEvent event = new ServiceComponentHostEvent(eventType,
-          impl.getServiceComponentName(), impl.getHostName(), timestamp);
-    return event;
+    switch (eventType) {
+      case HOST_SVCCOMP_INSTALL:
+        return new ServiceComponentHostInstallEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+      case HOST_SVCCOMP_START:
+        return new ServiceComponentHostStartEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+      case HOST_SVCCOMP_STOP:
+        return new ServiceComponentHostStopEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+      case HOST_SVCCOMP_UNINSTALL:
+        return new ServiceComponentHostUninstallEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+      case HOST_SVCCOMP_OP_FAILED:
+        return new ServiceComponentHostOpFailedEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+      case HOST_SVCCOMP_OP_SUCCEEDED:
+        return new ServiceComponentHostOpSucceededEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+      case HOST_SVCCOMP_OP_IN_PROGRESS:
+        return new ServiceComponentHostOpInProgressEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+      case HOST_SVCCOMP_OP_RESTART:
+        return new ServiceComponentHostOpRestartedEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+      case HOST_SVCCOMP_WIPEOUT:
+        return new ServiceComponentHostWipeoutEvent(
+            impl.getServiceComponentName(), impl.getHostName(), timestamp);
+    }
+    return null;
   }
 
   private void runStateChanges(ServiceComponentHostImpl impl,
       ServiceComponentHostEventType startEvent,
-      ServiceComponentHostLiveState startState,
-      ServiceComponentHostLiveState inProgressState,
-      ServiceComponentHostLiveState failedState,
-      ServiceComponentHostLiveState completedState)
+      DeployState startState,
+      DeployState inProgressState,
+      DeployState failedState,
+      DeployState completedState)
     throws Exception {
     long timestamp = 0;
 
@@ -164,18 +191,18 @@ public class TestServiceComponentHostImpl {
         "svcComp", "h1", true);
 
     runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL,
-        ServiceComponentHostLiveState.INIT,
-        ServiceComponentHostLiveState.INSTALLING,
-        ServiceComponentHostLiveState.INSTALL_FAILED,
-        ServiceComponentHostLiveState.INSTALLED);
+        DeployState.INIT,
+        DeployState.INSTALLING,
+        DeployState.INSTALL_FAILED,
+        DeployState.INSTALLED);
 
     boolean exceptionThrown = false;
     try {
       runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_START,
-        ServiceComponentHostLiveState.INSTALLED,
-        ServiceComponentHostLiveState.STARTING,
-        ServiceComponentHostLiveState.START_FAILED,
-        ServiceComponentHostLiveState.STARTED);
+        DeployState.INSTALLED,
+        DeployState.STARTING,
+        DeployState.START_FAILED,
+        DeployState.STARTED);
     }
     catch (Exception e) {
       exceptionThrown = true;
@@ -183,16 +210,16 @@ public class TestServiceComponentHostImpl {
     Assert.assertTrue("Exception not thrown on invalid event", exceptionThrown);
 
     runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_UNINSTALL,
-        ServiceComponentHostLiveState.INSTALLED,
-        ServiceComponentHostLiveState.UNINSTALLING,
-        ServiceComponentHostLiveState.UNINSTALL_FAILED,
-        ServiceComponentHostLiveState.UNINSTALLED);
+        DeployState.INSTALLED,
+        DeployState.UNINSTALLING,
+        DeployState.UNINSTALL_FAILED,
+        DeployState.UNINSTALLED);
 
     runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_WIPEOUT,
-        ServiceComponentHostLiveState.UNINSTALLED,
-        ServiceComponentHostLiveState.WIPING_OUT,
-        ServiceComponentHostLiveState.WIPEOUT_FAILED,
-        ServiceComponentHostLiveState.INIT);
+        DeployState.UNINSTALLED,
+        DeployState.WIPING_OUT,
+        DeployState.WIPEOUT_FAILED,
+        DeployState.INIT);
 
   }
 
@@ -202,34 +229,34 @@ public class TestServiceComponentHostImpl {
         "svcComp", "h1", false);
 
     runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_INSTALL,
-        ServiceComponentHostLiveState.INIT,
-        ServiceComponentHostLiveState.INSTALLING,
-        ServiceComponentHostLiveState.INSTALL_FAILED,
-        ServiceComponentHostLiveState.INSTALLED);
+        DeployState.INIT,
+        DeployState.INSTALLING,
+        DeployState.INSTALL_FAILED,
+        DeployState.INSTALLED);
 
     runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_START,
-      ServiceComponentHostLiveState.INSTALLED,
-      ServiceComponentHostLiveState.STARTING,
-      ServiceComponentHostLiveState.START_FAILED,
-      ServiceComponentHostLiveState.STARTED);
+      DeployState.INSTALLED,
+      DeployState.STARTING,
+      DeployState.START_FAILED,
+      DeployState.STARTED);
 
     runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_STOP,
-      ServiceComponentHostLiveState.STARTED,
-      ServiceComponentHostLiveState.STOPPING,
-      ServiceComponentHostLiveState.STOP_FAILED,
-      ServiceComponentHostLiveState.INSTALLED);
+      DeployState.STARTED,
+      DeployState.STOPPING,
+      DeployState.STOP_FAILED,
+      DeployState.INSTALLED);
 
     runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_UNINSTALL,
-        ServiceComponentHostLiveState.INSTALLED,
-        ServiceComponentHostLiveState.UNINSTALLING,
-        ServiceComponentHostLiveState.UNINSTALL_FAILED,
-        ServiceComponentHostLiveState.UNINSTALLED);
+        DeployState.INSTALLED,
+        DeployState.UNINSTALLING,
+        DeployState.UNINSTALL_FAILED,
+        DeployState.UNINSTALLED);
 
     runStateChanges(impl, ServiceComponentHostEventType.HOST_SVCCOMP_WIPEOUT,
-        ServiceComponentHostLiveState.UNINSTALLED,
-        ServiceComponentHostLiveState.WIPING_OUT,
-        ServiceComponentHostLiveState.WIPEOUT_FAILED,
-        ServiceComponentHostLiveState.INIT);
+        DeployState.UNINSTALLED,
+        DeployState.WIPING_OUT,
+        DeployState.WIPEOUT_FAILED,
+        DeployState.INIT);
 
   }