Sfoglia il codice sorgente

AMBARI-3682: Invalid UI behaviour after editing Hive/Oozie database URL. (jaimin)

Jaimin Jetly 11 anni fa
parent
commit
fefb83c33b

+ 0 - 73
ambari-web/app/controllers/main/service/info/configs.js

@@ -1343,11 +1343,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   createSiteObj: function (siteName, tagName) {
     var siteObj = this.get('uiConfigs').filterProperty('filename', siteName + '.xml');
     var siteProperties = {};
-    if (siteName == 'oozie-site') {
-      siteObj = this.getOozieSiteObj(siteObj);
-    } else if (siteName == 'hive-site') {
-      siteObj = this.getHiveSiteObj(siteObj);
-    }
     siteObj.forEach(function (_siteObj) {
       siteProperties[_siteObj.name] = App.config.escapeXMLCharacters(_siteObj.value);
       this.recordHostOverride(_siteObj, siteName, tagName, this);
@@ -1355,74 +1350,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     return {"type": siteName, "tag": tagName, "properties": siteProperties};
   },
 
-  /**
-   * create site object for Oozie
-   * @param siteObj
-   * @return {Object}
-   */
-  getOozieSiteObj: function (siteObj) {
-    var jdbcUrl = siteObj.findProperty('name', 'oozie.service.JPAService.jdbc.url');
-    var jdbcDriver = siteObj.findProperty('name', 'oozie.service.JPAService.jdbc.driver');
-    var oozieDbName = siteObj.findProperty('name', 'oozie.db.schema.name');
-    var oozieDb = this.get('globalConfigs').findProperty('name', 'oozie_database').value;
-    // oozieHost is undefined if the database is derby
-    var oozieHost = (oozieDb == 'New Derby Database') ? '' : this.get('globalConfigs').findProperty('name', 'oozie_hostname').value;
-    var defaultJdbcUrl;
-
-    switch (oozieDb) {
-      case 'New Derby Database':
-        defaultJdbcUrl = "jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true";
-        jdbcDriver.set('value','org.apache.derby.jdbc.EmbeddedDriver');
-        break;
-      case 'Existing MySQL Database':
-        defaultJdbcUrl = "jdbc:mysql://" + oozieHost + "/" + oozieDbName;
-        jdbcDriver.set('value','com.mysql.jdbc.Driver');
-        break;
-      case 'Existing Oracle Database':
-        defaultJdbcUrl = "jdbc:oracle:thin:@//" + oozieHost + ":1521/" + oozieDbName;
-        jdbcDriver.set('value','oracle.jdbc.driver.OracleDriver');
-        break;
-    }
-    // in case the user upgraded from Ambari version <= 1.2.3, they will not have oozie_jdbc_connection_url global
-    var jdbcUrlInGlobal = this.get('globalConfigs').findProperty('name', 'oozie_jdbc_connection_url');
-    jdbcUrl.set('value', jdbcUrlInGlobal ? jdbcUrlInGlobal.value : defaultJdbcUrl);
-    return siteObj;
-  },
-
-  /**
-   * create site object for Hive
-   * @param siteObj
-   * @return {Object}
-   */
-  getHiveSiteObj: function (siteObj) {
-    var jdbcUrl = siteObj.findProperty('name', 'javax.jdo.option.ConnectionURL');
-    var jdbcDriver = siteObj.findProperty('name', 'javax.jdo.option.ConnectionDriverName');
-
-    var hiveDb = this.get('globalConfigs').findProperty('name', 'hive_database').value;
-    var hiveHost = this.get('globalConfigs').findProperty('name', 'hive_hostname').value;
-    var hiveDbName = this.get('globalConfigs').findProperty('name', 'hive_database_name').value;
-    var defaultJdbcUrl;
-
-    switch (hiveDb) {
-      case 'New MySQL Database':
-        defaultJdbcUrl = "jdbc:mysql://" + hiveHost + "/" + hiveDbName + "?createDatabaseIfNotExist=true";
-        jdbcDriver.set('value',  'com.mysql.jdbc.Driver');
-        break;
-      case 'Existing MySQL Database':
-        defaultJdbcUrl = "jdbc:mysql://" + hiveHost + "/" + hiveDbName + "?createDatabaseIfNotExist=true";
-        jdbcDriver.set('value',  'com.mysql.jdbc.Driver');
-        break;
-      case 'Existing Oracle Database':
-        defaultJdbcUrl = "jdbc:oracle:thin:@//" + hiveHost + ":1521/" + hiveDbName;
-        jdbcDriver.set('value','oracle.jdbc.driver.OracleDriver');
-        break;
-    }
-    // in case the user upgraded from Ambari <= 1.2.3, they will not have hive_jdbc_connection_url global
-    var jdbcUrlInGlobal = this.get('globalConfigs').findProperty('name', 'hive_jdbc_connection_url');
-    jdbcUrl.set('value', jdbcUrlInGlobal ? jdbcUrlInGlobal.value : defaultJdbcUrl);
-    return siteObj;
-  },
-
   /**
    * Set display names of the property from the puppet/global names
    * @param: displayNames: a field to be set with displayNames

+ 0 - 1
ambari-web/app/data/HDP2/global_properties.js

@@ -557,7 +557,6 @@ module.exports =
       "displayType": "masterHost",
       "isOverridable": false,
       "isVisible": true,
-      "isObserved": true,
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "index": 0

+ 0 - 15
ambari-web/app/data/global_properties.js

@@ -656,7 +656,6 @@ module.exports =
       "displayType": "masterHost",
       "isOverridable": false,
       "isVisible": true,
-      "isObserved": true,
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "index": 0
@@ -823,20 +822,6 @@ module.exports =
       "category": "Hive Metastore",
       "index": 4
     },
-    {
-      "id": "puppet var",
-      "name": "hive_jdbc_connection_url",
-      "displayName": "Database URL",
-      "value": "",
-      "defaultValue": "jdbc", // set to a 'jdbc' to not include this in initial error count
-      "description": "The JDBC connection URL to the database",
-      "displayType": "advanced",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "Hive Metastore",
-      "index": 7
-    },
     {
       "id": "puppet var",
       "name": "hive_metastore_port",

+ 27 - 24
ambari-web/app/views/wizard/controls_view.js

@@ -214,32 +214,35 @@ App.ServiceConfigRadioButtons = Ember.View.extend({
   categoryConfigsAll: null,
 
   onOptionsChange: function () {
-    var connectionUrl = this.get('connectionUrl');
-    if (connectionUrl) {
-      if (this.get('serviceConfig.serviceName') === 'HIVE') {
-        switch (this.get('serviceConfig.value')) {
-          case 'New MySQL Database':
-          case 'Existing MySQL Database':
-            connectionUrl.set('value', "jdbc:mysql://" + this.get('hostName') + "/" + this.get('databaseName') + "?createDatabaseIfNotExist=true");
-            break;
-          case 'Existing Oracle Database':
-            connectionUrl.set('value', "jdbc:oracle:thin:@//" + this.get('hostName') + ":1521/" + this.get('databaseName'));
-            break;
-        }
-      } else if (this.get('serviceConfig.serviceName') === 'OOZIE') {
-        switch (this.get('serviceConfig.value')) {
-          case 'New Derby Database':
-            connectionUrl.set('value', "jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true");
-            break;
-          case 'Existing MySQL Database':
-            connectionUrl.set('value', "jdbc:mysql://" + this.get('hostName') + "/" + this.get('databaseName'));
-            break;
-          case 'Existing Oracle Database':
-            connectionUrl.set('value', "jdbc:oracle:thin:@//" + this.get('hostName') + ":1521/" + this.get('databaseName'));
-            break;
+    // The following if condition will be satisfied only for installer wizard flow
+    if (this.get('configs').length) {
+      var connectionUrl = this.get('connectionUrl');
+      if (connectionUrl) {
+        if (this.get('serviceConfig.serviceName') === 'HIVE') {
+          switch (this.get('serviceConfig.value')) {
+            case 'New MySQL Database':
+            case 'Existing MySQL Database':
+              connectionUrl.set('value', "jdbc:mysql://" + this.get('hostName') + "/" + this.get('databaseName') + "?createDatabaseIfNotExist=true");
+              break;
+            case 'Existing Oracle Database':
+              connectionUrl.set('value', "jdbc:oracle:thin:@//" + this.get('hostName') + ":1521/" + this.get('databaseName'));
+              break;
+          }
+        } else if (this.get('serviceConfig.serviceName') === 'OOZIE') {
+          switch (this.get('serviceConfig.value')) {
+            case 'New Derby Database':
+              connectionUrl.set('value', "jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true");
+              break;
+            case 'Existing MySQL Database':
+              connectionUrl.set('value', "jdbc:mysql://" + this.get('hostName') + "/" + this.get('databaseName'));
+              break;
+            case 'Existing Oracle Database':
+              connectionUrl.set('value', "jdbc:oracle:thin:@//" + this.get('hostName') + ":1521/" + this.get('databaseName'));
+              break;
+          }
         }
+        connectionUrl.set('defaultValue', connectionUrl.get('value'));
       }
-      connectionUrl.set('defaultValue', connectionUrl.get('value'));
     }
   }.observes('databaseName', 'hostName', 'connectionUrl'),