You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2014/08/22 14:48:26 UTC
[28/46] git commit: AMBARI-6968 Fix server validation to load all
hosts on service confg page. (ababiichuk)
AMBARI-6968 Fix server validation to load all hosts on service confg page. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3a05d2ca
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3a05d2ca
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3a05d2ca
Branch: refs/heads/branch-alerts-dev
Commit: 3a05d2ca1ec4a6f4bb74f53b2ffa4a06e39bb291
Parents: 315bf96
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Thu Aug 21 12:42:53 2014 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Thu Aug 21 12:42:53 2014 +0300
----------------------------------------------------------------------
ambari-web/app/mixins/common/serverValidator.js | 63 ++++++++++++++++----
1 file changed, 50 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/3a05d2ca/ambari-web/app/mixins/common/serverValidator.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/serverValidator.js b/ambari-web/app/mixins/common/serverValidator.js
index a4be042..f809538 100644
--- a/ambari-web/app/mixins/common/serverValidator.js
+++ b/ambari-web/app/mixins/common/serverValidator.js
@@ -43,6 +43,9 @@ App.ServerValidatorMixin = Em.Mixin.create({
*/
recommendationsConfigs: null,
+ loadAdditionalinfo: function() {
+ return !(this.get('content.hosts') && this.get('content.hosts').length);
+ }.property('content.hosts'),
/**
* by default loads data from model otherwise must be overridden as computed property
* refer to \assets\data\stacks\HDP-2.1\recommendations_configs.json to learn structure
@@ -52,10 +55,10 @@ App.ServerValidatorMixin = Em.Mixin.create({
hostNames: function() {
return this.get('content.hosts')
? Object.keys(this.get('content.hosts'))
- : App.HostComponent.find().mapProperty('hostName').uniq();
- }.property('content.hosts'),
-
+ : this.get('allHostNames');
+ }.property('content.hosts', 'allHostNames'),
+ allHostNames: [],
/**
* by default loads data from model otherwise must be overridden as computed property
* @type {Array} - of strings (serviceNames)
@@ -135,21 +138,55 @@ App.ServerValidatorMixin = Em.Mixin.create({
console.error('Load recommendations failed');
},
+ serverSideValidation: function() {
+ var deferred = $.Deferred();
+ if (!App.get('supports.serverRecommendValidate')) {
+ deferred.resolve();
+ } else {
+ this.set('configValidationFailed', false);
+ if (this.get('loadAdditionalinfo')) {
+ var self = this;
+ this.getHostNames().complete(function() {
+ if (self.get('configValidationFailed')) {
+ self.warnUser(deferred);
+ } else {
+ self.runServerSideValidation(deferred);
+ }
+ });
+ } else {
+ this.runServerSideValidation(deferred);
+ }
+ }
+ return deferred;
+ },
+
+ getHostNames: function() {
+ return App.ajax.send({
+ name: 'hosts.all',
+ sender: this,
+ success: 'getHostNamesSuccess',
+ error: 'getHostNamesError'
+ })
+ },
+
+ getHostNamesSuccess: function(data) {
+ this.set("allHostNames", data.items.mapProperty("Hosts.host_name"));
+ },
+
+ getHostNamesError: function() {
+ this.set('configValidationFailed', true);
+ console.error('failed to load hostNames');
+ },
/**
* @method serverSideValidation
* send request to validate configs
* @returns {*}
*/
- serverSideValidation: function() {
+ runServerSideValidation: function(deferred) {
var self = this;
- var deferred = $.Deferred();
- if (!App.get('supports.serverRecommendValidate')) {
- deferred.resolve();
- return deferred;
- }
var recommendations = this.get('hostGroups');
recommendations.blueprint.configurations = blueprintUtils.buildConfisJSON(this.get('services'), this.get('stepConfigs'));
- App.ajax.send({
+ return App.ajax.send({
name: 'config.validations',
sender: this,
data: {
@@ -164,7 +201,6 @@ App.ServerValidatorMixin = Em.Mixin.create({
}).complete(function() {
self.warnUser(deferred);
});
- return deferred;
},
@@ -178,7 +214,6 @@ App.ServerValidatorMixin = Em.Mixin.create({
var self = this;
self.set('configValidationError', false);
self.set('configValidationWarning', false);
- self.set('configValidationFailed', false);
data.resources.forEach(function(r) {
r.items.forEach(function(item){
if (item.type == "configuration") {
@@ -189,7 +224,7 @@ App.ServerValidatorMixin = Em.Mixin.create({
self.set('configValidationError', true);
property.set('errorMessage', item.message);
property.set('error', true);
- } else if (item.level == "ERROR") {
+ } else if (item.level == "WARN") {
self.set('configValidationWarning', true);
property.set('warnMessage', item.message);
property.set('warn', true);
@@ -219,10 +254,12 @@ App.ServerValidatorMixin = Em.Mixin.create({
if (this.get('configValidationFailed')) {
this.set('isSubmitDisabled', false);
this.set("isApplyingChanges", false);
+ deferred.reject();
return App.showAlertPopup(Em.I18n.t('installer.step7.popup.validation.failed.header'), Em.I18n.t('installer.step7.popup.validation.request.failed.body'));
} else if (this.get('configValidationError')) {
this.set("isApplyingChanges", false);
this.set('isSubmitDisabled', true);
+ deferred.reject();
return App.showAlertPopup(Em.I18n.t('installer.step7.popup.validation.failed.header'), Em.I18n.t('installer.step7.popup.validation.failed.body'));
} else if (this.get('configValidationWarning')) {
this.set('isSubmitDisabled', true);