소스 검색

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 12 년 전
부모
커밋
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');