Repository: ambari Updated Branches: refs/heads/trunk 683ea1a06 -> 8565ccdb5
AMBARI-12672. Kerberos: Ambari principals missing labels. (onechiporenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8565ccdb Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8565ccdb Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8565ccdb Branch: refs/heads/trunk Commit: 8565ccdb551f16eb38336cd1e933644e941fe055 Parents: 683ea1a Author: Oleg Nechiporenko <onechipore...@apache.org> Authored: Fri Aug 7 15:55:58 2015 +0300 Committer: Oleg Nechiporenko <onechipore...@apache.org> Committed: Fri Aug 7 17:25:09 2015 +0300 ---------------------------------------------------------------------- .../app/mixins/wizard/addSecurityConfigs.js | 26 +++++++++++++++-- ambari-web/app/utils/config.js | 20 +++++++------ .../mixins/wizard/addSeccurityConfigs_test.js | 30 ++++++++++++++++++++ 3 files changed, 64 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/8565ccdb/ambari-web/app/mixins/wizard/addSecurityConfigs.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/wizard/addSecurityConfigs.js b/ambari-web/app/mixins/wizard/addSecurityConfigs.js index c395099..0206dbd 100644 --- a/ambari-web/app/mixins/wizard/addSecurityConfigs.js +++ b/ambari-web/app/mixins/wizard/addSecurityConfigs.js @@ -152,8 +152,8 @@ App.AddSecurityConfigs = Em.Mixin.create({ parseIdentityObject: function (identity) { var result = []; var name = identity.name; - var keys = Em.keys(identity).without('name'); - keys.forEach(function (item) { + var self = this; + Em.keys(identity).without('name').forEach(function (item) { var configObject = {}; var prop = identity[item]; var itemValue = prop[{keytab: 'file', principal: 'value'}[item]]; @@ -167,13 +167,33 @@ App.AddSecurityConfigs = Em.Mixin.create({ configObject.defaultValue = configObject.savedValue = configObject.value = itemValue; configObject.filename = prop.configuration ? prop.configuration.split('/')[0] : 'cluster-env'; configObject.name = prop.configuration ? prop.configuration.split('/')[1] : name + '_' + item; - configObject.displayName = configObject.filename == "cluster-env" ? App.format.normalizeName(configObject.name) : configObject.name; + + configObject.displayName = self._getDisplayNameForConfig(configObject.name, configObject.filename); result.push(configObject); }); return result; }, /** + * Get new config display name basing on its name and filename + * If config <code>fileName</code> is `cluster-env`, normalizing for its <code>name</code> is used (@see App.format.normalizeName) + * If config is predefined in the <code>secureProperties</code> (and it's displayName isn't empty there), predefined displayName is used + * Otherwise - config <code>name</code> is returned + * + * @param {string} name config name + * @param {string} fileName config filename + * @returns {String} new config display name + * @method _getDisplayNameForConfig + * @private + */ + _getDisplayNameForConfig: function(name, fileName) { + var c = App.config.get('allPreDefinedSiteProperties').findProperty('name', name); + var dName = c ? Em.get(c, 'displayName') : ''; + dName = Em.isEmpty(dName) ? name : dName; + return fileName == 'cluster-env' ? App.format.normalizeName(name) : dName; + }, + + /** * Wrap kerberos properties to App.ServiceConfigProperty model class instances. * * @param {object} kerberosProperties http://git-wip-us.apache.org/repos/asf/ambari/blob/8565ccdb/ambari-web/app/utils/config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js index 7e35f60..bb4cc3d 100644 --- a/ambari-web/app/utils/config.js +++ b/ambari-web/app/utils/config.js @@ -132,23 +132,25 @@ App.config = Em.Object.create({ configMapping: require('data/HDP2/config_mapping'), - preDefinedSiteProperties: function () { + allPreDefinedSiteProperties: function() { var sitePropertiesForCurrentStack = this.preDefinedConfigFile('site_properties'); - var serviceNames = App.StackService.find().mapProperty('serviceName').concat('MISC'); - var properties = []; if (sitePropertiesForCurrentStack) { - properties = sitePropertiesForCurrentStack.configProperties; + return sitePropertiesForCurrentStack.configProperties; } else if (App.get('isHadoop23Stack')) { - properties = require('data/HDP2.3/site_properties').configProperties; + return require('data/HDP2.3/site_properties').configProperties; } else if (App.get('isHadoop22Stack')) { - properties = require('data/HDP2.2/site_properties').configProperties; + return require('data/HDP2.2/site_properties').configProperties; } else { - properties = require('data/HDP2/site_properties').configProperties; + return require('data/HDP2/site_properties').configProperties; } - return properties.filter(function(p) { + }.property('App.isHadoop22Stack', 'App.isHadoop23Stack'), + + preDefinedSiteProperties: function () { + var serviceNames = App.StackService.find().mapProperty('serviceName').concat('MISC'); + return this.get('allPreDefinedSiteProperties').filter(function(p) { return serviceNames.contains(p.serviceName); }); - }.property('App.isHadoop22Stack', 'App.isHadoop23Stack'), + }.property('allPreDefinedSiteProperties'), /** * map of <code>preDefinedSiteProperties</code> provide search by index http://git-wip-us.apache.org/repos/asf/ambari/blob/8565ccdb/ambari-web/test/mixins/wizard/addSeccurityConfigs_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mixins/wizard/addSeccurityConfigs_test.js b/ambari-web/test/mixins/wizard/addSeccurityConfigs_test.js index 5fcd724..526d4e4 100644 --- a/ambari-web/test/mixins/wizard/addSeccurityConfigs_test.js +++ b/ambari-web/test/mixins/wizard/addSeccurityConfigs_test.js @@ -278,4 +278,34 @@ describe('App.AddSecurityConfigs', function () { }); }); + describe('#_getDisplayNameForConfig', function () { + + it('config from `cluster-env`', function () { + var config = { + fileName: 'cluster-env', + name: 'someCoolName' + }; + var displayName = controller._getDisplayNameForConfig(config.name, config.fileName); + expect(displayName).to.equal(App.format.normalizeName(config.name)); + }); + + it('config does not exist in the secure_properties', function () { + var config = { + fileName: '', + name: 'someCoolFakeName' + }; + var displayName = controller._getDisplayNameForConfig(config.name, config.fileName); + expect(displayName).to.equal(config.name); + }); + + it('config exists in the secure_properties', function () { + var config = { + fileName: '', + name: 'hbase_user_keytab' + }; + var displayName = controller._getDisplayNameForConfig(config.name, config.fileName); + expect(displayName).to.equal(App.config.get('allPreDefinedSiteProperties').findProperty('name', config.name).displayName); + }); + }); + });