You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2016/10/05 09:43:56 UTC
ambari git commit: AMBARI-18522 Add Service wizard breaks on large
clusters when persisting data in localStorage. (ababiichuk)
Repository: ambari
Updated Branches:
refs/heads/branch-2.5 3b8a9db36 -> b66642e6b
AMBARI-18522 Add Service wizard breaks on large clusters when persisting data in localStorage. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b66642e6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b66642e6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b66642e6
Branch: refs/heads/branch-2.5
Commit: b66642e6b1ec0c1300b9d5829dc4e8213001d96e
Parents: 3b8a9db
Author: ababiichuk <ab...@hortonworks.com>
Authored: Tue Oct 4 13:55:21 2016 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Wed Oct 5 12:42:11 2016 +0300
----------------------------------------------------------------------
ambari-web/app/controllers/wizard.js | 14 +--
.../app/controllers/wizard/step7_controller.js | 20 +++-
ambari-web/app/utils/config.js | 20 ++++
ambari-web/test/controllers/wizard_test.js | 97 +-------------------
4 files changed, 45 insertions(+), 106 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b66642e6/ambari-web/app/controllers/wizard.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js
index def6b84..e0df4fa 100644
--- a/ambari-web/app/controllers/wizard.js
+++ b/ambari-web/app/controllers/wizard.js
@@ -920,19 +920,11 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
if (_content.serviceName === 'YARN') {
_content.set('configs', App.config.textareaIntoFileConfigs(_content.get('configs'), 'capacity-scheduler.xml'));
}
- _content.get('configs').forEach(function (_configProperties) {
- if (!Em.isNone(_configProperties.get('group'))) {
+ _content.get('configs').forEach(function (_configProperty) {
+ if (!Em.isNone(_configProperty.get('group'))) {
return false;
}
- var configProperty = App.config.createDefaultConfig(
- _configProperties.get('name'),
- _configProperties.get('filename'),
- // need to invert boolean because this argument will be inverted in method body
- !_configProperties.get('isUserProperty'),
- _configProperties.getProperties('value', 'isRequired', 'errorMessage', 'warnMessage')
- );
- configProperty = App.config.mergeStaticProperties(configProperty, _configProperties, [], ['name', 'filename', 'isUserProperty', 'value']);
-
+ var configProperty = App.config.createMinifiedConfig(_configProperty);
if (this.isExcludedConfig(configProperty)) {
configProperty.value = '';
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b66642e6/ambari-web/app/controllers/wizard/step7_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js b/ambari-web/app/controllers/wizard/step7_controller.js
index dc030be..d5cbe67 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -478,9 +478,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
App.config.setPreDefinedServiceConfigs(this.get('addMiscTabToPage'));
- var storedConfigs = this.get('content.serviceConfigProperties');
-
- var configs = storedConfigs && storedConfigs.length ? storedConfigs : App.configsCollection.getAll();
+ var configs = this.getInitialConfigs(this.get('content.serviceConfigProperties'));
this.set('groupsToDelete', this.get('wizardController').getDBProperty('groupsToDelete') || []);
if (this.get('wizardController.name') === 'addServiceController' && !this.get('content.serviceConfigProperties.length')) {
@@ -494,6 +492,22 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
},
/**
+ * If configs are saved in store returns stored configs merged with stack
+ * otherwise return stack configs
+ * @returns {Object[]}
+ */
+ getInitialConfigs: function(storedConfigs) {
+ if (storedConfigs && storedConfigs.length) {
+ var mergedConfigs = [];
+ storedConfigs.forEach(function (c) {
+ mergedConfigs.push($.extend({}, App.configsCollection.getConfigByName(c.name, c.filename), c));
+ });
+ return mergedConfigs;
+ }
+ return App.configsCollection.getAll();
+ },
+
+ /**
* Update hawq configuration depending on the state of the cluster
* @param {Array} configs
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/b66642e6/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index add1e7c..81c95f3 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -1223,6 +1223,26 @@ App.config = Em.Object.create({
}
return false;
},
+
+ /**
+ * creates config object with non static properties like
+ * 'value', 'isFinal', 'errorMessage' and
+ * 'id', 'name', 'filename',
+ * @param configProperty
+ * @returns {Object}
+ */
+ createMinifiedConfig: function (configProperty) {
+ if (configProperty instanceof Ember.Object) {
+ return configProperty.getProperties('name', 'filename', 'serviceName', 'value', 'isFinal');
+ }
+ return {
+ name: configProperty.name,
+ filename: configProperty.filename,
+ serviceName: configProperty.serviceName,
+ value: configProperty.value,
+ isFinal: configProperty.isFinal
+ }
+ },
/**
* Update config property value based on its current value and list of zookeeper server hosts.
http://git-wip-us.apache.org/repos/asf/ambari/blob/b66642e6/ambari-web/test/controllers/wizard_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard_test.js b/ambari-web/test/controllers/wizard_test.js
index 2b28d01..6854c42 100644
--- a/ambari-web/test/controllers/wizard_test.js
+++ b/ambari-web/test/controllers/wizard_test.js
@@ -1070,49 +1070,19 @@ describe('App.WizardController', function () {
serviceName: 'KERBEROS',
configs: [
Em.Object.create({
- id: 'id',
name: 'admin_password',
value: 'value',
- defaultValue: 'defaultValue',
- description: 'description',
serviceName: 'serviceName',
- domain: 'domain',
- isVisible: true,
- isNotDefaultValue: true,
isFinal: true,
- defaultIsFinal: true,
- supportsFinal: true,
- filename: 'krb5-conf.xml',
- displayType: 'string',
- isRequiredByAgent: true,
- hasInitialValue: true,
- isRequired: true,
- group: {name: 'group'},
- showLabel: true,
- category: 'some_category'
+ filename: 'krb5-conf.xml'
}),
Em.Object.create({
- id: 'id',
name: 'admin_principal',
value: 'value',
- defaultValue: 'defaultValue',
- description: 'description',
serviceName: 'serviceName',
- domain: 'domain',
- isVisible: true,
- isNotDefaultValue: true,
isFinal: true,
- defaultIsFinal: true,
- supportsFinal: true,
- filename: 'krb5-conf.xml',
- displayType: 'string',
- isRequiredByAgent: true,
- hasInitialValue: true,
- isRequired: true,
- group: {name: 'group'},
- showLabel: true,
- category: 'some_category'
+ filename: 'krb5-conf.xml'
})
]
})
@@ -1126,48 +1096,18 @@ describe('App.WizardController', function () {
serviceName: 'HDFS',
configs: [
Em.Object.create({
- id: 'id',
name: 'name',
value: 'value',
- defaultValue: 'defaultValue',
- description: 'description',
serviceName: 'serviceName',
- domain: 'domain',
- isVisible: true,
- isNotDefaultValue: true,
isFinal: true,
- defaultIsFinal: true,
- supportsFinal: true,
filename: 'hdfs-site',
- displayType: 'string',
- isRequiredByAgent: true,
- hasInitialValue: true,
- isRequired: true,
- isUserProperty: true,
- showLabel: true,
- category: 'some_category'
}),
Em.Object.create({
- id: 'id',
name: 'name2',
value: 'value',
- defaultValue: 'defaultValue',
- description: 'description',
serviceName: 'serviceName',
- domain: 'domain',
- isVisible: true,
- isNotDefaultValue: true,
isFinal: true,
- defaultIsFinal: true,
- supportsFinal: true,
- filename: 'hdfs-site',
- displayType: 'string',
- isRequiredByAgent: true,
- hasInitialValue: true,
- isRequired: false,
- isUserProperty: false,
- showLabel: true,
- category: 'some_category'
+ filename: 'hdfs-site'
})
]
}),
@@ -1175,26 +1115,11 @@ describe('App.WizardController', function () {
serviceName: 'YARN',
configs: [
Em.Object.create({
- id: 'id',
name: 'name',
value: 'value',
- defaultValue: 'defaultValue',
- description: 'description',
serviceName: 'serviceName',
- domain: 'domain',
- isVisible: true,
isFinal: true,
- defaultIsFinal: true,
- supportsFinal: true,
- filename: 'filename',
- displayType: 'string',
- isRequiredByAgent: true,
- hasInitialValue: true,
- isRequired: true,
- isUserProperty: false,
- group: {name: 'group'},
- showLabel: true,
- category: 'some_category'
+ filename: 'filename'
})
]
})
@@ -1203,8 +1128,7 @@ describe('App.WizardController', function () {
it('should save configs from default config group to content.serviceConfigProperties', function () {
c.saveServiceConfigProperties(stepController);
var saved = c.get('content.serviceConfigProperties');
- expect(saved.length).to.equal(2);
- expect(saved[0].category).to.equal('some_category');
+ expect(saved.length).to.equal(3);
});
it('should not save admin_principal or admin_password to the localStorage', function () {
@@ -1212,17 +1136,6 @@ describe('App.WizardController', function () {
var saved = c.get('content.serviceConfigProperties');
expect(saved.everyProperty('value', '')).to.be.true;
});
-
- it('should save `isUserProperty` and `isRequired` attributes correctly', function() {
- c.saveServiceConfigProperties(stepController);
- var saved = c.get('content.serviceConfigProperties'),
- nameProp = saved.filterProperty('filename', 'hdfs-site.xml').findProperty('name', 'name'),
- name2Prop = saved.filterProperty('filename', 'hdfs-site.xml').findProperty('name', 'name2');
- assert.isTrue(Em.get(nameProp, 'isRequired'), 'hdfs-site.xml:name isRequired validation');
- assert.isTrue(Em.get(nameProp, 'isUserProperty'), 'hdfs-site.xml:name isUserProperty validation');
- assert.isFalse(Em.get(name2Prop, 'isRequired'), 'hdfs-site.xml:name2 isRequired validation');
- assert.isFalse(Em.get(name2Prop, 'isUserProperty'), 'hdfs-site.xml:name2 isUserProperty validation');
- });
});
describe('#enableStep', function () {