You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2014/08/12 20:50:32 UTC
git commit: AMBARI-6832. Config History: integrate API call to
set/get notes, show current version, etc. (yusaku)
Repository: ambari
Updated Branches:
refs/heads/trunk dceec5cc6 -> 389b2505d
AMBARI-6832. Config History: integrate API call to set/get notes, show current version, etc. (yusaku)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/389b2505
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/389b2505
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/389b2505
Branch: refs/heads/trunk
Commit: 389b2505d575b66615526e913b9fda91218dd752
Parents: dceec5c
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Tue Aug 12 11:28:52 2014 -0700
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Tue Aug 12 11:28:52 2014 -0700
----------------------------------------------------------------------
.../main/dashboard/config_history_controller.js | 70 +++++++++++++++++---
.../controllers/main/service/info/configs.js | 11 ++-
ambari-web/app/mappers/server_data_mapper.js | 6 +-
.../mappers/service_config_version_mapper.js | 5 +-
ambari-web/app/utils/ajax/ajax.js | 10 ++-
.../views/common/configs/config_history_flow.js | 13 +++-
.../views/main/dashboard/config_history_view.js | 9 ++-
7 files changed, 98 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/389b2505/ambari-web/app/controllers/main/dashboard/config_history_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/dashboard/config_history_controller.js b/ambari-web/app/controllers/main/dashboard/config_history_controller.js
index 8989b56..936634a 100644
--- a/ambari-web/app/controllers/main/dashboard/config_history_controller.js
+++ b/ambari-web/app/controllers/main/dashboard/config_history_controller.js
@@ -26,10 +26,11 @@ App.MainConfigHistoryController = Em.ArrayController.extend(App.TableServerMixin
return this.get('dataSource').filterProperty('isRequested');
}.property('dataSource.@each.isRequested'),
isPolling: false,
+ totalCount: 0,
filteredCount: 0,
mockUrl: '/data/configurations/service_versions.json',
realUrl: function () {
- return App.apiPrefix + '/clusters/' + App.get('clusterName') + '/configurations/serviceconfigversions?<parameters>fields=serviceconfigversion,user,appliedtime,createtime,service_name&minimal_response=true';
+ return App.apiPrefix + '/clusters/' + App.get('clusterName') + '/configurations/serviceconfigversions?<parameters>fields=serviceconfigversion,user,appliedtime,createtime,service_name,service_config_version_note&minimal_response=true';
}.property('App.clusterName'),
/**
@@ -60,14 +61,12 @@ App.MainConfigHistoryController = Em.ArrayController.extend(App.TableServerMixin
name: 'author',
key: 'user',
type: 'MATCH'
- }
- //TODO uncomment when API contains "notes" property
- /*,
+ },
{
name: 'notes',
key: '',
type: 'MATCH'
- }*/
+ }
],
sortProps: [
@@ -82,11 +81,11 @@ App.MainConfigHistoryController = Em.ArrayController.extend(App.TableServerMixin
{
name: 'author',
key: 'user'
- }/*,
+ },
{
name: 'notes',
key: ''
- }*/
+ }
],
modifiedFilter: Em.Object.create({
@@ -136,10 +135,30 @@ App.MainConfigHistoryController = Em.ArrayController.extend(App.TableServerMixin
}),
/**
- * get data from server and push it to model
+ * load all data components required by config history table
+ * - total counter of service config versions(called in parallel)
+ * - current versions
+ * - filtered versions
+ * @return {*}
+ */
+ load: function () {
+ var dfd = $.Deferred();
+ var self = this;
+
+ this.updateTotalCounter();
+ this.loadCurrentVersions().complete(function () {
+ self.loadConfigVersionsToModel().done(function () {
+ dfd.resolve();
+ });
+ });
+ return dfd.promise();
+ },
+
+ /**
+ * get filtered service config versions from server and push it to model
* @return {*}
*/
- loadHistoryToModel: function () {
+ loadConfigVersionsToModel: function () {
var dfd = $.Deferred();
var queryParams = this.getQueryParameters();
@@ -151,6 +170,37 @@ App.MainConfigHistoryController = Em.ArrayController.extend(App.TableServerMixin
return dfd.promise();
},
+ loadCurrentVersions: function () {
+ return App.ajax.send({
+ name: 'service.serviceConfigVersions.get.current',
+ sender: this,
+ data: {},
+ success: 'loadCurrentVersionsSuccess'
+ })
+ },
+
+ loadCurrentVersionsSuccess: function (data, opt, params) {
+ var currentConfigVersions = {};
+
+ for (var service in data.Clusters.desired_serviceconfigversions) {
+ currentConfigVersions[service + '_' + data.Clusters.desired_serviceconfigversions[service].serviceconfigversion] = true;
+ }
+ App.cache['currentConfigVersions'] = currentConfigVersions;
+ },
+
+ updateTotalCounter: function () {
+ return App.ajax.send({
+ name: 'service.serviceConfigVersions.get.total',
+ sender: this,
+ data: {},
+ success: 'updateTotalCounterSuccess'
+ })
+ },
+
+ updateTotalCounterSuccess: function (data, opt, params) {
+ this.set('totalCount', data.itemTotal);
+ },
+
getUrl: function (queryParams) {
var params = '';
if (App.get('testMode')) {
@@ -171,7 +221,7 @@ App.MainConfigHistoryController = Em.ArrayController.extend(App.TableServerMixin
setTimeout(function () {
if (self.get('isPolling')) {
- self.loadHistoryToModel().done(function () {
+ self.load().done(function () {
self.doPolling();
})
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/389b2505/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 b2cd153..6f373af 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -52,6 +52,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
selectedVersion: null,
// file names of changed configs
modifiedFileNames: [],
+ // note passed on configs save
+ serviceConfigVersionNote: '',
versionLoaded: false,
isCurrentSelected: function () {
return this.get('selectedVersion') === this.get('currentVersion');
@@ -169,6 +171,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
this.get('uiConfigs').clear();
this.get('customConfig').clear();
this.set('loadedGroupToOverrideSiteToTagMap', {});
+ this.set('serviceConfigVersionNote', '');
this.set('savedSiteNameToServerServiceConfigDataMap', {});
if (this.get('serviceConfigTags')) {
this.set('serviceConfigTags', null);
@@ -273,9 +276,11 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
*/
loadServiceConfigVersionsSuccess: function (data, opt, params) {
var currentVersion = Math.max.apply(this, data.items.mapProperty('serviceconfigversion'));
+ var currentVersionObject = data.items.findProperty('serviceconfigversion', currentVersion);
this.set('currentVersion', currentVersion);
- data.items.findProperty('serviceconfigversion', currentVersion).is_current = true;
+ App.cache['currentConfigVersions'] = {};
+ App.cache['currentConfigVersions'][currentVersionObject.service_name + '_' + currentVersionObject.serviceconfigversion] = true;
App.serviceConfigVersionsMapper.map(data);
},
@@ -1748,8 +1753,10 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
if (filename === 'mapred-queue-acls.xml' && !App.supports.capacitySchedulerUi) {
return null;
}
- return this.createSiteObj(siteName, tagName, this.get('uiConfigs').filterProperty('filename', filename));
+ configObject = this.createSiteObj(siteName, tagName, this.get('uiConfigs').filterProperty('filename', filename));
+ break;
}
+ configObject.service_config_version_note = this.get('serviceConfigVersionNote');
return configObject;
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/389b2505/ambari-web/app/mappers/server_data_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/server_data_mapper.js b/ambari-web/app/mappers/server_data_mapper.js
index 58abb71..45ee5c9 100644
--- a/ambari-web/app/mappers/server_data_mapper.js
+++ b/ambari-web/app/mappers/server_data_mapper.js
@@ -23,13 +23,11 @@ var App = require('app');
* App.cache contains shared data, used for syncronizing incoming server data among mappers
*/
App.cache = {
- 'HostsList': [],
'previousHostStatuses': {},
'previousComponentStatuses': {},
'previousComponentPassiveStates': {},
- 'hostComponentsOnService': {},
- 'restartRequiredServices': [],
- 'services': []
+ 'services': [],
+ 'currentConfigVersions': {}
};
App.ServerDataMapper = Em.Object.extend({
http://git-wip-us.apache.org/repos/asf/ambari/blob/389b2505/ambari-web/app/mappers/service_config_version_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/service_config_version_mapper.js b/ambari-web/app/mappers/service_config_version_mapper.js
index e8c67da..fcdb145 100644
--- a/ambari-web/app/mappers/service_config_version_mapper.js
+++ b/ambari-web/app/mappers/service_config_version_mapper.js
@@ -27,18 +27,19 @@ App.serviceConfigVersionsMapper = App.QuickDataMapper.create({
create_time: 'createtime',
applied_time: 'appliedtime',
author: 'user',
- notes: 'notes',
+ notes: 'service_config_version_note',
is_current: 'is_current',
index: 'index'
},
map: function (json) {
var result = [];
var itemIds = {};
-
+ var currentConfigVersions = App.cache['currentConfigVersions'];
if (json && json.items) {
json.items.forEach(function (item, index) {
var parsedItem = this.parseIt(item, this.get('config'));
parsedItem.id = parsedItem.service_name + '_' + parsedItem.version;
+ parsedItem.is_current = !!currentConfigVersions[parsedItem.id];
parsedItem.is_requested = true;
itemIds[parsedItem.id] = true;
parsedItem.index = index;
http://git-wip-us.apache.org/repos/asf/ambari/blob/389b2505/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index fc1f81c..1cb7846 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -1858,9 +1858,17 @@ var urls = {
}
},
'service.serviceConfigVersions.get': {
- real: '/clusters/{clusterName}/configurations/serviceconfigversions?service_name={serviceName}&fields=serviceconfigversion,user,appliedtime,createtime,service_name&minimal_response=true',
+ real: '/clusters/{clusterName}/configurations/serviceconfigversions?service_name={serviceName}&fields=serviceconfigversion,user,appliedtime,createtime,service_name,service_config_version_note&minimal_response=true',
mock: '/data/configurations/service_versions.json'
},
+ 'service.serviceConfigVersions.get.current': {
+ real: '/clusters/{clusterName}?fields=Clusters/desired_serviceconfigversions&minimal_response=true',
+ mock: ''
+ },
+ 'service.serviceConfigVersions.get.total': {
+ real: '/clusters/{clusterName}/configurations/serviceconfigversions?page_size=1&minimal_response=true',
+ mock: ''
+ },
'service.serviceConfigVersion.get': {
real: '/clusters/{clusterName}/configurations/serviceconfigversions?service_name={serviceName}&serviceconfigversion={serviceConfigVersion}',
mock: '/data/configurations/service_version.json'
http://git-wip-us.apache.org/repos/asf/ambari/blob/389b2505/ambari-web/app/views/common/configs/config_history_flow.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/config_history_flow.js b/ambari-web/app/views/common/configs/config_history_flow.js
index 66b6175..9521eab 100644
--- a/ambari-web/app/views/common/configs/config_history_flow.js
+++ b/ambari-web/app/views/common/configs/config_history_flow.js
@@ -187,8 +187,12 @@ App.ConfigHistoryFlowView = Em.View.extend({
*/
revert: function (event) {
var self = this;
+ var serviceConfigVersion = event.context || Em.Object.create({
+ version: this.get('displayedServiceVersion.version'),
+ serviceName: this.get('displayedServiceVersion.serviceName')
+ });
App.showConfirmationPopup(function () {
- self.sendRevertCall(event.context);
+ self.sendRevertCall(serviceConfigVersion);
});
},
@@ -235,11 +239,15 @@ App.ConfigHistoryFlowView = Em.View.extend({
var self = this;
return App.ModalPopup.show({
header: Em.I18n.t('dashboard.configHistory.info-bar.save.popup.title'),
+ serviceConfigNote: '',
bodyClass: Em.View.extend({
templateName: require('templates/common/configs/save_configuration'),
notesArea: Em.TextArea.extend({
classNames: ['full-width'],
- placeholder: Em.I18n.t('dashboard.configHistory.info-bar.save.popup.placeholder')
+ placeholder: Em.I18n.t('dashboard.configHistory.info-bar.save.popup.placeholder'),
+ onChangeValue: function() {
+ this.get('parentView.parentView').set('serviceConfigNote', this.get('value'));
+ }.observes('value')
})
}),
footerClass: Ember.View.extend({
@@ -248,6 +256,7 @@ App.ConfigHistoryFlowView = Em.View.extend({
primary: Em.I18n.t('common.save'),
secondary: Em.I18n.t('common.cancel'),
onSave: function () {
+ self.get('controller').set('serviceConfigVersionNote', this.get('serviceConfigNote'));
self.get('controller').restartServicePopup();
this.hide();
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/389b2505/ambari-web/app/views/main/dashboard/config_history_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/config_history_view.js b/ambari-web/app/views/main/dashboard/config_history_view.js
index 6a23ccf..1c6105b 100644
--- a/ambari-web/app/views/main/dashboard/config_history_view.js
+++ b/ambari-web/app/views/main/dashboard/config_history_view.js
@@ -46,9 +46,8 @@ App.MainConfigHistoryView = App.TableView.extend({
}.property('controller.filteredCount'),
totalCount: function () {
- //TODO change to totalCount when property provided by API
- return this.get('controller.filteredCount');
- }.property('controller.filteredCount'),
+ return this.get('controller.totalCount');
+ }.property('controller.totalCount'),
/**
* return filtered number of all content number information displayed on the page footer bar
* @returns {String}
@@ -77,7 +76,7 @@ App.MainConfigHistoryView = App.TableView.extend({
this.addObserver('startIndex', this, 'updatePagination');
this.addObserver('displayLength', this, 'updatePagination');
this.set('controller.isPolling', true);
- this.refresh();
+ this.get('controller').doPolling();
},
/**
@@ -174,7 +173,7 @@ App.MainConfigHistoryView = App.TableView.extend({
var self = this;
this.set('filteringComplete', false);
- this.get('controller').loadHistoryToModel().done(function(){
+ this.get('controller').load().done(function () {
self.set('filteringComplete', true);
self.propertyDidChange('pageContent');
self.set('controller.resetStartIndex', false);