summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYusaku Sako <yusaku@apache.org>2013-06-01 04:49:41 +0000
committerYusaku Sako <yusaku@apache.org>2013-06-01 04:49:41 +0000
commite7c26f5c16df3c6163d825a042c7054cf46ff9f2 (patch)
treeeeb99f02e31904b0c5ecf435465554193b0bc5a4
parentdfd4a78be591ef21ee49301502c86650860cad89 (diff)
AMBARI-2249. Allow users to edit Hive Metastore and Oozie database post-install. (yusaku)
git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1488461 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--ambari-web/app/controllers/main/service/info/configs.js76
-rw-r--r--ambari-web/app/controllers/wizard/step8_controller.js49
-rw-r--r--ambari-web/app/data/config_mapping.js58
-rw-r--r--ambari-web/app/data/config_properties.js44
-rw-r--r--ambari-web/app/views/main/service/info/summary.js7
5 files changed, 188 insertions, 46 deletions
diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js
index cb3d3fad67..09d3222859 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -1388,6 +1388,11 @@ 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] = _siteObj.value;
this.recordHostOverride(_siteObj, siteName, tagName, this);
@@ -1396,7 +1401,68 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
},
/**
- * Set display names of the property tfrom he puppet/global names
+ * 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 oozieDb = this.get('globalConfigs').findProperty('name', 'oozie_database').value;
+ // oozieHost is undefined if the database is oozie
+ var oozieHost = (oozieDb == 'New Derby Database') ? '' : this.get('globalConfigs').findProperty('name', 'oozie_hostname').value;
+ var oozieDbName = this.get('globalConfigs').findProperty('name', 'oozie_database_name').value;
+
+ switch (oozieDb) {
+ case 'New Derby Database':
+ jdbcUrl.value = "jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true";
+ jdbcDriver.value = "org.apache.derby.jdbc.EmbeddedDriver";
+ break;
+ case 'Existing MySQL Database':
+ jdbcUrl.value = "jdbc:mysql://" + oozieHost + "/" + oozieDbName;
+ jdbcDriver.value = "com.mysql.jdbc.Driver";
+ break;
+ case 'Existing Oracle Database':
+ jdbcUrl.value = "jdbc:oracle:thin:@//" + oozieHost + ":1521/" + oozieDbName;
+ jdbcDriver.value = "oracle.jdbc.driver.OracleDriver";
+ break;
+ }
+ 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;
+
+ switch (hiveDb) {
+ case 'New MySQL Database':
+ jdbcUrl.value = "jdbc:mysql://"+ hiveHost + "/" + hiveDbName + "?createDatabaseIfNotExist=true";
+ jdbcDriver.value = "com.mysql.jdbc.Driver";
+ break;
+ case 'Existing MySQL Database':
+ jdbcUrl.value = "jdbc:mysql://"+ hiveHost + "/" + hiveDbName + "?createDatabaseIfNotExist=true";
+ jdbcDriver.value = "com.mysql.jdbc.Driver";
+ break;
+ case 'Existing Oracle Database':
+ jdbcUrl.value = "jdbc:oracle:thin:@//"+ hiveHost + ":1521/" + hiveDbName;
+ jdbcDriver.value = "oracle.jdbc.driver.OracleDriver";
+ break;
+ }
+ return siteObj;
+ },
+
+ /**
+ * Set display names of the property from the puppet/global names
* @param: displayNames: a field to be set with displayNames
* @param names: array of property puppet/global names
*/
@@ -1469,11 +1535,19 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
var hiveMetastoreHost = serviceConfigs.findProperty('name', 'hivemetastore_host');
hiveMetastoreHost.defaultValue = this.get('content.hostComponents').findProperty('componentName', 'HIVE_SERVER').get('host.hostName');
globalConfigs.push(hiveMetastoreHost);
+ var hiveDb = globalConfigs.findProperty('name', 'hive_database').value;
+ if (['Existing MySQL Database', 'Existing Oracle Database'].contains(hiveDb)) {
+ globalConfigs.findProperty('name', 'hive_hostname').isVisible = true;
+ }
break;
case 'OOZIE':
var oozieServerHost = serviceConfigs.findProperty('name', 'oozieserver_host');
oozieServerHost.defaultValue = this.get('content.hostComponents').findProperty('componentName', 'OOZIE_SERVER').get('host.hostName');
globalConfigs.push(oozieServerHost);
+ var oozieDb = globalConfigs.findProperty('name', 'oozie_database').value;
+ if (['Existing MySQL Database', 'Existing Oracle Database'].contains(oozieDb)) {
+ globalConfigs.findProperty('name', 'oozie_hostname').isVisible = true;
+ }
break;
case 'HBASE':
var hbaseMasterHost = serviceConfigs.findProperty('name', 'hbasemaster_host');
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index 8ce9ac1886..401b08af1e 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -86,7 +86,7 @@ App.WizardStep8Controller = Em.Controller.extend({
if (hiveDb.value === 'New MySQL Database') {
if (globals.someProperty('name', 'hive_ambari_host')) {
- globals.findProperty('name', 'hive_ambari_host').name = 'hive_hostname';
+ globals.findProperty('name', 'hive_hostname').value = globals.findProperty('name', 'hive_ambari_host').value;
hiveDbType.value = 'mysql';
hiveJdbcDriver.value = 'com.mysql.jdbc.Driver';
}
@@ -95,15 +95,15 @@ App.WizardStep8Controller = Em.Controller.extend({
globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_host'));
globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_database'));
} else if (hiveDb.value === 'Existing MySQL Database'){
- globals.findProperty('name', 'hive_existing_mysql_host').name = 'hive_hostname';
+ globals.findProperty('name', 'hive_hostname').value = globals.findProperty('name', 'hive_existing_mysql_host').value;
hiveDbType.value = 'mysql';
hiveJdbcDriver.value = 'com.mysql.jdbc.Driver';
globals = globals.without(globals.findProperty('name', 'hive_ambari_host'));
globals = globals.without(globals.findProperty('name', 'hive_ambari_database'));
globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_host'));
globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_database'));
- } else{ //existing oracle database
- globals.findProperty('name', 'hive_existing_oracle_host').name = 'hive_hostname';
+ } else { //existing oracle database
+ globals.findProperty('name', 'hive_hostname').value = globals.findProperty('name', 'hive_existing_oracle_host').value;
hiveDbType.value = 'oracle';
hiveJdbcDriver.value = 'oracle.jdbc.driver.OracleDriver';
globals = globals.without(globals.findProperty('name', 'hive_ambari_host'));
@@ -119,46 +119,30 @@ App.WizardStep8Controller = Em.Controller.extend({
var oozieDb = globals.findProperty('name', 'oozie_database');
var oozieDbType = {name:'oozie_database_type'};
var oozieJdbcDriver = {name: 'oozie_jdbc_driver'};
- var oozieJPAServcieURL = {name: 'oozie_JPAService_url'};
- if (oozieDb.value === 'New Derby Database'){
+ if (oozieDb.value === 'New Derby Database') {
+ globals.findProperty('name', 'oozie_hostname').value = globals.findProperty('name', 'oozie_ambari_host').value;
oozieDbType.value = 'derby';
oozieJdbcDriver.value = 'org.apache.derby.jdbc.EmbeddedDriver';
- oozieJPAServcieURL.value = '${oozie.data.dir}/${oozie.db.schema.name}-db;create=true';
-
globals = globals.without(globals.findProperty('name', 'oozie_ambari_host'));
globals = globals.without(globals.findProperty('name', 'oozie_ambari_database'));
globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_host'));
globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_database'));
globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_host'));
globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_database'));
- }/*else if (oozieDb.value === 'New MySQL Database') {
- if (globals.someProperty('name', 'oozie_ambari_host')) {
- globals.findProperty('name', 'oozie_ambari_host').name = 'oozie_hostname';
- oozieDbType.value = 'mysql';
- oozieJdbcDriver.value = 'com.mysql.jdbc.Driver';
- oozieJPAServcieURL.value = '//'+ globals.findProperty('name','oozie_hostname').value +'/' + globals.findProperty('name','oozie_database_name').value +'?createDatabaseIfNotExist=true';
- }
- globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_host'));
- globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_database'));
- globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_host'));
- globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_database'));
- globals = globals.without(globals.findProperty('name', 'oozie_derby_database'));
- } */ else if (oozieDb.value === 'Existing MySQL Database') {
- globals.findProperty('name', 'oozie_existing_mysql_host').name = 'oozie_hostname';
+ } else if (oozieDb.value === 'Existing MySQL Database') {
+ globals.findProperty('name', 'oozie_hostname').value = globals.findProperty('name', 'oozie_existing_mysql_host').value;
oozieDbType.value = 'mysql';
oozieJdbcDriver.value = 'com.mysql.jdbc.Driver';
- oozieJPAServcieURL.value = '//'+ globals.findProperty('name','oozie_hostname').value +'/' + globals.findProperty('name','oozie_database_name').value +'?createDatabaseIfNotExist=true';
globals = globals.without(globals.findProperty('name', 'oozie_ambari_host'));
globals = globals.without(globals.findProperty('name', 'oozie_ambari_database'));
globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_host'));
globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_database'));
globals = globals.without(globals.findProperty('name', 'oozie_derby_database'));
- } else{ //existing oracle database
- globals.findProperty('name', 'oozie_existing_oracle_host').name = 'oozie_hostname';
+ } else { // existing oracle database
+ globals.findProperty('name', 'oozie_hostname').value = globals.findProperty('name', 'oozie_existing_oracle_host').value;
oozieDbType.value = 'oracle';
oozieJdbcDriver.value = 'oracle.jdbc.driver.OracleDriver';
- oozieJPAServcieURL.value = '//'+ globals.findProperty('name','oozie_hostname').value +'/'+ globals.findProperty('name','oozie_database_name').value +'?createDatabaseIfNotExist=true';
globals = globals.without(globals.findProperty('name', 'oozie_ambari_host'));
globals = globals.without(globals.findProperty('name', 'oozie_ambari_database'));
globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_host'));
@@ -167,7 +151,6 @@ App.WizardStep8Controller = Em.Controller.extend({
}
globals.push(oozieDbType);
globals.push(oozieJdbcDriver);
- globals.push(oozieJPAServcieURL);
}
this.set('globals', globals);
@@ -1478,18 +1461,12 @@ App.WizardStep8Controller = Em.Controller.extend({
var globals = this.get('content.serviceConfigProperties').filterProperty('id', 'puppet var');
if (globals.someProperty('name', 'oozie_database')) {
var oozieDb = globals.findProperty('name', 'oozie_database');
- var oozieHost = null;
- if(globals.someProperty('name', 'oozie_hostname')){
- oozieHost = globals.findProperty('name', 'oozie_hostname').value;
- }
+ var oozieHost = globals.findProperty('name', 'oozie_hostname').value;
var oozieDbName = globals.findProperty('name', 'oozie_database_name').value;
- if (oozieDb.value === 'New Derby Database'){
+ if (oozieDb.value === 'New Derby Database') {
oozieProperties["oozie.service.JPAService.jdbc.url"] = "jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true";
oozieProperties["oozie.service.JPAService.jdbc.driver"] = "org.apache.derby.jdbc.EmbeddedDriver";
- }/*else if (oozieDb.value === 'New MySQL Database') {
- oozieProperties["oozie.service.JPAService.jdbc.url"] = "jdbc:mysql://" + oozieHost + "/" + oozieDbName;
- oozieProperties["oozie.service.JPAService.jdbc.driver"] = "com.mysql.jdbc.Driver";
- } */ else if (oozieDb.value === 'Existing MySQL Database') {
+ } else if (oozieDb.value === 'Existing MySQL Database') {
oozieProperties["oozie.service.JPAService.jdbc.url"] = "jdbc:mysql://" + oozieHost + "/" + oozieDbName;
oozieProperties["oozie.service.JPAService.jdbc.driver"] = "com.mysql.jdbc.Driver";
} else { //existing oracle database
diff --git a/ambari-web/app/data/config_mapping.js b/ambari-web/app/data/config_mapping.js
index 992875f57a..c37bbab7ef 100644
--- a/ambari-web/app/data/config_mapping.js
+++ b/ambari-web/app/data/config_mapping.js
@@ -317,6 +317,56 @@ var configs = [
"filename": "oozie-site.xml"
},
{
+ "name": "oozie.service.JPAService.create.db.schema",
+ "templateName": [],
+ "foreignKey": null,
+ "value": "false", // this is always false
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.db.schema.name",
+ "templateName": ['oozie_database_name'],
+ "foreignKey": null,
+ "value": "<templateName[0]>",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.service.JPAService.jdbc.driver",
+ "templateName": [],
+ "foreignKey": null,
+ "value": "org.apache.derby.jdbc.EmbeddedDriver", // this value is overwritten in code
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.service.JPAService.jdbc.username",
+ "templateName": ['oozie_metastore_user_name'],
+ "foreignKey": null,
+ "value": "<templateName[0]>",
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "oozie.service.JPAService.jdbc.password",
+ "templateName": ['oozie_metastore_user_passwd'],
+ "foreignKey": null,
+ "value": "<templateName[0]>",
+ "filename": "oozie-site.xml"
+ },
+ // oozie.service.JPAService.jdbc.url value is set in code
+ {
+ "name": "oozie.service.JPAService.jdbc.url",
+ "templateName": [],
+ "foreignKey": null,
+ "value": "jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true", // this value is overwritten in code
+ "filename": "oozie-site.xml"
+ },
+ {
+ "name": "javax.jdo.option.ConnectionDriverName",
+ "templateName": [],
+ "foreignKey": null,
+ "value": "com.mysql.jdbc.Driver", // this value is overwritten in code
+ "filename": "hive-site.xml"
+ },
+ {
"name": "javax.jdo.option.ConnectionUserName",
"templateName": ["hive_metastore_user_name"],
"foreignKey": null,
@@ -330,7 +380,13 @@ var configs = [
"value": "<templateName[0]>",
"filename": "hive-site.xml"
},
-
+ {
+ "name": "javax.jdo.option.ConnectionURL",
+ "templateName": [],
+ "foreignKey": null,
+ "value": "", // this value is overwritten in code
+ "filename": "hive-site.xml"
+ },
{
"name": "hive.metastore.uris",
"templateName": ["hivemetastore_host"],
diff --git a/ambari-web/app/data/config_properties.js b/ambari-web/app/data/config_properties.js
index 318af51ed8..25308dc50c 100644
--- a/ambari-web/app/data/config_properties.js
+++ b/ambari-web/app/data/config_properties.js
@@ -1306,6 +1306,21 @@ module.exports =
},
{
"id": "puppet var",
+ "name": "hive_hostname",
+ "displayName": "Database Host",
+ "description": "Specify the host on which the database is hosted",
+ "defaultValue": "",
+ "isReconfigurable": true,
+ "displayType": "host",
+ "isOverridable": false,
+ "isVisible": false,
+ "domain": "global",
+ "serviceName": "HIVE",
+ "category": "Hive Metastore",
+ "index": 3
+ },
+ {
+ "id": "puppet var",
"name": "hive_existing_mysql_host",
"displayName": "Database Host",
"description": "Specify the host on which the existing database is hosted",
@@ -1340,7 +1355,7 @@ module.exports =
"value": "",
"defaultValue": "",
"displayName": "Database Host",
- "description": "Host on which the database will be created by Ambari",
+ "description": "The host where Hive Metastore database is located",
"isReconfigurable": false,
"displayType": "masterHost",
"isOverridable": false,
@@ -1356,7 +1371,7 @@ module.exports =
"displayName": "Database Name",
"description": "Database name used as the Hive Metastore",
"defaultValue": "hive",
- "isReconfigurable": false,
+ "isReconfigurable": true,
"displayType": "host",
"isOverridable": false,
"isVisible": true,
@@ -1371,7 +1386,7 @@ module.exports =
"displayName": "Database Username",
"description": "Database user name to use to connect to the database",
"defaultValue": "hive",
- "isReconfigurable": false,
+ "isReconfigurable": true,
"displayType": "user",
"isOverridable": false,
"isVisible": true,
@@ -1386,7 +1401,7 @@ module.exports =
"displayName": "Database Password",
"description": "Database password to use to connect to the PostgreSQL database",
"defaultValue": "",
- "isReconfigurable": false,
+ "isReconfigurable": true,
"displayType": "password",
"isOverridable": false,
"isVisible": true,
@@ -1666,6 +1681,21 @@ module.exports =
"category": "Oozie Server",
"index": 2
},
+ {
+ "id": "puppet var",
+ "name": "oozie_hostname",
+ "defaultValue": "",
+ "displayName": "Database Host",
+ "description": "The host where the Oozie database is located",
+ "isReconfigurable": true,
+ "isOverridable": false,
+ "displayType": "host",
+ "isVisible": false,
+ "domain": "global",
+ "serviceName": "OOZIE",
+ "category": "Oozie Server",
+ "index": 3
+ },
{
"id": "puppet var",
"name": "oozie_existing_mysql_host",
@@ -1718,7 +1748,7 @@ module.exports =
"displayName": "Database Name",
"description": "Database name used for the Oozie",
"defaultValue": "oozie",
- "isReconfigurable": false,
+ "isReconfigurable": true,
"isOverridable": false,
"displayType": "host",
"isVisible": true,
@@ -1733,7 +1763,7 @@ module.exports =
"displayName": "Database Username",
"description": "Database user name to use to connect to the database",
"defaultValue": "oozie",
- "isReconfigurable": false,
+ "isReconfigurable": true,
"isOverridable": false,
"displayType": "user",
"isVisible": true,
@@ -1748,7 +1778,7 @@ module.exports =
"displayName": "Database Password",
"description": "Database password to use to connect to the database",
"defaultValue": "",
- "isReconfigurable": false,
+ "isReconfigurable": true,
"isOverridable": false,
"displayType": "password",
"isVisible": true,
diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js
index 615d2d0089..6abf03a697 100644
--- a/ambari-web/app/views/main/service/info/summary.js
+++ b/ambari-web/app/views/main/service/info/summary.js
@@ -216,7 +216,12 @@ App.MainServiceInfoSummaryView = Em.View.extend({
}
}
obj.displayName = component.get('displayName'); // this is computed property and wasn't copied in the top block of code
- components.push(obj);
+ // suppressing MySQL server from being displayed, because Ambari always installs MySQL server no matter what
+ // database type is selected, and shows an incorrect link in the summary to point to the host that's hosting
+ // the MySQL server
+ if (component.get('componentName') !== 'MYSQL_SERVER') {
+ components.push(obj);
+ }
});
this.set('components', components);
}.observes('controller.content.rand', 'controller.content.hostComponents.@each.isMaster', 'controller.content.hostComponents.@each.host'),