Repository: ambari Updated Branches: refs/heads/branch-2.0.0 dda261fa9 -> 01e6dd3b9
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/01e6dd3b Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/01e6dd3b Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/01e6dd3b Branch: refs/heads/branch-2.0.0 Commit: 01e6dd3b940b6e6dbec13c95727b2ce00ba85066 Parents: dda261f Author: Vitaly Brodetskyi <[email protected]> Authored: Mon Mar 2 20:05:56 2015 +0200 Committer: Vitaly Brodetskyi <[email protected]> Committed: Mon Mar 2 20:05:56 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/01e6dd3b/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/01e6dd3b/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/01e6dd3b/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/01e6dd3b/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/01e6dd3b/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 3a3e3bb..4f803e6 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 @@ -298,8 +298,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 ---------------------------------------------------- @@ -313,7 +313,6 @@ public class UpgradeCatalog200 extends AbstractUpgradeCatalog { removeNagiosService(); addNewConfigurationsFromXml(); updateHiveDatabaseType(); - setSecurityType(); updateTezConfiguration(); addMissingConfigs(); persistHDPRepo(); @@ -395,43 +394,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/01e6dd3b/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 6db805f..a2f9fe7 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 @@ -237,9 +237,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); @@ -341,7 +341,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 @@ -352,7 +351,6 @@ public class UpgradeCatalog200Test { .addMockedMethod(removeNagiosService) .addMockedMethod(updateHiveDatabaseType) .addMockedMethod(addNewConfigurationsFromXml) - .addMockedMethod(setSecurityType) .addMockedMethod(updateTezConfiguration) .addMockedMethod(updateConfigurationProperties) .addMockedMethod(updateClusterEnvConfiguration) @@ -366,8 +364,6 @@ public class UpgradeCatalog200Test { upgradeCatalog.updateHiveDatabaseType(); expectLastCall().once(); - upgradeCatalog.setSecurityType(); - expectLastCall().once(); upgradeCatalog.updateTezConfiguration(); expectLastCall().once();
