You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by vb...@apache.org on 2015/03/02 19:05:03 UTC

ambari git commit: AMBARI-9872. Check Kerberos failed after Ambari upgrade 1.7.0->2.0.0.(vbrodetskyi)

Repository: ambari
Updated Branches:
  refs/heads/trunk 37e0d6d51 -> d54457c20


AMBARI-9872. Check Kerberos failed after Ambari upgrade 1.7.0->2.0.0.(vbrodetskyi)


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

Branch: refs/heads/trunk
Commit: d54457c20376bebcee6a2a8b7051567701b75cc9
Parents: 37e0d6d
Author: Vitaly Brodetskyi <vb...@hortonworks.com>
Authored: Mon Mar 2 20:04:49 2015 +0200
Committer: Vitaly Brodetskyi <vb...@hortonworks.com>
Committed: Mon Mar 2 20:04:49 2015 +0200

----------------------------------------------------------------------
 .../apache/ambari/server/orm/DBAccessor.java    | 42 +++++++++++++++++++-
 .../ambari/server/orm/DBAccessorImpl.java       | 26 ++++++++++--
 .../server/orm/helpers/dbms/DbmsHelper.java     |  3 +-
 .../orm/helpers/dbms/GenericDbmsHelper.java     |  4 +-
 .../server/upgrade/UpgradeCatalog200.java       | 42 +-------------------
 .../server/upgrade/UpgradeCatalog200Test.java   |  8 +---
 6 files changed, 71 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d54457c2/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
index 98e2bbb..2b01c72 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
@@ -63,7 +63,6 @@ public interface DBAccessor {
   public void createIndex(String indexName, String tableName,
                           String... columnNames) throws SQLException;
 
-
   /**
    * Add foreign key for a relation
    * @param tableName
@@ -80,11 +79,33 @@ public interface DBAccessor {
                               boolean ignoreFailure) throws SQLException;
 
   /**
-   * Add foreign key for a relation
+   *
    * @param tableName
    * @param constraintName
    * @param keyColumn
+   * @param referenceTableName
    * @param referenceColumn
+   * @param shouldCascadeOnDelete
+   * @param ignoreFailure
+   * @throws SQLException
+   */
+  public void addFKConstraint(String tableName,
+                              String constraintName,
+                              String keyColumn,
+                              String referenceTableName,
+                              String referenceColumn,
+                              boolean shouldCascadeOnDelete,
+                              boolean ignoreFailure) throws SQLException;
+
+  /**
+   * Add foreign key for a relation
+   * @param tableName
+   * @param constraintName
+   * @param keyColumns
+   * @param referenceTableName
+   * @param referenceColumns
+   * @param shouldCascadeOnDelete
+   * @param ignoreFailure
    * @throws SQLException
    */
   public void addFKConstraint(String tableName,
@@ -92,9 +113,26 @@ public interface DBAccessor {
                               String[] keyColumns,
                               String referenceTableName,
                               String[] referenceColumns,
+                              boolean shouldCascadeOnDelete,
                               boolean ignoreFailure) throws SQLException;
 
   /**
+   * Add foreign key for a relation
+   * @param tableName
+   * @param constraintName
+   * @param keyColumns
+   * @param referenceTableName
+   * @param referenceColumns
+   * @param ignoreFailure
+   * @throws SQLException
+   */
+  public void addFKConstraint(String tableName,
+                              String constraintName,
+                              String[] keyColumns,
+                              String referenceTableName,
+                              String[] referenceColumns,
+                              boolean ignoreFailure) throws SQLException;
+  /**
    * Add column to existing table
    * @param tableName
    * @param columnInfo

http://git-wip-us.apache.org/repos/asf/ambari/blob/d54457c2/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
index 05db3f7..279c78f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
@@ -335,19 +335,37 @@ public class DBAccessorImpl implements DBAccessor {
                               String referenceColumn, boolean ignoreFailure) throws SQLException {
 
     addFKConstraint(tableName, constraintName, new String[]{keyColumn}, referenceTableName,
-      new String[]{referenceColumn}, ignoreFailure);
+        new String[]{referenceColumn}, false, ignoreFailure);
+  }
+  @Override
+  public void addFKConstraint(String tableName, String constraintName,
+                              String keyColumn, String referenceTableName,
+                              String referenceColumn, boolean shouldCascadeOnDelete,
+                              boolean ignoreFailure) throws SQLException {
+
+    addFKConstraint(tableName, constraintName, new String[]{keyColumn}, referenceTableName,
+      new String[]{referenceColumn}, shouldCascadeOnDelete, ignoreFailure);
+  }
+
+  @Override
+  public void addFKConstraint(String tableName, String constraintName,
+                              String[] keyColumns, String referenceTableName,
+                              String[] referenceColumns,
+                              boolean ignoreFailure) throws SQLException {
+    addFKConstraint(tableName, constraintName, keyColumns, referenceTableName, referenceColumns, false, ignoreFailure);
   }
 
   @Override
   public void addFKConstraint(String tableName, String constraintName,
                               String[] keyColumns, String referenceTableName,
-                              String[] referenceColumns, boolean ignoreFailure) throws SQLException {
+                              String[] referenceColumns, boolean shouldCascadeOnDelete,
+                              boolean ignoreFailure) throws SQLException {
     if (!tableHasForeignKey(tableName, referenceTableName, keyColumns, referenceColumns)) {
       String query = dbmsHelper.getAddForeignKeyStatement(tableName, constraintName,
           Arrays.asList(keyColumns),
           referenceTableName,
-          Arrays.asList(referenceColumns)
-      );
+          Arrays.asList(referenceColumns),
+          shouldCascadeOnDelete);
 
       try {
         executeQuery(query, ignoreFailure);

http://git-wip-us.apache.org/repos/asf/ambari/blob/d54457c2/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java
index dcef71c..66ab314 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java
@@ -59,7 +59,8 @@ public interface DbmsHelper {
   String getAddForeignKeyStatement(String tableName, String constraintName,
                                    List<String> keyColumns,
                                    String referenceTableName,
-                                   List<String> referenceColumns);
+                                   List<String> referenceColumns,
+                                   boolean shouldCascadeOnDelete);
 
   String getAddColumnStatement(String tableName, DBAccessor.DBColumnInfo columnInfo);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/d54457c2/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java
index 0ee2920..9816133 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java
@@ -193,12 +193,14 @@ public class GenericDbmsHelper implements DbmsHelper {
   public String getAddForeignKeyStatement(String tableName, String constraintName,
                                           List<String> keyColumns,
                                           String referenceTableName,
-                                          List<String> referenceColumns) {
+                                          List<String> referenceColumns,
+                                          boolean shouldCascadeOnDelete) {
     ForeignKeyConstraint foreignKeyConstraint = new ForeignKeyConstraint();
     foreignKeyConstraint.setName(constraintName);
     foreignKeyConstraint.setTargetTable(referenceTableName);
     foreignKeyConstraint.setSourceFields(keyColumns);
     foreignKeyConstraint.setTargetFields(referenceColumns);
+    foreignKeyConstraint.setShouldCascadeOnDelete(shouldCascadeOnDelete);
 
     TableDefinition tableDefinition = new TableDefinition();
     tableDefinition.setName(tableName);

http://git-wip-us.apache.org/repos/asf/ambari/blob/d54457c2/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java
index a6a6ca2..95d8300 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java
@@ -297,8 +297,8 @@ public class UpgradeCatalog200 extends AbstractUpgradeCatalog {
     columns.add(new DBColumnInfo("principal_name", String.class, 255, null, false));
     columns.add(new DBColumnInfo("host_name", String.class, 255, null, false));
     dbAccessor.createTable(KERBEROS_PRINCIPAL_HOST_TABLE, columns, "principal_name", "host_name");
-    dbAccessor.addFKConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_hostname", "host_name", "hosts", "host_name", false);
-    dbAccessor.addFKConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_principalname", "principal_name", KERBEROS_PRINCIPAL_TABLE, "principal_name", false);
+    dbAccessor.addFKConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_hostname", "host_name", "hosts", "host_name", true, false);
+    dbAccessor.addFKConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_principalname", "principal_name", KERBEROS_PRINCIPAL_TABLE, "principal_name", true, false);
   }
 
   // ----- UpgradeCatalog ----------------------------------------------------
@@ -312,7 +312,6 @@ public class UpgradeCatalog200 extends AbstractUpgradeCatalog {
     removeNagiosService();
     addNewConfigurationsFromXml();
     updateHiveDatabaseType();
-    setSecurityType();
     updateTezConfiguration();
     addMissingConfigs();
     persistHDPRepo();
@@ -394,43 +393,6 @@ public class UpgradeCatalog200 extends AbstractUpgradeCatalog {
   }
 
   /**
-   * Processes existing clusters to set it's security type as indicated by it's <code>cluster-env/security_enabled</code> flag.
-   * <p/>
-   * If the <code>cluster-env/security_enabled</code is set to "true", the cluster's security state
-   * will be set to "KERBEROS" since that is the only option. Else, the value will be set to  "NONE".
-   */
-  protected void setSecurityType() {
-    AmbariManagementController ambariManagementController = injector.getInstance(AmbariManagementController.class);
-    Clusters clusters = ambariManagementController.getClusters();
-
-    if (clusters != null) {
-      Map<String, Cluster> clusterMap = clusters.getClusters();
-
-      if (clusterMap != null) {
-        for (final Cluster cluster : clusterMap.values()) {
-          Config configClusterEnv = cluster.getDesiredConfigByType("cluster-env");
-
-          if (configClusterEnv != null) {
-            Map<String, String> properties = configClusterEnv.getProperties();
-
-            if (properties != null) {
-              String securityEnabled = properties.get("security_enabled");
-
-              if ("true".equalsIgnoreCase(securityEnabled)) {
-                // Currently the only security option is Kerberos. If security is enabled, blindly
-                // set security type to SecurityType.KERBEROS
-                cluster.setSecurityType(SecurityType.KERBEROS);
-              } else {
-                cluster.setSecurityType(SecurityType.NONE);
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-
-  /**
    * The RemoveNagiosRunnable is used to remove Nagios from the cluster. This
    * runnable is exepected to run inside of a transation so that if any of the
    * removals fails, Nagios is returned to a valid service state.

http://git-wip-us.apache.org/repos/asf/ambari/blob/d54457c2/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
index ceacbe9..61fa5a8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
@@ -235,9 +235,9 @@ public class UpgradeCatalog200Test {
     dbAccessor.createTable(eq("kerberos_principal_host"), capture(kerberosPrincipalHostCapture),
         eq("principal_name"), eq("host_name"));
     dbAccessor.addFKConstraint(eq("kerberos_principal_host"), eq("FK_krb_pr_host_hostname"),
-        eq("host_name"), eq("hosts"), eq("host_name"), eq(false));
+        eq("host_name"), eq("hosts"), eq("host_name"), eq(true), eq(false));
     dbAccessor.addFKConstraint(eq("kerberos_principal_host"), eq("FK_krb_pr_host_principalname"),
-        eq("principal_name"), eq("kerberos_principal"), eq("principal_name"), eq(false));
+        eq("principal_name"), eq("kerberos_principal"), eq("principal_name"), eq(true), eq(false));
 
     setViewInstancePropertyExpectations(dbAccessor, valueColumnCapture);
     setViewInstanceDataExpectations(dbAccessor, dataValueColumnCapture);
@@ -339,7 +339,6 @@ public class UpgradeCatalog200Test {
     Method updateHiveDatabaseType = UpgradeCatalog200.class.getDeclaredMethod("updateHiveDatabaseType");
     Method addNewConfigurationsFromXml = AbstractUpgradeCatalog.class.getDeclaredMethod
         ("addNewConfigurationsFromXml");
-    Method setSecurityType = UpgradeCatalog200.class.getDeclaredMethod("setSecurityType");
     Method updateTezConfiguration = UpgradeCatalog200.class.getDeclaredMethod("updateTezConfiguration");
     Method updateClusterEnvConfiguration = UpgradeCatalog200.class.getDeclaredMethod("updateClusterEnvConfiguration");
     Method updateConfigurationProperties = AbstractUpgradeCatalog.class.getDeclaredMethod
@@ -350,7 +349,6 @@ public class UpgradeCatalog200Test {
         .addMockedMethod(removeNagiosService)
         .addMockedMethod(updateHiveDatabaseType)
         .addMockedMethod(addNewConfigurationsFromXml)
-        .addMockedMethod(setSecurityType)
         .addMockedMethod(updateTezConfiguration)
         .addMockedMethod(updateConfigurationProperties)
         .addMockedMethod(updateClusterEnvConfiguration)
@@ -364,8 +362,6 @@ public class UpgradeCatalog200Test {
     
     upgradeCatalog.updateHiveDatabaseType();
     expectLastCall().once();
-    upgradeCatalog.setSecurityType();
-    expectLastCall().once();
 
     upgradeCatalog.updateTezConfiguration();
     expectLastCall().once();