You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by at...@apache.org on 2013/11/18 19:50:23 UTC
git commit: AMBARI-3796 Config-groups configs should be saved
efficiently. (atkach)
Updated Branches:
refs/heads/trunk 346a50c35 -> d01e0e26a
AMBARI-3796 Config-groups configs should be saved efficiently. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/d01e0e26
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/d01e0e26
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/d01e0e26
Branch: refs/heads/trunk
Commit: d01e0e26a4229ac97f8b254b4e9a0c597b7ef956
Parents: 346a50c
Author: atkach <an...@gmail.com>
Authored: Mon Nov 18 20:47:21 2013 +0200
Committer: atkach <an...@gmail.com>
Committed: Mon Nov 18 20:47:21 2013 +0200
----------------------------------------------------------------------
ambari-web/app/config.js | 2 +-
.../controllers/main/service/info/configs.js | 91 ++++++++++++++++----
.../service/manage_config_groups_controller.js | 2 +-
ambari-web/app/utils/ajax.js | 3 +-
4 files changed, 79 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d01e0e26/ambari-web/app/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/config.js b/ambari-web/app/config.js
index 52a0080..b9f869d 100644
--- a/ambari-web/app/config.js
+++ b/ambari-web/app/config.js
@@ -44,7 +44,7 @@ App.enableExperimental = false;
App.supports = {
addServices: false,
- hostOverrides: true,
+ hostOverrides: false,
mirroring: false,
secureCluster: true,
secureClusterProceedPopup: false,
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d01e0e26/ambari-web/app/controllers/main/service/info/configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js
index 105f21d..55b3467 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -873,19 +873,40 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
message: null,
value: null
};
- this.savedHostToOverrideSiteToTagMap = {};
+ var selectedConfigGroup = this.get('selectedConfigGroup');
var configs = this.get('stepConfigs').findProperty('serviceName', this.get('content.serviceName')).get('configs');
- this.saveGlobalConfigs(configs);
- if (this.get('content.serviceName') === 'YARN' && !App.supports.capacitySchedulerUi) {
- configs = App.config.textareaIntoFileConfigs(configs, 'capacity-scheduler.xml');
- }
- this.saveSiteConfigs(configs);
- /**
- * First we put cluster configurations, which automatically creates /configurations
- * resources. Next we update host level overrides.
- */
- result.flag = this.doPUTClusterConfigurations();
+ if (selectedConfigGroup.get('isDefault')) {
+ this.saveGlobalConfigs(configs);
+ if (this.get('content.serviceName') === 'YARN' && !App.supports.capacitySchedulerUi) {
+ configs = App.config.textareaIntoFileConfigs(configs, 'capacity-scheduler.xml');
+ }
+ this.saveSiteConfigs(configs);
+
+ /**
+ * First we put cluster configurations, which automatically creates /configurations
+ * resources. Next we update host level overrides.
+ */
+ result.flag = this.doPUTClusterConfigurations();
+ } else {
+ var overridenConfigs = [];
+ configs.filterProperty('isOverridden', true).forEach(function (config) {
+ overridenConfigs = overridenConfigs.concat(config.get('overrides'));
+ });
+
+ this.putConfigGroupChanges({
+ ConfigGroup: {
+ "id": selectedConfigGroup.get('id'),
+ "cluster_name": App.get('clusterName'),
+ "group_name": selectedConfigGroup.get('name'),
+ "tag": selectedConfigGroup.get('service.id'),
+ "description": selectedConfigGroup.get('description'),
+ "hosts": selectedConfigGroup.get('hosts'),
+ "desired_configs": this.buildGroupDesiredConfigs(overridenConfigs)
+ }
+ });
+ result.flag = this.get('isPutConfigGroupChangesSuccess');
+ }
if (!result.flag) {
result.message = Em.I18n.t('services.service.config.failSaveConfig');
} else {
@@ -896,7 +917,45 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
console.log("The result from applyCreatdConfToService is: " + result);
return result;
},
-
+ /**
+ * construct desired_configs for config groups from overriden properties
+ * @param configs
+ * @return {Array}
+ */
+ buildGroupDesiredConfigs: function (configs) {
+ var sites = [];
+ var time = (new Date).getTime();
+ configs.forEach(function (config) {
+ var type = config.get('filename').replace('.xml', '');
+ var site = sites.findProperty('type', type) || {
+ type: type,
+ tag: 'version' + time,
+ properties: {}
+ };
+ site.properties[config.get('name')] = config.get('value');
+ sites.push(site);
+ });
+ return sites;
+ },
+ /**
+ * persist properties of config groups to server
+ * @param data
+ */
+ putConfigGroupChanges: function (data) {
+ App.ajax.send({
+ name: 'config_groups.update_config_group',
+ sender: this,
+ data: {
+ id: data.ConfigGroup.id,
+ configGroup: data
+ },
+ success: "putConfigGroupChangesSuccess"
+ });
+ },
+ isPutConfigGroupChangesSuccess: false,
+ putConfigGroupChangesSuccess: function () {
+ this.set('isPutConfigGroupChangesSuccess', true);
+ },
/**
* save new or change exist configs in global configs
* @param configs
@@ -904,7 +963,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
saveGlobalConfigs: function (configs) {
var globalConfigs = this.get('globalConfigs');
configs.filterProperty('id', 'puppet var').forEach(function (uiConfigProperty) {
- uiConfigProperty.set('value', App.config.trimProperty(uiConfigProperty), true);
+ uiConfigProperty.set('value', App.config.trimProperty(uiConfigProperty));
if (globalConfigs.someProperty('name', uiConfigProperty.name)) {
var modelGlobalConfig = globalConfigs.findProperty('name', uiConfigProperty.name);
modelGlobalConfig.value = uiConfigProperty.value;
@@ -1397,7 +1456,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
_globalSiteObj.value += "m";
}
globalSiteProperties[_globalSiteObj.name] = App.config.escapeXMLCharacters(_globalSiteObj.value);
- this.recordHostOverride(_globalSiteObj, 'global', tagName, this);
+ //this.recordHostOverride(_globalSiteObj, 'global', tagName, this);
//console.log("TRACE: name of the global property is: " + _globalSiteObj.name);
//console.log("TRACE: value of the global property is: " + _globalSiteObj.value);
}
@@ -1461,7 +1520,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
var coreSiteProperties = {};
coreSiteObj.forEach(function (_coreSiteObj) {
coreSiteProperties[_coreSiteObj.name] = App.config.escapeXMLCharacters(_coreSiteObj.value);
- this.recordHostOverride(_coreSiteObj, 'core-site', tagName, this);
+ //this.recordHostOverride(_coreSiteObj, 'core-site', tagName, this);
}, this);
return {"type": "core-site", "tag": tagName, "properties": coreSiteProperties};
},
@@ -1477,7 +1536,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
var siteProperties = {};
siteObj.forEach(function (_siteObj) {
siteProperties[_siteObj.name] = App.config.escapeXMLCharacters(_siteObj.value);
- this.recordHostOverride(_siteObj, siteName, tagName, this);
+ //this.recordHostOverride(_siteObj, siteName, tagName, this);
}, this);
return {"type": siteName, "tag": tagName, "properties": siteProperties};
},
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d01e0e26/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
index 90164f0..01284fb 100644
--- a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
+++ b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
@@ -197,7 +197,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({
name: 'config_groups.delete_config_group',
sender: this,
data: {
- configGroupName: selectedConfigGroup.get('name')
+ id: selectedConfigGroup.get('id')
}
});
this.get('configGroups').removeObject(selectedConfigGroup);
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d01e0e26/ambari-web/app/utils/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js
index 9226d4e..06413f5 100644
--- a/ambari-web/app/utils/ajax.js
+++ b/ambari-web/app/utils/ajax.js
@@ -225,6 +225,7 @@ var urls = {
'type': 'PUT',
'format': function (data) {
return {
+ async: false,
data: JSON.stringify(
[
data.configGroup
@@ -234,7 +235,7 @@ var urls = {
}
},
'config_groups.delete_config_group': {
- 'real': '/clusters/{clusterName}/config_groups/{configGroupName}',
+ 'real': '/clusters/{clusterName}/config_groups/{id}',
'mock': '',
'type': 'DELETE'
},