You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/04/24 20:41:16 UTC

ambari git commit: AMBARI-10717. Full Delete of Host : Switch requestoperationlevel and kerberos_principal_host tables to use host_id instead of host_name column (alejandro)

Repository: ambari
Updated Branches:
  refs/heads/trunk 673a2d080 -> 0dd082156


AMBARI-10717. Full Delete of Host : Switch requestoperationlevel and kerberos_principal_host tables to use host_id instead of host_name column (alejandro)


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

Branch: refs/heads/trunk
Commit: 0dd08215681dce64b67314dac03b590e5662ce0d
Parents: 673a2d0
Author: Alejandro Fernandez <af...@hortonworks.com>
Authored: Thu Apr 23 17:27:00 2015 -0700
Committer: Alejandro Fernandez <af...@hortonworks.com>
Committed: Fri Apr 24 11:38:55 2015 -0700

----------------------------------------------------------------------
 .../ambari/server/actionmanager/Request.java    | 36 ++++++++++-----
 .../ambari/server/agent/HeartBeatHandler.java   | 16 +++++--
 .../orm/dao/KerberosPrincipalHostDAO.java       | 36 +++++++--------
 .../entities/KerberosPrincipalHostEntity.java   | 33 +++++++++-----
 .../entities/KerberosPrincipalHostEntityPK.java | 26 +++++------
 .../entities/RequestOperationLevelEntity.java   | 12 ++---
 .../kerberos/CreateKeytabFilesServerAction.java | 30 +++++++++---
 .../server/state/cluster/ClustersImpl.java      |  4 +-
 .../server/upgrade/UpgradeCatalog210.java       | 48 ++++++++++++--------
 .../main/resources/Ambari-DDL-MySQL-CREATE.sql  | 20 ++------
 .../main/resources/Ambari-DDL-Oracle-CREATE.sql | 23 ++--------
 .../resources/Ambari-DDL-Postgres-CREATE.sql    | 19 ++------
 .../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql     | 19 ++------
 .../resources/Ambari-DDL-SQLServer-CREATE.sql   | 18 ++------
 .../server/upgrade/UpgradeCatalog210Test.java   | 28 ++++++++++--
 15 files changed, 198 insertions(+), 170 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java
index ab81dfd..faebb20 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java
@@ -22,11 +22,15 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import com.google.inject.Inject;
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.StaticallyInject;
 import org.apache.ambari.server.controller.ExecuteActionRequest;
 import org.apache.ambari.server.controller.internal.RequestOperationLevel;
 import org.apache.ambari.server.controller.internal.RequestResourceFilter;
 import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.orm.dao.HostDAO;
+import org.apache.ambari.server.orm.entities.HostEntity;
 import org.apache.ambari.server.orm.entities.RequestEntity;
 import org.apache.ambari.server.orm.entities.RequestOperationLevelEntity;
 import org.apache.ambari.server.orm.entities.RequestResourceFilterEntity;
@@ -40,6 +44,7 @@ import com.google.gson.Gson;
 import com.google.inject.assistedinject.Assisted;
 import com.google.inject.assistedinject.AssistedInject;
 
+@StaticallyInject
 public class Request {
   private static final Logger LOG = LoggerFactory.getLogger(Request.class);
 
@@ -73,6 +78,9 @@ public class Request {
 
   private Collection<Stage> stages = new ArrayList<Stage>();
 
+  @Inject
+  private static HostDAO hostDAO;
+
   @AssistedInject
   /**
    * Construct new entity
@@ -245,14 +253,17 @@ public class Request {
       requestEntity.setResourceFilterEntities(filterEntities);
     }
 
+
     if (operationLevel != null) {
-      RequestOperationLevelEntity operationLevelEntity =
-              new RequestOperationLevelEntity();
+      HostEntity hostEntity = hostDAO.findByName(operationLevel.getHostName());
+      Long hostId = hostEntity != null ? hostEntity.getHostId() : null;
+
+      RequestOperationLevelEntity operationLevelEntity = new RequestOperationLevelEntity();
       operationLevelEntity.setLevel(operationLevel.getLevel().toString());
       operationLevelEntity.setClusterName(operationLevel.getClusterName());
       operationLevelEntity.setServiceName(operationLevel.getServiceName());
       operationLevelEntity.setHostComponentName(operationLevel.getHostComponentName());
-      operationLevelEntity.setHostName(operationLevel.getHostName());
+      operationLevelEntity.setHostId(hostId);
       operationLevelEntity.setRequestEntity(requestEntity);
       operationLevelEntity.setRequestId(requestId);
       requestEntity.setRequestOperationLevel(operationLevelEntity);
@@ -419,20 +430,23 @@ public class Request {
    */
   public static RequestOperationLevel operationLevelFromEntity(RequestEntity entity) {
     RequestOperationLevel level = null;
-
     RequestOperationLevelEntity operationLevelEntity = entity.getRequestOperationLevel();
+
     if (operationLevelEntity != null) {
+      String hostName = null;
+      if (operationLevelEntity.getHostId() != null) {
+        HostEntity hostEntity = hostDAO.findById(operationLevelEntity.getHostId());
+        hostName = hostEntity.getHostName();
+      }
+
       level = new RequestOperationLevel(
           Resource.Type.valueOf(operationLevelEntity.getLevel()),
-        operationLevelEntity.getClusterName(),
-        operationLevelEntity.getServiceName(),
-        operationLevelEntity.getHostComponentName(),
-        operationLevelEntity.getHostName());
+          operationLevelEntity.getClusterName(),
+          operationLevelEntity.getServiceName(),
+          operationLevelEntity.getHostComponentName(),
+          hostName);
     }
 
     return level;
   }
-
-
-
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
index 9bdc4b7..1b180eb 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
@@ -52,7 +52,9 @@ import org.apache.ambari.server.events.publishers.AlertEventPublisher;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.events.publishers.VersionEventPublisher;
 import org.apache.ambari.server.metadata.ActionMetadata;
+import org.apache.ambari.server.orm.dao.HostDAO;
 import org.apache.ambari.server.orm.dao.KerberosPrincipalHostDAO;
+import org.apache.ambari.server.orm.entities.HostEntity;
 import org.apache.ambari.server.serveraction.kerberos.KerberosIdentityDataFileReader;
 import org.apache.ambari.server.serveraction.kerberos.KerberosIdentityDataFileReaderFactory;
 import org.apache.ambari.server.serveraction.kerberos.KerberosServerAction;
@@ -142,6 +144,9 @@ public class HeartBeatHandler {
   private ConfigHelper configHelper;
 
   @Inject
+  private HostDAO hostDAO;
+
+  @Inject
   private AlertDefinitionHash alertDefinitionHash;
 
   /**
@@ -455,6 +460,11 @@ public class HeartBeatHandler {
       LOG.debug("Received command report: " + report);
       // Fetch HostRoleCommand that corresponds to a given task ID
       HostRoleCommand hostRoleCommand = hostRoleCommandIterator.next();
+      HostEntity hostEntity = hostDAO.findByName(hostname);
+      if (hostEntity == null) {
+        LOG.error("Received a command report and was unable to retrieve HostEntity for hostname = " + hostname);
+        continue;
+      }
 
       // Send event for final command reports for actions
       if (RoleCommand.valueOf(report.getRoleCommand()) == RoleCommand.ACTIONEXECUTE &&
@@ -497,11 +507,11 @@ public class HeartBeatHandler {
             if (keytabs != null) {
               for (Map.Entry<String, String> entry : keytabs.entrySet()) {
                 String principal = entry.getKey();
-                if (!kerberosPrincipalHostDAO.exists(principal, hostname)) {
+                if (!kerberosPrincipalHostDAO.exists(principal, hostEntity.getHostId())) {
                   if (adding) {
-                    kerberosPrincipalHostDAO.create(principal, hostname);
+                    kerberosPrincipalHostDAO.create(principal, hostEntity.getHostId());
                   } else if ("_REMOVED_".equalsIgnoreCase(entry.getValue())) {
-                    kerberosPrincipalHostDAO.remove(principal, hostname);
+                    kerberosPrincipalHostDAO.remove(principal, hostEntity.getHostId());
                   }
                 }
               }

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/KerberosPrincipalHostDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/KerberosPrincipalHostDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/KerberosPrincipalHostDAO.java
index 64e18bb..049afc7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/KerberosPrincipalHostDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/KerberosPrincipalHostDAO.java
@@ -54,8 +54,8 @@ public class KerberosPrincipalHostDAO {
     entityManagerProvider.get().persist(kerberosPrincipalHostEntity);
   }
 
-  public void create(String principal, String hostName) {
-    create(new KerberosPrincipalHostEntity(principal, hostName));
+  public void create(String principal, Long hostId) {
+    create(new KerberosPrincipalHostEntity(principal, hostId));
   }
 
   /**
@@ -79,7 +79,6 @@ public class KerberosPrincipalHostDAO {
     entityManagerProvider.get().remove(merge(kerberosPrincipalHostEntity));
   }
 
-
   /**
    * Refresh the state of the instance from the database,
    * overwriting changes made to the entity, if any.
@@ -91,7 +90,6 @@ public class KerberosPrincipalHostDAO {
     entityManagerProvider.get().refresh(kerberosPrincipalHostEntity);
   }
 
-
   /**
    * Finds KerberosPrincipalHostEntities for the requested principal
    *
@@ -109,14 +107,14 @@ public class KerberosPrincipalHostDAO {
   /**
    * Find KerberosPrincipalHostEntities for the requested host
    *
-   * @param hostName a String indicating the name of the requested host
+   * @param hostId a Long indicating the id of the requested host
    * @return a List of requested KerberosPrincipalHostEntities or null if none were found
    */
   @RequiresSession
-  public List<KerberosPrincipalHostEntity> findByHost(String hostName) {
+  public List<KerberosPrincipalHostEntity> findByHost(Long hostId) {
     final TypedQuery<KerberosPrincipalHostEntity> query = entityManagerProvider.get()
         .createNamedQuery("KerberosPrincipalHostEntityFindByHost", KerberosPrincipalHostEntity.class);
-    query.setParameter("hostName", hostName);
+    query.setParameter("hostId", hostId);
     return query.getResultList();
   }
 
@@ -135,13 +133,13 @@ public class KerberosPrincipalHostDAO {
    * Find the KerberosPrincipalHostEntity for the requested principal name and host
    *
    * @param principalName a String indicating the name of the requested principal
-   * @param hostName      a String indicating the name of the requested host
+   * @param hostId        a Long indicating the id of the requested host
    * @return the KerberosPrincipalHostEntity or null if not found
    */
   @RequiresSession
-  public KerberosPrincipalHostEntity find(String principalName, String hostName) {
+  public KerberosPrincipalHostEntity find(String principalName, Long hostId) {
     return entityManagerProvider.get().find(KerberosPrincipalHostEntity.class,
-        new KerberosPrincipalHostEntityPK(principalName, hostName));
+        new KerberosPrincipalHostEntityPK(principalName, hostId));
   }
 
   /**
@@ -171,23 +169,23 @@ public class KerberosPrincipalHostDAO {
   /**
    * Remove KerberosPrincipalHostEntity instances for the specified host
    *
-   * @param hostName a String indicating the name of the host
+   * @param hostId a Long indicating the id of the host
    */
   @Transactional
-  public void removeByHost(String hostName) {
-    remove(findByHost(hostName));
+  public void removeByHost(Long hostId) {
+    remove(findByHost(hostId));
   }
 
   /**
    * Remove KerberosPrincipalHostEntity instance for the specified principal and host
    *
    * @param principalName a String indicating the name of the principal
-   * @param hostName      a String indicating the name of the host
+   * @param hostId        a Long indicating the id of the host
    * @see #remove(org.apache.ambari.server.orm.entities.KerberosPrincipalHostEntity)
    */
   @Transactional
-  public void remove(String principalName, String hostName) {
-    remove(new KerberosPrincipalHostEntity(principalName, hostName));
+  public void remove(String principalName, Long hostId) {
+    remove(new KerberosPrincipalHostEntity(principalName, hostId));
   }
 
   /**
@@ -206,12 +204,12 @@ public class KerberosPrincipalHostDAO {
    * Tests the existence of a particular principal on a specific host
    *
    * @param principalName a String indicating the name of the principal to test
-   * @param hostName      a String indicating the name of the host to test
+   * @param hostId      a LOng indicating the id of the host to test
    * @return true if the requested principal exists
    */
   @RequiresSession
-  public boolean exists(String principalName, String hostName) {
-    return find(principalName, hostName) != null;
+  public boolean exists(String principalName, Long hostId) {
+    return find(principalName, hostId) != null;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntity.java
index 07c960d..d8266e5 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntity.java
@@ -41,7 +41,7 @@ import javax.persistence.Table;
     @NamedQuery(name = "KerberosPrincipalHostEntityFindByPrincipal",
         query = "SELECT kph FROM KerberosPrincipalHostEntity kph WHERE kph.principalName=:principalName"),
     @NamedQuery(name = "KerberosPrincipalHostEntityFindByHost",
-        query = "SELECT kph FROM KerberosPrincipalHostEntity kph WHERE kph.hostName=:hostName")
+        query = "SELECT kph FROM KerberosPrincipalHostEntity kph WHERE kph.hostId=:hostId")
 })
 public class KerberosPrincipalHostEntity {
 
@@ -50,15 +50,15 @@ public class KerberosPrincipalHostEntity {
   private String principalName;
 
   @Id
-  @Column(name = "host_name", insertable = true, updatable = false, nullable = false)
-  private String hostName;
+  @Column(name = "host_id", insertable = true, updatable = false, nullable = false)
+  private Long hostId;
 
   @ManyToOne
   @JoinColumn(name = "principal_name", referencedColumnName = "principal_name", nullable = false, insertable = false, updatable = false)
   private KerberosPrincipalEntity principalEntity;
 
   @ManyToOne
-  @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false, insertable = false, updatable = false)
+  @JoinColumn(name = "host_id", referencedColumnName = "host_id", nullable = false, insertable = false, updatable = false)
   private HostEntity hostEntity;
 
   /**
@@ -71,11 +71,11 @@ public class KerberosPrincipalHostEntity {
    * Constructs a new KerberosPrincipalHostEntity
    *
    * @param principalName a String indicating this KerberosPrincipalHostEntity's principal name
-   * @param hostName      a String indicating the KerberosPrincipalHostEntity's host name
+   * @param hostId a Long indicating the KerberosPrincipalHostEntity's host id
    */
-  public KerberosPrincipalHostEntity(String principalName, String hostName) {
+  public KerberosPrincipalHostEntity(String principalName, Long hostId) {
     setPrincipalName(principalName);
-    setHostName(hostName);
+    setHostId(hostId);
   }
 
   /**
@@ -102,16 +102,25 @@ public class KerberosPrincipalHostEntity {
    * @return a String indicating this KerberosHostHostEntity's host name
    */
   public String getHostName() {
-    return hostName;
+    return hostEntity != null ? hostEntity.getHostName() : null;
   }
 
   /**
-   * Sets the host name for this KerberosHostHostEntity
+   * Gets the host id for this KerberosHostHostEntity
    *
-   * @param hostName a String indicating this KerberosHostHostEntity's host name
+   * @return a Long indicating this KerberosHostHostEntity's host id
    */
-  public void setHostName(String hostName) {
-    this.hostName = hostName;
+  public Long getHostId() {
+    return hostId;
+  }
+
+  /**
+   * Sets the host id for this KerberosHostHostEntity
+   *
+   * @param hostId a Long indicating this KerberosHostHostEntity's host id
+   */
+  public void setHostId(Long hostId) {
+    this.hostId = hostId;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntityPK.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntityPK.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntityPK.java
index 704476e..1fd520d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntityPK.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/KerberosPrincipalHostEntityPK.java
@@ -32,15 +32,15 @@ public class KerberosPrincipalHostEntityPK implements Serializable{
   private String principalName = null;
 
   @Id
-  @Column(name = "host_name", insertable = false, updatable = false, nullable = false)
-  private String hostName = null;
+  @Column(name = "host_id", insertable = false, updatable = false, nullable = false)
+  private Long hostId = null;
 
   public KerberosPrincipalHostEntityPK() {
   }
 
-  public KerberosPrincipalHostEntityPK(String principalName, String hostName) {
+  public KerberosPrincipalHostEntityPK(String principalName, Long hostId) {
     setPrincipalName(principalName);
-    setHostName(hostName);
+    setHostId(hostId);
   }
 
   /**
@@ -62,21 +62,21 @@ public class KerberosPrincipalHostEntityPK implements Serializable{
   }
 
   /**
-   * Get the host name.
+   * Get the host id.
    *
-   * @return host name
+   * @return host id
    */
-  public String getHostName() {
-    return hostName;
+  public Long getHostId() {
+    return hostId;
   }
 
   /**
    * Set the configuration type.
    *
-   * @param hostName host name
+   * @param hostId host id
    */
-  public void setHostName(String hostName) {
-    this.hostName = hostName;
+  public void setHostId(Long hostId) {
+    this.hostId = hostId;
   }
 
   @Override
@@ -91,11 +91,11 @@ public class KerberosPrincipalHostEntityPK implements Serializable{
     KerberosPrincipalHostEntityPK that = (KerberosPrincipalHostEntityPK) o;
 
     return this.principalName.equals(that.principalName) &&
-        this.hostName.equals(that.hostName);
+        this.hostId.equals(that.hostId);
   }
 
   @Override
   public int hashCode() {
-    return 31 * principalName.hashCode() + hostName.hashCode();
+    return 31 * principalName.hashCode() + hostId.hashCode();
   }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestOperationLevelEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestOperationLevelEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestOperationLevelEntity.java
index 4c38a97..2c11e55 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestOperationLevelEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RequestOperationLevelEntity.java
@@ -78,9 +78,9 @@ public class RequestOperationLevelEntity {
   @Basic
   private String hostComponentName;
 
-  @Column(name = "host_name")
+  @Column(name = "host_id", nullable=true, insertable=true, updatable=true) // Notice that allowed to be null
   @Basic
-  private String hostName;
+  private Long hostId;
 
   public String getLevel() {
     return level;
@@ -114,12 +114,12 @@ public class RequestOperationLevelEntity {
     this.hostComponentName = hostComponentName;
   }
 
-  public String getHostName() {
-    return hostName;
+  public Long getHostId() {
+    return hostId;
   }
 
-  public void setHostName(String hostName) {
-    this.hostName = hostName;
+  public void setHostId(Long hostId) {
+    this.hostId = hostId;
   }
 
   public Long getRequestId() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java
index 5e8b451..f48c4cf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java
@@ -23,8 +23,10 @@ import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.actionmanager.HostRoleStatus;
 import org.apache.ambari.server.agent.CommandReport;
 import org.apache.ambari.server.configuration.Configuration;
+import org.apache.ambari.server.orm.dao.HostDAO;
 import org.apache.ambari.server.orm.dao.KerberosPrincipalDAO;
 import org.apache.ambari.server.orm.dao.KerberosPrincipalHostDAO;
+import org.apache.ambari.server.orm.entities.HostEntity;
 import org.apache.ambari.server.orm.entities.KerberosPrincipalEntity;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.directory.server.kerberos.shared.keytab.Keytab;
@@ -71,6 +73,12 @@ public class CreateKeytabFilesServerAction extends KerberosServerAction {
   private Configuration configuration;
 
   /**
+   * HostDAO used to retrieveHost Entity object
+   */
+  @Inject
+  private HostDAO hostDAO;
+
+  /**
    * A map of data used to track what has been processed in order to optimize the creation of keytabs
    * such as knowing when to create a cached keytab file or use a cached keytab file.
    */
@@ -150,25 +158,25 @@ public class CreateKeytabFilesServerAction extends KerberosServerAction {
         Map<String, String> principalPasswordMap = getPrincipalPasswordMap(requestSharedDataContext);
         Map<String, Integer> principalKeyNumberMap = getPrincipalKeyNumberMap(requestSharedDataContext);
 
-        String host = identityRecord.get(KerberosIdentityDataFileReader.HOSTNAME);
+        String hostName = identityRecord.get(KerberosIdentityDataFileReader.HOSTNAME);
         String keytabFilePath = identityRecord.get(KerberosIdentityDataFileReader.KEYTAB_FILE_PATH);
 
-        if ((host != null) && !host.isEmpty() && (keytabFilePath != null) && !keytabFilePath.isEmpty()) {
+        if ((hostName != null) && !hostName.isEmpty() && (keytabFilePath != null) && !keytabFilePath.isEmpty()) {
           Set<String> visitedPrincipalKeys = visitedIdentities.get(evaluatedPrincipal);
-          String visitationKey = String.format("%s|%s", host, keytabFilePath);
+          String visitationKey = String.format("%s|%s", hostName, keytabFilePath);
 
           if ((visitedPrincipalKeys == null) || !visitedPrincipalKeys.contains(visitationKey)) {
             // Look up the current evaluatedPrincipal's password.
             // If found create the keytab file, else try to find it in the cache.
             String password = principalPasswordMap.get(evaluatedPrincipal);
 
-            message = String.format("Creating keytab file for %s on host %s", evaluatedPrincipal, host);
+            message = String.format("Creating keytab file for %s on host %s", evaluatedPrincipal, hostName);
             LOG.info(message);
             actionLog.writeStdOut(message);
 
             // Determine where to store the keytab file.  It should go into a host-specific
             // directory under the previously determined data directory.
-            File hostDirectory = new File(getDataDirectoryPath(), host);
+            File hostDirectory = new File(getDataDirectoryPath(), hostName);
 
             // Ensure the host directory exists...
             if (!hostDirectory.exists() && hostDirectory.mkdirs()) {
@@ -178,9 +186,17 @@ public class CreateKeytabFilesServerAction extends KerberosServerAction {
 
             if (hostDirectory.exists()) {
               File destinationKeytabFile = new File(hostDirectory, DigestUtils.sha1Hex(keytabFilePath));
+              HostEntity hostEntity = hostDAO.findByName(hostName);
+              if (hostEntity == null) {
+                message = "Failed to find HostEntity for hostname = " + hostName;
+                actionLog.writeStdErr(message);
+                LOG.error(message);
+                commandReport = createCommandReport(1, HostRoleStatus.FAILED, "{}", actionLog.getStdOut(), actionLog.getStdErr());
+                return commandReport;
+              }
 
               if (password == null) {
-                if (kerberosPrincipalHostDAO.exists(evaluatedPrincipal, host)) {
+                if (kerberosPrincipalHostDAO.exists(evaluatedPrincipal, hostEntity.getHostId())) {
                   // There is nothing to do for this since it must already exist and we don't want to
                   // regenerate the keytab
                   message = String.format("Skipping keytab file for %s, missing password indicates nothing to do", evaluatedPrincipal);
@@ -304,7 +320,7 @@ public class CreateKeytabFilesServerAction extends KerberosServerAction {
             visitedPrincipalKeys.add(visitationKey);
           }
           else {
-            LOG.debug(String.format("Skipping previously processed keytab for %s on host %s", evaluatedPrincipal, host));
+            LOG.debug(String.format("Skipping previously processed keytab for %s on host %s", evaluatedPrincipal, hostName));
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
index f8066ca..9e63ff2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
@@ -717,7 +717,7 @@ public class ClustersImpl implements Clusters {
       deleteConfigGroupHostMapping(hostEntity.getHostId());
 
       // Remove mapping of principals to the unmapped host
-      kerberosPrincipalHostDAO.removeByHost(hostname);
+      kerberosPrincipalHostDAO.removeByHost(hostEntity.getHostId());
     } finally {
       w.unlock();
     }
@@ -775,7 +775,7 @@ public class ClustersImpl implements Clusters {
       hostsById.remove(entity.getHostId());
 
       // Remove mapping of principals to deleted host
-      kerberosPrincipalHostDAO.removeByHost(hostname);
+      kerberosPrincipalHostDAO.removeByHost(entity.getHostId());
 
       // publish the event
       HostRemovedEvent event = new HostRemovedEvent(hostname);

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
index 6249d2a..c7866db 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
@@ -54,6 +54,7 @@ import com.google.inject.persist.Transactional;
  */
 public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
   private static final String CLUSTERS_TABLE = "clusters";
+  private static final String CLUSTER_HOST_MAPPING_TABLE = "ClusterHostMapping";
   private static final String HOSTS_TABLE = "hosts";
   private static final String HOST_COMPONENT_DESIRED_STATE_TABLE = "hostcomponentdesiredstate";
   private static final String HOST_COMPONENT_STATE_TABLE = "hostcomponentstate";
@@ -63,8 +64,9 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
   private static final String HOST_CONFIG_MAPPING_TABLE = "hostconfigmapping";
   private static final String CONFIG_GROUP_HOST_MAPPING_TABLE = "configgrouphostmapping";
   private static final String KERBEROS_PRINCIPAL_HOST_TABLE = "kerberos_principal_host";
+  private static final String KERBEROS_PRINCIPAL_TABLE = "kerberos_principal";
+  private static final String REQUEST_OPERATION_LEVEL_TABLE = "requestoperationlevel";
   private static final String SERVICE_CONFIG_HOSTS_TABLE = "serviceconfighosts";
-  private static final String CLUSTER_HOST_MAPPING_TABLE = "ClusterHostMapping";
   private static final String WIDGET_TABLE = "widget";
   private static final String WIDGET_LAYOUT_TABLE = "widget_layout";
   private static final String WIDGET_LAYOUT_USER_WIDGET_TABLE = "widget_layout_user_widget";
@@ -205,7 +207,10 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
       dbAccessor.executeQuery("ALTER TABLE " + HOST_STATE_TABLE + " DROP CONSTRAINT FK_hoststate_host_name");
       dbAccessor.executeQuery("ALTER TABLE " + HOST_VERSION_TABLE + " DROP CONSTRAINT FK_host_version_host_name");
       dbAccessor.executeQuery("ALTER TABLE " + CONFIG_GROUP_HOST_MAPPING_TABLE + " DROP CONSTRAINT FK_cghm_hname");
+      // FK_krb_pr_host_hostname used to have a CASCADE DELETE, which is not needed.
       dbAccessor.executeQuery("ALTER TABLE " + KERBEROS_PRINCIPAL_HOST_TABLE + " DROP CONSTRAINT FK_krb_pr_host_hostname");
+      // FK_krb_pr_host_principalname used to have a CASCADE DELETE, which is not needed, so it will be recreated without it.
+      dbAccessor.executeQuery("ALTER TABLE " + KERBEROS_PRINCIPAL_HOST_TABLE + " DROP CONSTRAINT FK_krb_pr_host_principalname");
 
       // This FK name is actually different on Derby.
       dbAccessor.executeQuery("ALTER TABLE " + HOST_CONFIG_MAPPING_TABLE + " DROP CONSTRAINT FK_hostconfigmapping_host_name");
@@ -216,7 +221,10 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
       dbAccessor.dropConstraint(HOST_STATE_TABLE, "FK_hoststate_host_name");
       dbAccessor.dropConstraint(HOST_VERSION_TABLE, "FK_host_version_host_name");
       dbAccessor.dropConstraint(CONFIG_GROUP_HOST_MAPPING_TABLE, "FK_cghm_hname");
+      // FK_krb_pr_host_hostname used to have a CASCADE DELETE, which is not needed.
       dbAccessor.dropConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_hostname");
+      // FK_krb_pr_host_principalname used to have a CASCADE DELETE, which is not needed, so it will be recreated without it.
+      dbAccessor.executeQuery("ALTER TABLE " + KERBEROS_PRINCIPAL_HOST_TABLE + " DROP CONSTRAINT FK_krb_pr_host_principalname");
 
       dbAccessor.dropConstraint(HOST_CONFIG_MAPPING_TABLE, "FK_hostconfmapping_host_name");
     }
@@ -253,14 +261,7 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
     dbAccessor.executeQuery("ALTER TABLE " + HOSTS_TABLE + " ADD CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)");
 
 
-    // TODO, for now, these still point to the host_name and will be fixed one table at a time to point to the host id.
-    // Re-add the FKs
-    dbAccessor.addFKConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_host_name",
-        "host_name", HOSTS_TABLE, "host_name", false);
-
-
     // Add host_id to the host-related tables, and populate the host_id, one table at a time.
-    // TODO, include other tables.
     String[] tablesToAddHostID = new String[] {
         CONFIG_GROUP_HOST_MAPPING_TABLE,
         CLUSTER_HOST_MAPPING_TABLE,
@@ -270,6 +271,8 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
         HOST_ROLE_COMMAND_TABLE,
         HOST_STATE_TABLE,
         HOST_VERSION_TABLE,
+        KERBEROS_PRINCIPAL_HOST_TABLE,
+        REQUEST_OPERATION_LEVEL_TABLE,
         SERVICE_CONFIG_HOSTS_TABLE
     };
 
@@ -289,16 +292,18 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
         }
       }
 
-      if (databaseType == Configuration.DatabaseType.DERBY) {
-        // This is a workaround for UpgradeTest.java unit test
-        dbAccessor.executeQuery("ALTER TABLE " + tableName + " ALTER column " + HOST_ID_COL + " NOT NULL");
-      } else {
-        dbAccessor.executeQuery("ALTER TABLE " + tableName + " ALTER column " + HOST_ID_COL + " SET NOT NULL");
+      // The one exception for setting NOT NULL is the requestoperationlevel table
+      if (tableName != REQUEST_OPERATION_LEVEL_TABLE) {
+        if (databaseType == Configuration.DatabaseType.DERBY) {
+          // This is a workaround for UpgradeTest.java unit test
+          dbAccessor.executeQuery("ALTER TABLE " + tableName + " ALTER column " + HOST_ID_COL + " NOT NULL");
+        } else {
+          dbAccessor.executeQuery("ALTER TABLE " + tableName + " ALTER column " + HOST_ID_COL + " SET NOT NULL");
+        }
       }
     }
 
     // These are the FKs that have already been corrected.
-    // TODO, include other tables.
     dbAccessor.addFKConstraint(CONFIG_GROUP_HOST_MAPPING_TABLE, "FK_cghm_host_id",
         "host_id", HOSTS_TABLE, "host_id", false);
     dbAccessor.addFKConstraint(CLUSTER_HOST_MAPPING_TABLE, "FK_clusterhostmapping_host_id",
@@ -311,13 +316,15 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
         "host_id", HOSTS_TABLE, "host_id", false);
     dbAccessor.addFKConstraint(HOST_STATE_TABLE, "FK_hoststate_host_id",
         "host_id", HOSTS_TABLE, "host_id", false);
+    dbAccessor.addFKConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_id",
+        "host_id", HOSTS_TABLE, "host_id", false);
+    dbAccessor.addFKConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_principalname",
+        "principal_name", KERBEROS_PRINCIPAL_TABLE, "principal_name", false);
     dbAccessor.addFKConstraint(SERVICE_CONFIG_HOSTS_TABLE, "FK_scvhosts_host_id",
         "host_id", HOSTS_TABLE, "host_id", false);
 
 
-
     // For any tables where the host_name was part of the PK, need to drop the PK, and recreate it with the host_id
-    // TODO, include other tables.
     String[] tablesWithHostNameInPK =  new String[] {
         CONFIG_GROUP_HOST_MAPPING_TABLE,
         CLUSTER_HOST_MAPPING_TABLE,
@@ -325,6 +332,7 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
         HOST_COMPONENT_STATE_TABLE,
         HOST_COMPONENT_DESIRED_STATE_TABLE,
         HOST_STATE_TABLE,
+        KERBEROS_PRINCIPAL_HOST_TABLE,
         SERVICE_CONFIG_HOSTS_TABLE
     };
 
@@ -342,8 +350,8 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
       dbAccessor.executeQuery("ALTER TABLE " + HOST_COMPONENT_STATE_TABLE + " DROP CONSTRAINT hostcomponentstate_pkey");
       dbAccessor.executeQuery("ALTER TABLE " + HOST_COMPONENT_DESIRED_STATE_TABLE + " DROP CONSTRAINT hostcomponentdesiredstate_pkey");
       dbAccessor.executeQuery("ALTER TABLE " + HOST_STATE_TABLE + " DROP CONSTRAINT hoststate_pkey");
+      dbAccessor.executeQuery("ALTER TABLE " + KERBEROS_PRINCIPAL_HOST_TABLE + " DROP CONSTRAINT kerberos_principal_host_pkey");
       dbAccessor.executeQuery("ALTER TABLE " + SERVICE_CONFIG_HOSTS_TABLE + " DROP CONSTRAINT serviceconfighosts_pkey");
-      // TODO, include other tables.
     }
     dbAccessor.executeQuery("ALTER TABLE " + CONFIG_GROUP_HOST_MAPPING_TABLE +
         " ADD CONSTRAINT configgrouphostmapping_pkey PRIMARY KEY (config_group_id, host_id)");
@@ -357,9 +365,10 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
         " ADD CONSTRAINT hostcomponentdesiredstate_pkey PRIMARY KEY (cluster_id, component_name, host_id, service_name)");
     dbAccessor.executeQuery("ALTER TABLE " + HOST_STATE_TABLE +
         " ADD CONSTRAINT hoststate_pkey PRIMARY KEY (host_id)");
+    dbAccessor.executeQuery("ALTER TABLE " + KERBEROS_PRINCIPAL_HOST_TABLE +
+        " ADD CONSTRAINT kerberos_principal_host_pkey PRIMARY KEY (principal_name, host_id)");
     dbAccessor.executeQuery("ALTER TABLE " + SERVICE_CONFIG_HOSTS_TABLE +
         " ADD CONSTRAINT serviceconfighosts_pkey PRIMARY KEY (service_config_id, host_id)");
-    // TODO, include other tables.
 
     // Finish by deleting the unnecessary host_name columns.
     dbAccessor.dropColumn(CONFIG_GROUP_HOST_MAPPING_TABLE, "host_name");
@@ -370,10 +379,11 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
     dbAccessor.dropColumn(HOST_ROLE_COMMAND_TABLE, "host_name");
     dbAccessor.dropColumn(HOST_STATE_TABLE, "host_name");
     dbAccessor.dropColumn(HOST_VERSION_TABLE, "host_name");
+    dbAccessor.dropColumn(KERBEROS_PRINCIPAL_HOST_TABLE, "host_name");
+    dbAccessor.dropColumn(REQUEST_OPERATION_LEVEL_TABLE, "host_name");
 
     // Notice that the column name doesn't have an underscore here.
     dbAccessor.dropColumn(SERVICE_CONFIG_HOSTS_TABLE, "hostname");
-    // TODO, include other tables.
 
     // view columns for cluster association
     dbAccessor.addColumn(VIEW_INSTANCE_TABLE, new DBColumnInfo("cluster_handle", String.class, 255, null, true));

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
index 1a146e0..d9e546f 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -26,9 +26,6 @@ delimiter ;
 
 # USE @schema;
 
--- DEVELOPER COMMENT
--- Ambari is transitioning to make the host_id the FK instead of the host_name.
--- Please do not remove lines that are related to this change and are being staged.
 
 CREATE TABLE stack(
   stack_id BIGINT NOT NULL,
@@ -294,8 +291,7 @@ CREATE TABLE requestoperationlevel (
   cluster_name VARCHAR(255),
   service_name VARCHAR(255),
   host_component_name VARCHAR(255),
-  host_name VARCHAR(255),
-  -- host_id BIGINT NOT NULL,
+  host_id BIGINT NOT NULL,
   PRIMARY KEY (operation_level_id));
 
 CREATE TABLE key_value_store (`key` VARCHAR(255),
@@ -674,18 +670,12 @@ CREATE TABLE kerberos_principal (
 
 CREATE TABLE kerberos_principal_host (
   principal_name VARCHAR(255) NOT NULL,
-  host_name VARCHAR(255) NOT NULL,
-  -- host_id BIGINT NOT NULL,
-  PRIMARY KEY(principal_name, host_name)
-  -- PRIMARY KEY(principal_name, host_id)
+  host_id BIGINT NOT NULL,
+  PRIMARY KEY(principal_name, host_id)
 );
 
-ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_hostname FOREIGN KEY (host_name) REFERENCES hosts (host_name) ON DELETE CASCADE;
--- ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id) ON DELETE CASCADE;
-
-ALTER TABLE kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_principalname
-FOREIGN KEY (principal_name) REFERENCES kerberos_principal (principal_name) ON DELETE CASCADE;
+ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id);
+ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_principalname FOREIGN KEY (principal_name) REFERENCES kerberos_principal (principal_name);
 -- Kerberos (end)
 
 -- Alerting Framework

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
index bc6bd32..37aaf7d 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@ -16,10 +16,6 @@
 -- limitations under the License.
 --
 
--- DEVELOPER COMMENT
--- Ambari is transitioning to make the host_id the FK instead of the host_name.
--- Please do not remove lines that are related to this change and are being staged.
-
 ------create tables---------
 CREATE TABLE stack(
   stack_id NUMBER(19) NOT NULL,
@@ -285,8 +281,7 @@ CREATE TABLE requestoperationlevel (
   cluster_name VARCHAR2(255),
   service_name VARCHAR2(255),
   host_component_name VARCHAR2(255),
-  host_name VARCHAR2(255),
-  --host_id NUMBER(19) NOT NULL,
+  host_id NUMBER(19) NOT NULL,
   PRIMARY KEY (operation_level_id));
 
 CREATE TABLE key_value_store (
@@ -665,20 +660,12 @@ CREATE TABLE kerberos_principal (
 
 CREATE TABLE kerberos_principal_host (
   principal_name VARCHAR2(255) NOT NULL,
-  host_name VARCHAR2(255) NOT NULL,
-  --host_id NUMBER(19) NOT NULL,
-  PRIMARY KEY(principal_name, host_name)
-  --PRIMARY KEY(principal_name, host_id)
+  host_id NUMBER(19) NOT NULL,
+  PRIMARY KEY(principal_name, host_id)
 );
 
-ALTER TABLE kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_hostname
-FOREIGN KEY (host_name) REFERENCES hosts (host_name) ON DELETE CASCADE;
---ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id) ON DELETE CASCADE;
-
-ALTER TABLE kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_principalname
-FOREIGN KEY (principal_name) REFERENCES kerberos_principal (principal_name) ON DELETE CASCADE;
+ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id);
+ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_principalname FOREIGN KEY (principal_name) REFERENCES kerberos_principal (principal_name);
 -- Kerberos (end)
 
 -- Alerting Framework

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index f2a016f..c3f8c1c 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -297,8 +297,7 @@ CREATE TABLE requestoperationlevel (
   cluster_name VARCHAR(255),
   service_name VARCHAR(255),
   host_component_name VARCHAR(255),
-  host_name VARCHAR(255),
-  --host_id BIGINT NOT NULL,
+  host_id BIGINT NOT NULL,
   PRIMARY KEY (operation_level_id));
 
 CREATE TABLE ClusterHostMapping (
@@ -667,20 +666,12 @@ CREATE TABLE kerberos_principal (
 
 CREATE TABLE kerberos_principal_host (
   principal_name VARCHAR(255) NOT NULL,
-  host_name VARCHAR(255) NOT NULL,
-  --host_id BIGINT NOT NULL,
-  PRIMARY KEY(principal_name, host_name)
-  --PRIMARY KEY(principal_name, host_id)
+  host_id BIGINT NOT NULL,
+  PRIMARY KEY(principal_name, host_id)
 );
 
-ALTER TABLE kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_hostname
-FOREIGN KEY (host_name) REFERENCES hosts (host_name) ON DELETE CASCADE;
---ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id) ON DELETE CASCADE;
-
-ALTER TABLE kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_principalname
-FOREIGN KEY (principal_name) REFERENCES kerberos_principal (principal_name) ON DELETE CASCADE;
+ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id);
+ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_principalname FOREIGN KEY (principal_name) REFERENCES kerberos_principal (principal_name);
 -- Kerberos (end)
 
 -- Alerting Framework

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
index 38a241d..0d6d24d 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
@@ -334,8 +334,7 @@ CREATE TABLE ambari.requestoperationlevel (
   cluster_name VARCHAR(255),
   service_name VARCHAR(255),
   host_component_name VARCHAR(255),
-  host_name VARCHAR(255),
-  --host_id BIGINT NOT NULL,
+  host_id BIGINT NOT NULL,
   PRIMARY KEY (operation_level_id));
 GRANT ALL PRIVILEGES ON TABLE ambari.requestoperationlevel TO :username;
 
@@ -741,21 +740,13 @@ GRANT ALL PRIVILEGES ON TABLE ambari.kerberos_principal TO :username;
 
 CREATE TABLE ambari.kerberos_principal_host (
   principal_name VARCHAR(255) NOT NULL,
-  host_name VARCHAR(255) NOT NULL,
-  --host_id BIGINT NOT NULL,
-  PRIMARY KEY(principal_name, host_name)
-  --PRIMARY KEY(principal_name, host_id)
+  host_id BIGINT NOT NULL,
+  PRIMARY KEY(principal_name, host_id)
 );
 GRANT ALL PRIVILEGES ON TABLE ambari.kerberos_principal_host TO :username;
 
-ALTER TABLE ambari.kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_hostname
-FOREIGN KEY (host_name) REFERENCES ambari.hosts (host_name) ON DELETE CASCADE;
---ALTER TABLE ambari.kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES ambari.hosts (host_id) ON DELETE CASCADE;
-
-ALTER TABLE ambari.kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_principalname
-FOREIGN KEY (principal_name) REFERENCES ambari.kerberos_principal (principal_name) ON DELETE CASCADE;
+ALTER TABLE ambari.kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES ambari.hosts (host_id);
+ALTER TABLE ambari.kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_principalname FOREIGN KEY (principal_name) REFERENCES ambari.kerberos_principal (principal_name);
 -- Kerberos (end)
 
 -- Alerting Framework

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
index 30959d0..f5433f1 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@ -328,7 +328,7 @@ CREATE TABLE requestoperationlevel (
   cluster_name VARCHAR(255),
   service_name VARCHAR(255),
   host_component_name VARCHAR(255),
-  host_name VARCHAR(255),
+  host_id BIGINT NOT NULL,
   PRIMARY KEY CLUSTERED (operation_level_id)
   );
   
@@ -784,20 +784,12 @@ CREATE TABLE kerberos_principal (
 
 CREATE TABLE kerberos_principal_host (
   principal_name VARCHAR(255) NOT NULL,
-  host_name VARCHAR(255) NOT NULL,
-  --host_id BIGINT NOT NULL,
-  PRIMARY KEY CLUSTERED (principal_name, host_name)
-  --PRIMARY KEY CLUSTERED (principal_name, host_id)
+  host_id BIGINT NOT NULL,
+  PRIMARY KEY CLUSTERED (principal_name, host_id)
 );
 
-ALTER TABLE kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_hostname
-FOREIGN KEY (host_name) REFERENCES hosts (host_name) ON DELETE CASCADE;
---ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id) ON DELETE CASCADE;
-
-ALTER TABLE kerberos_principal_host
-ADD CONSTRAINT FK_krb_pr_host_principalname
-FOREIGN KEY (principal_name) REFERENCES kerberos_principal (principal_name) ON DELETE CASCADE;
+ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id);
+ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_principalname FOREIGN KEY (principal_name) REFERENCES kerberos_principal (principal_name);
 -- Kerberos (end)
 
 -- Alerting Framework

http://git-wip-us.apache.org/repos/asf/ambari/blob/0dd08215/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java
index 714b6b7..d150d76 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java
@@ -243,18 +243,31 @@ public class UpgradeCatalog210Test {
 
       // Column Capture section
       // Hosts
+      Capture<DBAccessor.DBColumnInfo> clusterHostMappingColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
+      Capture<DBAccessor.DBColumnInfo> configGroupHostMappingColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
+      Capture<DBAccessor.DBColumnInfo> hostConfigMappingColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
       Capture<DBAccessor.DBColumnInfo> hostsColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
       Capture<DBAccessor.DBColumnInfo> hostComponentStateColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
       Capture<DBAccessor.DBColumnInfo> hostComponentDesiredStateColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
+      Capture<DBAccessor.DBColumnInfo> hostRoleCommandColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
       Capture<DBAccessor.DBColumnInfo> hostStateColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
-      Capture<DBAccessor.DBColumnInfo> clusterHostMappingColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
+      Capture<DBAccessor.DBColumnInfo> hostVersionColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
+      Capture<DBAccessor.DBColumnInfo> kerberosPrincipalHostColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
+      Capture<DBAccessor.DBColumnInfo> requestOperationLevelColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
+      Capture<DBAccessor.DBColumnInfo> serviceConfigHostsColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
 
-      // TODO, include other tables.
+      captures.put("ClusterHostMapping", clusterHostMappingColumnCapture);
+      captures.put("configgrouphostmapping", configGroupHostMappingColumnCapture);
+      captures.put("hostconfigmapping", hostConfigMappingColumnCapture);
       captures.put("hosts", hostsColumnCapture);
       captures.put("hostcomponentstate", hostComponentStateColumnCapture);
       captures.put("hostcomponentdesiredstate", hostComponentDesiredStateColumnCapture);
+      captures.put("host_role_command", hostRoleCommandColumnCapture);
       captures.put("hoststate", hostStateColumnCapture);
-      captures.put("ClusterHostMapping", clusterHostMappingColumnCapture);
+      captures.put("host_version", hostVersionColumnCapture);
+      captures.put("kerberos_principal_host", kerberosPrincipalHostColumnCapture);
+      captures.put("requestoperationlevel", requestOperationLevelColumnCapture);
+      captures.put("serviceconfighosts", serviceConfigHostsColumnCapture);
     }
 
     /**
@@ -263,11 +276,18 @@ public class UpgradeCatalog210Test {
     @Override
     public void execute(DBAccessor dbAccessor) throws SQLException {
       // Add columns and alter table section
+      dbAccessor.addColumn(eq("ClusterHostMapping"), capture(captures.get("ClusterHostMapping")));
+      dbAccessor.addColumn(eq("configgrouphostmapping"), capture(captures.get("configgrouphostmapping")));
+      dbAccessor.addColumn(eq("hostconfigmapping"), capture(captures.get("hostconfigmapping")));
       dbAccessor.addColumn(eq("hosts"), capture(captures.get("hosts")));
       dbAccessor.addColumn(eq("hostcomponentstate"), capture(captures.get("hostcomponentstate")));
       dbAccessor.addColumn(eq("hostcomponentdesiredstate"), capture(captures.get("hostcomponentdesiredstate")));
+      dbAccessor.addColumn(eq("host_role_command"), capture(captures.get("host_role_command")));
       dbAccessor.addColumn(eq("hoststate"), capture(captures.get("hoststate")));
-      dbAccessor.addColumn(eq("ClusterHostMapping"), capture(captures.get("ClusterHostMapping")));
+      dbAccessor.addColumn(eq("host_version"), capture(captures.get("host_version")));
+      dbAccessor.addColumn(eq("kerberos_principal_host"), capture(captures.get("kerberos_principal_host")));
+      dbAccessor.addColumn(eq("requestoperationlevel"), capture(captures.get("requestoperationlevel")));
+      dbAccessor.addColumn(eq("serviceconfighosts"), capture(captures.get("serviceconfighosts")));
     }
 
     /**