You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sm...@apache.org on 2013/04/04 00:35:43 UTC

svn commit: r1464222 [1/3] - in /incubator/ambari/trunk: ./ ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/ ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/ ambari-server/src/main/java/org/apache/ambari/eventdb/db/ ambari-server/sr...

Author: smohanty
Date: Wed Apr  3 22:35:41 2013
New Revision: 1464222

URL: http://svn.apache.org/r1464222
Log:
AMBARI-1781. Ambari Server should work with MySQL and Oracle where the Ambari Server data might be stored. (smohanty)

Added:
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/OracleConnector.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/JPATableGenerationStrategy.java
    incubator/ambari/trunk/ambari-server/src/main/resources/mysql-ddl.sql
    incubator/ambari/trunk/ambari-server/src/main/resources/oracle-DDL.sql
Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp
    incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/log4j.properties.erb
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/PersistenceType.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigMappingEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ComponentConfigMappingEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ExecutionCommandEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentConfigMappingEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredConfigMappingEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostConfigMappingEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostConfigMappingEntityPK.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostRoleCommandEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostStateEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KeyValueEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/MetainfoEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RoleEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RoleSuccessCriteriaEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceComponentDesiredStateEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigMappingEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/StageEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UserEntity.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
    incubator/ambari/trunk/ambari-server/src/main/python/ambari-server.py
    incubator/ambari/trunk/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
    incubator/ambari/trunk/ambari-server/src/main/resources/META-INF/persistence.xml
    incubator/ambari/trunk/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/agent/DummyHeartbeatConstants.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLocalUserDetailsServiceTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AuthorizationTestModule.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/utils/TestStageUtils.java
    incubator/ambari/trunk/ambari-server/src/test/python/TestAmbaryServer.py

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Wed Apr  3 22:35:41 2013
@@ -544,6 +544,9 @@ Trunk (unreleased changes):
 
  BUG FIXES
 
+ AMBARI-1781. Ambari Server should work with MySQL and Oracle where the 
+ Ambari Server data might be stored. (smohanty)
+
  AMBARI-1775. Security wizard - Javascript error is thrown when zooKeeper
  is included as a secure service. (jaimin)
 

Modified: incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp (original)
+++ incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp Wed Apr  3 22:35:41 2013
@@ -176,5 +176,10 @@ class hdp-hadoop::params(
   } else {
     $rca_prefix = "###"
   }
-  $ambari_db_server_host = hdp_default("ambari_db_server_host", "localhost")
+  # $ambari_db_server_host = hdp_default("ambari_db_server_host", "localhost")
+  $ambari_db_rca_url = hdp_default("ambari_db_rca_url", "jdbc:postgresql://localhost/ambarirca")
+  $ambari_db_rca_driver = hdp_default("ambari_db_rca_driver", "org.postgresql.Driver")
+  $ambari_db_rca_username = hdp_default("ambari_db_rca_username", "mapred")
+  $ambari_db_rca_password = hdp_default("ambari_db_rca_password", "mapred")
+
 }

Modified: incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/log4j.properties.erb
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/log4j.properties.erb?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/log4j.properties.erb (original)
+++ incubator/ambari/trunk/ambari-agent/src/main/puppet/modules/hdp-hadoop/templates/log4j.properties.erb Wed Apr  3 22:35:41 2013
@@ -171,10 +171,10 @@ log4j.logger.org.apache.hadoop.mapred.Jo
 log4j.additivity.org.apache.hadoop.mapred.JobInProgress$JobSummary=false
 
 
-<%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.database=jdbc:postgresql://<%=scope.function_hdp_host("ambari_db_server_host")%>:5432/ambarirca
-<%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.driver=org.postgresql.Driver
-<%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.user=mapred
-<%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.password=mapred
+<%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.database=<%=scope.function_hdp_host("ambari_db_rca_url")%>
+<%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.driver=<%=scope.function_hdp_host("ambari_db_rca_driver")%>
+<%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.user=<%=scope.function_hdp_host("ambari_db_rca_username")%>
+<%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.password=<%=scope.function_hdp_host("ambari_db_rca_password")%>
 <%=scope.function_hdp_template_var("rca_prefix")%>ambari.jobhistory.logger=DEBUG,JHA
 
 <%=scope.function_hdp_template_var("rca_prefix")%>log4j.appender.JHA=org.apache.ambari.log4j.hadoop.mapreduce.jobhistory.JobHistoryAppender

Added: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/OracleConnector.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/OracleConnector.java?rev=1464222&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/OracleConnector.java (added)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/OracleConnector.java Wed Apr  3 22:35:41 2013
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.eventdb.db;
+
+import org.apache.ambari.eventdb.model.Workflows;
+
+import java.io.IOException;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+public class OracleConnector extends PostgresConnector {
+
+  public OracleConnector(String connectionURL, String driverName, String username, String password) throws IOException {
+    super(connectionURL, driverName, username, password);
+  }
+
+  @Override
+  protected PreparedStatement getQualifiedPS(Statements statement, String searchClause, Workflows.WorkflowDBEntry.WorkflowFields field, boolean sortAscending, int offset, int limit) throws IOException {
+    if (db == null)
+      throw new IOException("db not initialized");
+
+    String order = " ORDER BY " + field.toString() + " " + (sortAscending ? SORT_ASC : SORT_DESC);
+
+    String query = "select * \n" +
+        "  from ( select " +
+//        "/*+ FIRST_ROWS(n) */ \n" +
+        "  a.*, ROWNUM rnum \n" +
+        "      from ("
+        + statement.getStatementString() + searchClause + order +
+        ") a \n" +
+        "      where ROWNUM <= " + (offset + limit) + ") \n" +
+        "where rnum  >= " + offset;
+
+    try {
+      return db.prepareStatement(query);
+    } catch (SQLException e) {
+      throw new IOException(e);
+    }
+
+  }
+
+
+}

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java Wed Apr  3 22:35:41 2013
@@ -57,7 +57,7 @@ public class PostgresConnector implement
   
   private static final ObjectMapper jsonMapper = new ObjectMapper();
   
-  private Connection db;
+  protected Connection db;
   
   public static enum Statements {
     SJ_INSERT_JOB_PS(""),
@@ -104,11 +104,10 @@ public class PostgresConnector implement
   
   private Map<Statements,PreparedStatement> preparedStatements = new EnumMap<Statements,PreparedStatement>(Statements.class);
   
-  public PostgresConnector(String hostname, String dbname, String username, String password) throws IOException {
-    String url = "jdbc:postgresql://" + hostname + "/" + dbname;
+  public PostgresConnector(String connectionURL, String driverName, String username, String password) throws IOException {
     try {
-      Class.forName("org.postgresql.Driver");
-      db = DriverManager.getConnection(url, username, password);
+      Class.forName(driverName);
+      db = DriverManager.getConnection(connectionURL, username, password);
     } catch (ClassNotFoundException e) {
       db = null;
       throw new IOException(e);
@@ -494,7 +493,7 @@ public class PostgresConnector implement
     }
   }
   
-  private PreparedStatement getQualifiedPS(Statements statement, String searchClause, WorkflowFields field, boolean sortAscending, int offset, int limit)
+  protected PreparedStatement getQualifiedPS(Statements statement, String searchClause, WorkflowFields field, boolean sortAscending, int offset, int limit)
       throws IOException {
     if (db == null)
       throw new IOException("postgres db not initialized");

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/eventdb/webservice/WorkflowJsonService.java Wed Apr  3 22:35:41 2013
@@ -33,6 +33,7 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 
+import org.apache.ambari.eventdb.db.OracleConnector;
 import org.apache.ambari.eventdb.db.PostgresConnector;
 import org.apache.ambari.eventdb.model.DataTable;
 import org.apache.ambari.eventdb.model.Jobs;
@@ -45,6 +46,8 @@ import org.apache.ambari.eventdb.model.T
 import org.apache.ambari.eventdb.model.Workflows;
 import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry;
 import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry.WorkflowFields;
+import org.apache.ambari.server.configuration.Configuration;
+import org.apache.commons.lang.StringUtils;
 
 @Path("/jobhistory")
 public class WorkflowJsonService {
@@ -54,10 +57,10 @@ public class WorkflowJsonService {
   private static final String USERNAME = PREFIX + "db.user";
   private static final String PASSWORD = PREFIX + "db.password";
   
-  private static final String DEFAULT_HOSTNAME = "localhost";
-  private static final String DEFAULT_DBNAME = "ambarirca";
-  private static final String DEFAULT_USERNAME = "mapred";
-  private static final String DEFAULT_PASSWORD = "mapred";
+  private static String DEFAULT_DRIVER = "localhost";
+  private static String DEFAULT_URL = "ambarirca";
+  private static String DEFAULT_USERNAME = "mapred";
+  private static String DEFAULT_PASSWORD = "mapred";
   
   private static final Workflows EMPTY_WORKFLOWS = new Workflows();
   private static final List<JobDBEntry> EMPTY_JOBS = Collections.emptyList();
@@ -67,7 +70,19 @@ public class WorkflowJsonService {
   }
   
   PostgresConnector getConnector() throws IOException {
-    return new PostgresConnector(DEFAULT_HOSTNAME, DEFAULT_DBNAME, DEFAULT_USERNAME, DEFAULT_PASSWORD);
+    //TODO fix temp hack
+    if (StringUtils.contains(DEFAULT_DRIVER, "oracle")) {
+      return new OracleConnector(DEFAULT_DRIVER, DEFAULT_URL, DEFAULT_USERNAME, DEFAULT_PASSWORD);
+    } else {
+      return new PostgresConnector(DEFAULT_DRIVER, DEFAULT_URL, DEFAULT_USERNAME, DEFAULT_PASSWORD);
+    }
+  }
+
+  public static void setDBProperties(Configuration configuration) {
+    DEFAULT_DRIVER = configuration.getRcaDatabaseDriver();
+    DEFAULT_URL = configuration.getRcaDatabaseUrl();
+    DEFAULT_USERNAME = configuration.getRcaDatabaseUser();
+    DEFAULT_PASSWORD = configuration.getRcaDatabasePassword();
   }
   
   @Context

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java Wed Apr  3 22:35:41 2013
@@ -72,8 +72,8 @@ public class HostRoleCommand {
     this.hostName = hostRoleCommandEntity.getHostName();
     role = hostRoleCommandEntity.getRole();
     status = hostRoleCommandEntity.getStatus();
-    stdout = new String(hostRoleCommandEntity.getStdOut());
-    stderr = new String(hostRoleCommandEntity.getStdError());
+    stdout = hostRoleCommandEntity.getStdOut() != null ? new String(hostRoleCommandEntity.getStdOut()) : "";
+    stderr = hostRoleCommandEntity.getStdError() != null ? new String(hostRoleCommandEntity.getStdError()) : "";
     exitCode = hostRoleCommandEntity.getExitcode();
     startTime = hostRoleCommandEntity.getStartTime();
     lastAttemptTime = hostRoleCommandEntity.getLastAttemptTime();

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java Wed Apr  3 22:35:41 2013
@@ -18,6 +18,7 @@
 package org.apache.ambari.server.configuration;
 
 import com.google.inject.Singleton;
+import org.apache.ambari.server.orm.JPATableGenerationStrategy;
 import org.apache.ambari.server.orm.PersistenceType;
 import org.apache.ambari.server.security.ClientSecurityType;
 import org.apache.ambari.server.security.authorization.LdapServerProperties;
@@ -106,16 +107,37 @@ public class Configuration {
   public static final String ADMIN_ROLE_NAME_KEY =
       "authorization.adminRoleName";
 
-  public static final String PERSISTENCE_IN_MEMORY_KEY =
-      "server.persistence.inMemory";
-  public static final String SERVER_JDBC_USER_NAME_KEY =
-      "server.jdbc.user.name";
-  private static final String SERVER_JDBC_USER_NAME_DEFAULT =
-      "ambari-server";
-  public static final String SERVER_JDBC_USER_PASSWD_KEY =
-      "server.jdbc.user.passwd";
-  private static final String SERVER_JDBC_USER_PASSWD_DEFAULT =
-      "bigdata";
+  public static final String SERVER_PERSISTENCE_TYPE_KEY = "server.persistence.type";
+  public static final String SERVER_JDBC_USER_NAME_KEY = "server.jdbc.user.name";
+  public static final String SERVER_JDBC_USER_PASSWD_KEY = "server.jdbc.user.passwd";
+  public static final String SERVER_JDBC_DRIVER_KEY = "server.jdbc.driver";
+  public static final String SERVER_JDBC_URL_KEY = "server.jdbc.url";
+
+//  public static final String SERVER_RCA_PERSISTENCE_TYPE_KEY = "server.rca.persistence.type";
+  public static final String SERVER_JDBC_RCA_USER_NAME_KEY = "server.jdbc.rca.user.name";
+  public static final String SERVER_JDBC_RCA_USER_PASSWD_KEY = "server.jdbc.rca.user.passwd";
+  public static final String SERVER_JDBC_RCA_DRIVER_KEY = "server.jdbc.rca.driver";
+  public static final String SERVER_JDBC_RCA_URL_KEY = "server.jdbc.rca.url";
+
+
+  public static final String SERVER_JDBC_GENERATE_TABLES_KEY = "server.jdbc.generateTables";
+
+  public static final String JDBC_UNIT_NAME = "ambari-server";
+
+  public static final String JDBC_LOCAL_URL = "jdbc:postgresql://localhost/ambari";
+  public static final String JDBC_LOCAL_DRIVER = "org.postgresql.Driver";
+
+  public static final String JDBC_IN_MEMORY_URL = "jdbc:derby:memory:myDB/ambari;create=true";
+  public static final String JDBC_IN_MEMROY_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
+
+  public static final String JDBC_RCA_LOCAL_URL = "jdbc:postgresql://localhost/ambarirca";
+  public static final String JDBC_RCA_LOCAL_DRIVER = "org.postgresql.Driver";
+
+  private static final String SERVER_JDBC_USER_NAME_DEFAULT = "ambari-server";
+  private static final String SERVER_JDBC_USER_PASSWD_DEFAULT = "bigdata";
+
+  private static final String SERVER_JDBC_RCA_USER_NAME_DEFAULT = "mapred";
+  private static final String SERVER_JDBC_RCA_USER_PASSWD_DEFAULT = "mapred";
 
   public static final String OS_VERSION_KEY =
       "server.os_type";
@@ -162,7 +184,7 @@ public class Configuration {
   private static final String LDAP_GROUP_SEARCH_FILTER_DEFAULT = "";
 
   //TODO for development purposes only, should be changed to 'false'
-  private static final String PERSISTENCE_IN_MEMORY_DEFAULT = "true";
+  private static final String SERVER_PERSISTENCE_TYPE_DEFAULT = "local";
 
 
 
@@ -380,14 +402,23 @@ public class Configuration {
     return ("true".equals(properties.getProperty(API_USE_SSL, "false")));
   }
 
-
+  /**
+   * Check persistence type Ambari Server should use. Possible values:
+   * in-memory - use in-memory Derby database to store data
+   * local - use local Postgres instance
+   * remote - use provided jdbc driver name and url to connect to database
+   */
   public PersistenceType getPersistenceType() {
-    String value = properties.getProperty(PERSISTENCE_IN_MEMORY_KEY, PERSISTENCE_IN_MEMORY_DEFAULT);
-    if ("true".equalsIgnoreCase(value)) {
-      return PersistenceType.IN_MEMORY;
-    } else {
-      return PersistenceType.POSTGRES;
-    }
+    String value = properties.getProperty(SERVER_PERSISTENCE_TYPE_KEY, SERVER_PERSISTENCE_TYPE_DEFAULT);
+    return PersistenceType.fromString(value);
+  }
+
+  public String getDatabaseDriver() {
+    return properties.getProperty(SERVER_JDBC_DRIVER_KEY);
+  }
+
+  public String getDatabaseUrl() {
+    return properties.getProperty(SERVER_JDBC_URL_KEY);
   }
 
   public String getDatabaseUser() {
@@ -396,9 +427,30 @@ public class Configuration {
 
   public String getDatabasePassword() {
     String filePath = properties.getProperty(SERVER_JDBC_USER_PASSWD_KEY);
+    return readPassword(filePath, SERVER_JDBC_USER_PASSWD_DEFAULT);
+  }
+
+  public String getRcaDatabaseDriver() {
+    return properties.getProperty(SERVER_JDBC_RCA_DRIVER_KEY, JDBC_RCA_LOCAL_DRIVER);
+  }
+
+  public String getRcaDatabaseUrl() {
+    return properties.getProperty(SERVER_JDBC_RCA_URL_KEY, JDBC_RCA_LOCAL_URL);
+  }
+
+  public String getRcaDatabaseUser() {
+    return properties.getProperty(SERVER_JDBC_RCA_USER_NAME_KEY, SERVER_JDBC_RCA_USER_NAME_DEFAULT);
+  }
+
+  public String getRcaDatabasePassword() {
+    String filePath = properties.getProperty(SERVER_JDBC_RCA_USER_PASSWD_KEY);
+    return readPassword(filePath, SERVER_JDBC_RCA_USER_PASSWD_DEFAULT);
+  }
+
+  private String readPassword(String filePath, String defaultPassword) {
     if (filePath == null) {
       LOG.debug("DB password file not specified - using default");
-      return SERVER_JDBC_USER_PASSWD_DEFAULT;
+      return defaultPassword;
     } else {
       LOG.debug("Reading password from file {}", filePath);
       String password;
@@ -411,6 +463,7 @@ public class Configuration {
     }
   }
 
+
   /**
    * Gets parameters of LDAP server to connect to
    * @return LdapServerProperties object representing connection parameters
@@ -464,4 +517,8 @@ public class Configuration {
     return Integer.parseInt(properties.getProperty(CLIENT_API_PORT_KEY, String.valueOf(CLIENT_API_PORT_DEFAULT)));
   }
 
+  public JPATableGenerationStrategy getJPATableGenerationStrategy() {
+    return JPATableGenerationStrategy.fromString(System.getProperty(SERVER_JDBC_GENERATE_TABLES_KEY));
+  }
+
 }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java Wed Apr  3 22:35:41 2013
@@ -921,7 +921,7 @@ public class AmbariManagementControllerI
 
     // Generate cluster host info
     execCmd.setClusterHostInfo(
-        StageUtils.getClusterHostInfo(cluster, hostsMap));
+        StageUtils.getClusterHostInfo(cluster, hostsMap, injector));
 
     Host host = clusters.getHost(scHost.getHostName());
 
@@ -2077,7 +2077,7 @@ public class AmbariManagementControllerI
         // Generate cluster host info
         stage.getExecutionCommandWrapper(clientHost, smokeTestRole)
             .getExecutionCommand()
-            .setClusterHostInfo(StageUtils.getClusterHostInfo(cluster, hostsMap));
+            .setClusterHostInfo(StageUtils.getClusterHostInfo(cluster, hostsMap, injector));
       }
 
       RoleGraph rg = new RoleGraph(rco);
@@ -3915,7 +3915,7 @@ public class AmbariManagementControllerI
 
     // Generate cluster host info
     execCmd.setClusterHostInfo(
-      StageUtils.getClusterHostInfo(clusters.getCluster(clusterName), hostsMap));
+      StageUtils.getClusterHostInfo(clusters.getCluster(clusterName), hostsMap, injector));
   }
 
   private void addDecommissionDatanodeAction(

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java Wed Apr  3 22:35:41 2013
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import com.google.inject.persist.PersistFilter;
 import com.google.gson.Gson;
+import org.apache.ambari.eventdb.webservice.WorkflowJsonService;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.actionmanager.ActionManager;
 import org.apache.ambari.server.agent.HeartBeatHandler;
@@ -412,6 +413,9 @@ public class AmbariServer {
     AmbariMetaService.init(injector.getInstance(AmbariMetaInfo.class));
     BootStrapResource.init(injector.getInstance(BootStrapImpl.class));
     StageUtils.setGson(injector.getInstance(Gson.class));
+    WorkflowJsonService.setDBProperties(
+        injector.getInstance(Configuration.class)
+    );
   }
 
   public static void main(String[] args) throws Exception {

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java Wed Apr  3 22:35:41 2013
@@ -75,15 +75,7 @@ public class ControllerModule extends Ab
     bind(HostsMap.class).toInstance(hostsMap);
     bind(PasswordEncoder.class).toInstance(new StandardPasswordEncoder());
 
-    JpaPersistModule jpaPersistModule = new JpaPersistModule(configuration.getPersistenceType().getUnitName());
-    if (configuration.getPersistenceType() == PersistenceType.POSTGRES) {
-      Properties properties = new Properties();
-      properties.setProperty("javax.persistence.jdbc.user", configuration.getDatabaseUser());
-      properties.setProperty("javax.persistence.jdbc.password", configuration.getDatabasePassword());
-      jpaPersistModule.properties(properties);
-    }
-
-    install(jpaPersistModule);
+    install(buildJpaPersistModule());
 
     bind(Gson.class).in(Scopes.SINGLETON);
     bind(Clusters.class).to(ClustersImpl.class);
@@ -92,10 +84,54 @@ public class ControllerModule extends Ab
     bindConstant().annotatedWith(Names.named("actionTimeout")).to(300000L);
     bind(AmbariManagementController.class)
         .to(AmbariManagementControllerImpl.class);
-    bind(HBaseMasterPortScanner.class).in(Singleton.class);;
+    bind(HBaseMasterPortScanner.class).in(Singleton.class);
     bind(ServerActionManager.class).to(ServerActionManagerImpl.class);
   }
 
+  private JpaPersistModule buildJpaPersistModule() {
+    PersistenceType persistenceType = configuration.getPersistenceType();
+    JpaPersistModule jpaPersistModule = new JpaPersistModule(Configuration.JDBC_UNIT_NAME);
+
+    Properties properties = new Properties();
+
+    switch (persistenceType) {
+      case IN_MEMORY:
+        properties.put("javax.persistence.jdbc.url", Configuration.JDBC_IN_MEMORY_URL);
+        properties.put("javax.persistence.jdbc.driver", Configuration.JDBC_IN_MEMROY_DRIVER);
+        properties.put("eclipselink.ddl-generation", "drop-and-create-tables");
+        properties.put("eclipselink.orm.throw.exceptions", "true");
+        jpaPersistModule.properties(properties);
+        return jpaPersistModule;
+      case REMOTE:
+        properties.put("javax.persistence.jdbc.url", configuration.getDatabaseUrl());
+        properties.put("javax.persistence.jdbc.driver", configuration.getDatabaseDriver());
+        break;
+      case LOCAL:
+        properties.put("javax.persistence.jdbc.url", Configuration.JDBC_LOCAL_URL);
+        properties.put("javax.persistence.jdbc.driver", Configuration.JDBC_LOCAL_DRIVER);
+        break;
+    }
+
+    properties.setProperty("javax.persistence.jdbc.user", configuration.getDatabaseUser());
+    properties.setProperty("javax.persistence.jdbc.password", configuration.getDatabasePassword());
+
+    switch (configuration.getJPATableGenerationStrategy()) {
+      case CREATE:
+        properties.setProperty("eclipselink.ddl-generation", "create-tables");
+        break;
+      case DROP_AND_CREATE:
+        properties.setProperty("eclipselink.ddl-generation", "drop-and-create-tables");
+        break;
+    }
+    properties.setProperty("eclipselink.ddl-generation.output-mode", "both");
+    properties.setProperty("eclipselink.create-ddl-jdbc-file-name", "DDL-create.jdbc");
+    properties.setProperty("eclipselink.drop-ddl-jdbc-file-name", "DDL-drop.jdbc");
+
+    jpaPersistModule.properties(properties);
+
+    return jpaPersistModule;
+  }
+
   private void installFactories() {
     install(new FactoryModuleBuilder().implement(
         Cluster.class, ClusterImpl.class).build(ClusterFactory.class));

Added: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/JPATableGenerationStrategy.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/JPATableGenerationStrategy.java?rev=1464222&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/JPATableGenerationStrategy.java (added)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/JPATableGenerationStrategy.java Wed Apr  3 22:35:41 2013
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.orm;
+
+public enum JPATableGenerationStrategy {
+  //create tables which don't exist
+  CREATE("create"),
+  //drop and create all tables
+  DROP_AND_CREATE("dropAndCreate"),
+  //don't create tables
+  NONE("none");
+
+  private String value;
+
+  private JPATableGenerationStrategy(String value) {
+    this.value = value;
+  }
+
+  public String getValue() {
+    return value;
+  }
+
+  public static JPATableGenerationStrategy fromString(String value) {
+    for (JPATableGenerationStrategy strategy : values()) {
+      if (strategy.value.equalsIgnoreCase(value)) {
+        return strategy;
+      }
+    }
+    return NONE;
+  }
+}

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/PersistenceType.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/PersistenceType.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/PersistenceType.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/PersistenceType.java Wed Apr  3 22:35:41 2013
@@ -18,16 +18,26 @@
 package org.apache.ambari.server.orm;
 
 public enum PersistenceType {
-  IN_MEMORY("ambari-javadb"),
-  POSTGRES("ambari-postgres");
+  IN_MEMORY("in-memory"),
+  LOCAL("local"),
+  REMOTE("remote");
 
-  String unitName;
+  String value;
 
-  PersistenceType(String unitName) {
-    this.unitName = unitName;
+  PersistenceType(String value) {
+    this.value = value;
   }
 
-  public String getUnitName() {
-    return unitName;
+  public static PersistenceType fromString(String typeString) {
+    for (PersistenceType type : values()) {
+      if (type.value.equals(typeString)) {
+        return type;
+      }
+    }
+    throw new IllegalArgumentException("Unknown persistence type: "+ typeString);
+  }
+
+  public String getValue() {
+    return value;
   }
 }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java Wed Apr  3 22:35:41 2013
@@ -53,8 +53,13 @@ public class HostDAO {
   @Transactional
   public List<HostEntity> findByStage(StageEntity stageEntity) {
     TypedQuery<HostEntity> query = entityManagerProvider.get().createQuery(
-        "SELECT DISTINCT host FROM HostEntity host JOIN host.hostRoleCommandEntities command JOIN command.stage stage " +
-            "WHERE stage=:stageEntity", HostEntity.class);
+        "SELECT host FROM HostEntity host " +
+            "WHERE host.hostName IN (" +
+            "SELECT DISTINCT host.hostName " +
+            "FROM HostEntity host " +
+            "JOIN host.hostRoleCommandEntities command " +
+            "JOIN command.stage stage " +
+            "WHERE stage=:stageEntity)", HostEntity.class);
     query.setParameter("stageEntity", stageEntity);
     try {
       return query.getResultList();

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java Wed Apr  3 22:35:41 2013
@@ -22,21 +22,46 @@ import javax.persistence.*;
 import java.util.Collection;
 
 @IdClass(ClusterConfigEntityPK.class)
-@Table(name = "clusterconfig", schema = "ambari", catalog = "")
+@Table(name = "clusterconfig")
 @Entity
 public class ClusterConfigEntity {
+
+  @Id
+  @Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
   private Long clusterId;
-  private String configJson;
+
+  @Id
+  @Column(name = "type_name")
   private String type;
+
+  @Id
+  @Column(name = "version_tag")
   private String tag;
+
+  @Basic(fetch=FetchType.LAZY)
+  @Column(name = "config_data", nullable = false, insertable = true, updatable = false, length=32000)
+  @Lob
+  private String configJson;
+
+  @Column(name = "create_timestamp", nullable=false, insertable=true, updatable=false)
   private long timestamp;
+
+  @ManyToOne
+  @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
+  private ClusterEntity clusterEntity;
+
+  @OneToMany(mappedBy = "clusterConfigEntity")
   private Collection<HostComponentConfigMappingEntity> hostComponentConfigMappingEntities;
+
+  @OneToMany(mappedBy = "clusterConfigEntity")
   private Collection<ServiceConfigMappingEntity> serviceConfigMappingEntities;
+
+  @OneToMany(mappedBy = "clusterConfigEntity")
   private Collection<HostComponentDesiredConfigMappingEntity> hostComponentDesiredConfigMappingEntities;
+
+  @OneToMany(mappedBy = "clusterConfigEntity")
   private Collection<ComponentConfigMappingEntity> componentConfigMappingEntities;
   
-  @Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
-  @Id
   public Long getClusterId() {
     return clusterId;
   }
@@ -45,8 +70,6 @@ public class ClusterConfigEntity {
     this.clusterId = clusterId;
   }
   
-  @Column(name = "type_name")
-  @Id
   public String getType() {
     return type;
   }
@@ -55,8 +78,6 @@ public class ClusterConfigEntity {
     type = typeName;
   }
   
-  @Column(name = "version_tag")
-  @Id
   public String getTag() {
     return tag;
   }
@@ -65,8 +86,6 @@ public class ClusterConfigEntity {
     tag = versionTag;
   }
 
-  @Column(name = "config_data", nullable = false, insertable = true, updatable = false, length=32000)
-  @Basic(fetch=FetchType.LAZY)
   public String getData() {
     return configJson;
   }
@@ -75,7 +94,6 @@ public class ClusterConfigEntity {
     this.configJson = data;
   }
   
-  @Column(name = "create_timestamp", nullable=false, insertable=true, updatable=false)
   public long getTimestamp() {
     return timestamp;
   }
@@ -105,10 +123,6 @@ public class ClusterConfigEntity {
     return result;
   }
 
-  private ClusterEntity clusterEntity;
-
-  @ManyToOne
-  @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
   public ClusterEntity getClusterEntity() {
     return clusterEntity;
   }
@@ -117,7 +131,6 @@ public class ClusterConfigEntity {
     this.clusterEntity = clusterEntity;
   }
 
-  @OneToMany(mappedBy = "clusterConfigEntity")
   public Collection<HostComponentConfigMappingEntity> getHostComponentConfigMappingEntities() {
     return hostComponentConfigMappingEntities;
   }
@@ -126,7 +139,6 @@ public class ClusterConfigEntity {
     this.hostComponentConfigMappingEntities = hostComponentConfigMappingEntities;
   }
 
-  @OneToMany(mappedBy = "clusterConfigEntity")
   public Collection<ServiceConfigMappingEntity> getServiceConfigMappingEntities() {
     return serviceConfigMappingEntities;
   }
@@ -135,7 +147,6 @@ public class ClusterConfigEntity {
     this.serviceConfigMappingEntities = serviceConfigMappingEntities;
   }
 
-  @OneToMany(mappedBy = "clusterConfigEntity")
   public Collection<HostComponentDesiredConfigMappingEntity> getHostComponentDesiredConfigMappingEntities() {
     return hostComponentDesiredConfigMappingEntities;
   }
@@ -144,7 +155,6 @@ public class ClusterConfigEntity {
     this.hostComponentDesiredConfigMappingEntities = hostComponentDesiredConfigMappingEntities;
   }
 
-  @OneToMany(mappedBy = "clusterConfigEntity")
   public Collection<ComponentConfigMappingEntity> getComponentConfigMappingEntities() {
     return componentConfigMappingEntities;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigMappingEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigMappingEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigMappingEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigMappingEntity.java Wed Apr  3 22:35:41 2013
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -29,19 +29,32 @@ import javax.persistence.Table;
  * Entity that maps to a cluster config mapping.
  */
 @IdClass(ClusterConfigMappingEntityPK.class)
-@Table(name = "clusterconfigmapping", schema = "ambari", catalog = "")
+@Table(name = "clusterconfigmapping")
 @Entity
 public class ClusterConfigMappingEntity {
 
+  @Id
+  @Column(name = "cluster_id", insertable = false, updatable = false, nullable = false)
   private Long clusterId;
+
+  @Id
+  @Column(name = "type_name", insertable = true, updatable = false, nullable = false)
   private String typeName;
+
+  @Id
+  @Column(name = "create_timestamp", insertable = true, updatable = false, nullable = false)
+  private Long createTimestamp;
+
+  @Column(name = "version_tag", insertable = true, updatable = false, nullable = false)
   private String versionTag;
+
+  @Column(name = "selected", insertable = true, updatable = true, nullable = false)
   private int selectedInd = 0;
-  private Long createTimestamp;
+
+  @ManyToOne
+  @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
   private ClusterEntity clusterEntity;
   
-  @Column(name = "cluster_id", insertable = false, updatable = false, nullable = false)
-  @Id
   public Long getClusterId() {
     return clusterId;
   }
@@ -50,8 +63,6 @@ public class ClusterConfigMappingEntity 
     clusterId = id;
   }
   
-  @Column(name = "type_name", insertable = true, updatable = false, nullable = false)
-  @Id
   public String getType() {
     return typeName;
   }
@@ -59,8 +70,6 @@ public class ClusterConfigMappingEntity 
     typeName = type;
   }
 
-  @Column(name = "create_timestamp", insertable = true, updatable = false, nullable = false)
-  @Id
   public Long getCreateTimestamp() {
     return createTimestamp;
   }
@@ -69,7 +78,6 @@ public class ClusterConfigMappingEntity 
     createTimestamp = timestamp;
   }  
   
-  @Column(name = "version_tag", insertable = true, updatable = false, nullable = false)
   public String getVersion() {
     return versionTag;
   }
@@ -78,8 +86,6 @@ public class ClusterConfigMappingEntity 
     versionTag = version;
   }
  
-
-  @Column(name = "selected", insertable = true, updatable = true, nullable = false)
   public int isSelected() {
     return selectedInd;
   }
@@ -88,8 +94,6 @@ public class ClusterConfigMappingEntity 
     selectedInd = selected;
   }
   
-  @ManyToOne
-  @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
   public ClusterEntity getClusterEntity() {
     return clusterEntity;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java Wed Apr  3 22:35:41 2013
@@ -21,7 +21,9 @@ package org.apache.ambari.server.orm.ent
 import javax.persistence.*;
 import java.util.Collection;
 
-@javax.persistence.Table(name = "clusters", schema = "ambari", catalog = "")
+import static org.apache.commons.lang.StringUtils.defaultString;
+
+@Table(name = "clusters")
 @NamedQueries({
     @NamedQuery(name = "clusterByName", query =
         "SELECT cluster " +
@@ -32,13 +34,54 @@ import java.util.Collection;
             "FROM ClusterEntity clusters")
 })
 @Entity
-@SequenceGenerator(name = "ambari.clusters_cluster_id_seq", allocationSize = 1)
+@TableGenerator(name = "cluster_id_generator",
+    table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "value"
+    , pkColumnValue = "cluster_id_seq"
+    , initialValue = 1
+    , allocationSize = 1
+)
 public class ClusterEntity {
-  private Long clusterId;
 
-  @javax.persistence.Column(name = "cluster_id", nullable = false, insertable = true, updatable = true)
   @Id
-  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ambari.clusters_cluster_id_seq")
+  @Column(name = "cluster_id", nullable = false, insertable = true, updatable = true)
+  @GeneratedValue(strategy = GenerationType.TABLE, generator = "cluster_id_generator")
+  private Long clusterId;
+
+  @Basic
+  @Column(name = "cluster_name", nullable = false, insertable = true,
+      updatable = true, unique = true, length = 100)
+  private String clusterName;
+
+  @Basic
+  @Column(name = "desired_cluster_state", insertable = true, updatable = true)
+  private String desiredClusterState = "";
+
+  @Basic
+  @Column(name = "cluster_info", insertable = true, updatable = true)
+  private String clusterInfo = "";
+
+  @Basic
+  @Column(name = "desired_stack_version", insertable = true, updatable = true)
+  private String desiredStackVersion = "";
+
+  @OneToMany(mappedBy = "clusterEntity")
+  private Collection<ClusterServiceEntity> clusterServiceEntities;
+
+  @OneToOne(mappedBy = "clusterEntity", cascade = CascadeType.REMOVE)
+  private ClusterStateEntity clusterStateEntity;
+
+  @ManyToMany(mappedBy = "clusterEntities")
+  private Collection<HostEntity> hostEntities;
+
+  @OneToMany(mappedBy = "cluster", cascade = CascadeType.REMOVE)
+  private Collection<StageEntity> stages;
+
+  @OneToMany(mappedBy = "clusterEntity", cascade = CascadeType.ALL)
+  private Collection<ClusterConfigEntity> configEntities;
+
+  @OneToMany(mappedBy = "clusterEntity", cascade = CascadeType.ALL)
+  private Collection<ClusterConfigMappingEntity> configMappingEntities;
+
   public Long getClusterId() {
     return clusterId;
   }
@@ -47,11 +90,6 @@ public class ClusterEntity {
     this.clusterId = clusterId;
   }
 
-  private String clusterName;
-
-  @javax.persistence.Column(name = "cluster_name", nullable = false, insertable = true,
-          updatable = true, unique = true, length = 100)
-  @Basic
   public String getClusterName() {
     return clusterName;
   }
@@ -60,36 +98,24 @@ public class ClusterEntity {
     this.clusterName = clusterName;
   }
 
-  private String desiredClusterState = "";
-
-  @javax.persistence.Column(name = "desired_cluster_state", nullable = false, insertable = true, updatable = true)
-  @Basic
   public String getDesiredClusterState() {
-    return desiredClusterState;
+    return defaultString(desiredClusterState);
   }
 
   public void setDesiredClusterState(String desiredClusterState) {
     this.desiredClusterState = desiredClusterState;
   }
 
-  private String clusterInfo = "";
-
-  @javax.persistence.Column(name = "cluster_info", nullable = false, insertable = true, updatable = true)
-  @Basic
   public String getClusterInfo() {
-    return clusterInfo;
+    return defaultString(clusterInfo);
   }
 
   public void setClusterInfo(String clusterInfo) {
     this.clusterInfo = clusterInfo;
   }
 
-  private String desiredStackVersion = "";
-
-  @javax.persistence.Column(name = "desired_stack_version", nullable = false, insertable = true, updatable = true)
-  @Basic
   public String getDesiredStackVersion() {
-    return desiredStackVersion;
+    return defaultString(desiredStackVersion);
   }
 
   public void setDesiredStackVersion(String desiredStackVersion) {
@@ -124,9 +150,6 @@ public class ClusterEntity {
     return result;
   }
 
-  private Collection<ClusterServiceEntity> clusterServiceEntities;
-
-  @OneToMany(mappedBy = "clusterEntity")
   public Collection<ClusterServiceEntity> getClusterServiceEntities() {
     return clusterServiceEntities;
   }
@@ -135,9 +158,6 @@ public class ClusterEntity {
     this.clusterServiceEntities = clusterServiceEntities;
   }
 
-  private ClusterStateEntity clusterStateEntity;
-
-  @OneToOne(mappedBy = "clusterEntity", cascade = CascadeType.REMOVE)
   public ClusterStateEntity getClusterStateEntity() {
     return clusterStateEntity;
   }
@@ -146,9 +166,6 @@ public class ClusterEntity {
     this.clusterStateEntity = clusterStateEntity;
   }
 
-  private Collection<HostEntity> hostEntities;
-
-  @ManyToMany(mappedBy = "clusterEntities")
   public Collection<HostEntity> getHostEntities() {
     return hostEntities;
   }
@@ -157,9 +174,6 @@ public class ClusterEntity {
     this.hostEntities = hostEntities;
   }
 
-  private Collection<StageEntity> stages;
-
-  @OneToMany(mappedBy = "cluster", cascade = CascadeType.REMOVE)
   public Collection<StageEntity> getStages() {
     return stages;
   }
@@ -167,19 +181,15 @@ public class ClusterEntity {
   public void setStages(Collection<StageEntity> stages) {
     this.stages = stages;
   }
-  
-  private Collection<ClusterConfigEntity> configEntities;
-  @OneToMany(mappedBy = "clusterEntity", cascade = CascadeType.ALL)
+
   public Collection<ClusterConfigEntity> getClusterConfigEntities() {
     return configEntities;
   }
-  
+
   public void setClusterConfigEntities(Collection<ClusterConfigEntity> entities) {
     configEntities = entities;
   }
-  
-  private Collection<ClusterConfigMappingEntity> configMappingEntities;
-  @OneToMany(mappedBy = "clusterEntity", cascade = CascadeType.ALL)
+
   public Collection<ClusterConfigMappingEntity> getConfigMappingEntities() {
     return configMappingEntities;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java Wed Apr  3 22:35:41 2013
@@ -22,7 +22,7 @@ import javax.persistence.*;
 import java.util.Collection;
 
 @javax.persistence.IdClass(ClusterServiceEntityPK.class)
-@javax.persistence.Table(name = "clusterservices", schema = "ambari", catalog = "")
+@javax.persistence.Table(name = "clusterservices")
 @NamedQueries({
         @NamedQuery(name = "clusterServiceByClusterAndServiceNames", query =
                 "SELECT clusterService " +
@@ -32,10 +32,32 @@ import java.util.Collection;
 })
 @Entity
 public class ClusterServiceEntity {
+
+  @Id
+  @Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
   private Long clusterId;
 
-  @javax.persistence.Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
   @Id
+  @Column(name = "service_name", nullable = false, insertable = true, updatable = true)
+  private String serviceName;
+
+  @Basic
+  @Column(name = "service_enabled", nullable = false, insertable = true, updatable = true, length = 10)
+  private Integer serviceEnabled = 0;
+
+  @ManyToOne
+  @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
+  private ClusterEntity clusterEntity;
+
+  @OneToOne(mappedBy = "clusterServiceEntity", cascade = CascadeType.ALL)
+  private ServiceDesiredStateEntity serviceDesiredStateEntity;
+
+  @OneToMany(mappedBy = "clusterServiceEntity")
+  private Collection<ServiceComponentDesiredStateEntity> serviceComponentDesiredStateEntities;
+
+  @OneToMany(mappedBy = "serviceEntity", cascade = CascadeType.ALL)
+  private Collection<ServiceConfigMappingEntity> serviceConfigMappings;
+
   public Long getClusterId() {
     return clusterId;
   }
@@ -44,10 +66,6 @@ public class ClusterServiceEntity {
     this.clusterId = clusterId;
   }
 
-  private String serviceName;
-
-  @javax.persistence.Column(name = "service_name", nullable = false, insertable = true, updatable = true)
-  @Id
   public String getServiceName() {
     return serviceName;
   }
@@ -56,10 +74,6 @@ public class ClusterServiceEntity {
     this.serviceName = serviceName;
   }
 
-  private Integer serviceEnabled = 0;
-
-  @javax.persistence.Column(name = "service_enabled", nullable = false, insertable = true, updatable = true, length = 10)
-  @Basic
   public int getServiceEnabled() {
     return serviceEnabled;
   }
@@ -91,10 +105,6 @@ public class ClusterServiceEntity {
     return result;
   }
 
-  private ClusterEntity clusterEntity;
-
-  @ManyToOne
-  @javax.persistence.JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
   public ClusterEntity getClusterEntity() {
     return clusterEntity;
   }
@@ -103,9 +113,6 @@ public class ClusterServiceEntity {
     this.clusterEntity = clusterEntity;
   }
 
-  private ServiceDesiredStateEntity serviceDesiredStateEntity;
-
-  @OneToOne(mappedBy = "clusterServiceEntity", cascade = CascadeType.ALL)
   public ServiceDesiredStateEntity getServiceDesiredStateEntity() {
     return serviceDesiredStateEntity;
   }
@@ -114,9 +121,6 @@ public class ClusterServiceEntity {
     this.serviceDesiredStateEntity = serviceDesiredStateEntity;
   }
 
-  private Collection<ServiceComponentDesiredStateEntity> serviceComponentDesiredStateEntities;
-
-  @OneToMany(mappedBy = "clusterServiceEntity")
   public Collection<ServiceComponentDesiredStateEntity> getServiceComponentDesiredStateEntities() {
     return serviceComponentDesiredStateEntities;
   }
@@ -125,8 +129,6 @@ public class ClusterServiceEntity {
     this.serviceComponentDesiredStateEntities = serviceComponentDesiredStateEntities;
   }
 
-  private Collection<ServiceConfigMappingEntity> serviceConfigMappings;
-  @OneToMany(mappedBy = "serviceEntity", cascade = CascadeType.ALL)
   public Collection<ServiceConfigMappingEntity> getServiceConfigMappings() {
     return serviceConfigMappings;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterStateEntity.java Wed Apr  3 22:35:41 2013
@@ -18,21 +18,30 @@
 
 package org.apache.ambari.server.orm.entities;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToOne;
+import javax.persistence.*;
 
-@javax.persistence.Table(name = "clusterstate", schema = "ambari", catalog = "")
+import static org.apache.commons.lang.StringUtils.defaultString;
+
+@javax.persistence.Table(name = "clusterstate")
 @Entity
 public class ClusterStateEntity {
+
+  @Id
+  @Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
   private Long clusterId;
-  private String currentClusterState = "";
-  private String currentStackVersion = "";
+
+  @Basic
+  @Column(name = "current_cluster_state", insertable = true, updatable = true)
+  private String currentClusterState;
+
+  @Basic
+  @Column(name = "current_stack_version", insertable = true, updatable = true)
+  private String currentStackVersion;
+
+  @OneToOne
+  @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
   private ClusterEntity clusterEntity;
 
-  @javax.persistence.Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
-  @Id
   public Long getClusterId() {
     return clusterId;
   }
@@ -41,20 +50,16 @@ public class ClusterStateEntity {
     this.clusterId = clusterId;
   }
 
-  @javax.persistence.Column(name = "current_cluster_state", nullable = false, insertable = true, updatable = true)
-  @Basic
   public String getCurrentClusterState() {
-    return currentClusterState;
+    return defaultString(currentClusterState);
   }
 
   public void setCurrentClusterState(String currentClusterState) {
     this.currentClusterState = currentClusterState;
   }
 
-  @javax.persistence.Column(name = "current_stack_version", nullable = false, insertable = true, updatable = true)
-  @Basic
   public String getCurrentStackVersion() {
-    return currentStackVersion;
+    return defaultString(currentStackVersion);
   }
 
   public void setCurrentStackVersion(String currentStackVersion) {
@@ -84,8 +89,6 @@ public class ClusterStateEntity {
     return result;
   }
 
-  @OneToOne
-  @javax.persistence.JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false)
   public ClusterEntity getClusterEntity() {
     return clusterEntity;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ComponentConfigMappingEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ComponentConfigMappingEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ComponentConfigMappingEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ComponentConfigMappingEntity.java Wed Apr  3 22:35:41 2013
@@ -28,19 +28,47 @@ import javax.persistence.Table;
 
 @IdClass(ComponentConfigMappingEntityPK.class)
 @Entity
-@Table(name = "componentconfigmapping", schema = "ambari", catalog = "")
+@Table(name = "componentconfigmapping")
 public class ComponentConfigMappingEntity {
+
+  @Id
+  @Column(name = "cluster_id", insertable = false, updatable = false, nullable = false)
   private Long clusterId;
+
+  @Id
+  @Column(name = "service_name", insertable = false, updatable = false, nullable = false)
   private String serviceName;
+
+  @Id
+  @Column(name = "component_name", insertable = false, updatable = false, nullable = false)
   private String componentName;
+
+  @Id
+  @Column(name = "config_type", insertable = true, updatable = false, nullable = false)
   private String configType;
+
+  @Column(name = "config_tag", nullable = false, insertable = true, updatable = true)
   private String configTag;
+
+  @Column(name="timestamp", nullable = false, insertable = true, updatable = true)
   private Long timestamp;
-  private ServiceComponentDesiredStateEntity componentEntity;
+
+  @ManyToOne
+  @JoinColumns({
+      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false),
+      @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false),
+      @JoinColumn(name = "component_name", referencedColumnName = "component_name", nullable = false)
+  })
+  private ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity;
+
+  @ManyToOne
+  @JoinColumns({
+      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false, insertable = false, updatable = false),
+      @JoinColumn(name = "config_type", referencedColumnName = "type_name", nullable = false, insertable = false, updatable = false),
+      @JoinColumn(name = "config_tag", referencedColumnName = "version_tag", nullable = false, insertable = false, updatable = false)
+  })
   private ClusterConfigEntity clusterConfigEntity;
 
-  @Column(name = "cluster_id", insertable = false, updatable = false, nullable = false)
-  @Id
   public Long getClusterId() {
     return clusterId;
   }
@@ -49,8 +77,6 @@ public class ComponentConfigMappingEntit
     clusterId = id;
   }
 
-  @Column(name = "service_name", insertable = false, updatable = false, nullable = false)
-  @Id
   public String getServiceName() {
     return serviceName;
   }
@@ -59,8 +85,6 @@ public class ComponentConfigMappingEntit
     serviceName = name;
   }
 
-  @Column(name = "component_name", insertable = false, updatable = false, nullable = false)
-  @Id
   public String getComponentName() {
     return componentName;
   }
@@ -69,8 +93,6 @@ public class ComponentConfigMappingEntit
     componentName = name;
   }
 
-  @Column(name = "config_type", insertable = true, updatable = false, nullable = false)
-  @Id
   public String getConfigType() {
     return configType;
   }
@@ -79,7 +101,6 @@ public class ComponentConfigMappingEntit
     configType = type;
   }
 
-  @Column(name = "config_tag", nullable = false, insertable = true, updatable = true)
   public String getVersionTag() {
     return configTag;
   }
@@ -88,7 +109,6 @@ public class ComponentConfigMappingEntit
     configTag = tag;
   }
 
-  @Column(name="timestamp", nullable = false, insertable = true, updatable = true)
   public Long getTimestamp() {
     return timestamp;
   }
@@ -122,26 +142,14 @@ public class ComponentConfigMappingEntit
   }
 
 
-  @ManyToOne
-  @JoinColumns({
-    @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false),
-    @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false),
-    @JoinColumn(name = "component_name", referencedColumnName = "component_name", nullable = false)
-  })
   public ServiceComponentDesiredStateEntity getServiceComponentDesiredStateEntity() {
-    return componentEntity;
+    return serviceComponentDesiredStateEntity;
   }
 
   public void setServiceComponentDesiredStateEntity(ServiceComponentDesiredStateEntity entity) {
-    componentEntity = entity;
+    serviceComponentDesiredStateEntity = entity;
   }
 
-  @ManyToOne
-  @JoinColumns({
-      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false, insertable = false, updatable = false),
-      @JoinColumn(name = "config_type", referencedColumnName = "type_name", nullable = false, insertable = false, updatable = false),
-      @JoinColumn(name = "config_tag", referencedColumnName = "version_tag", nullable = false, insertable = false, updatable = false)
-  })
   public ClusterConfigEntity getClusterConfigEntity() {
     return clusterConfigEntity;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ExecutionCommandEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ExecutionCommandEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ExecutionCommandEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ExecutionCommandEntity.java Wed Apr  3 22:35:41 2013
@@ -21,13 +21,23 @@ package org.apache.ambari.server.orm.ent
 import javax.persistence.*;
 import java.util.Arrays;
 
-@Table(name = "execution_command", schema = "ambari", catalog = "")
+@Table(name = "execution_command")
 @Entity
 public class ExecutionCommandEntity {
-  private Long taskId;
 
-  @Column(name = "task_id")
   @Id
+  @Column(name = "task_id")
+  private Long taskId;
+
+  @Basic
+  @Lob
+  @Column(name = "command")
+  private byte[] command;
+
+  @OneToOne
+  @JoinColumn(name = "task_id", referencedColumnName = "task_id", nullable = false, insertable = false, updatable = false)
+  private HostRoleCommandEntity hostRoleCommand;
+
   public Long getTaskId() {
     return taskId;
   }
@@ -36,11 +46,6 @@ public class ExecutionCommandEntity {
     this.taskId = taskId;
   }
 
-  private byte[] command;
-
-  @Column(name = "command")
-  @Lob
-  @Basic
   public byte[] getCommand() {
     return command;
   }
@@ -69,10 +74,6 @@ public class ExecutionCommandEntity {
     return result;
   }
 
-  private HostRoleCommandEntity hostRoleCommand;
-
-  @OneToOne
-  @JoinColumn(name = "task_id", referencedColumnName = "task_id", nullable = false, insertable = false, updatable = false)
   public HostRoleCommandEntity getHostRoleCommand() {
     return hostRoleCommand;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentConfigMappingEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentConfigMappingEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentConfigMappingEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentConfigMappingEntity.java Wed Apr  3 22:35:41 2013
@@ -27,21 +27,53 @@ import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 @IdClass(HostComponentConfigMappingEntityPK.class)
-@Table(name = "hostcomponentconfigmapping", schema = "ambari", catalog = "")
+@Table(name = "hostcomponentconfigmapping")
 @Entity
 public class HostComponentConfigMappingEntity {
+
+  @Id
+  @Column(name = "cluster_id", insertable = false, updatable = false, nullable = false)
   private Long clusterId;
+
+  @Id
+  @Column(name = "service_name", insertable = false, updatable = false, nullable = false)
   private String serviceName;
+
+  @Id
+  @Column(name = "component_name", insertable = false, updatable = false, nullable = false)
   private String componentName;
+
+  @Id
+  @Column(name = "host_name", insertable = false, updatable = false, nullable = false)
   private String hostName;
+
+  @Id
+  @Column(name = "config_type", insertable = true, updatable = false, nullable = false)
   private String configType;
+
+  @Column(name = "config_tag", nullable = false, insertable = true, updatable = true)
   private String configTag;
+
+  @Column(name="timestamp", nullable = false, insertable = true, updatable = true)
   private Long timestamp;
+
+  @ManyToOne
+  @JoinColumns({
+      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false),
+      @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false),
+      @JoinColumn(name = "component_name", referencedColumnName = "component_name", nullable = false),
+      @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false) })
   private HostComponentStateEntity hostComponentStateEntity;
+
+  @ManyToOne
+  @JoinColumns({
+      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false, insertable = false, updatable = false),
+      @JoinColumn(name = "config_type", referencedColumnName = "type_name", nullable = false, insertable = false, updatable = false),
+      @JoinColumn(name = "config_tag", referencedColumnName = "version_tag", nullable = false, insertable = false, updatable = false)
+  })
   private ClusterConfigEntity clusterConfigEntity;
 
-  @Column(name = "cluster_id", insertable = false, updatable = false, nullable = false)
-  @Id
+
   public Long getClusterId() {
     return clusterId;
   }
@@ -50,8 +82,6 @@ public class HostComponentConfigMappingE
     clusterId = id;
   }
 
-  @Column(name = "service_name", insertable = false, updatable = false, nullable = false)
-  @Id
   public String getServiceName() {
     return serviceName;
   }
@@ -60,8 +90,6 @@ public class HostComponentConfigMappingE
     serviceName = name;
   }
 
-  @Column(name = "component_name", insertable = false, updatable = false, nullable = false)
-  @Id
   public String getComponentName() {
     return componentName;
   }
@@ -70,8 +98,6 @@ public class HostComponentConfigMappingE
     componentName = name;
   }
 
-  @Column(name = "host_name", insertable = false, updatable = false, nullable = false)
-  @Id
   public String getHostName() {
     return hostName;
   }
@@ -80,8 +106,6 @@ public class HostComponentConfigMappingE
     hostName = name;
   }
 
-  @Column(name = "config_type", insertable = true, updatable = false, nullable = false)
-  @Id
   public String getConfigType() {
     return configType;
   }
@@ -90,7 +114,6 @@ public class HostComponentConfigMappingE
     configType = type;
   }
 
-  @Column(name = "config_tag", nullable = false, insertable = true, updatable = true)
   public String getVersionTag() {
     return configTag;
   }
@@ -99,7 +122,6 @@ public class HostComponentConfigMappingE
     configTag = tag;
   }
 
-  @Column(name="timestamp", nullable = false, insertable = true, updatable = true)
   public Long getTimestamp() {
     return timestamp;
   }
@@ -108,12 +130,6 @@ public class HostComponentConfigMappingE
     timestamp = stamp;
   }
 
-  @ManyToOne
-  @JoinColumns({
-    @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false),
-    @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false),
-    @JoinColumn(name = "component_name", referencedColumnName = "component_name", nullable = false),
-    @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false) })
   public HostComponentStateEntity getHostComponentStateEntity() {
     return hostComponentStateEntity;
   }
@@ -122,12 +138,6 @@ public class HostComponentConfigMappingE
     hostComponentStateEntity = entity;
   }
 
-  @ManyToOne
-  @JoinColumns({
-      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false, insertable = false, updatable = false),
-      @JoinColumn(name = "config_type", referencedColumnName = "type_name", nullable = false, insertable = false, updatable = false),
-      @JoinColumn(name = "config_tag", referencedColumnName = "version_tag", nullable = false, insertable = false, updatable = false)
-  })
   public ClusterConfigEntity getClusterConfigEntity() {
     return clusterConfigEntity;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredConfigMappingEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredConfigMappingEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredConfigMappingEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredConfigMappingEntity.java Wed Apr  3 22:35:41 2013
@@ -27,21 +27,52 @@ import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 @IdClass(HostComponentDesiredConfigMappingEntityPK.class)
-@Table(name = "hostcomponentdesiredconfigmapping", schema = "ambari", catalog = "")
+@Table(name = "hcdesiredconfigmapping")
 @Entity
 public class HostComponentDesiredConfigMappingEntity {
+
+  @Id
+  @Column(name = "cluster_id", insertable = false, updatable = false, nullable = false)
   private Long clusterId;
+
+  @Id
+  @Column(name = "service_name", insertable = false, updatable = false, nullable = false)
   private String serviceName;
+
+  @Id
+  @Column(name = "component_name", insertable = false, updatable = false, nullable = false)
   private String componentName;
+
+  @Id
+  @Column(name = "host_name", insertable = false, updatable = false, nullable = false)
   private String hostName;
+
+  @Id
+  @Column(name = "config_type", insertable = true, updatable = false, nullable = false)
   private String configType;
+
+  @Column(name = "config_tag", nullable = false, insertable = true, updatable = true)
   private String configTag;
+
+  @Column(name="timestamp", nullable = false, insertable = true, updatable = true)
   private Long timestamp;
-  private HostComponentDesiredStateEntity hostComponentEntity;
+
+  @ManyToOne
+  @JoinColumns({
+      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false),
+      @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false),
+      @JoinColumn(name = "component_name", referencedColumnName = "component_name", nullable = false),
+      @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false) })
+  private HostComponentDesiredStateEntity hostComponentDesiredStateEntity;
+
+  @ManyToOne
+  @JoinColumns({
+      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false, insertable = false, updatable = false),
+      @JoinColumn(name = "config_type", referencedColumnName = "type_name", nullable = false, insertable = false, updatable = false),
+      @JoinColumn(name = "config_tag", referencedColumnName = "version_tag", nullable = false, insertable = false, updatable = false)
+  })
   private ClusterConfigEntity clusterConfigEntity;
 
-  @Column(name = "cluster_id", insertable = false, updatable = false, nullable = false)
-  @Id
   public Long getClusterId() {
     return clusterId;
   }
@@ -49,9 +80,7 @@ public class HostComponentDesiredConfigM
   public void setClusterId(Long id) {
     clusterId = id;
   }
-  
-  @Column(name = "service_name", insertable = false, updatable = false, nullable = false)
-  @Id
+
   public String getServiceName() {
     return serviceName;
   }
@@ -59,9 +88,7 @@ public class HostComponentDesiredConfigM
   public void setServiceName(String name) {
     serviceName = name;
   }
-  
-  @Column(name = "component_name", insertable = false, updatable = false, nullable = false)
-  @Id
+
   public String getComponentName() {
     return componentName;
   }
@@ -69,9 +96,7 @@ public class HostComponentDesiredConfigM
   public void setComponentName(String name) {
     componentName = name;
   }
-  
-  @Column(name = "host_name", insertable = false, updatable = false, nullable = false)
-  @Id
+
   public String getHostName() {
     return hostName;
   }
@@ -80,8 +105,6 @@ public class HostComponentDesiredConfigM
     hostName = name;
   }
 
-  @Column(name = "config_type", insertable = true, updatable = false, nullable = false)
-  @Id
   public String getConfigType() {
     return configType;
   }
@@ -89,8 +112,7 @@ public class HostComponentDesiredConfigM
   public void setConfigType(String type) {
     configType = type;
   }
-  
-  @Column(name = "config_tag", nullable = false, insertable = true, updatable = true)
+
   public String getVersionTag() {
     return configTag;
   }
@@ -99,7 +121,6 @@ public class HostComponentDesiredConfigM
     configTag = tag;
   }
   
-  @Column(name="timestamp", nullable = false, insertable = true, updatable = true)
   public Long getTimestamp() {
     return timestamp;
   }
@@ -107,27 +128,15 @@ public class HostComponentDesiredConfigM
   public void setTimestamp(Long stamp) {
     timestamp = stamp;
   }
-  
-  @ManyToOne
-  @JoinColumns({
-    @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false),
-    @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false),
-    @JoinColumn(name = "component_name", referencedColumnName = "component_name", nullable = false),
-    @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false) })
+
   public HostComponentDesiredStateEntity getHostComponentDesiredStateEntity() {
-    return hostComponentEntity;
+    return hostComponentDesiredStateEntity;
   }
   
   public void setHostComponentDesiredStateEntity(HostComponentDesiredStateEntity entity) {
-    hostComponentEntity = entity;
+    hostComponentDesiredStateEntity = entity;
   }
 
-  @ManyToOne
-  @JoinColumns({
-      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false, insertable = false, updatable = false),
-      @JoinColumn(name = "config_type", referencedColumnName = "type_name", nullable = false, insertable = false, updatable = false),
-      @JoinColumn(name = "config_tag", referencedColumnName = "version_tag", nullable = false, insertable = false, updatable = false)
-  })
   public ClusterConfigEntity getClusterConfigEntity() {
     return clusterConfigEntity;
   }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java?rev=1464222&r1=1464221&r2=1464222&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java Wed Apr  3 22:35:41 2013
@@ -23,14 +23,52 @@ import javax.persistence.*;
 
 import org.apache.ambari.server.state.State;
 
+import static org.apache.commons.lang.StringUtils.defaultString;
+
 @javax.persistence.IdClass(HostComponentDesiredStateEntityPK.class)
-@javax.persistence.Table(name = "hostcomponentdesiredstate", schema = "ambari", catalog = "")
+@javax.persistence.Table(name = "hostcomponentdesiredstate")
 @Entity
 public class HostComponentDesiredStateEntity {
+
+  @Id
+  @Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
   private Long clusterId;
 
-  @javax.persistence.Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
   @Id
+  @Column(name = "service_name", nullable = false, insertable = false, updatable = false)
+  private String serviceName;
+
+  @Id
+  @Column(name = "host_name", insertable = false, updatable = false)
+  private String hostName = "";
+
+  @Id
+  @Column(name = "component_name", insertable = false, updatable = false)
+  private String componentName = "";
+
+  @Basic
+  @Column(name = "desired_state", nullable = false, insertable = true, updatable = true)
+  @Enumerated(value = EnumType.STRING)
+  private State desiredState = State.INIT;
+
+  @Basic
+  @Column(name = "desired_stack_version", insertable = true, updatable = true)
+  private String desiredStackVersion = "";
+
+  @ManyToOne
+  @JoinColumns({
+      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false),
+      @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false),
+      @JoinColumn(name = "component_name", referencedColumnName = "component_name", nullable = false)})
+  private ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity;
+
+  @ManyToOne
+  @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false)
+  private HostEntity hostEntity;
+
+  @OneToMany(mappedBy = "hostComponentDesiredStateEntity", cascade = CascadeType.ALL)
+  private Collection<HostComponentDesiredConfigMappingEntity> desiredConfigMappingEntities;
+
   public Long getClusterId() {
     return clusterId;
   }
@@ -39,10 +77,6 @@ public class HostComponentDesiredStateEn
     this.clusterId = clusterId;
   }
 
-  private String serviceName;
-
-  @javax.persistence.Column(name = "service_name", nullable = false, insertable = false, updatable = false)
-  @Id
   public String getServiceName() {
     return serviceName;
   }
@@ -51,35 +85,22 @@ public class HostComponentDesiredStateEn
     this.serviceName = serviceName;
   }
 
-  private String hostName = "";
-
-  @javax.persistence.Column(name = "host_name", nullable = false, insertable = false, updatable = false)
-  @Id
   public String getHostName() {
-    return hostName;
+    return defaultString(hostName);
   }
 
   public void setHostName(String hostName) {
     this.hostName = hostName;
   }
 
-  private String componentName = "";
-
-  @javax.persistence.Column(name = "component_name", nullable = false, insertable = false, updatable = false)
-  @Id
   public String getComponentName() {
-    return componentName;
+    return defaultString(componentName);
   }
 
   public void setComponentName(String componentName) {
     this.componentName = componentName;
   }
 
-  private State desiredState = State.INIT;
-
-  @javax.persistence.Column(name = "desired_state", nullable = false, insertable = true, updatable = true)
-  @Enumerated(value = EnumType.STRING)
-  @Basic
   public State getDesiredState() {
     return desiredState;
   }
@@ -88,12 +109,8 @@ public class HostComponentDesiredStateEn
     this.desiredState = desiredState;
   }
 
-  private String desiredStackVersion = "";
-
-  @javax.persistence.Column(name = "desired_stack_version", nullable = false, insertable = true, updatable = true)
-  @Basic
   public String getDesiredStackVersion() {
-    return desiredStackVersion;
+    return defaultString(desiredStackVersion);
   }
 
   public void setDesiredStackVersion(String desiredStackVersion) {
@@ -129,13 +146,7 @@ public class HostComponentDesiredStateEn
     return result;
   }
 
-  private ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity;
 
-  @ManyToOne
-  @JoinColumns({
-      @JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false),
-      @JoinColumn(name = "service_name", referencedColumnName = "service_name", nullable = false),
-      @JoinColumn(name = "component_name", referencedColumnName = "component_name", nullable = false)})
   public ServiceComponentDesiredStateEntity getServiceComponentDesiredStateEntity() {
     return serviceComponentDesiredStateEntity;
   }
@@ -144,10 +155,6 @@ public class HostComponentDesiredStateEn
     this.serviceComponentDesiredStateEntity = serviceComponentDesiredStateEntity;
   }
 
-  private HostEntity hostEntity;
-
-  @ManyToOne
-  @javax.persistence.JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false)
   public HostEntity getHostEntity() {
     return hostEntity;
   }
@@ -156,8 +163,6 @@ public class HostComponentDesiredStateEn
     this.hostEntity = hostEntity;
   }
 
-  private Collection<HostComponentDesiredConfigMappingEntity> desiredConfigMappingEntities;
-  @OneToMany(mappedBy = "hostComponentDesiredStateEntity", cascade = CascadeType.ALL)
   public Collection<HostComponentDesiredConfigMappingEntity> getHostComponentDesiredConfigMappingEntities() {
     return desiredConfigMappingEntities;
   }