ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jonathanhur...@apache.org
Subject [49/50] [abbrv] ambari git commit: AMBARI-21169. Service and Patch Upgrade Catalog Changes for 2.6.0 (dlysnichenko)
Date Thu, 10 Aug 2017 17:49:34 GMT
AMBARI-21169. Service and Patch Upgrade Catalog Changes for 2.6.0 (dlysnichenko)


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

Branch: refs/heads/branch-2.6
Commit: 2307c9d49946b37015087b132911a6d0f054ef1d
Parents: 6c5faee
Author: Lisnichenko Dmitro <dlysnichenko@hortonworks.com>
Authored: Thu Aug 10 19:09:57 2017 +0300
Committer: Lisnichenko Dmitro <dlysnichenko@hortonworks.com>
Committed: Thu Aug 10 19:09:57 2017 +0300

----------------------------------------------------------------------
 .../apache/ambari/server/orm/DBAccessor.java    |  45 +++
 .../ambari/server/orm/DBAccessorImpl.java       |  77 +++++
 .../server/orm/helpers/dbms/DbmsHelper.java     |  47 +++
 .../orm/helpers/dbms/GenericDbmsHelper.java     |  25 ++
 .../server/orm/helpers/dbms/H2Helper.java       |  29 ++
 .../server/orm/helpers/dbms/MySqlHelper.java    |  29 ++
 .../server/orm/helpers/dbms/OracleHelper.java   |  28 ++
 .../server/orm/helpers/dbms/PostgresHelper.java |  27 ++
 .../server/upgrade/SchemaUpgradeHelper.java     |   1 +
 .../server/upgrade/UpgradeCatalog260.java       | 318 +++++++++++++++++++
 10 files changed, 626 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/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 0313698..8f1a192 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
@@ -681,6 +681,51 @@ public interface DBAccessor {
        String targetTableName, DBColumnInfo targetColumn, String targetIDFieldName, Object
initialValue) throws SQLException;
 
   /**
+   * Copy column from {@code targetTable} by matching
+   * table keys {@code sourceIDColumnName} and {@code targetIDColumnName}
+   * and condition {@code sourceConditionFieldName} = {@code condition}
+   *
+   * @param sourceTableName          the source table name
+   * @param sourceColumn             the source column name
+   * @param sourceIDFieldName        the source id key filed name matched with {@code targetIDFieldName}
+   * @param targetTableName          the target table name
+   * @param targetColumn             the target column name
+   * @param targetIDFieldName        the target id key name matched with {@code sourceIDFieldName}
+   * @param sourceConditionFieldName source key column name which should match {@code condition}
+   * @param condition                value which should match {@code sourceConditionFieldName}
+   * @param initialValue             initial value for null-contained cells
+   * @throws SQLException
+   */
+  void copyColumnToAnotherTable(String sourceTableName, DBColumnInfo sourceColumn, String
sourceIDFieldName,
+                                String targetTableName, DBColumnInfo targetColumn, String
targetIDFieldName,
+                                String sourceConditionFieldName, String condition, Object
initialValue) throws SQLException;
+
+
+  /**
+   * Copy column from {@code targetTable} by matching
+   * table keys {@code sourceIDColumnName} and {@code targetIDColumnName}
+   * and condition {@code sourceConditionFieldName} = {@code condition}
+   *
+   * @param sourceTableName          the source table name
+   * @param sourceColumn             the source column name
+   * @param sourceIDFieldName1       the source id key filed name matched with {@code targetIDFieldName1}
+   * @param sourceIDFieldName2       the source id key filed name matched with {@code targetIDFieldName2}
+   * @param sourceIDFieldName3       the source id key filed name matched with {@code targetIDFieldName3}
+   * @param targetTableName          the target table name
+   * @param targetColumn             the target column name
+   * @param targetIDFieldName1       the target id key name matched with {@code sourceIDFieldName1}
+   * @param targetIDFieldName2       the target id key name matched with {@code sourceIDFieldName2}
+   * @param targetIDFieldName3       the target id key name matched with {@code sourceIDFieldName3}
+   * @param sourceConditionFieldName source key column name which should match {@code condition}
+   * @param condition                value which should match {@code sourceConditionFieldName}
+   * @param initialValue             initial value for null-contained cells
+   * @throws SQLException
+   */
+  void copyColumnToAnotherTable(String sourceTableName, DBColumnInfo sourceColumn, String
sourceIDFieldName1, String sourceIDFieldName2, String sourceIDFieldName3,
+                                String targetTableName, DBColumnInfo targetColumn, String
targetIDFieldName1, String targetIDFieldName2, String targetIDFieldName3,
+                                String sourceConditionFieldName, String condition, Object
initialValue) throws SQLException;
+
+  /**
    * Remove all rows from the table
    * @param tableName name of the table
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/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 38d60e9..d693809 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
@@ -1444,6 +1444,83 @@ public class DBAccessorImpl implements DBAccessor {
   }
 
   /**
+   * {@inheritDoc}
+   */
+  @Override
+  public void copyColumnToAnotherTable(String sourceTableName, DBColumnInfo sourceColumn,
String sourceIDFieldName,
+                                       String targetTableName, DBColumnInfo targetColumn,
String targetIDFieldName,
+                                       String sourceConditionFieldName, String condition,
Object initialValue) throws SQLException {
+
+    if (tableHasColumn(sourceTableName, sourceIDFieldName) &&
+        tableHasColumn(sourceTableName, sourceColumn.getName()) &&
+        tableHasColumn(sourceTableName, sourceConditionFieldName) &&
+        tableHasColumn(targetTableName, targetIDFieldName)
+        ) {
+
+      final String moveSQL = dbmsHelper.getCopyColumnToAnotherTableStatement(sourceTableName,
sourceColumn.getName(),
+          sourceIDFieldName, targetTableName, targetColumn.getName(), targetIDFieldName,
sourceConditionFieldName, condition);
+      final boolean isTargetColumnNullable = targetColumn.isNullable();
+
+      targetColumn.setNullable(true);  // setting column nullable by default to move rows
with null
+
+      addColumn(targetTableName, targetColumn);
+      executeUpdate(moveSQL, false);
+
+      if (initialValue != null) {
+        String updateSQL = dbmsHelper.getColumnUpdateStatementWhereColumnIsNull(convertObjectName(targetTableName),
+            convertObjectName(targetColumn.getName()), convertObjectName(targetColumn.getName()));
+
+        executePreparedUpdate(updateSQL, initialValue);
+      }
+
+      if (!isTargetColumnNullable) {
+        setColumnNullable(targetTableName, targetColumn.getName(), false);
+      }
+    }
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public void copyColumnToAnotherTable(String sourceTableName, DBColumnInfo sourceColumn,
String sourceIDFieldName1, String sourceIDFieldName2, String sourceIDFieldName3,
+                                       String targetTableName, DBColumnInfo targetColumn,
String targetIDFieldName1, String targetIDFieldName2, String targetIDFieldName3,
+                                       String sourceConditionFieldName, String condition,
Object initialValue) throws SQLException {
+
+    if (tableHasColumn(sourceTableName, sourceIDFieldName1) &&
+        tableHasColumn(sourceTableName, sourceIDFieldName2) &&
+        tableHasColumn(sourceTableName, sourceIDFieldName3) &&
+        tableHasColumn(sourceTableName, sourceColumn.getName()) &&
+        tableHasColumn(sourceTableName, sourceConditionFieldName) &&
+        tableHasColumn(targetTableName, targetIDFieldName1) &&
+        tableHasColumn(targetTableName, targetIDFieldName2) &&
+        tableHasColumn(targetTableName, targetIDFieldName3)
+        ) {
+
+      final String moveSQL = dbmsHelper.getCopyColumnToAnotherTableStatement(sourceTableName,
sourceColumn.getName(),
+          sourceIDFieldName1, sourceIDFieldName2, sourceIDFieldName3, targetTableName, targetColumn.getName(),
+          targetIDFieldName1, targetIDFieldName2, targetIDFieldName3, sourceConditionFieldName,
condition);
+      final boolean isTargetColumnNullable = targetColumn.isNullable();
+
+      targetColumn.setNullable(true);  // setting column nullable by default to move rows
with null
+
+      addColumn(targetTableName, targetColumn);
+      executeUpdate(moveSQL, false);
+
+      if (initialValue != null) {
+        String updateSQL = dbmsHelper.getColumnUpdateStatementWhereColumnIsNull(convertObjectName(targetTableName),
+            convertObjectName(targetColumn.getName()), convertObjectName(targetColumn.getName()));
+
+        executePreparedUpdate(updateSQL, initialValue);
+      }
+
+      if (!isTargetColumnNullable) {
+        setColumnNullable(targetTableName, targetColumn.getName(), false);
+      }
+    }
+  }
+
+  /**
    * Remove all rows from the table
    *
    * @param tableName name of the table

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/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 00b02f1..603c33b 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
@@ -159,6 +159,53 @@ public interface DbmsHelper {
                                               String targetTable, String targetColumnName,
String targetIDColumnName);
 
   /**
+   * Get's the {@code UPDATE} statement for {@code sourceTable} for copy column from {@code
targetTable} by matching
+   * table keys {@code sourceIDColumnName} and {@code targetIDColumnName}
+   * and condition {@code sourceConditionFieldName} = {@code condition}
+   *
+   * @param sourceTable              the source table name
+   * @param sourceColumnName         the source column name
+   * @param sourceIDColumnName       source key id column which would be used to match right
rows for {@code targetTable}
+   * @param targetTable              the destination table name
+   * @param targetColumnName         the destination column name
+   * @param targetIDColumnName       destination key id column name which should match {@code
sourceIDColumnName}
+   * @param sourceConditionFieldName source key column name which should match {@code condition}
+   * @param condition                value which should match {@code sourceConditionFieldName}
+   * @return
+   */
+  String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                              String sourceIDColumnName, String targetTable,
+                                              String targetColumnName, String targetIDColumnName,
+                                              String sourceConditionFieldName, String condition);
+
+  /**
+   * Get's the {@code UPDATE} statement for {@code sourceTable} for copy column from {@code
targetTable} by matching
+   * table keys {@code sourceIDColumnName} and {@code targetIDColumnName}
+   * and condition {@code sourceConditionFieldName} = {@code condition}
+   *
+   * @param sourceTable              the source table name
+   * @param sourceColumnName         the source column name
+   * @param sourceIDColumnName1      source key id column which would be used to math right
rows for {@code targetTable}
+   * @param sourceIDColumnName2      source key id column which would be used to math right
rows for {@code targetTable}
+   * @param sourceIDColumnName3      source key id column which would be used to math right
rows for {@code targetTable}
+   * @param targetTable              the destination table name
+   * @param targetColumnName         the destination column name
+   * @param targetIDColumnName1      destination key id column name which should match {@code
sourceIDColumnName1}
+   * @param targetIDColumnName2      destination key id column name which should match {@code
sourceIDColumnName1}
+   * @param targetIDColumnName3      destination key id column name which should match {@code
sourceIDColumnName1}
+   * @param sourceConditionFieldName source key column name which should match {@code condition}
+   * @param condition                value which should match {@code sourceConditionFieldName}
+   * @return
+   */
+  String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                              String sourceIDColumnName1, String sourceIDColumnName2,
+                                              String sourceIDColumnName3,
+                                              String targetTable, String targetColumnName,
+                                              String targetIDColumnName1, String targetIDColumnName2,
+                                              String targetIDColumnName3,
+                                              String sourceConditionFieldName, String condition);
+
+  /**
    * Gets whether the database platform supports adding contraints after the
    * {@code NULL} constraint. Some database, such as Oracle, don't allow this.
    * Unfortunately, EclipsLink hard codes the order of constraints.

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/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 11cbcf9..34358a9 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
@@ -86,6 +86,31 @@ public class GenericDbmsHelper implements DbmsHelper {
     throw new UnsupportedOperationException("Column copy is not supported for generic DB");
   }
 
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName, String targetTable,
+                                                     String targetColumnName, String targetIDColumnName,
+                                                     String sourceConditionFieldName, String
condition) {
+    throw new UnsupportedOperationException("Column copy is not supported for generic DB");
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName1, String sourceIDColumnName2,
+                                                     String sourceIDColumnName3,
+                                                     String targetTable, String targetColumnName,
+                                                     String targetIDColumnName1, String targetIDColumnName2,
+                                                     String targetIDColumnName3,
+                                                     String sourceConditionFieldName, String
condition) {
+    throw new UnsupportedOperationException("Column copy is not supported for generic DB");
+  }
+
   public StringBuilder writeAlterTableClause(StringBuilder builder, String tableName) {
     builder.append("ALTER TABLE ").append(tableName).append(" ");
     return builder;

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java
b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java
index 100c865..602117a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java
@@ -81,4 +81,33 @@ public class H2Helper extends GenericDbmsHelper {
     return String.format("UPDATE %1$s a SET %3$s = (SELECT b.%4$s FROM %2$s b WHERE b.%6$s
= a.%5$s LIMIT 1)",
       targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName, sourceIDColumnName);
   }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName1, String sourceIDColumnName2,
+                                                     String sourceIDColumnName3,
+                                                     String targetTable, String targetColumnName,
+                                                     String targetIDColumnName1, String targetIDColumnName2,
+                                                     String targetIDColumnName3,
+                                                     String sourceConditionFieldName, String
condition) {
+    return String.format("UPDATE %1$s a SET %3$s = (SELECT b.%4$s FROM %2$s b WHERE b.%8$s
= a.%5$s AND b.%9$s = a.%6$s AND b.%10$s = a.%7$s AND b.%11$s = '%12$s'  LIMIT 1)",
+        targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName1,
targetIDColumnName2, targetIDColumnName3,
+        sourceIDColumnName1, sourceIDColumnName2, sourceIDColumnName3, sourceConditionFieldName,
condition);
+  }
+
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName, String targetTable,
+                                                     String targetColumnName, String targetIDColumnName,
+                                                     String sourceConditionFieldName, String
condition) {
+    return String.format("UPDATE %1$s a SET %3$s = (SELECT b.%4$s FROM %2$s b WHERE b.%6$s
= a.%5$s AND b.%7$s = '%8$s'  LIMIT 1)",
+        targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName,
sourceIDColumnName, sourceConditionFieldName, condition);
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java
b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java
index ad26520..2df4547 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java
@@ -105,4 +105,33 @@ public class MySqlHelper extends GenericDbmsHelper {
       targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName, sourceIDColumnName);
   }
 
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName, String targetTable,
+                                                     String targetColumnName, String targetIDColumnName,
+                                                     String sourceConditionFieldName, String
condition) {
+
+    return String.format("UPDATE %1$s AS a INNER JOIN %2$s AS b ON a.%5$s = b.%6$s AND b.%7$s
= '%8$s' SET a.%3$s = b.%4$s",
+        targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName,
sourceIDColumnName, sourceConditionFieldName, condition);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName1, String sourceIDColumnName2,
+                                                     String sourceIDColumnName3,
+                                                     String targetTable, String targetColumnName,
+                                                     String targetIDColumnName1, String targetIDColumnName2,
+                                                     String targetIDColumnName3,
+                                                     String sourceConditionFieldName, String
condition) {
+    return String.format("UPDATE %1$s AS a INNER JOIN %2$s AS b ON a.%5$s = b.%8$s AND a.%6$s
= b.%9$s AND a.%7$s = b.%10$s AND b.%11$s = '%12$s' SET a.%3$s = b.%4$s",
+        targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName1,
targetIDColumnName2, targetIDColumnName3,
+        sourceIDColumnName1, sourceIDColumnName2, sourceIDColumnName3, sourceConditionFieldName,
condition);
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java
b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java
index 73356d1..fa8ba02 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java
@@ -91,4 +91,32 @@ public class OracleHelper extends GenericDbmsHelper {
     return String.format("UPDATE %1$s a SET (a.%3$s) = (SELECT b.%4$s FROM %2$s b WHERE b.%6$s
= a.%5$s and ROWNUM < 2)",
       targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName, sourceIDColumnName);
   }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName, String targetTable,
+                                                     String targetColumnName, String targetIDColumnName,
+                                                     String sourceConditionFieldName, String
condition) {
+    return String.format("UPDATE %1$s a SET (a.%3$s) = (SELECT b.%4$s FROM %2$s b WHERE b.%6$s
= a.%5$s AND b.%7$s = '%8$s' AND ROWNUM < 2)",
+        targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName,
sourceIDColumnName, sourceConditionFieldName, condition);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName1, String sourceIDColumnName2,
+                                                     String sourceIDColumnName3,
+                                                     String targetTable, String targetColumnName,
+                                                     String targetIDColumnName1, String targetIDColumnName2,
+                                                     String targetIDColumnName3,
+                                                     String sourceConditionFieldName, String
condition) {
+    return String.format("UPDATE %1$s a SET (a.%3$s) = (SELECT b.%4$s FROM %2$s b WHERE b.%8$s
= a.%5$s AND b.%9$s = a.%6$s AND b.%10$s = a.%7$s AND b.%11$s = '%12$s' AND ROWNUM < 2)",
+        targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName1,
targetIDColumnName2, targetIDColumnName3,
+        sourceIDColumnName1, sourceIDColumnName2, sourceIDColumnName3, sourceConditionFieldName,
condition);
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java
b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java
index 46d7315..b0aac45 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java
@@ -55,6 +55,33 @@ public class PostgresHelper extends GenericDbmsHelper {
       targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName, sourceIDColumnName);
   }
 
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName, String targetTable,
+                                                     String targetColumnName, String targetIDColumnName,
+                                                     String sourceConditionFieldName, String
condition) {
+    return String.format("UPDATE %1$s AS a SET %3$s = b.%4$s FROM %2$s AS b WHERE a.%5$s
= b.%6$s AND b.%7$s = '%8$s'",
+        targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName,
sourceIDColumnName, sourceConditionFieldName, condition);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getCopyColumnToAnotherTableStatement(String sourceTable, String sourceColumnName,
+                                                     String sourceIDColumnName1, String sourceIDColumnName2,
+                                                     String sourceIDColumnName3,
+                                                     String targetTable, String targetColumnName,
+                                                     String targetIDColumnName1, String targetIDColumnName2,
+                                                     String targetIDColumnName3,
+                                                     String sourceConditionFieldName, String
condition) {
+    return String.format("UPDATE %1$s AS a SET %3$s = b.%4$s FROM %2$s AS b WHERE a.%5$s
= b.%8$s AND a.%6$s = b.%9$s AND a.%7$s = b.%10$s AND b.%11$s = '%12$s'",
+        targetTable, sourceTable, targetColumnName, sourceColumnName, targetIDColumnName1,
targetIDColumnName2, targetIDColumnName3,
+        sourceIDColumnName1, sourceIDColumnName2, sourceIDColumnName3, sourceConditionFieldName,
condition);
+  }
 
   @Override
   public StringBuilder writeSetNullableString(StringBuilder builder,

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
index 35e5b10..961c4f8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
@@ -180,6 +180,7 @@ public class SchemaUpgradeHelper {
         Multibinder.newSetBinder(binder(), UpgradeCatalog.class);
       catalogBinder.addBinding().to(UpgradeCatalog251.class);
       catalogBinder.addBinding().to(UpgradeCatalog252.class);
+      catalogBinder.addBinding().to(UpgradeCatalog260.class);
       catalogBinder.addBinding().to(UpdateAlertScriptPaths.class);
       catalogBinder.addBinding().to(FinalUpgradeCatalog.class);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/2307c9d4/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
new file mode 100644
index 0000000..d14021b
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
@@ -0,0 +1,318 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.upgrade;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.orm.DBAccessor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+/**
+ * The {@link org.apache.ambari.server.upgrade.UpgradeCatalog260} upgrades Ambari from 2.5.2
to 2.6.0.
+ */
+public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
+
+  private static final String CLUSTER_CONFIG_MAPPING_TABLE = "clusterconfigmapping";
+  private static final String CLUSTER_VERSION_TABLE = "cluster_version";
+  private static final String CLUSTER_ID_COLUMN = "cluster_id";
+  private static final String STATE_COLUMN = "state";
+  private static final String CREATE_TIMESTAMP_COLUMN = "create_timestamp";
+  private static final String VERSION_TAG_COLUMN = "version_tag";
+  private static final String TYPE_NAME_COLUMN = "type_name";
+
+  private static final String CLUSTER_CONFIG_TABLE = "clusterconfig";
+  private static final String SELECTED_COLUMN = "selected";
+  private static final String SELECTED_TIMESTAMP_COLUMN = "selected_timestamp";
+
+  private static final String SERVICE_COMPONENT_DESIRED_STATE_TABLE = "servicecomponentdesiredstate";
+  private static final String DESIRED_STACK_ID_COLUMN = "desired_stack_id";
+  private static final String DESIRED_VERSION_COLUMN = "desired_version";
+  private static final String DESIRED_REPO_VERSION_ID_COLUMN = "desired_repo_version_id";
+  private static final String REPO_STATE_COLUMN = "repo_state";
+  private static final String FK_SCDS_DESIRED_STACK_ID = "FK_scds_desired_stack_id";
+  private static final String FK_SCDS_DESIRED_REPO_ID = "FK_scds_desired_repo_id";
+
+  private static final String REPO_VERSION_TABLE = "repo_version";
+  private static final String REPO_VERSION_ID_COLUMN = "repo_version_id";
+
+  private static final String HOST_COMPONENT_DESIRED_STATE_TABLE = "hostcomponentdesiredstate";
+  private static final String FK_HCDS_DESIRED_STACK_ID = "FK_hcds_desired_stack_id";
+
+  private static final String HOST_COMPONENT_STATE_TABLE = "hostcomponentstate";
+  private static final String CURRENT_STACK_ID_COLUMN = "current_stack_id";
+  private static final String FK_HCS_CURRENT_STACK_ID = "FK_hcs_current_stack_id";
+
+  private static final String HOST_VERSION_TABLE = "host_version";
+  private static final String UQ_HOST_REPO = "UQ_host_repo";
+  private static final String HOST_ID_COLUMN = "host_id";
+
+  private static final String SERVICE_DESIRED_STATE_TABLE = "servicedesiredstate";
+  private static final String FK_SDS_DESIRED_STACK_ID = "FK_sds_desired_stack_id";
+  private static final String FK_REPO_VERSION_ID = "FK_repo_version_id";
+
+  private static final String UPGRADE_TABLE = "upgrade";
+  private static final String FROM_REPO_VERSION_ID_COLUMN = "from_repo_version_id";
+  private static final String TO_REPO_VERSION_ID_COLUMN = "to_repo_version_id";
+  private static final String ORCHESTRATION_COLUMN = "orchestration";
+  private static final String FK_UPGRADE_FROM_REPO_ID = "FK_upgrade_from_repo_id";
+  private static final String FK_UPGRADE_TO_REPO_ID = "FK_upgrade_to_repo_id";
+  private static final String FK_UPGRADE_REPO_VERSION_ID = "FK_upgrade_repo_version_id";
+
+  private static final String SERVICE_COMPONENT_HISTORY_TABLE = "servicecomponent_history";
+  private static final String UPGRADE_HISTORY_TABLE = "upgrade_history";
+  private static final String ID_COLUMN = "id";
+  private static final String UPGRADE_ID_COLUMN = "upgrade_id";
+  private static final String SERVICE_NAME_COLUMN = "service_name";
+  private static final String COMPONENT_NAME_COLUMN = "component_name";
+  private static final String TARGET_REPO_VERSION_ID_COLUMN = "target_repo_version_id";
+  private static final String PK_UPGRADE_HIST = "PK_upgrade_hist";
+  private static final String FK_UPGRADE_HIST_UPGRADE_ID = "FK_upgrade_hist_upgrade_id";
+  private static final String FK_UPGRADE_HIST_FROM_REPO = "FK_upgrade_hist_from_repo";
+  private static final String FK_UPGRADE_HIST_TARGET_REPO = "FK_upgrade_hist_target_repo";
+  private static final String UQ_UPGRADE_HIST = "UQ_upgrade_hist";
+
+  /**
+   * Logger.
+   */
+  private static final Logger LOG = LoggerFactory.getLogger(UpgradeCatalog260.class);
+  public static final String STANDARD = "STANDARD";
+  public static final String NOT_REQUIRED = "NOT_REQUIRED";
+  public static final String CURRENT = "CURRENT";
+  public static final String SELECTED = "1";
+
+
+  /**
+   * Constructor.
+   *
+   * @param injector
+   */
+  @Inject
+  public UpgradeCatalog260(Injector injector) {
+    super(injector);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getSourceVersion() {
+    return "2.5.2";
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getTargetVersion() {
+    return "2.6.0";
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  protected void executeDDLUpdates() throws AmbariException, SQLException {
+    updateServiceComponentDesiredStateTable();
+    updateServiceDesiredStateTable();
+    addSelectedCollumsToClusterconfigTable();
+    updateHostComponentDesiredStateTable();
+    updateHostComponentStateTable();
+    updateUpgradeTable();
+    createUpgradeHistoryTable();
+    dropStaleTables();
+
+
+  }
+
+  private void createUpgradeHistoryTable() throws SQLException {
+    List<DBAccessor.DBColumnInfo> columns = new ArrayList<DBAccessor.DBColumnInfo>();
+
+    columns.add(new DBAccessor.DBColumnInfo(ID_COLUMN, Long.class, null, null, false));
+    columns.add(new DBAccessor.DBColumnInfo(UPGRADE_ID_COLUMN, Long.class, null, null, false));
+    columns.add(new DBAccessor.DBColumnInfo(SERVICE_NAME_COLUMN, String.class, 255, null,
false));
+    columns.add(new DBAccessor.DBColumnInfo(COMPONENT_NAME_COLUMN, String.class, 255, null,
false));
+    columns.add(new DBAccessor.DBColumnInfo(FROM_REPO_VERSION_ID_COLUMN, Long.class, null,
null, false));
+    columns.add(new DBAccessor.DBColumnInfo(TARGET_REPO_VERSION_ID_COLUMN, Long.class, null,
null, false));
+    dbAccessor.createTable(UPGRADE_HISTORY_TABLE, columns);
+
+    dbAccessor.addPKConstraint(UPGRADE_HISTORY_TABLE, PK_UPGRADE_HIST, ID_COLUMN);
+
+    dbAccessor.addFKConstraint(UPGRADE_HISTORY_TABLE, FK_UPGRADE_HIST_UPGRADE_ID, UPGRADE_ID_COLUMN,
UPGRADE_TABLE, UPGRADE_ID_COLUMN, false);
+    dbAccessor.addFKConstraint(UPGRADE_HISTORY_TABLE, FK_UPGRADE_HIST_FROM_REPO, FROM_REPO_VERSION_ID_COLUMN,
REPO_VERSION_TABLE, REPO_VERSION_ID_COLUMN, false);
+    dbAccessor.addFKConstraint(UPGRADE_HISTORY_TABLE, FK_UPGRADE_HIST_TARGET_REPO, TARGET_REPO_VERSION_ID_COLUMN,
REPO_VERSION_TABLE, REPO_VERSION_ID_COLUMN, false);
+    dbAccessor.addUniqueConstraint(UPGRADE_HISTORY_TABLE, UQ_UPGRADE_HIST, UPGRADE_ID_COLUMN,
COMPONENT_NAME_COLUMN, SERVICE_NAME_COLUMN);
+
+    addSequence("upgrade_history_id_seq", 0L, false);
+  }
+
+  /**
+   * Updates {@value #UPGRADE_TABLE} table.
+   * clear {@value #UPGRADE_TABLE} table
+   * Removes {@value #FROM_REPO_VERSION_ID_COLUMN} column.
+   * Removes {@value #TO_REPO_VERSION_ID_COLUMN} column.
+   * Adds the {@value #ORCHESTRATION_COLUMN} column.
+   * Adds the {@value #REPO_VERSION_ID_COLUMN} column.
+   * Removes {@value #FK_UPGRADE_FROM_REPO_ID} foreign key.
+   * Removes {@value #FK_UPGRADE_TO_REPO_ID} foreign key.
+   * adds {@value #FK_REPO_VERSION_ID} foreign key.
+   *
+   * @throws java.sql.SQLException
+   */
+  private void updateUpgradeTable() throws SQLException {
+    dbAccessor.clearTable(UPGRADE_TABLE);
+    dbAccessor.dropFKConstraint(UPGRADE_TABLE, FK_UPGRADE_FROM_REPO_ID);
+    dbAccessor.dropFKConstraint(UPGRADE_TABLE, FK_UPGRADE_TO_REPO_ID);
+    dbAccessor.dropColumn(UPGRADE_TABLE, FROM_REPO_VERSION_ID_COLUMN);
+    dbAccessor.dropColumn(UPGRADE_TABLE, TO_REPO_VERSION_ID_COLUMN);
+
+    dbAccessor.addColumn(UPGRADE_TABLE,
+        new DBAccessor.DBColumnInfo(REPO_VERSION_ID_COLUMN, Long.class, null, null, false));
+    dbAccessor.addColumn(UPGRADE_TABLE,
+        new DBAccessor.DBColumnInfo(ORCHESTRATION_COLUMN, String.class, 255, STANDARD, false));
+
+    dbAccessor.addFKConstraint(UPGRADE_TABLE, FK_UPGRADE_REPO_VERSION_ID, REPO_VERSION_ID_COLUMN,
REPO_VERSION_TABLE, REPO_VERSION_ID_COLUMN, false);
+  }
+
+  /**
+   * Updates {@value #SERVICE_DESIRED_STATE_TABLE} table.
+   * Removes {@value #DESIRED_STACK_ID_COLUMN} column.
+   * Adds the {@value #DESIRED_REPO_VERSION_ID_COLUMN} column.
+   * Removes {@value #FK_SDS_DESIRED_STACK_ID} foreign key.
+   * adds {@value #FK_REPO_VERSION_ID} foreign key.
+   *
+   * @throws java.sql.SQLException
+   */
+  private void updateServiceDesiredStateTable() throws SQLException {
+    DBAccessor.DBColumnInfo desiredRepoVersionIDColumnInfo = new DBAccessor.DBColumnInfo(DESIRED_REPO_VERSION_ID_COLUMN,
Long.class, null, null, false);
+    DBAccessor.DBColumnInfo RepoVersionIDColumnInfo = new DBAccessor.DBColumnInfo(REPO_VERSION_ID_COLUMN,
Long.class, null, null, false);
+
+
+    dbAccessor.copyColumnToAnotherTable(CLUSTER_VERSION_TABLE, RepoVersionIDColumnInfo, CLUSTER_ID_COLUMN,
SERVICE_DESIRED_STATE_TABLE, desiredRepoVersionIDColumnInfo, CLUSTER_ID_COLUMN, STATE_COLUMN,
CURRENT, null);
+
+    dbAccessor.addFKConstraint(SERVICE_DESIRED_STATE_TABLE, FK_REPO_VERSION_ID, DESIRED_REPO_VERSION_ID_COLUMN,
REPO_VERSION_TABLE, REPO_VERSION_ID_COLUMN, false);
+    dbAccessor.dropFKConstraint(SERVICE_DESIRED_STATE_TABLE, FK_SDS_DESIRED_STACK_ID);
+    dbAccessor.dropColumn(SERVICE_DESIRED_STATE_TABLE, DESIRED_STACK_ID_COLUMN);
+  }
+
+  /**
+   * drop {@value #CLUSTER_CONFIG_MAPPING_TABLE} and {@value #CLUSTER_VERSION_TABLE} tables.
+   *
+   * @throws java.sql.SQLException
+   */
+  private void dropStaleTables() throws SQLException {
+    dbAccessor.dropTable(CLUSTER_CONFIG_MAPPING_TABLE);
+    dbAccessor.dropTable(CLUSTER_VERSION_TABLE);
+    dbAccessor.dropTable(SERVICE_COMPONENT_HISTORY_TABLE);
+  }
+
+  /**
+   * Adds the {@value #SELECTED_COLUMN} and {@value #SELECTED_TIMESTAMP_COLUMN} columns to
the
+   * {@value #CLUSTER_CONFIG_TABLE} table.
+   *
+   * @throws java.sql.SQLException
+   */
+  private void addSelectedCollumsToClusterconfigTable() throws SQLException {
+    DBAccessor.DBColumnInfo selectedColumnInfo = new DBAccessor.DBColumnInfo(SELECTED_COLUMN,
Short.class, null, 0, false);
+    DBAccessor.DBColumnInfo selectedmappingColumnInfo = new DBAccessor.DBColumnInfo(SELECTED_COLUMN,
Integer.class, null, 0, false);
+    DBAccessor.DBColumnInfo selectedTimestampColumnInfo = new DBAccessor.DBColumnInfo(SELECTED_TIMESTAMP_COLUMN,
Long.class, null, 0, false);
+    DBAccessor.DBColumnInfo CreateTimestampColumnInfo = new DBAccessor.DBColumnInfo(CREATE_TIMESTAMP_COLUMN,
Long.class, null, null, false);
+    dbAccessor.copyColumnToAnotherTable(CLUSTER_CONFIG_MAPPING_TABLE, selectedmappingColumnInfo,
+        CLUSTER_ID_COLUMN, TYPE_NAME_COLUMN, VERSION_TAG_COLUMN, CLUSTER_CONFIG_TABLE, selectedColumnInfo,
+        CLUSTER_ID_COLUMN, TYPE_NAME_COLUMN, VERSION_TAG_COLUMN, SELECTED_COLUMN, SELECTED,
0);
+
+    dbAccessor.copyColumnToAnotherTable(CLUSTER_CONFIG_MAPPING_TABLE, CreateTimestampColumnInfo,
+        CLUSTER_ID_COLUMN, TYPE_NAME_COLUMN, VERSION_TAG_COLUMN, CLUSTER_CONFIG_TABLE, selectedTimestampColumnInfo,
+        CLUSTER_ID_COLUMN, TYPE_NAME_COLUMN, VERSION_TAG_COLUMN, SELECTED_COLUMN, SELECTED,
0);
+  }
+
+
+  /**
+   * Updates {@value #SERVICE_COMPONENT_DESIRED_STATE_TABLE} table.
+   * Removes {@value #DESIRED_VERSION_COLUMN},{@value #DESIRED_STACK_ID_COLUMN} columns.
+   * Adds the {@value #DESIRED_REPO_VERSION_ID_COLUMN},{@value #REPO_STATE_COLUMN} columns.
+   * Removes {@value #FK_SCDS_DESIRED_STACK_ID} foreign key.
+   * adds {@value #FK_SCDS_DESIRED_REPO_ID} foreign key.
+   *
+   * @throws java.sql.SQLException
+   */
+  private void updateServiceComponentDesiredStateTable() throws SQLException {
+    DBAccessor.DBColumnInfo desiredRepoVersionIDColumnInfo = new DBAccessor.DBColumnInfo(DESIRED_REPO_VERSION_ID_COLUMN,
Long.class, null, null, false);
+    DBAccessor.DBColumnInfo RepoVersionIDColumnInfo = new DBAccessor.DBColumnInfo(REPO_VERSION_ID_COLUMN,
Long.class, null, null, false);
+
+
+    dbAccessor.copyColumnToAnotherTable(CLUSTER_VERSION_TABLE, RepoVersionIDColumnInfo, CLUSTER_ID_COLUMN,
SERVICE_COMPONENT_DESIRED_STATE_TABLE, desiredRepoVersionIDColumnInfo, CLUSTER_ID_COLUMN,
STATE_COLUMN, CURRENT, null);
+
+    dbAccessor.addColumn(SERVICE_COMPONENT_DESIRED_STATE_TABLE,
+        new DBAccessor.DBColumnInfo(REPO_STATE_COLUMN, String.class, 255, CURRENT, false));
+    dbAccessor.alterColumn(SERVICE_COMPONENT_DESIRED_STATE_TABLE,
+        new DBAccessor.DBColumnInfo(REPO_STATE_COLUMN, String.class, 255, NOT_REQUIRED, false));
+
+    dbAccessor.addFKConstraint(SERVICE_COMPONENT_DESIRED_STATE_TABLE, FK_SCDS_DESIRED_REPO_ID,
DESIRED_REPO_VERSION_ID_COLUMN, REPO_VERSION_TABLE, REPO_VERSION_ID_COLUMN, false);
+
+    dbAccessor.dropFKConstraint(SERVICE_COMPONENT_DESIRED_STATE_TABLE, FK_SCDS_DESIRED_STACK_ID);
+    dbAccessor.dropColumn(SERVICE_COMPONENT_DESIRED_STATE_TABLE, DESIRED_STACK_ID_COLUMN);
+    dbAccessor.dropColumn(SERVICE_COMPONENT_DESIRED_STATE_TABLE, DESIRED_VERSION_COLUMN);
+  }
+
+  /**
+   * Updates {@value #HOST_COMPONENT_DESIRED_STATE_TABLE} table.
+   * Removes {@value #DESIRED_STACK_ID_COLUMN} column.
+   * Removes {@value #FK_HCDS_DESIRED_STACK_ID} foreign key.
+   *
+   * @throws java.sql.SQLException
+   */
+  private void updateHostComponentDesiredStateTable() throws SQLException {
+    dbAccessor.dropFKConstraint(HOST_COMPONENT_DESIRED_STATE_TABLE, FK_HCDS_DESIRED_STACK_ID);
+    dbAccessor.dropColumn(HOST_COMPONENT_DESIRED_STATE_TABLE, DESIRED_STACK_ID_COLUMN);
+  }
+
+  /**
+   * Updates {@value #HOST_COMPONENT_STATE_TABLE} table.
+   * Removes {@value #CURRENT_STACK_ID_COLUMN} column.
+   * Removes {@value #FK_HCS_CURRENT_STACK_ID} foreign key.
+   *
+   * @throws java.sql.SQLException
+   */
+  private void updateHostComponentStateTable() throws SQLException {
+    dbAccessor.dropFKConstraint(HOST_COMPONENT_STATE_TABLE, FK_HCS_CURRENT_STACK_ID);
+    dbAccessor.dropColumn(HOST_COMPONENT_STATE_TABLE, CURRENT_STACK_ID_COLUMN);
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  protected void executePreDMLUpdates() throws AmbariException, SQLException {
+
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  protected void executeDMLUpdates() throws AmbariException, SQLException {
+    addNewConfigurationsFromXml();
+  }
+}


Mime
View raw message