Browse Source

AMBARI-2976. During agent registration show list of agents that are registered but do not correspond to any hostnames that are provided by the user. (Andrii Babiichuk via yusaku)

Yusaku Sako 11 years ago
parent
commit
7eddd1c5b5

+ 44 - 0
ambari-web/app/controllers/wizard/step3_controller.js

@@ -23,6 +23,7 @@ App.WizardStep3Controller = Em.Controller.extend({
   hosts: [],
   content: [],
   bootHosts: [],
+  registeredHosts: [],
   registrationStartedAt: null,
   registrationTimeoutSecs: 120,
   stopBootstrap: false,
@@ -455,6 +456,31 @@ App.WizardStep3Controller = Em.Controller.extend({
     }
   },
 
+  hasMoreRegisteredHosts: false,
+
+  getAllRegisteredHosts: function() {
+    App.ajax.send({
+      name: 'wizard.step3.is_hosts_registered',
+      sender: this,
+      success: 'getAllRegisteredHostsCallback'
+    });
+  }.observes('bootHosts.@each.name'),
+
+  getAllRegisteredHostsCallback: function(hosts) {
+    var registeredHosts = [];
+    var addedHosts = this.get('bootHosts').getEach('name');
+    hosts.items.forEach(function(host){
+      (addedHosts.contains(host.Hosts.host_name)) ? null : registeredHosts.push(host.Hosts.host_name);
+    });
+    if(registeredHosts.length) {
+      this.set('hasMoreRegisteredHosts',true);
+      this.set('registeredHosts',registeredHosts);
+    } else {
+      this.set('hasMoreRegisteredHosts',false);
+      this.set('registeredHosts','');
+    }
+  },
+
   allHostsComplete: function() {
     var result = true;
     this.get('bootHosts').forEach(function(host) {
@@ -1085,6 +1111,24 @@ App.WizardStep3Controller = Em.Controller.extend({
     })
   },
 
+  registeredHostsPopup: function(){
+    var self = this;
+    App.ModalPopup.show({
+      header: Em.I18n.t('installer.step3.warning.registeredHosts').format(this.get('registeredHosts').length),
+      secondary: null,
+      bodyClass: Ember.View.extend({
+        template: Ember.Handlebars.compile([
+          '<p>{{view.message}}</p>',
+          '<ul>{{#each host in view.registeredHosts}}',
+              '<li>{{host}}</li>',
+          '{{/each}}</ul>'
+        ].join('')),
+        message: Em.I18n.t('installer.step3.registeredHostsPopup'),
+        registeredHosts: self.get('registeredHosts')
+      })
+    })
+  },
+
   back: function () {
     if (this.get('isInstallInProgress')) {
       return;

+ 2 - 0
ambari-web/app/messages.js

@@ -390,6 +390,8 @@ Em.I18n.translations = {
   'installer.step3.warnings.updateChecks.success':'Host Checks successfully updated',
   'installer.step3.warnings.updateChecks.failed':'Host Checks update failed',
   'installer.step3.warnings.missingHosts':'There is no registered host',
+  'installer.step3.warning.registeredHosts': '{0} Other Registered Hosts',
+  'installer.step3.registeredHostsPopup': 'These are the hosts that have registered with the server, but do not appear in the list of hosts that you are adding.',
   'installer.step3.removeSelected':'Remove Selected',
   'installer.step3.retryFailed':'Retry Failed',
   'installer.step3.hosts.status.registering':'Registering',

+ 5 - 0
ambari-web/app/templates/wizard/step3.hbs

@@ -114,6 +114,11 @@
       </div>
     </div>
   </div>
+    {{#if hasMoreRegisteredHosts}}
+        <div {{bindAttr class=":alert alert-warn"}}>
+          <a href="#" {{action registeredHostsPopup target="controller"}}>{{view.registeredHostsMessage}}</a>
+        </div>
+    {{/if}}
     {{#if isWarningsBoxVisible}}
       <div {{bindAttr class=":alert view.status"}}>
         {{view.message}}

+ 6 - 0
ambari-web/app/views/wizard/step3_view.js

@@ -32,6 +32,12 @@ App.WizardStep3View = Em.View.extend({
   linkText: '',
   status: '',
 
+  registeredHostsMessage: '',
+
+  setRegisteredHosts: function(){
+    this.set('registeredHostsMessage',Em.I18n.t('installer.step3.warning.registeredHosts').format(this.get('controller.registeredHosts').length));
+  }.observes('controller.registeredHosts'),
+
   monitorStatuses: function() {
     var failedHosts = 0;
     var hosts = this.get('controller.bootHosts');