You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by hi...@apache.org on 2012/09/04 19:57:07 UTC
svn commit: r1380767 - in /incubator/ambari/branches/AMBARI-666: ./
ambari-server/src/main/java/org/apache/ambari/server/
ambari-server/src/main/java/org/apache/ambari/server/fsm/
Author: hitesh
Date: Tue Sep 4 17:57:06 2012
New Revision: 1380767
URL: http://svn.apache.org/viewvc?rev=1380767&view=rev
Log:
AMBARI-691. More basic classes for new design. (Contributed by hitesh)
Added:
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Config.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ConfigVersion.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Job.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobId.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobState.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNode.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNodeState.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEvent.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEventType.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSM.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSMImpl.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/Role.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEvent.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEventType.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSM.java (with props)
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSMImpl.java (with props)
Removed:
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Action.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ActionId.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ActionState.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/NodeImpl.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ActionEvent.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ActionEventType.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ActionFSM.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ActionFSMImpl.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeServiceComponentEvent.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeServiceComponentEventType.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeServiceComponentFSM.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeServiceComponentFSMImpl.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeServiceComponentState.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeState.java
Modified:
incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Cluster.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Node.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Service.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponent.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentType.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceType.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/InvalidStateTransitonException.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeEventType.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSM.java
incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSMImpl.java
Modified: incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt (original)
+++ incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt Tue Sep 4 17:57:06 2012
@@ -12,6 +12,8 @@ AMBARI-666 branch (unreleased changes)
NEW FEATURES
+ AMBARI-691. More basic classes for new design. (hitesh)
+
AMBARI-693. Classes for request objects. (jitendra)
AMBARI-685. Basic classes. (hitesh via jitendra)
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Cluster.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Cluster.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Cluster.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Cluster.java Tue Sep 4 17:57:06 2012
@@ -1,5 +1,7 @@
package org.apache.ambari.server;
+import java.util.List;
+
/**
* Cluster represents a set of Nodes and Services deployed on these Nodes
*/
@@ -11,4 +13,25 @@ public interface Cluster {
*/
public String getName();
+ /**
+ * Get enabled Services for this Cluster
+ * @return List of Services
+ */
+ public List<Service> getServices();
+
+ /**
+ * Get the Nodes that belong to this Cluster
+ * @return List of Nodes
+ */
+ public List<Node> getNodes();
+
+ /**
+ * Get the list of Actions that are currently being tracked at the
+ * Cluster level
+ * @return List of Actions
+ */
+ public List<Job> getActions();
+
+
+
}
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Config.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Config.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Config.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Config.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,11 @@
+package org.apache.ambari.server;
+
+// TODO
+public interface Config {
+
+ public int getSnapshotId();
+
+ // TODO
+ // public ConfigSnapshot getSnapshot();
+
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Config.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ConfigVersion.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ConfigVersion.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ConfigVersion.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ConfigVersion.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,12 @@
+package org.apache.ambari.server;
+
+// TODO
+public interface ConfigVersion {
+
+ public Config getServiceConfig();
+
+ public Config getServiceComponentConfig();
+
+ public Config getServiceComponentNodeConfig();
+
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ConfigVersion.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Job.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Job.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Job.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Job.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,23 @@
+package org.apache.ambari.server;
+
+
+public interface Job {
+
+ /**
+ * Get the Action ID for the action
+ * @return ActionId
+ */
+ public JobId getId();
+
+ /**
+ * Get the current state of the Action
+ * @return ActionState
+ */
+ public JobState getState();
+
+
+ // TODO requires some form of ActionType to ensure only one running
+ // action per action type
+ // There may be gotchas such as decomissioning should be allowed to happen
+ // on more than one node at a time
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Job.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobId.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobId.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobId.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobId.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,6 @@
+package org.apache.ambari.server;
+
+// TODO
+public class JobId {
+
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobId.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobState.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobState.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobState.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobState.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,21 @@
+package org.apache.ambari.server;
+
+public enum JobState {
+ /**
+ * Initial state for the Action.
+ * When a new action is triggered or set in motion.
+ */
+ INIT,
+ /**
+ * State when the action is triggered on the cluster,
+ */
+ IN_PROGRESS,
+ /**
+ * State of successful completion
+ */
+ COMPLETED,
+ /**
+ * Action failed to complete successfully
+ */
+ FAILED
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/JobState.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Node.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Node.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Node.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Node.java Tue Sep 4 17:57:06 2012
@@ -197,4 +197,11 @@ public interface Node {
*/
public NodeState getNodeState();
+ /**
+ * Get the list of Actions that are currently being tracked at the
+ * Node level
+ * @return List of Actions
+ */
+ public List<Job> getActions();
+
}
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Service.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Service.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Service.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/Service.java Tue Sep 4 17:57:06 2012
@@ -1,6 +1,6 @@
package org.apache.ambari.server;
-import java.util.Map;
+import java.util.List;
/**
* Service Interface for representing various products in the
@@ -20,21 +20,28 @@ public interface Service {
public ServiceType getType();
/**
- * Get the ServiceComponents for this Service
- * @return ServiceComponents mapped by their names
+ * Get the ServiceComponents enabled for this Service
+ * @return List of ServiceComponents
*/
- public Map<String, ServiceComponent> getServiceComponents();
+ public List<ServiceComponent> getServiceComponents();
/**
* Get the list of services that this Service depends on
- * @return Services mapped by their names
+ * @return List of Services
*/
- public Map<String, Service> getDependencies();
+ public List<Service> getDependencies();
/**
* Get the list of services that depend on this Service
- * @return Services mapped by their names
+ * @return List of Services
*/
- public Map<String, Service> getDependents();
+ public List<Service> getDependents();
+
+ /**
+ * Get the list of Actions that are currently being tracked at the
+ * Service level
+ * @return List of Actions
+ */
+ public List<Job> getActions();
}
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponent.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponent.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponent.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponent.java Tue Sep 4 17:57:06 2012
@@ -1,6 +1,6 @@
package org.apache.ambari.server;
-import java.util.Map;
+import java.util.List;
/**
* ServiceComponent Interface for representing components of the various
@@ -27,13 +27,27 @@ public interface ServiceComponent {
/**
* Get the list of components that this ServiceComponent depends on
- * @return ServiceComponents mapped by their names
+ * @return List of ServiceComponents
*/
- public Map<String, ServiceComponent> getDependencies();
+ public List<ServiceComponent> getDependencies();
/**
* Get the list of components that depend on this ServiceComponent
- * @return ServiceComponents mapped by their names
+ * @return List of ServiceComponents
*/
- public Map<String, ServiceComponent> getDependents();
+ public List<ServiceComponent> getDependents();
+
+ /**
+ * Get the Nodes assigned to this ServiceComponent
+ * @return List of ServiceComponentNodes
+ */
+ public List<ServiceComponentNode> getServiceComponentNodes();
+
+ /**
+ * Get the list of Actions that are currently being tracked at the
+ * ServiceComponent level
+ * @return List of Actions
+ */
+ public List<Job> getActions();
+
}
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNode.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNode.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNode.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNode.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,37 @@
+package org.apache.ambari.server;
+
+import java.util.List;
+
+public interface ServiceComponentNode {
+
+ /**
+ * Get the ServiceComponent that this object is mapped to
+ * @return ServiceComponent
+ */
+ public ServiceComponent getServiceComponent();
+
+ /**
+ * Get the Node that this object is mapped to
+ * @return Node
+ */
+ public Node getNode();
+
+ /**
+ * Get the State for this ServiceComponentNode
+ * @return
+ */
+ public ServiceComponentNodeState getServiceComponentNodeState();
+
+ /**
+ * Get the Config Version
+ * @return ConfigVersion
+ */
+ public ConfigVersion getConfigVersion();
+
+ /**
+ * Get the list of Actions that are currently being tracked at the
+ * ServiceComponentNode level
+ * @return List of Actions
+ */
+ public List<Job> getActions();
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNode.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNodeState.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNodeState.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNodeState.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNodeState.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,52 @@
+package org.apache.ambari.server;
+
+public enum ServiceComponentNodeState {
+ /**
+ * Initial/Clean state
+ */
+ INIT,
+ /**
+ * In the process of installing.
+ */
+ INSTALLING,
+ /**
+ * Install failed
+ */
+ INSTALL_FAILED,
+ /**
+ * State when install completed successfully
+ */
+ INSTALLED,
+ /**
+ * In the process of starting.
+ */
+ STARTING,
+ /**
+ * Start failed.
+ */
+ START_FAILED,
+ /**
+ * State when start completed successfully.
+ */
+ STARTED,
+ /**
+ * In the process of stopping.
+ */
+ STOPPING,
+ /**
+ * Stop failed
+ */
+ STOP_FAILED,
+ /**
+ * In the process of uninstalling.
+ */
+ UNINSTALLING,
+ /**
+ * Uninstall failed.
+ */
+ UNINSTALL_FAILED,
+ /**
+ * State when uninstall completed successfully.
+ */
+ UNINSTALLED
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentNodeState.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentType.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentType.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentType.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceComponentType.java Tue Sep 4 17:57:06 2012
@@ -1,8 +1,29 @@
package org.apache.ambari.server;
+import java.util.List;
+
/**
* TODO
* Meta-data object for ServiceComponent
*/
public interface ServiceComponentType {
+
+ /**
+ * Get the ServiceType to which this ServiceComponent belongs to
+ * @return ServiceType of which this ServiceComponent is part of
+ */
+ public ServiceType getServiceType();
+
+ /**
+ * Get the list of components that this ServiceComponent depends on
+ * @return List of ServiceComponentTypes
+ */
+ public List<ServiceComponentType> getDependencies();
+
+ /**
+ * Get the list of components that depend on this ServiceComponent
+ * @return List of ServiceComponentTypes
+ */
+ public List<ServiceComponentType> getDependents();
+
}
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceType.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceType.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceType.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/ServiceType.java Tue Sep 4 17:57:06 2012
@@ -1,9 +1,30 @@
package org.apache.ambari.server;
+import java.util.List;
+
/**
* TODO
* Meta-data object for Service
*/
public interface ServiceType {
+ /**
+ * Get the list of ServiceComponentTypes for this Service
+ * @return List of ServiceComponentTypes
+ */
+ public List<ServiceComponentType> getServiceComponents();
+
+ /**
+ * Get the list of services that this Service depends on
+ * @return List of ServiceTypes
+ */
+ public List<ServiceType> getDependencies();
+
+ /**
+ * Get the list of services that depend on this Service
+ * @return List of ServiceTypes
+ */
+ public List<ServiceType> getDependents();
+
+
}
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/InvalidStateTransitonException.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/InvalidStateTransitonException.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/InvalidStateTransitonException.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/InvalidStateTransitonException.java Tue Sep 4 17:57:06 2012
@@ -21,7 +21,7 @@ package org.apache.ambari.server.fsm;
// TODO
public class InvalidStateTransitonException extends Exception {
- private Enum<?> currentState;
+ private Enum<?> currentState;
private Enum<?> event;
public InvalidStateTransitonException(Enum<?> currentState, Enum<?> event) {
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEvent.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEvent.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEvent.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEvent.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,13 @@
+package org.apache.ambari.server.fsm;
+
+import org.apache.ambari.server.fsm.event.AbstractEvent;
+
+public class JobEvent extends AbstractEvent<JobEventType> {
+
+ // TODO
+ // this should have some action identifier
+ public JobEvent(JobEventType type) {
+ super(type);
+ // TODO Auto-generated constructor stub
+ }
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEvent.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEventType.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEventType.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEventType.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEventType.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,20 @@
+package org.apache.ambari.server.fsm;
+
+public enum JobEventType {
+ /**
+ * Initial state for the action when triggered.
+ */
+ ACTION_INIT,
+ /**
+ * Action still in progress.
+ */
+ ACTION_IN_PROGRESS,
+ /**
+ * Action completed successfully.
+ */
+ ACTION_COMPLETED,
+ /**
+ * Action failed to complete successfully.
+ */
+ ACTION_FAILED
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobEventType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSM.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSM.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSM.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSM.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,13 @@
+package org.apache.ambari.server.fsm;
+
+import org.apache.ambari.server.JobState;
+
+public interface JobFSM {
+
+ public JobState getState();
+
+ public void setState(JobState state);
+
+ public void handleEvent(JobEvent event)
+ throws InvalidStateTransitonException;
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSM.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSMImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSMImpl.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSMImpl.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSMImpl.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,58 @@
+package org.apache.ambari.server.fsm;
+
+import org.apache.ambari.server.JobState;
+import org.apache.ambari.server.fsm.StateMachineFactory;
+
+public class JobFSMImpl implements JobFSM {
+
+ private static final StateMachineFactory
+ <JobFSMImpl, JobState, JobEventType, JobEvent>
+ stateMachineFactory
+ = new StateMachineFactory<JobFSMImpl, JobState,
+ JobEventType, JobEvent>
+ (JobState.INIT)
+
+ // define the state machine of a Action
+
+ .addTransition(JobState.INIT, JobState.IN_PROGRESS,
+ JobEventType.ACTION_IN_PROGRESS)
+ .addTransition(JobState.IN_PROGRESS, JobState.IN_PROGRESS,
+ JobEventType.ACTION_IN_PROGRESS)
+ .addTransition(JobState.IN_PROGRESS, JobState.COMPLETED,
+ JobEventType.ACTION_COMPLETED)
+ .addTransition(JobState.IN_PROGRESS, JobState.FAILED,
+ JobEventType.ACTION_FAILED)
+ .addTransition(JobState.COMPLETED, JobState.INIT,
+ JobEventType.ACTION_INIT)
+ .addTransition(JobState.FAILED, JobState.INIT,
+ JobEventType.ACTION_INIT)
+ .installTopology();
+
+ private final StateMachine<JobState, JobEventType, JobEvent>
+ stateMachine;
+
+ public JobFSMImpl() {
+ super();
+ this.stateMachine = stateMachineFactory.make(this);
+ }
+
+ @Override
+ public JobState getState() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setState(JobState state) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void handleEvent(JobEvent event)
+ throws InvalidStateTransitonException {
+ // TODO
+ stateMachine.doTransition(event.getType(), event);
+ }
+
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/JobFSMImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeEventType.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeEventType.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeEventType.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeEventType.java Tue Sep 4 17:57:06 2012
@@ -1,9 +1,24 @@
package org.apache.ambari.server.fsm;
public enum NodeEventType {
+ /**
+ * Event to denote when a registration request is received from a Node
+ */
NODE_REGISTRATION_REQUEST,
+ /**
+ * Node authenticated/verified.
+ */
NODE_VERIFIED,
+ /**
+ * A healthy heartbeat event received from the Node.
+ */
NODE_HEARTBEAT_HEALTHY,
+ /**
+ * No heartbeat received from the Node within the defined expiry interval.
+ */
NODE_HEARTBEAT_TIMED_OUT,
+ /**
+ * A non-healthy heartbeat event received from the Node.
+ */
NODE_HEARTBEAT_UNHEALTHY
}
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSM.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSM.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSM.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSM.java Tue Sep 4 17:57:06 2012
@@ -1,5 +1,13 @@
package org.apache.ambari.server.fsm;
+import org.apache.ambari.server.NodeState;
+
public interface NodeFSM {
+ public NodeState getState();
+
+ public void setState(NodeState state);
+
+ public void handleEvent(NodeEvent event)
+ throws InvalidStateTransitonException;
}
Modified: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSMImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSMImpl.java?rev=1380767&r1=1380766&r2=1380767&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSMImpl.java (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/NodeFSMImpl.java Tue Sep 4 17:57:06 2012
@@ -44,6 +44,12 @@ public class NodeFSMImpl implements Node
NodeEventType.NODE_HEARTBEAT_TIMED_OUT)
.installTopology();
+ private final StateMachine<NodeState, NodeEventType, NodeEvent> stateMachine;
+
+ public NodeFSMImpl() {
+ super();
+ this.stateMachine = stateMachineFactory.make(this);
+ }
static class NodeVerifiedTransition
implements SingleArcTransition<NodeFSMImpl, NodeEvent> {
@@ -55,4 +61,23 @@ public class NodeFSMImpl implements Node
}
+ @Override
+ public NodeState getState() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setState(NodeState state) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void handleEvent(NodeEvent event)
+ throws InvalidStateTransitonException {
+ // TODO Auto-generated method stub
+ stateMachine.doTransition(event.getType(), event);
+ }
+
}
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/Role.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/Role.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/Role.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/Role.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,7 @@
+package org.apache.ambari.server.fsm;
+
+public interface Role {
+
+ public String getRoleName();
+
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/Role.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEvent.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEvent.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEvent.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEvent.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,13 @@
+package org.apache.ambari.server.fsm;
+
+import org.apache.ambari.server.fsm.event.AbstractEvent;
+
+public class ServiceComponentNodeEvent
+ extends AbstractEvent<ServiceComponentNodeEventType> {
+
+ public ServiceComponentNodeEvent(ServiceComponentNodeEventType type) {
+ super(type);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEvent.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEventType.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEventType.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEventType.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEventType.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,40 @@
+package org.apache.ambari.server.fsm;
+
+public enum ServiceComponentNodeEventType {
+ /**
+ * Operation in progress
+ */
+ NODE_SVCCOMP_OP_IN_PROGRESS,
+ /**
+ * Operation succeeded
+ */
+ NODE_SVCCOMP_OP_SUCCEEDED,
+ /**
+ * Operation failed.
+ */
+ NODE_SVCCOMP_OP_FAILED,
+ /**
+ * Re-starting a failed operation.
+ */
+ NODE_SVCCOMP_OP_RESTART,
+ /**
+ * Triggering an install.
+ */
+ NODE_SVCCOMP_INSTALL,
+ /**
+ * Triggering a start.
+ */
+ NODE_SVCCOMP_START,
+ /**
+ * Triggering a stop.
+ */
+ NODE_SVCCOMP_STOP,
+ /**
+ * Triggering an uninstall.
+ */
+ NODE_SVCCOMP_UNINSTALL,
+ /**
+ * Triggering a wipe-out ( restore to clean state ).
+ */
+ NODE_SVCCOMP_WIPEOUT
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeEventType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSM.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSM.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSM.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSM.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,14 @@
+package org.apache.ambari.server.fsm;
+
+import org.apache.ambari.server.ServiceComponentNodeState;;
+
+public interface ServiceComponentNodeFSM {
+
+ public ServiceComponentNodeState getState();
+
+ public void setState(ServiceComponentNodeState state);
+
+ public void handleEvent(ServiceComponentNodeEvent event)
+ throws InvalidStateTransitonException;
+
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSM.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSMImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSMImpl.java?rev=1380767&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSMImpl.java (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSMImpl.java Tue Sep 4 17:57:06 2012
@@ -0,0 +1,194 @@
+package org.apache.ambari.server.fsm;
+
+import org.apache.ambari.server.ServiceComponentNodeState;
+import org.apache.ambari.server.fsm.StateMachineFactory;
+
+public class ServiceComponentNodeFSMImpl implements ServiceComponentNodeFSM {
+
+ private static final StateMachineFactory
+ <ServiceComponentNodeFSMImpl, ServiceComponentNodeState,
+ ServiceComponentNodeEventType, ServiceComponentNodeEvent>
+ daemonStateMachineFactory
+ = new StateMachineFactory<ServiceComponentNodeFSMImpl,
+ ServiceComponentNodeState, ServiceComponentNodeEventType,
+ ServiceComponentNodeEvent>
+ (ServiceComponentNodeState.INIT)
+
+ // define the state machine of a NodeServiceComponent
+
+ .addTransition(ServiceComponentNodeState.INIT,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_INSTALL)
+
+ .addTransition(ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeState.INSTALLED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_SUCCEEDED)
+ .addTransition(ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_IN_PROGRESS)
+ .addTransition(ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeState.INSTALL_FAILED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_FAILED)
+
+ .addTransition(ServiceComponentNodeState.INSTALL_FAILED,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_RESTART)
+
+ .addTransition(ServiceComponentNodeState.INSTALLED,
+ ServiceComponentNodeState.STARTING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_START)
+ .addTransition(ServiceComponentNodeState.INSTALLED,
+ ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_UNINSTALL)
+ .addTransition(ServiceComponentNodeState.INSTALLED,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_INSTALL)
+
+ .addTransition(ServiceComponentNodeState.STARTING,
+ ServiceComponentNodeState.STARTING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_IN_PROGRESS)
+ .addTransition(ServiceComponentNodeState.STARTING,
+ ServiceComponentNodeState.STARTED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_SUCCEEDED)
+ .addTransition(ServiceComponentNodeState.STARTING,
+ ServiceComponentNodeState.START_FAILED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_FAILED)
+
+ .addTransition(ServiceComponentNodeState.START_FAILED,
+ ServiceComponentNodeState.STARTING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_RESTART)
+
+ .addTransition(ServiceComponentNodeState.STARTED,
+ ServiceComponentNodeState.STOPPING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_STOP)
+
+ .addTransition(ServiceComponentNodeState.STOPPING,
+ ServiceComponentNodeState.STOPPING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_IN_PROGRESS)
+ .addTransition(ServiceComponentNodeState.STOPPING,
+ ServiceComponentNodeState.INSTALLED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_SUCCEEDED)
+ .addTransition(ServiceComponentNodeState.STOPPING,
+ ServiceComponentNodeState.STOP_FAILED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_FAILED)
+
+ .addTransition(ServiceComponentNodeState.STOP_FAILED,
+ ServiceComponentNodeState.STOPPING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_RESTART)
+
+ .addTransition(ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_IN_PROGRESS)
+ .addTransition(ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeState.UNINSTALLED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_SUCCEEDED)
+ .addTransition(ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeState.UNINSTALL_FAILED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_FAILED)
+
+ .addTransition(ServiceComponentNodeState.UNINSTALL_FAILED,
+ ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_RESTART)
+
+ .addTransition(ServiceComponentNodeState.UNINSTALLED,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_INSTALL)
+
+ .addTransition(ServiceComponentNodeState.UNINSTALLED,
+ ServiceComponentNodeState.INIT,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_WIPEOUT)
+
+ .installTopology();
+
+ private static final StateMachineFactory
+ <ServiceComponentNodeFSMImpl, ServiceComponentNodeState,
+ ServiceComponentNodeEventType, ServiceComponentNodeEvent>
+ clientStateMachineFactory
+ = new StateMachineFactory<ServiceComponentNodeFSMImpl,
+ ServiceComponentNodeState, ServiceComponentNodeEventType,
+ ServiceComponentNodeEvent>
+ (ServiceComponentNodeState.INIT)
+
+ // define the state machine of a NodeServiceComponent
+
+ .addTransition(ServiceComponentNodeState.INIT,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_INSTALL)
+
+ .addTransition(ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeState.INSTALLED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_SUCCEEDED)
+ .addTransition(ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_IN_PROGRESS)
+ .addTransition(ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeState.INSTALL_FAILED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_FAILED)
+
+ .addTransition(ServiceComponentNodeState.INSTALL_FAILED,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_RESTART)
+
+ .addTransition(ServiceComponentNodeState.INSTALLED,
+ ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_UNINSTALL)
+ .addTransition(ServiceComponentNodeState.INSTALLED,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_INSTALL)
+
+ .addTransition(ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_IN_PROGRESS)
+ .addTransition(ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeState.UNINSTALLED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_SUCCEEDED)
+ .addTransition(ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeState.UNINSTALL_FAILED,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_FAILED)
+
+ .addTransition(ServiceComponentNodeState.UNINSTALL_FAILED,
+ ServiceComponentNodeState.UNINSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_OP_RESTART)
+
+ .addTransition(ServiceComponentNodeState.UNINSTALLED,
+ ServiceComponentNodeState.INSTALLING,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_INSTALL)
+
+ .addTransition(ServiceComponentNodeState.UNINSTALLED,
+ ServiceComponentNodeState.INIT,
+ ServiceComponentNodeEventType.NODE_SVCCOMP_WIPEOUT)
+
+ .installTopology();
+
+
+ private final StateMachine<ServiceComponentNodeState,
+ ServiceComponentNodeEventType, ServiceComponentNodeEvent> stateMachine;
+
+ public ServiceComponentNodeFSMImpl(boolean isClient) {
+ super();
+ if (isClient) {
+ this.stateMachine = clientStateMachineFactory.make(this);
+ } else {
+ this.stateMachine = daemonStateMachineFactory.make(this);
+ }
+ }
+
+ @Override
+ public ServiceComponentNodeState getState() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setState(ServiceComponentNodeState state) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ public void handleEvent(ServiceComponentNodeEvent event)
+ throws InvalidStateTransitonException {
+ // TODO
+ stateMachine.doTransition(event.getType(), event);
+ }
+
+}
Propchange: incubator/ambari/branches/AMBARI-666/ambari-server/src/main/java/org/apache/ambari/server/fsm/ServiceComponentNodeFSMImpl.java
------------------------------------------------------------------------------
svn:eol-style = native