Return-Path: X-Original-To: apmail-ambari-commits-archive@www.apache.org Delivered-To: apmail-ambari-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8D8EC185EE for ; Thu, 18 Jun 2015 13:48:32 +0000 (UTC) Received: (qmail 55380 invoked by uid 500); 18 Jun 2015 13:48:32 -0000 Delivered-To: apmail-ambari-commits-archive@ambari.apache.org Received: (qmail 55277 invoked by uid 500); 18 Jun 2015 13:48:32 -0000 Mailing-List: contact commits-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@ambari.apache.org Delivered-To: mailing list commits@ambari.apache.org Received: (qmail 55097 invoked by uid 99); 18 Jun 2015 13:48:32 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Jun 2015 13:48:32 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id DFD9FE3C9E; Thu, 18 Jun 2015 13:48:31 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ababiichuk@apache.org To: commits@ambari.apache.org Date: Thu, 18 Jun 2015 13:48:34 -0000 Message-Id: <51a884eb2f30457587e111079a4000d6@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [4/4] ambari git commit: AMBARI-11995 Remove add security wizard from Ambari. (ababiichuk) AMBARI-11995 Remove add security wizard from Ambari. (ababiichuk) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c61933d8 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c61933d8 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c61933d8 Branch: refs/heads/trunk Commit: c61933d870b94f85aa41f91fa6728019ed74211f Parents: 59a74cf Author: aBabiichuk Authored: Thu Jun 18 16:43:46 2015 +0300 Committer: aBabiichuk Committed: Thu Jun 18 16:44:06 2015 +0300 ---------------------------------------------------------------------- ambari-web/app/assets/test/tests.js | 8 - ambari-web/app/controllers.js | 8 - .../app/controllers/main/admin/kerberos.js | 2 +- .../main/admin/kerberos/disable_controller.js | 1 - .../app/controllers/main/admin/security.js | 387 ------ .../security/add/addSecurity_controller.js | 163 --- .../main/admin/security/add/step1.js | 32 - .../main/admin/security/add/step2.js | 449 ------- .../main/admin/security/add/step3.js | 448 ------- .../main/admin/security/add/step4.js | 203 --- .../controllers/main/admin/security/disable.js | 212 --- .../security/security_progress_controller.js | 465 ------- ambari-web/app/controllers/main/host/details.js | 9 - .../app/controllers/wizard/step7_controller.js | 8 - ambari-web/app/data/HDP2/secure_configs.js | 162 --- ambari-web/app/data/HDP2/secure_properties.js | 1268 ------------------ ambari-web/app/data/controller_route.js | 8 - ambari-web/app/messages.js | 28 +- .../app/mixins/wizard/addSecurityConfigs.js | 324 ----- ambari-web/app/routes/add_security.js | 242 ---- ambari-web/app/routes/main.js | 39 +- .../kerberos/notify_security_off_popup.hbs | 21 + .../app/templates/main/admin/security.hbs | 43 - .../templates/main/admin/security/add/menu.hbs | 42 - .../templates/main/admin/security/add/step1.hbs | 38 - .../templates/main/admin/security/add/step2.hbs | 34 - .../templates/main/admin/security/add/step3.hbs | 31 - .../templates/main/admin/security/add/step4.hbs | 32 - .../templates/main/admin/security/disable.hbs | 26 - .../security/notify_security_off_popup.hbs | 21 - ambari-web/app/utils/host_progress_popup.js | 11 - ambari-web/app/views.js | 8 - .../configs/service_configs_by_category_view.js | 2 +- ambari-web/app/views/main/admin/security.js | 53 - .../app/views/main/admin/security/add/menu.js | 27 - .../app/views/main/admin/security/add/step1.js | 33 - .../app/views/main/admin/security/add/step2.js | 50 - .../app/views/main/admin/security/add/step3.js | 28 - .../app/views/main/admin/security/add/step4.js | 50 - .../app/views/main/admin/security/disable.js | 44 - .../security/add/addSecurity_controller_test.js | 256 ---- .../main/admin/security/add/step1_test.js | 72 - .../main/admin/security/add/step2_test.js | 718 ---------- .../main/admin/security/add/step3_test.js | 560 -------- .../main/admin/security/add/step4_test.js | 484 ------- .../main/admin/security/disable_test.js | 386 ------ .../security_progress_controller_test.js | 443 ------ .../controllers/main/admin/security_test.js | 235 ---- .../test/controllers/main/host/details_test.js | 16 +- .../test/controllers/wizard/step8_test.js | 1 - .../mixins/wizard/addSeccurityConfigs_test.js | 326 +---- 51 files changed, 32 insertions(+), 8525 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/ambari-web/app/assets/test/tests.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js index f832a48..a0be22e 100644 --- a/ambari-web/app/assets/test/tests.js +++ b/ambari-web/app/assets/test/tests.js @@ -63,14 +63,6 @@ var files = ['test/init_model_test', 'test/controllers/main/admin/highAvailability/nameNode/step3_controller_test', 'test/controllers/main/admin/highAvailability/nameNode/step4_controller_test', 'test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test', - 'test/controllers/main/admin/security_test', - 'test/controllers/main/admin/security/disable_test', - 'test/controllers/main/admin/security/security_progress_controller_test', - 'test/controllers/main/admin/security/add/addSecurity_controller_test', - 'test/controllers/main/admin/security/add/step1_test', - 'test/controllers/main/admin/security/add/step2_test', - 'test/controllers/main/admin/security/add/step3_test', - 'test/controllers/main/admin/security/add/step4_test', 'test/controllers/main/dashboard/config_history_controller_test', 'test/controllers/main/charts/heatmap_test', 'test/controllers/main/charts/heatmap_metrics/heatmap_metric_test', http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/ambari-web/app/controllers.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers.js b/ambari-web/app/controllers.js index 652142d..7748790 100644 --- a/ambari-web/app/controllers.js +++ b/ambari-web/app/controllers.js @@ -72,14 +72,6 @@ require('controllers/main/admin/kerberos/step5_controller'); require('controllers/main/admin/kerberos/step6_controller'); require('controllers/main/admin/kerberos/step7_controller'); require('controllers/main/admin/kerberos/step8_controller'); -require('controllers/main/admin/security'); -require('controllers/main/admin/security/security_progress_controller'); -require('controllers/main/admin/security/disable'); -require('controllers/main/admin/security/add/addSecurity_controller'); -require('controllers/main/admin/security/add/step1'); -require('controllers/main/admin/security/add/step2'); -require('controllers/main/admin/security/add/step3'); -require('controllers/main/admin/security/add/step4'); require('controllers/main/admin/authentication'); require('controllers/main/alert_definitions_controller'); require('controllers/main/alerts/alert_definitions_actions_controller'); http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/ambari-web/app/controllers/main/admin/kerberos.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/kerberos.js b/ambari-web/app/controllers/main/admin/kerberos.js index 2bc7cfd..7e7fff8 100644 --- a/ambari-web/app/controllers/main/admin/kerberos.js +++ b/ambari-web/app/controllers/main/admin/kerberos.js @@ -63,7 +63,7 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({ this.hide(); }, bodyClass: Ember.View.extend({ - templateName: require('templates/main/admin/security/notify_security_off_popup') + templateName: require('templates/main/admin/kerberos/notify_security_off_popup') }) }); }, http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/ambari-web/app/controllers/main/admin/kerberos/disable_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/kerberos/disable_controller.js b/ambari-web/app/controllers/main/admin/kerberos/disable_controller.js index 84e7007..cec4503 100644 --- a/ambari-web/app/controllers/main/admin/kerberos/disable_controller.js +++ b/ambari-web/app/controllers/main/admin/kerberos/disable_controller.js @@ -18,7 +18,6 @@ var App = require('app'); require('controllers/main/admin/kerberos/progress_controller'); -require('controllers/main/admin/security/security_progress_controller'); App.KerberosDisableController = App.KerberosProgressPageController.extend(App.WizardEnableDone, { http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/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 deleted file mode 100644 index 54c257f..0000000 --- a/ambari-web/app/controllers/main/admin/security.js +++ /dev/null @@ -1,387 +0,0 @@ -/** - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -var App = require('app'); -App.MainAdminSecurityController = Em.Controller.extend({ - name: 'mainAdminSecurityController', - isSubmitDisabled: false, - securityEnabled: false, - dataIsLoaded: false, - isRecommendedLoaded: true, - serviceUsers: [], - tag: {}, - getAddSecurityWizardStatus: function () { - return App.db.getSecurityWizardStatus(); - }, - setAddSecurityWizardStatus: function (status) { - App.db.setSecurityWizardStatus(status); - }, - - setDisableSecurityStatus: function (status) { - App.db.setDisableSecurityStatus(status); - }, - getDisableSecurityStatus: function (status) { - return App.db.getDisableSecurityStatus(); - }, - content: Em.Object.create({ - isATSInstalled: function() { - // Because the ATS component can be installed/removed at will, the check has to happen every time that security is added. - var yarnService = App.Service.find().findProperty('serviceName','YARN'); - return !!yarnService && yarnService.get('hostComponents').someProperty('componentName', 'APP_TIMELINE_SERVER'); - }.property('App.router.clusterController.isLoaded') - }), - notifySecurityOff: false, - notifySecurityAdd: false, - - stepConfigs: [], - desiredConfigs: [], - securityUsers: [], - serviceConfigTags: [], - selectedService: null, - isNotEditable: true, - /** need to define filter, filterColumns properties - * for preventing errors in App.ServiceConfigsByCategoryView - */ - filter: '', - filterColumns: function () { - return []; - }.property(''), - services: function () { - var secureServices = $.extend(true, [], require('data/HDP2/secure_configs')); - var services = []; - - // Typically, ATS will support Kerberos in HDP 2.2 and higher - if (this.get('content.isATSInstalled') && App.get('doesATSSupportKerberos')) { - var yarnConfigCategories = secureServices.findProperty('serviceName', 'YARN').configCategories; - yarnConfigCategories.push(App.ServiceConfigCategory.create({ name: 'AppTimelineServer', displayName : 'Application Timeline Service'})); - } - - var installedServices = App.Service.find().mapProperty('serviceName'); - //General (only non service tab) tab is always displayed - services.push(secureServices.findProperty('serviceName', 'GENERAL')); - installedServices.forEach(function (_service) { - var secureService = secureServices.findProperty('serviceName', _service); - if (secureService) { - services.push(secureService); - } - }, this); - return services; - }.property('App.router.clusterController.isLoaded'), - - /** - * default values of configs, which contains user names - */ - userNameMap: { - 'hdfs_user': {defaultValue: 'hdfs', siteName: 'hadoop-env', serviceName: 'HDFS'}, - 'yarn_user': {defaultValue: 'yarn', siteName: 'yarn-env', serviceName: 'YARN'}, - 'mapred_user': {defaultValue: 'mapred', siteName: 'mapred-env', serviceName: 'MAPREDUCE2'}, - 'hbase_user': {defaultValue: 'hbase', siteName: 'hbase-env', serviceName: 'HBASE'}, - 'hive_user': {defaultValue: 'hive', siteName: 'hive-env', serviceName: 'HIVE'}, - 'proxyuser_group': {defaultValue: 'users', siteName: 'hadoop-env', serviceName: 'HDFS'}, - 'smokeuser': {defaultValue: 'ambari-qa', siteName: 'cluster-env', serviceName: 'CLUSTER'}, - 'zk_user': {defaultValue: 'zookeeper', siteName: 'zookeeper-env', serviceName: 'ZOOKEEPER'}, - 'oozie_user': {defaultValue: 'oozie', siteName: 'oozie-env', serviceName: 'OOZIE'}, - 'user_group': {defaultValue: 'hadoop', siteName: 'hadoop-env', serviceName: 'HDFS'}, - 'storm_user': {defaultValue: 'storm', siteName: 'storm-env', serviceName: 'STORM'}, - 'falcon_user': {defaultValue: 'falcon', siteName: 'falcon-env', serviceName: 'FALCON'}, - 'knox_user': {defaultValue: 'knox', siteName: 'knox-env', serviceName: 'KNOX'} - }, - - loadStep: function () { - var step2Controller = App.router.get('mainAdminSecurityAddStep2Controller'); - var services = this.get('services'); - var self = this; - step2Controller.set('content', Em.Object.create({services: []})); - step2Controller.set('content.services', services); - this.get('stepConfigs').clear(); - this.get('securityUsers').clear(); - this.get('serviceConfigTags').clear(); - this.loadSecurityUsers(); - //loadSecurityUsers - desired configs fetched from server - step2Controller.addUserPrincipals(services, this.get('securityUsers')); - step2Controller.addMasterHostToConfigs(); - step2Controller.addSlaveHostToConfigs(); - this.renderServiceConfigs(services); - step2Controller.changeCategoryOnHa(services, this.get('stepConfigs')); - - services.forEach(function (_secureService) { - this.setServiceTagNames(_secureService, this.get('desiredConfigs')); - }, this); - App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags')).done(function (serverConfigs) { - self.setConfigValuesFromServer(self.get('stepConfigs'), serverConfigs); - self.set('installedServices', App.Service.find().mapProperty('serviceName')); - }); - }, - - /** - * get actual values of configurations from server - * @param stepConfigs - * @param serverConfigs - */ - setConfigValuesFromServer: function (stepConfigs, serverConfigs) { - var allConfigs = {}; - serverConfigs.mapProperty('properties').forEach(function (_properties) { - allConfigs = $.extend(allConfigs, _properties); - }, this); - // for all services` - stepConfigs.forEach(function (_content) { - //for all components - _content.get('configs').forEach(function (_config) { - - var componentVal = allConfigs[_config.get('name')]; - //if we have config for specified component - if (componentVal) { - //set it - _config.set('value', componentVal); - } - }, this); - }, this); - }, - - /** - * set tag names according to installed services and desired configs - * @param secureService - * @param configs - * @return {Object} - */ - setServiceTagNames: function (secureService, configs) { - for (var index in configs) { - if (secureService.sites && secureService.sites.contains(index)) { - var serviceConfigObj = { - siteName: index, - tagName: configs[index].tag, - newTagName: null, - configs: {} - }; - this.get('serviceConfigTags').pushObject(serviceConfigObj); - } - } - return serviceConfigObj; - }, - - loadSecurityUsers: function () { - var securityUsers = this.get('serviceUsers'); - if (!securityUsers || securityUsers.length < 1) { // Page could be refreshed in middle - if (App.get('testMode')) { - securityUsers.pushObject({id: 'puppet var', name: 'hdfs_user', value: 'hdfs'}); - securityUsers.pushObject({id: 'puppet var', name: 'mapred_user', value: 'mapred'}); - securityUsers.pushObject({id: 'puppet var', name: 'hbase_user', value: 'hbase'}); - securityUsers.pushObject({id: 'puppet var', name: 'hive_user', value: 'hive'}); - securityUsers.pushObject({id: 'puppet var', name: 'smokeuser', value: 'ambari-qa'}); - } else { - this.setSecurityStatus(); - securityUsers = this.get('serviceUsers'); - } - } - this.set('securityUsers', securityUsers); - }, - /** - * Load child components to service config object - * @param _componentConfig - * @param componentConfig - */ - loadComponentConfigs: function (_componentConfig, componentConfig) { - _componentConfig.configs.forEach(function (_serviceConfigProperty) { - var serviceConfigProperty = App.ServiceConfigProperty.create(_serviceConfigProperty); - componentConfig.configs.pushObject(serviceConfigProperty); - serviceConfigProperty.set('isEditable', serviceConfigProperty.get('isReconfigurable')); - serviceConfigProperty.validate(); - }, this); - }, - - /** - * Render configs for active services - * @param serviceConfigs - */ - renderServiceConfigs: function (serviceConfigs) { - serviceConfigs.forEach(function (_serviceConfig) { - - var serviceConfig = App.ServiceConfig.create({ - filename: _serviceConfig.filename, - serviceName: _serviceConfig.serviceName, - displayName: _serviceConfig.displayName, - configCategories: _serviceConfig.configCategories, - showConfig: true, - configs: [] - }); - - this.loadComponentConfigs(_serviceConfig, serviceConfig); - - console.log('pushing ' + serviceConfig.serviceName, serviceConfig); - - this.get('stepConfigs').pushObject(serviceConfig); - }, this); - this.set('selectedService', this.get('stepConfigs').filterProperty('showConfig', true).objectAt(0)); - }, - - notifySecurityOffPopup: function () { - var self = this; - if (!this.get('isSubmitDisabled')) { - App.ModalPopup.show({ - header: Em.I18n.t('popup.confirmation.commonHeader'), - primary: Em.I18n.t('ok'), - onPrimary: function () { - App.db.setSecurityDeployCommands(undefined); - self.setDisableSecurityStatus("RUNNING"); - App.router.transitionTo('disableSecurity'); - this.hide(); - }, - bodyClass: Ember.View.extend({ - templateName: require('templates/main/admin/security/notify_security_off_popup') - }) - }) - } - }, - - getUpdatedSecurityStatus: function () { - this.setSecurityStatus(); - return this.get('securityEnabled'); - }, - - setSecurityStatus: function () { - if (App.get('testMode')) { - this.set('securityEnabled', !App.get('testEnableSecurity')); - this.set('dataIsLoaded', true); - } else { - //get Security Status From Server - App.ajax.send({ - name: 'admin.security_status', - sender: this, - success: 'getSecurityStatusFromServerSuccessCallback', - error: 'errorCallback' - }); - } - }, - - errorCallback: function (jqXHR) { - this.set('dataIsLoaded', true); - // Show the error popup if the API call received a response from the server. - // jqXHR.status will be empty when browser cancels the request. Refer to AMBARI-5921 for more info - if (!!jqXHR.status) { - this.showSecurityErrorPopup(); - } - }, - - getSecurityStatusFromServerSuccessCallback: function (data) { - var configs = data.Clusters.desired_configs; - var serviceNames = this.get('services').mapProperty('serviceName'); - var configTags = []; - this.set('desiredConfigs', configs); - for (var key in this.userNameMap) { - if (serviceNames.contains(this.userNameMap[key]['serviceName']) || this.userNameMap[key]['serviceName'] === 'CLUSTER') - configTags.push(this.userNameMap[key]['siteName']); - } - configTags = configTags.uniq(); - - var errorFlag = false; - configTags.forEach(function (_tag) { - if (!configs[_tag]) { - errorFlag = true; - } - }, this); - - if (errorFlag) { - this.showSecurityErrorPopup(); - } else { - var tags = configTags.map(function (_tag) { - this.set('tag.' + _tag, configs[_tag].tag); - return { - siteName: _tag, - tagName: configs[_tag].tag - } - }, this); - - if ('hdfs-site' in configs) { - this.set('tag.hdfs-site', configs['hdfs-site'].tag); - tags.pushObject({ - siteName: "hdfs-site", - tagName: this.get('tag.hdfs-site') - }); - } - this.getServiceConfigsFromServer(tags); - } - }, - - getServiceConfigsFromServer: function (tags) { - var self = this; - - App.router.get('configurationController').getConfigsByTags(tags).done(function (data) { - var configs = data.findProperty('tag', self.get('tag.cluster-env')).properties; - if (configs && (configs['security_enabled'] === 'true' || configs['security_enabled'] === true)) { - self.set('securityEnabled', true); - } - else { - self.set('securityEnabled', false); - if (!!self.get('tag.hdfs-site')) { - var hdfsConfigs = data.findProperty('tag', self.get('tag.hdfs-site')).properties; - self.setNnHaStatus(hdfsConfigs); - } - } - var userConfigs = {}; - data.forEach(function(_config){ - $.extend(userConfigs, _config.properties); - }); - self.loadUsers(userConfigs); - self.set('dataIsLoaded', true); - }); - }, - - setNnHaStatus: function (hdfsConfigs) { - var nnHaStatus = hdfsConfigs && hdfsConfigs['dfs.nameservices']; - var namenodesKey; - if (nnHaStatus) { - namenodesKey = 'dfs.ha.namenodes.' + hdfsConfigs['dfs.nameservices']; - } - if (nnHaStatus && hdfsConfigs[namenodesKey]) { - App.db.setIsNameNodeHa('true'); - } else { - App.db.setIsNameNodeHa('false'); - } - }, - - /** - * load users names, - * substitute missing values with default - * @param configs {Object} - */ - loadUsers: function (configs) { - var defaultUserNameMap = this.get('userNameMap'); - this.set('serviceUsers',[]); - - for (var configName in defaultUserNameMap) { - this.get('serviceUsers').push({ - id: 'puppet var', - name: configName, - value: configs[configName] || defaultUserNameMap[configName]['defaultValue'] - }); - } - App.db.setSecureUserInfo(this.get('serviceUsers')); - }, - - showSecurityErrorPopup: function () { - App.ModalPopup.show({ - header: Em.I18n.t('common.error'), - secondary: false, - bodyClass: Ember.View.extend({ - template: Ember.Handlebars.compile('

{{t admin.security.status.error}}

') - }) - }); - } -}); - - http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/ambari-web/app/controllers/main/admin/security/add/addSecurity_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/security/add/addSecurity_controller.js b/ambari-web/app/controllers/main/admin/security/add/addSecurity_controller.js deleted file mode 100644 index cf5fb77..0000000 --- a/ambari-web/app/controllers/main/admin/security/add/addSecurity_controller.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -var App = require('app'); -App.AddSecurityController = App.WizardController.extend({ - - name: 'addSecurityController', - securityEnabled: false, - - totalSteps: 4, - - content: Em.Object.create({ - services: [], - isNnHa: 'false', - serviceConfigProperties: null, - controllerName: 'addSecurityController', - isATSInstalled: function() { - // Because the ATS component can be installed/removed at will, the check has to happen every time that security is added. - var yarnService = App.Service.find().findProperty('serviceName','YARN'); - return !!yarnService && yarnService.get('hostComponents').someProperty('componentName', 'APP_TIMELINE_SERVER'); - }.property('App.router.clusterController.isLoaded') - }), - - /** - * installed services on cluster - */ - installedServices: function () { - return App.Service.find().mapProperty('serviceName'); - }.property(), - - /** - * services with security configurations - */ - secureServices: function () { - var configCategories = require('data/HDP2/secure_configs'); - if (this.get('content.isATSInstalled') && App.get('doesATSSupportKerberos')) { - var yarnConfigCategories = configCategories.findProperty('serviceName', 'YARN').configCategories; - yarnConfigCategories.push(App.ServiceConfigCategory.create({ name: 'AppTimelineServer', displayName : 'Application Timeline Service'})); - } - return configCategories; - }.property('App.router.clusterController.isLoaded'), - - /** - * Loads all prior steps on refresh - */ - loadAllPriorSteps: function () { - var step = this.get('currentStep'); - switch (step) { - case '4': - case '3': - case '2': - this.loadServiceConfigs(); - case '1': - this.loadServices(); - this.loadNnHaStatus(); - } - }, - /** - * Load installed services, which match secure services, to content - */ - loadServices: function () { - var secureServices = this.get('secureServices'); - var installedServices = this.get('installedServices'); - - this.get('content.services').clear(); - //General (only non service tab) tab is always displayed - this.get('content.services').push(secureServices.findProperty('serviceName', 'GENERAL')); - installedServices.forEach(function (_service) { - var secureService = secureServices.findProperty('serviceName', _service); - if (secureService) { - this.get('content.services').push(secureService); - } - }, this); - }, - /** - * identify whether NameNode in high availability mode - */ - loadNnHaStatus: function () { - this.set('content.isNnHa', App.db.getIsNameNodeHa()); - }, - - /** - * save service config properties to localStorage - * @param stepController - */ - saveServiceConfigProperties: function (stepController) { - var serviceConfigProperties = []; - stepController.get('stepConfigs').forEach(function (_content) { - _content.get('configs').forEach(function (_configProperties) { - _configProperties.set('value', App.config.trimProperty(_configProperties, true)); - var configProperty = { - id: _configProperties.get('id'), - name: _configProperties.get('name'), - value: _configProperties.get('value'), - defaultValue: _configProperties.get('defaultValue'), - serviceName: _configProperties.get('serviceName'), - domain: _configProperties.get('domain'), - filename: _configProperties.get('filename'), - unit: _configProperties.get('unit'), - components: _configProperties.get('components'), - component: _configProperties.get('component'), - overrides: this.getConfigOverrides(_configProperties) - }; - serviceConfigProperties.push(configProperty); - }, this); - }, this); - App.db.setSecureConfigProperties(serviceConfigProperties); - this.set('content.serviceConfigProperties', serviceConfigProperties); - }, - - /** - * get overrides of config - * @param _configProperties - * @return {Array} - */ - getConfigOverrides: function (_configProperties) { - var overrides = _configProperties.get('overrides'); - var overridesArray = []; - if (Array.isArray(overrides)) { - overrides.forEach(function (override) { - var overrideEntry = { - value: override.get('value'), - hosts: [] - }; - override.get('selectedHostOptions').forEach(function (host) { - overrideEntry.hosts.push(host); - }); - overridesArray.push(overrideEntry); - }); - } - return (overridesArray.length > 0) ? overridesArray : null; - }, - - /** - * Load service config properties from localStorage - */ - loadServiceConfigs: function () { - this.set('content.serviceConfigProperties', App.db.getSecureConfigProperties()); - }, - - /** - * Clear all local storage data for Add security wizard namespace - */ - finish: function () { - this.resetDbNamespace(); - } -}); - http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/ambari-web/app/controllers/main/admin/security/add/step1.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/security/add/step1.js b/ambari-web/app/controllers/main/admin/security/add/step1.js deleted file mode 100644 index 51494c7..0000000 --- a/ambari-web/app/controllers/main/admin/security/add/step1.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -var App = require('app'); -App.MainAdminSecurityAddStep1Controller = Em.Controller.extend({ - - name: 'mainAdminSecurityAddStep1Controller', - /** - * identify whether ATS(Application Timeline Server) is installed and does not support Kerberization. - * @return {Boolean} - */ - shouldRemoveATS: function() { - var isATSInstalled = this.get('content.isATSInstalled'); - var doesATSSupportKerberos = App.get("doesATSSupportKerberos"); - return isATSInstalled && !doesATSSupportKerberos; - } -}); http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/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 deleted file mode 100644 index e9e37ff..0000000 --- a/ambari-web/app/controllers/main/admin/security/add/step2.js +++ /dev/null @@ -1,449 +0,0 @@ -/** - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -var App = require('app'); -var stringUtils = require('utils/string_utils'); - -App.MainAdminSecurityAddStep2Controller = Em.Controller.extend({ - - name: 'mainAdminSecurityAddStep2Controller', - isRecommendedLoaded: true, - stepConfigs: [], - installedServices: [], - selectedService: null, - securityUsers: [], - filter: '', - filterColumns: [], - - /** - * map which depict connection between config and slave component - * in order to set component hosts to config value - */ - slaveComponentMap: [ - { - serviceName: 'HDFS', - configName: 'datanode_hosts', - component: 'DATANODE' - }, - { - serviceName: 'YARN', - configName: 'nodemanager_host', - component: 'NODEMANAGER' - }, - { - serviceName: 'HBASE', - configName: 'regionserver_hosts', - component: 'HBASE_REGIONSERVER' - }, - { - serviceName: 'STORM', - configName: 'supervisor_hosts', - component: 'SUPERVISOR' - } - ], - /** - * map which depict connection between config and master component - * in order to set component hosts to config value - */ - masterComponentMap: [ - { - serviceName: 'OOZIE', - configName: 'oozie_servername', - components: ['OOZIE_SERVER'] - }, - { - serviceName: 'HIVE', - configName: 'hive_metastore', - components: ['HIVE_METASTORE', 'HIVE_SERVER'] - }, - { - serviceName: 'HIVE', - configName: 'webhcatserver_host', - components: ['WEBHCAT_SERVER'] - }, - { - serviceName: 'HDFS', - configName: 'namenode_host', - components: ['NAMENODE'] - }, - { - serviceName: 'HDFS', - configName: 'snamenode_host', - components: ['SECONDARY_NAMENODE'] - }, - { - serviceName: 'HDFS', - configName: 'journalnode_hosts', - components: ['JOURNALNODE'] - }, - { - serviceName: 'MAPREDUCE2', - configName: 'jobhistoryserver_host', - components: ['HISTORYSERVER'] - }, - { - serviceName: 'YARN', - configName: 'resourcemanager_host', - components: ['RESOURCEMANAGER'] - }, - { - serviceName: 'YARN', - configName: 'apptimelineserver_host', - components: ['APP_TIMELINE_SERVER'] - }, - { - serviceName: 'HBASE', - configName: 'hbasemaster_host', - components: ['HBASE_MASTER'] - }, - { - serviceName: 'ZOOKEEPER', - configName: 'zookeeperserver_hosts', - components: ['ZOOKEEPER_SERVER'] - }, - { - serviceName: 'FALCON', - configName: 'falcon_server_host', - components: ['FALCON_SERVER'] - }, - { - serviceName: 'STORM', - configName: 'storm_host', - components: ['STORM_UI_SERVER', 'NIMBUS', 'SUPERVISOR'] - }, - { - serviceName: 'STORM', - configName: 'nimbus_host', - components: ['NIMBUS'] - }, - { - serviceName: 'KNOX', - configName: 'knox_gateway_hosts', - components: ['KNOX_GATEWAY'] - } - ], - - hostToPrincipalMap: [ - { - serviceName: 'OOZIE', - configName: 'oozie_servername', - principalName: 'oozie_principal_name', - primaryName: 'oozie/' - }, - { - serviceName: 'OOZIE', - configName: 'oozie_servername', - principalName: 'oozie_http_principal_name', - primaryName: 'HTTP/' - }, - { - serviceName: 'FALCON', - configName: 'falcon_server_host', - principalName: 'falcon_principal_name', - primaryName: 'falcon/' - }, - { - serviceName: 'FALCON', - configName: 'falcon_server_host', - principalName: 'falcon_http_principal_name', - primaryName: 'HTTP/' - }, - { - serviceName: 'HIVE', - configName: 'webhcatserver_host', - principalName: 'webHCat_http_principal_name', - primaryName: 'HTTP/' - } - ], - - isSubmitDisabled: function () { - return !this.get('stepConfigs').filterProperty('showConfig').everyProperty('errorCount', 0); - }.property('stepConfigs.@each.errorCount'), - - /** - * clear info of step - */ - clearStep: function () { - this.get('stepConfigs').clear(); - this.get('securityUsers').clear(); - }, - - /** - * Function is called whenever the step is loaded - */ - loadStep: function () { - console.log("TRACE: Loading addSecurity step2: Configure Services"); - var versionNumber = App.get('currentStackVersionNumber'); - if( stringUtils.compareVersions(versionNumber, "2.2") >= 0){ - // Add Nimbus config options - var masterComponentMap = this.get('masterComponentMap'); - masterComponentMap.filterProperty('configName', 'storm_host').components = ["SUPERVISOR", "STORM_UI_SERVER", "DRPC_SERVER", "STORM_REST_API"]; - masterComponentMap.pushObject({ - serviceName: 'STORM', - configName: 'nimbus_host', - components: ['NIMBUS'] - }); - this.get('hostToPrincipalMap').pushObject({ - serviceName: 'STORM', - configName: 'nimbus_host', - principalName: 'storm_principal_name', - primaryName: 'storm' - }); - } - this.clearStep(); - this.loadUsers(); - this.addUserPrincipals(this.get('content.services'), this.get('securityUsers')); - this.addMasterHostToConfigs(); - this.addHostPrincipals(); - this.addSlaveHostToConfigs(); - this.renderServiceConfigs(this.get('content.services')); - this.changeCategoryOnHa(this.get('content.services'), this.get('stepConfigs')); - this.setStoredConfigsValue(this.get('content.serviceConfigProperties')); - this.set('installedServices', App.Service.find().mapProperty('serviceName')); - }, - - /** - * set stored values to service configs - * @param storedConfigProperties - * @return {Boolean} - */ - setStoredConfigsValue: function (storedConfigProperties) { - if (!storedConfigProperties) return false; - - // for all services` - this.get('stepConfigs').forEach(function (_content) { - _content.get('configs').forEach(function (_config) { - var configProperty = storedConfigProperties.findProperty('name', _config.get('name')); - - if (configProperty) { - _config.set('value', configProperty.value); - } - }, this); - }, this); - return true; - }, - - /** - * Render configs for active services - * @param serviceConfigs - */ - renderServiceConfigs: function (serviceConfigs) { - serviceConfigs.forEach(function (_serviceConfig) { - var serviceConfig = App.ServiceConfig.create({ - filename: _serviceConfig.filename, - serviceName: _serviceConfig.serviceName, - displayName: _serviceConfig.displayName, - configCategories: _serviceConfig.configCategories, - showConfig: true, - configs: this.wrapConfigProperties(_serviceConfig) - }); - - this.get('stepConfigs').pushObject(serviceConfig); - }, this); - this.set('selectedService', this.get('stepConfigs').filterProperty('showConfig').objectAt(0)); - }, - - /** - * wrap configs into App.ServiceConfigProperty objects - * @param _componentConfig - */ - wrapConfigProperties: function (_componentConfig) { - var configs = []; - _componentConfig.configs.forEach(function (_serviceConfigProperty) { - var serviceConfigProperty = App.ServiceConfigProperty.create(_serviceConfigProperty); - serviceConfigProperty.set('isEditable', serviceConfigProperty.get('isReconfigurable')); - serviceConfigProperty.validate(); - configs.pushObject(serviceConfigProperty); - }, this); - return configs; - }, - - /** - * fill config with hosts of component - * @param serviceName - * @param configName - * @param componentNames - * @return {Boolean} - */ - setHostsToConfig: function (serviceName, configName, componentNames) { - var service = this.get('content.services').findProperty('serviceName', serviceName); - if (service) { - var hosts = service.configs.findProperty('name', configName); - if (hosts) { - hosts.defaultValue = App.Service.find(service.serviceName) - .get('hostComponents') - .filter(function (component) { - return componentNames.contains(component.get('componentName')); - }) - .mapProperty('hostName') - .uniq(); - return true; - } - return false; - } - return false; - }, - - /** - * set principal default value based on config host and default primary name - * @param serviceName - * @param hostConfigName - * @param principalConfigName - * @param defaultPrimaryName - * @return {Boolean} - */ - setHostToPrincipal: function (serviceName, hostConfigName, principalConfigName, defaultPrimaryName) { - var service = this.get('content.services').findProperty('serviceName', serviceName); - if (service) { - var host = service.configs.findProperty('name', hostConfigName); - var principal = service.configs.findProperty('name', principalConfigName); - var versionNumber = App.get('currentStackVersionNumber'); - var special22ConfigsMap = { - storm_principal_name: defaultPrimaryName, - oozie_http_principal_name: defaultPrimaryName + '_HOST' - }; - if (stringUtils.compareVersions(versionNumber, "2.2") >= 0 && special22ConfigsMap[principalConfigName]) { - principal.defaultValue = special22ConfigsMap[principalConfigName]; - return true; - } - if (host && principal) { - var host_defaultValue = Array.isArray(host.defaultValue) ? host.defaultValue[0] : host.defaultValue; - principal.defaultValue = defaultPrimaryName + host_defaultValue; - return true; - } - return false; - } - return false; - }, - - /** - * load services users - */ - loadUsers: function () { - var securityUsers = App.router.get('mainAdminSecurityController').get('serviceUsers'); - if (Em.isNone(securityUsers) || securityUsers.length === 0) { - if (App.get('testMode')) { - securityUsers = securityUsers || []; - securityUsers.pushObject({id: 'puppet var', name: 'hdfs_user', value: 'hdfs'}); - securityUsers.pushObject({id: 'puppet var', name: 'mapred_user', value: 'mapred'}); - securityUsers.pushObject({id: 'puppet var', name: 'hbase_user', value: 'hbase'}); - securityUsers.pushObject({id: 'puppet var', name: 'hive_user', value: 'hive'}); - securityUsers.pushObject({id: 'puppet var', name: 'smokeuser', value: 'ambari-qa'}); - } else { - securityUsers = App.db.getSecureUserInfo(); - } - } - this.set('securityUsers', securityUsers); - }, - - /** - * set default values to user principals and control their visibility - * @param serviceConfigs - * @param securityUsers - */ - addUserPrincipals: function (serviceConfigs, securityUsers) { - var generalService = serviceConfigs.findProperty('serviceName', 'GENERAL').configs; - this.setUserPrincipalValue(securityUsers.findProperty('name', 'smokeuser'), generalService.findProperty('name', 'smokeuser_principal_name')); - var servicesWithUserPrincipals = ['HDFS', 'HBASE']; - - servicesWithUserPrincipals.forEach(function (serviceName) { - var isServiceInstalled = serviceConfigs.someProperty('serviceName', serviceName); - var userPrincipal = generalService.findProperty('name', serviceName.toLowerCase() + '_principal_name'); - var userKeytab = generalService.findProperty('name', serviceName.toLowerCase() + '_user_keytab'); - var userName = securityUsers.findProperty('name', serviceName.toLowerCase() + '_user'); - if (isServiceInstalled && this.setUserPrincipalValue(userName, userPrincipal)) { - userPrincipal.isVisible = true; - userKeytab.isVisible = true; - } - }, this); - }, - /** - * set default value of user principal - * @param user - * @param userPrincipal - */ - setUserPrincipalValue: function (user, userPrincipal) { - if (user && userPrincipal) { - userPrincipal.defaultValue = user.value; - return true; - } - return false; - }, - - /** - * put hosts of slave component into defaultValue of configs - */ - addSlaveHostToConfigs: function () { - this.get('slaveComponentMap').forEach(function (service) { - this.setHostsToConfig(service.serviceName, service.configName, [service.component]); - }, this); - }, - - /** - * put hosts of master component into defaultValue of configs - */ - addMasterHostToConfigs: function () { - this.get('masterComponentMap').forEach(function (item) { - this.setHostsToConfig(item.serviceName, item.configName, item.components); - }, this); - }, - - /** - * put hosts to principal default values - */ - addHostPrincipals: function () { - this.get('hostToPrincipalMap').forEach(function (item) { - this.setHostToPrincipal(item.serviceName, item.configName, item.principalName, item.primaryName); - }, this); - }, - - /** - * modify config categories depending on whether HA is enabled or not - * @param serviceConfigs - * @param stepConfigs - */ - changeCategoryOnHa: function (serviceConfigs, stepConfigs) { - var hdfsService = serviceConfigs.findProperty('serviceName', 'HDFS'); - if (hdfsService) { - var properties = stepConfigs.findProperty('serviceName', 'HDFS').get('configs'); - var configCategories = hdfsService.configCategories; - if ((App.get('testMode') && App.get('testNameNodeHA')) || (this.get('content.isNnHa') === 'true')) { - this.removeConfigCategory(properties, configCategories, 'SNameNode'); - } else { - this.removeConfigCategory(properties, configCategories, 'JournalNode'); - } - return true; - } - return false; - }, - /** - * remove config category that belong to component and hide category configs - * @param properties - * @param configCategories - * @param component - */ - removeConfigCategory: function (properties, configCategories, component) { - properties.filterProperty('category', component).forEach(function (_snConfig) { - _snConfig.set('isVisible', false); - }, this); - var category = configCategories.findProperty('name', component); - if (category) { - configCategories.removeObject(category); - } - } -}); http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/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 deleted file mode 100644 index 0e66cc5..0000000 --- a/ambari-web/app/controllers/main/admin/security/add/step3.js +++ /dev/null @@ -1,448 +0,0 @@ -/** - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -var App = require('app'); -var stringUtils = require('utils/string_utils'); - -App.MainAdminSecurityAddStep3Controller = Em.Controller.extend({ - name: 'mainAdminSecurityAddStep3Controller', - hostComponents: [], - hosts: [], - isLoaded: false, - - componentToUserMap: function() { - var map = { - 'NAMENODE': 'hdfs_user', - 'SECONDARY_NAMENODE': 'hdfs_user', - 'DATANODE': 'hdfs_user', - 'JOURNALNODE': 'hdfs_user', - 'TASKTRACKER': 'mapred_user', - 'JOBTRACKER': 'mapred_user', - 'HISTORYSERVER': 'mapred_user', - 'RESOURCEMANAGER': 'yarn_user', - 'NODEMANAGER': 'yarn_user', - 'ZOOKEEPER_SERVER': 'zk_user', - 'HIVE_SERVER': 'hive_user', - 'HIVE_METASTORE': 'hive_user', - 'OOZIE_SERVER': 'oozie_user', - 'HBASE_MASTER': 'hbase_user', - 'HBASE_REGIONSERVER': 'hbase_user', - 'SUPERVISOR': 'storm_user', - 'NIMBUS': 'storm_user', - 'STORM_UI_SERVER': 'storm_user', - 'FALCON_SERVER': 'falcon_user', - 'KNOX_GATEWAY': 'knox_user', - 'APP_TIMELINE_SERVER': 'yarn_user' - }; - if (App.get('isHadoop22Stack')) { - map['DRPC_SERVER'] = 'storm_user' - } - return map; - }.property('App.isHadoop22Stack'), - // The componentName, principal, and keytab have to coincide with the values in secure_properties.js - componentToConfigMap: [ - { - componentName: 'NAMENODE', - principal: 'hadoop_http_principal_name', - keytab: 'hadoop_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.hdfs.user.httpUser') - }, - { - componentName: 'SECONDARY_NAMENODE', - principal: 'hadoop_http_principal_name', - keytab: 'hadoop_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.hdfs.user.httpUser') - }, - { - componentName: 'JOURNALNODE', - principal: 'hadoop_http_principal_name', - keytab: 'hadoop_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.hdfs.user.httpUser') - }, - { - componentName: 'WEBHCAT_SERVER', - principal: 'webHCat_http_principal_name', - keytab: 'webhcat_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.webhcat.user.httpUser') - }, - { - componentName: 'HIVE_SERVER', - principal: 'hive_metastore_http_principal_name', - keytab: 'hive_metastore_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.hive.user.httpUser') - }, - { - componentName: 'OOZIE_SERVER', - principal: 'oozie_http_principal_name', - keytab: 'oozie_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.oozie.user.httpUser') - }, - { - componentName: 'FALCON_SERVER', - principal: 'falcon_http_principal_name', - keytab: 'falcon_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.falcon.user.httpUser') - }, - { - componentName: 'HISTORYSERVER', - principal: 'jobhistory_http_principal_name', - keytab: 'jobhistory_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.historyServer.user.httpUser') - }, - { - componentName: 'RESOURCEMANAGER', - principal: 'resourcemanager_http_principal_name', - keytab: 'resourcemanager_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.rm.user.httpUser') - }, - { - componentName: 'NODEMANAGER', - principal: 'nodemanager_http_principal_name', - keytab: 'nodemanager_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.nm.user.httpUser') - }, - { - componentName: 'APP_TIMELINE_SERVER', - principal: 'apptimelineserver_http_principal_name', - keytab: 'apptimelineserver_http_keytab', - displayName: Em.I18n.t('admin.addSecurity.user.yarn.atsHTTPUser') - }, - { - componentName: 'STORM_UI_SERVER', - principal: 'storm_ui_principal_name', - keytab: 'storm_ui_keytab', - displayName: Em.I18n.t('admin.addSecurity.storm.user.httpUser'), - isHadoop22Stack: true - } - ], - - mandatoryConfigs: [ - { - userConfig: 'smokeuser', - keytab: 'smokeuser_keytab', - displayName: Em.I18n.t('admin.addSecurity.user.smokeUser') - }, - { - userConfig: 'hdfs_user', - keytab: 'hdfs_user_keytab', - displayName: Em.I18n.t('admin.addSecurity.user.hdfsUser'), - checkService: 'HDFS' - }, - { - userConfig: 'hbase_user', - keytab: 'hbase_user_keytab', - displayName: Em.I18n.t('admin.addSecurity.user.hbaseUser'), - checkService: 'HBASE' - } - ], - - /** - * download CSV file - */ - doDownloadCsv: function () { - if ($.browser.msie && $.browser.version < 10) { - this.openInfoInNewTab(); - } else { - try { - var blob = new Blob([stringUtils.arrayToCSV(this.get('hostComponents'))], {type: "text/csv;charset=utf-8;"}); - saveAs(blob, "host-principal-keytab-list.csv"); - } catch (e) { - this.openInfoInNewTab(); - } - } - }, - - /** - * open content of CSV file in new window - */ - openInfoInNewTab: function () { - var newWindow = window.open(''); - var newDocument = newWindow.document; - newDocument.write(stringUtils.arrayToCSV(this.get('hostComponents'))); - newWindow.focus(); - }, - - /** - * load hosts from server - */ - loadHosts: function () { - App.ajax.send({ - name: 'hosts.security.wizard', - sender: this, - data: {}, - error: 'loadHostsErrorCallback', - success: 'loadHostsSuccessCallback' - }) - }, - - loadHostsSuccessCallback: function (data, opt, params) { - var hosts = []; - - data.items.forEach(function (item) { - var hostComponents = []; - - item.host_components.forEach(function (hostComponent) { - hostComponents.push(Em.Object.create({ - componentName: hostComponent.HostRoles.component_name, - service: Em.Object.create({ - serviceName: hostComponent.HostRoles.service_name - }), - displayName: App.format.role(hostComponent.HostRoles.component_name) - })); - }); - hosts.push(Em.Object.create({ - hostName: item.Hosts.host_name, - hostComponents: hostComponents - })); - }); - this.set('isLoaded', true); - this.set('hosts', hosts); - this.loadStep(); - }, - loadHostsErrorCallback: function () { - this.set('isLoaded', true); - this.set('hosts', []); - this.loadStep(); - }, - - /** - * load step info - */ - loadStep: function () { - var hosts = this.get('hosts'); - var result = []; - var securityUsers = this.getSecurityUsers(); - var hadoopGroupId = securityUsers.findProperty('name', 'user_group').value; - var addedPrincipalsHost = {}; //Keys = host_principal, Value = 'true' - - hosts.forEach(function (host) { - this.setMandatoryConfigs(result, securityUsers, host.get('hostName'), hadoopGroupId); - this.setComponentsConfig(result, host, hadoopGroupId); - this.setHostComponentsSecureValue(result, host, addedPrincipalsHost, securityUsers, hadoopGroupId); - }, this); - this.set('hostComponents', result); - }, - - /** - * Returns host name for Nimbus component - */ - getNimbusHostName: function () { - var host = this.get('hosts').find(function (host) { - return !!host.get('hostComponents').findProperty('componentName', 'NIMBUS'); - }); - if (host) { - return host.get('hostName'); - } - }, - - /** - * build map of connections between component and user - * @param securityUsers - */ - buildComponentToOwnerMap: function (securityUsers) { - var componentToUserMap = this.get('componentToUserMap'); - var componentToOwnerMap = {}; - for (var component in componentToUserMap) { - var user = componentToUserMap[component]; - var securityUser = securityUsers.findProperty('name', user); - componentToOwnerMap[component] = securityUser.value; - } - return componentToOwnerMap; - }, - - /** - * set security settings(principal and keytab) to component depending on whether host has such component - * @param result - * @param host - * @param hadoopGroupId - */ - setComponentsConfig: function (result, host, hadoopGroupId) { - var hostComponents = host.get('hostComponents'); - - var isATSInstalled = this.get('content.isATSInstalled'); - var doesATSSupportKerberos = App.get("doesATSSupportKerberos"); - - this.get('componentToConfigMap').forEach(function (component) { - //add specific components that supported only in Hadoop2 stack - if (component.isHadoop22Stack && !App.get('isHadoop22Stack')) return; - - if (hostComponents.someProperty('componentName', component.componentName)) { - - if (component.componentName === "APP_TIMELINE_SERVER" && (!isATSInstalled || !doesATSSupportKerberos)) { - return; - } - - var configs = this.get('content.serviceConfigProperties'); - var serviceName = App.StackServiceComponent.find(component.componentName).get('serviceName'); - var serviceConfigs = configs.filterProperty('serviceName', serviceName); - var servicePrincipal = serviceConfigs.findProperty('name', component.principal); - var serviceKeytabPath = serviceConfigs.findProperty('name', component.keytab).value; - result.push({ - host: host.get('hostName'), - component: component.displayName, - principal: this.getPrincipal(servicePrincipal, host.get('hostName')), - keytabfile: stringUtils.getFileFromPath(serviceKeytabPath), - keytab: stringUtils.getPath(serviceKeytabPath), - owner: 'root', - group: hadoopGroupId, - acl: '440' - }); - } - }, this); - }, - - /** - * set security settings(principal and keytab) to component - * if checkService is passed then verify that service to his existence in order to set configs to such service - * @param result - * @param securityUsers - * @param hostName - * @param hadoopGroupId - */ - setMandatoryConfigs: function (result, securityUsers, hostName, hadoopGroupId) { - var generalConfigs = this.get('content.serviceConfigProperties').filterProperty('serviceName', 'GENERAL'); - var realm = generalConfigs.findProperty('name', 'kerberos_domain').value; - var installedServices = App.Service.find().mapProperty('serviceName'); - - this.get('mandatoryConfigs').forEach(function (config) { - if (config.checkService && !installedServices.contains(config.checkService)) return; - - var userId = securityUsers.findProperty('name', config.userConfig).value; - var userKeytabPath = generalConfigs.findProperty('name', config.keytab).value; - result.push({ - host: hostName, - component: config.displayName, - principal: userId + '@' + realm, - keytabFile: stringUtils.getFileFromPath(userKeytabPath), - keytab: stringUtils.getPath(userKeytabPath), - owner: userId, - group: hadoopGroupId, - acl: '440' - }); - }, this); - }, - - /** - * set secure properties(keytab and principal) for components, which should be displayed - * @param result - * @param host - * @param addedPrincipalsHost - * @param securityUsers - * @param hadoopGroupId - */ - setHostComponentsSecureValue: function (result, host, addedPrincipalsHost, securityUsers, hadoopGroupId) { - var componentsToDisplay = ['NAMENODE', 'SECONDARY_NAMENODE', 'DATANODE', 'JOBTRACKER', 'ZOOKEEPER_SERVER', 'HIVE_SERVER', 'HIVE_METASTORE', - 'TASKTRACKER', 'OOZIE_SERVER', 'HBASE_MASTER', 'HBASE_REGIONSERVER', 'HISTORYSERVER', 'RESOURCEMANAGER', 'NODEMANAGER', - 'JOURNALNODE', 'SUPERVISOR', 'NIMBUS', 'STORM_UI_SERVER','FALCON_SERVER', 'KNOX_GATEWAY', 'APP_TIMELINE_SERVER']; - if (App.get('isHadoop22Stack')) { - componentsToDisplay.push('DRPC_SERVER'); - } - var configs = this.get('content.serviceConfigProperties'); - var componentToOwnerMap = this.buildComponentToOwnerMap(securityUsers); - var hostName = host.get('hostName'); - - var isATSInstalled = this.get('content.isATSInstalled'); - var doesATSSupportKerberos = App.get("doesATSSupportKerberos"); - - host.get('hostComponents').forEach(function (hostComponent) { - if (componentsToDisplay.contains(hostComponent.get('componentName'))) { - var serviceConfigs = configs.filterProperty('serviceName', hostComponent.get('service.serviceName')); - var targetHost = hostName; - if (App.get('isHadoop22Stack') && hostComponent.get('componentName') === 'DRPC_SERVER') { - targetHost = this.getNimbusHostName() - } - var secureProperties = this.getSecureProperties(serviceConfigs, hostComponent.get('componentName'), targetHost); - var displayName = this.changeDisplayName(hostComponent.get('displayName')); - var key = hostName + "--" + secureProperties.principal; - - if (hostComponent.get('componentName') === "APP_TIMELINE_SERVER" && (!isATSInstalled || !doesATSSupportKerberos)) { - return; - } - - if (Em.isNone(addedPrincipalsHost[key])) { - var owner = componentToOwnerMap[hostComponent.get('componentName')] || ''; - - result.push({ - host: hostName, - component: displayName, - principal: secureProperties.principal, - keytabFile: stringUtils.getFileFromPath(secureProperties.keytab), - keytab: stringUtils.getPath(secureProperties.keytab), - owner: owner, - group: hadoopGroupId, - acl: '400' - }); - addedPrincipalsHost[key] = true; - } - } - }, this); - }, - - /** - * get properties (keytab and principle) of secure config that match component - * @param serviceConfigs - * @param componentName - * @param hostName - * @return {Object} - */ - getSecureProperties: function (serviceConfigs, componentName, hostName) { - var secureProperties = {}; - serviceConfigs.forEach(function (config) { - if ((config.component && config.component === componentName) || - (config.components && config.components.contains(componentName))) { - if (config.name.endsWith('_principal_name')) { - secureProperties.principal = this.getPrincipal(config, hostName); - } else if (config.name.endsWith('_keytab') || config.name.endsWith('_keytab_path')) { - secureProperties.keytab = config.value; - } - } - }, this); - return secureProperties; - }, - - /** - * get formatted principal value - * @param config - * @param hostName - * @return {String} - */ - getPrincipal: function (config, hostName) { - return config.value.replace('_HOST', hostName.toLowerCase()) + config.unit; - }, - - /** - * get users from security configs - * @return {Array} - */ - getSecurityUsers: function () { - return App.db.getSecureUserInfo(); - }, - - /** - * format display names of specific components - * @param name - * @return {*} - */ - changeDisplayName: function (name) { - if (name === 'HiveServer2' || name === 'Hive Metastore') { - return 'Hive Metastore and HiveServer2'; - } else { - return name; - } - } -}); http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/ambari-web/app/controllers/main/admin/security/add/step4.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/security/add/step4.js b/ambari-web/app/controllers/main/admin/security/add/step4.js deleted file mode 100644 index 406892d..0000000 --- a/ambari-web/app/controllers/main/admin/security/add/step4.js +++ /dev/null @@ -1,203 +0,0 @@ -/** - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -var App = require('app'); - -App.MainAdminSecurityAddStep4Controller = App.MainAdminSecurityProgressController.extend(App.AddSecurityConfigs, { - - name: 'mainAdminSecurityAddStep4Controller', - - isBackBtnDisabled: function () { - return !this.get('commands').someProperty('isError'); - }.property('commands.@each.isCompleted'), - - isSecurityApplied: function () { - return this.get('commands').someProperty('name', 'START_SERVICES') && this.get('commands').findProperty('name', 'START_SERVICES').get('isSuccess'); - }.property('commands.@each.isCompleted'), - - /** - * control disabled property of completion button - */ - enableSubmit: function () { - var addSecurityController = App.router.get('addSecurityController'); - if (this.get('commands').someProperty('isError') || this.get('commands').everyProperty('isSuccess')) { - this.set('isSubmitDisabled', false); - if (this.get('commands').someProperty('isError')) { - addSecurityController.setStepsEnable(); - } - } else { - this.set('isSubmitDisabled', true); - addSecurityController.setLowerStepsDisable(4); - } - }.observes('commands.@each.isCompleted'), - - /** - * clear step info - */ - clearStep: function () { - this.set('commands', []); - this.set('isSubmitDisabled', true); - this.get('serviceConfigTags').clear(); - }, - - loadCommands: function () { - this._super(); - - // Determine if ATS Component needs to be removed - var isATSInstalled = this.get('content.isATSInstalled'); - var doesATSSupportKerberos = App.get("doesATSSupportKerberos"); - if (isATSInstalled && !doesATSSupportKerberos) { - this.get('commands').splice(2, 0, App.Poll.create({name: 'DELETE_ATS', label: Em.I18n.translations['admin.addSecurity.apply.delete.ats'], isPolling: false})); - } - }, - - /** - * load step info - */ - loadStep: function () { - this.clearStep(); - this.prepareSecureConfigs(); - - if (!this.resumeSavedCommands()) { - this.loadCommands(); - this.addInfoToCommands(); - this.syncStopServicesOperation(); - this.addObserverToCommands(); - this.moveToNextCommand(); - } - }, - - /** - * synchronize "STOP_SERVICES" operation from BO with command of step - * @return {Boolean} - */ - syncStopServicesOperation: function () { - var runningOperations = App.router.get('backgroundOperationsController.services').filterProperty('isRunning'); - var stopAllOperation = runningOperations.findProperty('name', 'Stop All Services'); - var stopCommand = this.get('commands').findProperty('name', 'STOP_SERVICES'); - if (stopCommand && stopAllOperation) { - stopCommand.set('requestId', stopAllOperation.get('id')); - return true; - } - return false; - }, - - /** - * resume previously saved commands - * @return {Boolean} - */ - resumeSavedCommands: function () { - var commands = App.db.getSecurityDeployCommands(); - if (Em.isNone(commands) || commands.length === 0) return false; - - commands.forEach(function (_command, index) { - commands[index] = App.Poll.create(_command); - }, this); - if (commands.someProperty('isError')) { - this.get('commands').pushObjects(commands); - this.addObserverToCommands(); - return true; - } else if (commands.filterProperty('isStarted').someProperty('isCompleted', false)) { - var runningCommand = commands.filterProperty('isStarted').findProperty('isCompleted', false); - runningCommand.set('isStarted', false); - this.get('commands').pushObjects(commands); - } else { - this.get('commands').pushObjects(commands); - } - this.addObserverToCommands(); - this.moveToNextCommand(); - return true; - }, - - manageSecureConfigs: function () { - var serviceConfigTags = this.get('serviceConfigTags'); - var secureConfigs = this.get('secureConfigs'); - var siteProperties = this.get('configs'); - if (serviceConfigTags) { - secureConfigs.forEach(function (config) { - this.setPrincipalValue(config.serviceName, config.name); - }, this); - serviceConfigTags.forEach(function (_serviceConfigTags) { - _serviceConfigTags.newTagName = 'version' + (new Date).getTime(); - siteProperties.filterProperty('filename', _serviceConfigTags.siteName + '.xml').forEach(function (_config) { - if (!/_hosts?$/.test(_config.name)) { - _serviceConfigTags.configs[_config.name] = _config.value; - } - }, this); - }, this); - return true; - } else { - var command = this.get('commands').findProperty('name', 'APPLY_CONFIGURATIONS'); - command.set('isSuccess', false); - command.set('isError', true); - this.onJsError(); - return false; - } - }, - - /** - * send DELETE command to server to delete component - * @param componentName - * @param hostName - */ - deleteComponents: function(componentName, hostName) { - App.ajax.send({ - name: 'common.delete.host_component', - sender: this, - data: { - componentName: componentName, - hostName: hostName - }, - success: 'onDeleteComplete', - error: 'onDeleteError' - }); - }, - - /** - * callback on successful deletion of component - */ - onDeleteComplete: function () { - var deleteAtsCommand = this.get('commands').findProperty('name', 'DELETE_ATS'); - console.warn('APP_TIMELINE_SERVER doesn\'t support security mode in this HDP stack. It has been removed from YARN service '); - deleteAtsCommand.set('isError', false); - deleteAtsCommand.set('isSuccess', true); - }, - - /** - * callback on failed deletion of component - */ - onDeleteError: function () { - var deleteAtsCommand = this.get('commands').findProperty('name', 'DELETE_ATS'); - console.warn('Error: Can\'t delete APP_TIMELINE_SERVER'); - deleteAtsCommand.set('isError', true); - deleteAtsCommand.set('isSuccess', false); - }, - - /** - * show popup when js error occurred - */ - onJsError: function () { - App.ModalPopup.show({ - header: Em.I18n.t('common.error'), - secondary: false, - bodyClass: Ember.View.extend({ - template: Ember.Handlebars.compile('

{{t admin.security.apply.configuration.error}}

') - }) - }); - } -}); http://git-wip-us.apache.org/repos/asf/ambari/blob/c61933d8/ambari-web/app/controllers/main/admin/security/disable.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/security/disable.js b/ambari-web/app/controllers/main/admin/security/disable.js deleted file mode 100644 index 728ba67..0000000 --- a/ambari-web/app/controllers/main/admin/security/disable.js +++ /dev/null @@ -1,212 +0,0 @@ -/** - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -var App = require('app'); -require('controllers/main/admin/security/security_progress_controller'); - -App.MainAdminSecurityDisableController = App.MainAdminSecurityProgressController.extend({ - name: 'mainAdminSecurityDisableController', - secureServices: [], - /** - * values of site configs when security disabled. - * Properties not defined in data/secure_mapping or data/HDP2/secure_mapping and needs to be changed on disabling - * security should be defined in secureConfigValuesMap Object - */ - secureConfigValuesMap: { - 'nimbus.childopts': function(value) { - return value.replace (/-Djava.security.auth.login.config\s*=\s*\S*/g, ""); - }, - 'ui.childopts': function(value) { - return value.replace (/-Djava.security.auth.login.config\s*=\s*\S*/g, ""); - }, - 'supervisor.childopts': function(value) { - return value.replace (/-Djava.security.auth.login.config\s*=\s*\S*/g, ""); - } - }, - - isSubmitDisabled: function () { - return !(this.get('commands').someProperty('isError') || this.get('commands').everyProperty('isSuccess')); - }.property('commands.@each.isCompleted'), - - /** - * clear step info - */ - clearStep: function () { - this.get('commands').clear(); - this.get('secureServices').clear(); - this.get('serviceConfigTags').clear(); - }, - - /** - * load info required by current step - */ - loadStep: function () { - this.clearStep(); - var commands = App.db.getSecurityDeployCommands(); - if (commands && commands.length > 0) { - commands.forEach(function (_command, index) { - commands[index] = App.Poll.create(_command); - }, this); - if (commands.someProperty('isError', true)) { - this.get('commands').pushObjects(commands); - this.loadSecureServices(); - this.addObserverToCommands(); - return; - } else if (commands.filterProperty('isStarted', true).someProperty('isCompleted', false)) { - var runningCommand = commands.filterProperty('isStarted', true).findProperty('isCompleted', false); - runningCommand.set('isStarted', false); - this.get('commands').pushObjects(commands); - } else { - this.get('commands').pushObjects(commands); - } - } else { - this.loadCommands(); - this.addInfoToCommands(); - this.syncStopServicesCommand(); - } - this.loadSecureServices(); - this.addObserverToCommands(); - this.moveToNextCommand(); - }, - - /** - * resume info about commands from local storage - * @return {Boolean} - */ - resumeCommands: function () { - var commands = App.db.getSecurityDeployCommands(); - if (!commands || commands.length === 0) return false; - - commands.forEach(function (_command) { - this.get('commands').pushObject(App.Poll.create(_command)); - }, this); - var runningCommand = this.get('commands').filterProperty('isStarted').findProperty('isCompleted', false); - if (runningCommand) { - runningCommand.set('isStarted', false); - } - return true; - }, - - /** - * synchronize existing background operation "Stop All Services" with command in Security wizard - */ - syncStopServicesCommand: function () { - var runningOperations = App.router.get('backgroundOperationsController.services').filterProperty('isRunning'); - var stopAllOperation = runningOperations.findProperty('name', 'Stop All Services'); - var stopCommand = this.get('commands').findProperty('name', 'STOP_SERVICES'); - if (stopCommand && stopAllOperation) { - stopCommand.set('requestId', stopAllOperation.get('id')); - } - }, - - /** - * load secure configs of installed services - */ - loadSecureServices: function () { - var secureServices = require('data/HDP2/secure_configs'); - var installedServices = App.Service.find().mapProperty('serviceName'); - this.get('secureServices').pushObject(secureServices.findProperty('serviceName', 'GENERAL')); - //General (only non service tab) tab is always displayed - installedServices.forEach(function (_service) { - var secureService = secureServices.findProperty('serviceName', _service); - if (secureService) { - this.get('secureServices').pushObject(secureService); - } - }, this); - }, - - /** - * manage configurations from serviceConfigTags - * @return {Boolean} - */ - manageSecureConfigs: function () { - var serviceConfigTags = this.get('serviceConfigTags'); - var secureProperties = this.get('secureProperties'); - var secureMapping = this.get('secureMapping'); - if (!serviceConfigTags || !secureProperties || !secureMapping) { - var command = this.get('commands').findProperty('name', 'APPLY_CONFIGURATIONS'); - command.set('isSuccess', false); - command.set('isError', true); - return false; - } else { - serviceConfigTags.forEach(function (_serviceConfigTags) { - _serviceConfigTags.newTagName = 'version' + (new Date).getTime(); - if (_serviceConfigTags.siteName.contains('-env')) { - this.deleteDisabledConfigs(secureProperties, _serviceConfigTags); - if (_serviceConfigTags.siteName === 'cluster-env') { - _serviceConfigTags.configs.security_enabled = 'false'; - } - } else { - this.modifySiteConfigs(secureMapping, _serviceConfigTags); - } - }, this); - return true; - } - }, - /** - * delete configs, which aren't required when security disabled - * @param secureProperties - * @param _serviceConfigTags - * @return {Boolean} - */ - deleteDisabledConfigs: function (secureProperties, _serviceConfigTags) { - if (!secureProperties || !_serviceConfigTags) return false; - secureProperties.forEach(function (_config) { - if (_config.name in _serviceConfigTags.configs) { - delete _serviceConfigTags.configs[_config.name]; - } - }, this); - return true; - }, - /** - * delete unnecessary site configs and - * change config values - * @param secureMapping - * @param _serviceConfigTags - * @return {Boolean} - */ - modifySiteConfigs: function (secureMapping, _serviceConfigTags) { - var secureConfigValuesMap = this.get('secureConfigValuesMap'); - if (!secureMapping || !_serviceConfigTags) return false; - - // iterate over secureConfigValuesMap to update service-site configProperties not present in secureMapping metadata - for (var key in secureConfigValuesMap) { - if (key in _serviceConfigTags.configs) { - var value = secureConfigValuesMap[key]; - if (typeof value == 'function') { - _serviceConfigTags.configs[key] = value(_serviceConfigTags.configs[key]); - } else if (value) { - _serviceConfigTags.configs[key] = value; - } - } - } - - secureMapping.filterProperty('filename', _serviceConfigTags.siteName + '.xml').forEach(function (_config) { - var configName = _config.name; - var nonSecureConfigValue = _config.nonSecureValue; - if (configName in _serviceConfigTags.configs) { - if (nonSecureConfigValue) { - _serviceConfigTags.configs[configName] = nonSecureConfigValue; - } else { - delete _serviceConfigTags.configs[configName] - } - } - }, this); - return true; - } -});