Updated Branches: refs/heads/trunk eacb81660 -> 8a11fdd86
AMBARI-2904: Security wizard: Misc fixes for namenode HA. (jaimin) Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/8a11fdd8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/8a11fdd8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/8a11fdd8 Branch: refs/heads/trunk Commit: 8a11fdd868021121aae4d817d9bf3925469c65eb Parents: eacb816 Author: Jaimin Jetly <[email protected]> Authored: Wed Aug 14 17:47:39 2013 -0700 Committer: Jaimin Jetly <[email protected]> Committed: Wed Aug 14 17:47:47 2013 -0700 ---------------------------------------------------------------------- .../app/controllers/main/admin/security.js | 19 +++++++++++------- .../main/admin/security/add/step2.js | 21 ++++++++++++-------- .../main/admin/security/add/step3.js | 6 ++++-- ambari-web/app/data/HDP2/secure_mapping.js | 12 +++++------ ambari-web/app/data/HDP2/secure_properties.js | 6 ++++-- ambari-web/app/data/secure_properties.js | 2 ++ ambari-web/app/mappers/service_mapper.js | 11 ++++++++++ ambari-web/app/models/host_component.js | 1 + ambari-web/app/models/service/hdfs.js | 1 + ambari-web/app/utils/helper.js | 2 ++ 10 files changed, 56 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/controllers/main/admin/security.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/security.js b/ambari-web/app/controllers/main/admin/security.js index a34282c..a0f6894 100644 --- a/ambari-web/app/controllers/main/admin/security.js +++ b/ambari-web/app/controllers/main/admin/security.js @@ -96,9 +96,9 @@ App.MainAdminSecurityController = Em.Controller.extend({ getSecurityStatusFromServerSuccessCallback: function (data) { var configs = data.Clusters.desired_configs; - if ('global' in configs && 'core-site' in configs) { + if ('global' in configs && 'hdfs-site' in configs) { this.set('tag.global', configs['global'].tag); - this.set('tag.core-site', configs['core-site'].tag); + this.set('tag.hdfs-site', configs['hdfs-site'].tag); this.getServiceConfigsFromServer(); } else { @@ -109,7 +109,7 @@ App.MainAdminSecurityController = Em.Controller.extend({ getServiceConfigsFromServer: function () { var urlParams = []; urlParams.push('(type=global&tag=' + this.get('tag.global') + ')'); - urlParams.push('(type=core-site&tag=' + this.get('tag.core-site') + ')'); + urlParams.push('(type=hdfs-site&tag=' + this.get('tag.hdfs-site') + ')'); App.ajax.send({ name: 'admin.security.all_configurations', sender: this, @@ -129,15 +129,20 @@ App.MainAdminSecurityController = Em.Controller.extend({ } else { this.set('securityEnabled', false); - var coreConfigs = data.items.findProperty('tag', this.get('tag.core-site')).properties; - this.setNnHaStatus(coreConfigs); + var hdfsConfigs = data.items.findProperty('tag', this.get('tag.hdfs-site')).properties; + this.setNnHaStatus(hdfsConfigs); } this.loadUsers(configs); this.set('dataIsLoaded', true); }, - setNnHaStatus: function(coreConfigs) { - if(coreConfigs && coreConfigs['dfs.nameservices'] && coreConfigs['dfs.ha.namenodes.mycluster']) { + setNnHaStatus: function(hdfsConfigs) { + var nnHaStatus = hdfsConfigs && hdfsConfigs['dfs.nameservices']; + var namenodes; + if (nnHaStatus) { + namenodesKey = 'dfs.ha.namenodes.' + hdfsConfigs['dfs.nameservices']; + } + if(nnHaStatus && hdfsConfigs[namenodesKey]) { App.db.setIsNameNodeHa('true'); } else { App.db.setIsNameNodeHa('false'); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/controllers/main/admin/security/add/step2.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/security/add/step2.js b/ambari-web/app/controllers/main/admin/security/add/step2.js index 1d18d77..7511b86 100644 --- a/ambari-web/app/controllers/main/admin/security/add/step2.js +++ b/ambari-web/app/controllers/main/admin/security/add/step2.js @@ -47,8 +47,8 @@ App.MainAdminSecurityAddStep2Controller = Em.Controller.extend({ this.addUserPrincipals(this.get('content.services')); this.addMasterHostToGlobals(this.get('content.services')); this.addSlaveHostToGlobals(this.get('content.services')); - this.changeCategoryOnHa(this.get('content.services')); this.renderServiceConfigs(this.get('content.services')); + this.changeCategoryOnHa(this.get('content.services')); var storedServices = this.get('content.serviceConfigProperties'); if (storedServices) { var configs = new Ember.Set(); @@ -231,10 +231,15 @@ App.MainAdminSecurityAddStep2Controller = Em.Controller.extend({ if (hdfsService) { var namenodeHost = hdfsService.configs.findProperty('name', 'namenode_host'); var sNamenodeHost = hdfsService.configs.findProperty('name', 'snamenode_host'); + var jnHosts = hdfsService.configs.findProperty('name', 'journalnode_hosts'); if (namenodeHost && sNamenodeHost) { namenodeHost.defaultValue = App.Service.find('HDFS').get('hostComponents').findProperty('componentName', 'NAMENODE').get('host.hostName'); sNamenodeHost.defaultValue = App.Service.find('HDFS').get('hostComponents').findProperty('componentName', 'SECONDARY_NAMENODE').get('host.hostName'); } + var jnComponent = App.Service.find('HDFS').get('hostComponents').findProperty('componentName', 'JOURNALNODE'); + if(jnHosts && jnComponent) { + this.setHostsToConfig(hdfsService, 'journalnode_hosts', 'JOURNALNODE'); + } } if (mapReduceService) { var jobTrackerHost = mapReduceService.configs.findProperty('name', 'jobtracker_host'); @@ -261,17 +266,17 @@ App.MainAdminSecurityAddStep2Controller = Em.Controller.extend({ changeCategoryOnHa: function (serviceConfigs) { var hdfsService = serviceConfigs.findProperty('serviceName', 'HDFS'); if (hdfsService) { - var secureProperties = require('data/HDP2/secure_properties').configProperties; + var hdfsProperties = this.get('stepConfigs').findProperty('serviceName','HDFS').get('configs'); var configCategories = hdfsService.configCategories; - var dfsHttpPrincipal = secureProperties.findProperty('name', 'hadoop_http_principal_name'); - var dfsHttpKeytab = secureProperties.findProperty('name', 'hadoop_http_keytab'); + var dfsHttpPrincipal = hdfsProperties.findProperty('name', 'hadoop_http_principal_name'); + var dfsHttpKeytab = hdfsProperties.findProperty('name', 'hadoop_http_keytab'); if ((App.testMode && App.testNameNodeHA) || (this.get('content.isNnHa') === 'true')) { if (dfsHttpPrincipal && dfsHttpKeytab) { - dfsHttpPrincipal.category = 'NameNode'; - dfsHttpKeytab.category = 'NameNode'; + dfsHttpPrincipal.set('category','NameNode'); + dfsHttpKeytab.set('category','NameNode'); } else { - dfsHttpPrincipal.category = 'General'; - dfsHttpKeytab.category = 'General'; + dfsHttpPrincipal.set('category','General'); + dfsHttpKeytab.set('category','General'); } var generalCategory = configCategories.findProperty('name','General'); var snCategory = configCategories.findProperty('name','SNameNode'); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/controllers/main/admin/security/add/step3.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/security/add/step3.js b/ambari-web/app/controllers/main/admin/security/add/step3.js index d129305..38eac09 100644 --- a/ambari-web/app/controllers/main/admin/security/add/step3.js +++ b/ambari-web/app/controllers/main/admin/security/add/step3.js @@ -45,7 +45,7 @@ App.MainAdminSecurityAddStep3Controller = Em.Controller.extend({ var hosts = App.Host.find(); var result = []; var componentsToDisplay = ['NAMENODE', 'SECONDARY_NAMENODE', 'DATANODE', 'JOBTRACKER', 'ZOOKEEPER_SERVER', 'HIVE_SERVER', 'TASKTRACKER', - 'OOZIE_SERVER', 'NAGIOS_SERVER', 'HBASE_MASTER', 'HBASE_REGIONSERVER','HISTORYSERVER','RESOURCEMANAGER','NODEMANAGER']; + 'OOZIE_SERVER', 'NAGIOS_SERVER', 'HBASE_MASTER', 'HBASE_REGIONSERVER','HISTORYSERVER','RESOURCEMANAGER','NODEMANAGER','JOURNALNODE']; var securityUsers = []; if (!securityUsers || securityUsers.length < 1) { // Page could be refreshed in middle securityUsers = this.getSecurityUsers(); @@ -77,6 +77,7 @@ App.MainAdminSecurityAddStep3Controller = Em.Controller.extend({ 'NAMENODE': hdfsUserId, 'SECONDARY_NAMENODE': hdfsUserId, 'DATANODE': hdfsUserId, + 'JOURNALNODE': hdfsUserId, 'TASKTRACKER': mapredUserId, 'JOBTRACKER': mapredUserId, 'HISTORYSERVER': mapredUserId, @@ -126,7 +127,7 @@ App.MainAdminSecurityAddStep3Controller = Em.Controller.extend({ }); } if(host.get('hostComponents').someProperty('componentName', 'NAMENODE') || - host.get('hostComponents').someProperty('componentName', 'SECONDARY_NAMENODE')){ + host.get('hostComponents').someProperty('componentName', 'SECONDARY_NAMENODE') || host.get('hostComponents').someProperty('componentName', 'JOURNALNODE')){ result.push({ host: host.get('hostName'), component: Em.I18n.t('admin.addSecurity.hdfs.user.httpUser'), @@ -138,6 +139,7 @@ App.MainAdminSecurityAddStep3Controller = Em.Controller.extend({ acl: '440' }); } + if (host.get('hostComponents').someProperty('componentName', 'WEBHCAT_SERVER')) { var webHcatConfigs = configs.filterProperty('serviceName', 'WEBHCAT'); var webHCatHttpPrincipal = webHcatConfigs.findProperty('name', 'webHCat_http_principal_name'); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/data/HDP2/secure_mapping.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/data/HDP2/secure_mapping.js b/ambari-web/app/data/HDP2/secure_mapping.js index 95fc517..0376f35 100644 --- a/ambari-web/app/data/HDP2/secure_mapping.js +++ b/ambari-web/app/data/HDP2/secure_mapping.js @@ -35,9 +35,9 @@ module.exports = [ }, { "name": "hadoop.security.auth_to_local", - "templateName": ["resourcemanager_primary_name", "kerberos_domain", "yarn_user", "nodemanager_primary_name", "namenode_primary_name", "hdfs_user", "datanode_primary_name", "hbase_master_primary_name", "hbase_user","hbase_regionserver_primary_name","oozie_primary_name","oozie_user","jobhistory_primary_name","mapred_user"], + "templateName": ["resourcemanager_primary_name", "kerberos_domain", "yarn_user", "nodemanager_primary_name", "namenode_primary_name", "hdfs_user", "datanode_primary_name", "hbase_master_primary_name", "hbase_user","hbase_regionserver_primary_name","oozie_primary_name","oozie_user","jobhistory_primary_name","mapred_user","journalnode_principal_name"], "foreignKey": null, - "value": "RULE:[2:$1@$0](<templateName[0]>@.*<templateName[1]>)s/.*/<templateName[2]>/\nRULE:[2:$1@$0](<templateName[3]>@.*<templateName[1]>)s/.*/<templateName[2]>/\nRULE:[2:$1@$0](<templateName[4]>@.*<templateName[1]>)s/.*/<templateName[5]>/\nRULE:[2:$1@$0](<templateName[6]>@.*<templateName[1]>)s/.*/<templateName[5]>/\nRULE:[2:$1@$0](<templateName[7]>@.*<templateName[1]>)s/.*/<templateName[8]>/\nRULE:[2:$1@$0](<templateName[9]>@.*<templateName[1]>)s/.*/<templateName[8]>/\nRULE:[2:$1@$0](<templateName[10]>@.*<templateName[1]>)s/.*/<templateName[11]>/\nRULE:[2:$1@$0](<templateName[12]>@.*<templateName[1]>)s/.*/<templateName[13]>/\nDEFAULT", + "value": "RULE:[2:$1@$0](<templateName[0]>@.*<templateName[1]>)s/.*/<templateName[2]>/\nRULE:[2:$1@$0](<templateName[3]>@.*<templateName[1]>)s/.*/<templateName[2]>/\nRULE:[2:$1@$0](<templateName[4]>@.*<templateName[1]>)s/.*/<templateName[5]>/\nRULE:[2:$1@$0](<templateName[6]>@.*<templateName[1]>)s/.*/<templateName[5]>/\nRULE:[2:$1@$0](<templateName[7]>@.*<templateName[1]>)s/.*/<templateName[8]>/\nRULE:[2:$1@$0](<templateName[9]>@.*<templateName[1]>)s/.*/<templateName[8]>/\nRULE:[2:$1@$0](<templateName[10]>@.*<templateName[1]>)s/.*/<templateName[11]>/\nRULE:[2:$1@$0](<templateName[12]>@.*<templateName[1]>)s/.*/<templateName[13]>/\nRULE:[2:$1@$0](<templateName[14]>@.*<templateName[1]>)s/.*/<templateName[5]>/\nDEFAULT", "filename": "core-site.xml", "serviceName": "HDFS", "dependedServiceName": [{name: "HBASE", replace: "\nRULE:[2:$1@$0](<templateName[7]>@.*<templateName[1]>)s/.*/<templateName[8]>/\nRULE:[2:$1@$0](<templateName[9]>@.*<templateName[1]>)s/.*/<templateName[8]>/"},{name: "OOZIE",replace: "\nRULE:[2:$1@$0](<templateName[10]>@.*<templateName[1]>)s/.*/<templateName[11]>/"},{name: "MAPREDUCE2",replace: "\nRULE:[2:$1@$0](<templateName[12]>@.*<templateName[1]>)s/.*/<templateName[13]>/"}] @@ -123,17 +123,17 @@ module.exports = [ }, { "name": "dfs.journalnode.kerberos.principal", - "templateName": ["journalnode_principal_name"], + "templateName": ["journalnode_principal_name", "kerberos_domain"], "foreignKey": null, - "value": "<templateName[0]>", + "value": "<templateName[0]>@<templateName[1]>", "filename": "hdfs-site.xml", "serviceName": "HDFS" }, { "name": "dfs.journalnode.kerberos.internal.spnego.principal", - "templateName": ["journalnode_http_principal_name"], + "templateName": ["journalnode_http_principal_name", "kerberos_domain"], "foreignKey": null, - "value": "<templateName[0]>", + "value": "<templateName[0]>@<templateName[1]>", "filename": "hdfs-site.xml", "serviceName": "HDFS" }, http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/data/HDP2/secure_properties.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/data/HDP2/secure_properties.js b/ambari-web/app/data/HDP2/secure_properties.js index 685862a..024fe75 100644 --- a/ambari-web/app/data/HDP2/secure_properties.js +++ b/ambari-web/app/data/HDP2/secure_properties.js @@ -454,7 +454,7 @@ module.exports = "name": "resourcemanager_principal_name", "displayName": "Principal name", "value": "", - "defaultValue": "rs/_HOST", + "defaultValue": "rm/_HOST", "description": "Principal name for ResourceManager. _HOST will get automatically replaced with actual hostname at an instance of ResourceManager", "displayType": "principal", "isVisible": true, @@ -468,7 +468,7 @@ module.exports = "name": "resourcemanager_keytab", "displayName": "Path to keytab file", "value": "", - "defaultValue": "/etc/security/keytabs/rs.service.keytab", + "defaultValue": "/etc/security/keytabs/rm.service.keytab", "description": "Path to ResourceManager keytab file", "displayType": "directory", "isVisible": true, @@ -652,6 +652,8 @@ module.exports = "isVisible": true, "isOverridable": false, "serviceName": "HBASE", + "category": "RegionServer", + "components": ["HBASE_REGIONSERVER"] }, //HIVE http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/data/secure_properties.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/data/secure_properties.js b/ambari-web/app/data/secure_properties.js index 30d2034..356bdf0 100644 --- a/ambari-web/app/data/secure_properties.js +++ b/ambari-web/app/data/secure_properties.js @@ -557,6 +557,8 @@ module.exports = "isVisible": true, "isOverridable": false, "serviceName": "HBASE", + "category": "RegionServer", + "components": ["HBASE_REGIONSERVER"] }, //HIVE http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/mappers/service_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/service_mapper.js b/ambari-web/app/mappers/service_mapper.js index 5ffa096..a3d9a13 100644 --- a/ambari-web/app/mappers/service_mapper.js +++ b/ambari-web/app/mappers/service_mapper.js @@ -62,6 +62,7 @@ App.servicesMapper = App.QuickDataMapper.create({ name_node_id: 'nameNodeComponent.host_components[0].HostRoles.host_name', sname_node_id: 'snameNodeComponent.host_components[0].HostRoles.host_name', data_nodes: 'data_nodes', + journal_nodes: 'journal_nodes', name_node_start_time: 'nameNodeComponent.ServiceComponentInfo.StartTime', jvm_memory_heap_used: 'nameNodeComponent.host_components[0].metrics.jvm.memHeapUsedM', jvm_memory_heap_committed: 'nameNodeComponent.host_components[0].metrics.jvm.memHeapCommittedM', @@ -353,6 +354,16 @@ App.servicesMapper = App.QuickDataMapper.create({ if (component.ServiceComponentInfo && component.ServiceComponentInfo.component_name == "SECONDARY_NAMENODE") { item.snameNodeComponent = component; } + if (component.ServiceComponentInfo && component.ServiceComponentInfo.component_name == "JOURNALNODE") { + if (!item.journal_nodes) { + item.journal_nodes = []; + } + if (component.host_components) { + component.host_components.forEach(function (hc) { + item.journal_nodes.push(hc.HostRoles.host_name); + }); + } + } if (component.ServiceComponentInfo && component.ServiceComponentInfo.component_name == "DATANODE") { if (!item.data_nodes) { item.data_nodes = []; http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/models/host_component.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/host_component.js b/ambari-web/app/models/host_component.js index 22406db..ecef6f4 100644 --- a/ambari-web/app/models/host_component.js +++ b/ambari-web/app/models/host_component.js @@ -43,6 +43,7 @@ App.HostComponent = DS.Model.extend({ case 'NAMENODE': case 'SECONDARY_NAMENODE': case 'SNAMENODE': + case 'JOURNALNODE': case 'JOBTRACKER': case 'ZOOKEEPER_SERVER': case 'HIVE_SERVER': http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/models/service/hdfs.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/service/hdfs.js b/ambari-web/app/models/service/hdfs.js index 8c8a48f..78e8e87 100644 --- a/ambari-web/app/models/service/hdfs.js +++ b/ambari-web/app/models/service/hdfs.js @@ -22,6 +22,7 @@ App.HDFSService = App.Service.extend({ nameNode: DS.belongsTo('App.Host'), snameNode: DS.belongsTo('App.Host'), dataNodes: DS.hasMany('App.Host'), + journalNodes: DS.hasMany('App.Host'), nameNodeStartTime: DS.attr('number'), jvmMemoryHeapUsed: DS.attr('number'), jvmMemoryHeapCommitted: DS.attr('number'), http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8a11fdd8/ambari-web/app/utils/helper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/helper.js b/ambari-web/app/utils/helper.js index ba3ec30..d62f990 100644 --- a/ambari-web/app/utils/helper.js +++ b/ambari-web/app/utils/helper.js @@ -227,6 +227,8 @@ App.format = { return 'NameNode Check'; case 'DATANODE': return 'DataNode'; + case 'JOURNALNODE': + return 'JournalNode'; case 'HDFS_SERVICE_CHECK': return 'HDFS Check'; case 'SECONDARY_NAMENODE':
