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 2013/08/06 23:01:35 UTC

git commit: AMBARI-2821. NameNode HA Wizard: "Initialize JournalNodes" page. (Antonenko Alexander via yusaku)

Updated Branches:
  refs/heads/trunk 938878647 -> 13ca404d3


AMBARI-2821. NameNode HA Wizard: "Initialize JournalNodes" page. (Antonenko Alexander via yusaku)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/13ca404d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/13ca404d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/13ca404d

Branch: refs/heads/trunk
Commit: 13ca404d3609b10bbfefb79317b95b1dba2dc493
Parents: 9388786
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Tue Aug 6 14:01:25 2013 -0700
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Tue Aug 6 14:01:25 2013 -0700

----------------------------------------------------------------------
 ambari-web/app/controllers.js                   |  1 +
 .../admin/highAvailability/step6_controller.js  | 28 +++++++++++++++
 .../admin/highAvailability/wizard_controller.js |  7 ++--
 .../controllers/main/admin/misc_controller.js   |  3 ++
 ambari-web/app/messages.js                      | 37 ++++++++++++--------
 .../app/routes/high_availability_routes.js      | 23 +++++++++++-
 .../main/admin/highAvailability/step4.hbs       |  2 +-
 .../main/admin/highAvailability/step6.hbs       | 27 ++++++++++++++
 .../main/admin/highAvailability/wizard.hbs      |  3 +-
 ambari-web/app/views.js                         |  1 +
 .../main/admin/highAvailability/step4_view.js   |  7 ++--
 .../main/admin/highAvailability/step6_view.js   | 31 ++++++++++++++++
 .../main/admin/highAvailability/wizard_view.js  |  4 +++
 13 files changed, 153 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/controllers.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers.js b/ambari-web/app/controllers.js
index ff38aaf..baa11f4 100644
--- a/ambari-web/app/controllers.js
+++ b/ambari-web/app/controllers.js
@@ -34,6 +34,7 @@ require('controllers/main/admin/highAvailability/step2_controller');
 require('controllers/main/admin/highAvailability/step3_controller');
 require('controllers/main/admin/highAvailability/step4_controller');
 require('controllers/main/admin/highAvailability/step5_controller');
+require('controllers/main/admin/highAvailability/step6_controller');
 require('controllers/main/admin/cluster');
 require('controllers/main/admin/stack_upgrade_controller');
 require('controllers/main/admin/user');

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/controllers/main/admin/highAvailability/step6_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/highAvailability/step6_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/step6_controller.js
new file mode 100644
index 0000000..84e3b44
--- /dev/null
+++ b/ambari-web/app/controllers/main/admin/highAvailability/step6_controller.js
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+require('controllers/main/admin/misc_controller');
+
+App.HighAvailabilityWizardStep6Controller = App.MainAdminMiscController.extend({
+
+  name:"highAvailabilityWizardStep6Controller"
+
+})
+

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/controllers/main/admin/highAvailability/wizard_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/highAvailability/wizard_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/wizard_controller.js
index 6a79d39..7c5e5e6 100644
--- a/ambari-web/app/controllers/main/admin/highAvailability/wizard_controller.js
+++ b/ambari-web/app/controllers/main/admin/highAvailability/wizard_controller.js
@@ -23,7 +23,7 @@ App.HighAvailabilityWizardController = App.WizardController.extend({
 
   name: 'highAvailabilityWizardController',
 
-  totalSteps: 5,
+  totalSteps: 6,
 
   /**
    * Used for hiding back button in wizard
@@ -36,7 +36,9 @@ App.HighAvailabilityWizardController = App.WizardController.extend({
     hosts: null,
     services: null,
     slaveComponentHosts: null,
-    masterComponentHosts: null
+    masterComponentHosts: null,
+    serviceName: 'MISC',
+    hdfsUser:"hdfs"
   }),
 
   /**
@@ -163,6 +165,7 @@ App.HighAvailabilityWizardController = App.WizardController.extend({
   loadAllPriorSteps: function () {
     var step = this.get('currentStep');
     switch (step) {
+      case '6':
       case '5':
       case '4':
       case '3':

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/controllers/main/admin/misc_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/misc_controller.js b/ambari-web/app/controllers/main/admin/misc_controller.js
index c2e040b..db594f6 100644
--- a/ambari-web/app/controllers/main/admin/misc_controller.js
+++ b/ambari-web/app/controllers/main/admin/misc_controller.js
@@ -73,6 +73,9 @@ App.MainAdminMiscController = App.MainServiceInfoConfigsController.extend({
     else {
       this.set('users', misc_configs);
     }
+    if(this.get("content.hdfsUser")){
+      this.get('content').set('hdfsUser', misc_configs.findProperty('name','hdfs_user').get("value"));
+    }
     this.set('dataIsLoaded', true);
   }
 });

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index e271f31..74321cd 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -645,7 +645,10 @@ Em.I18n.translations = {
   'admin.highAvailability.wizard.step2.header':'Select Hosts',
   'admin.highAvailability.wizard.step3.header':'Review',
   'admin.highAvailability.wizard.step4.header':'Create Checkpoint',
+  'admin.highAvailability.wizard.step4.bodyHeader':'Manual Steps Required: Create Checkpoint on NameNode',
+  'admin.highAvailability.wizard.step6.bodyHeader':'Manual Steps Required: Initialize JournalNodes',
   'admin.highAvailability.wizard.step5.header':'Deploy',
+  'admin.highAvailability.wizard.step6.header':'Initialize JournalNodes',
 
   'admin.highAvailability.wizard.step5.notice':'Please wait while NameNode HA is being deployed.',
   'admin.highAvailability.wizard.step5.task0.title':'Stop all services',
@@ -660,25 +663,31 @@ Em.I18n.translations = {
   'admin.highAvailability.wizard.step3.sn':'Existing Secondary NameNode on {0} will be disabled.',
   'admin.highAvailability.wizard.step3.jn':'JournalNode will be installed on following hosts:',
   'admin.highAvailability.wizard.step4.ckNotCreated':'Checkpoint not created yet',
+  'admin.highAvailability.wizard.step6.jsNoInit':'JournalNodes not initialized yet',
 
+
+  'admin.highAvailability.wizard.step6.body':'Note: The following commands must be run as the user {0} on {1} <br/>' +
+    '1. Initialize the JournalNodes by running: <br/>' +
+    '$ hdfs namenode -initializeSharedEdits<br/>' +
+    '2. You will be able to proceed to the next step once we detect that the JournalNodes have been initialized successfuly.<br/>',
   'admin.highAvailability.wizard.step4.body':'Note: The following commands must be run as the user {0} on {1} <br/>' +
-  '1. Put the NameNode in safe mode (read-only-mode) by running: <br/>' +
-  '$ hdfs dfsadmin -safemode enter <br/>' +
-  '2. Once NameNode is in Safe Mode, create a checkpoint by running: <br/>' +
-  '$ TDB COMMAND <br/>' +
-  '3. You will be able to proceed to the next step once we detect that the NameNode is in Safe Mode and that the checkpoint has been created successfully.',
+    '1. Put the NameNode in safe mode (read-only-mode) by running: <br/>' +
+    '$ hdfs dfsadmin -safemode enter <br/>' +
+    '2. Once NameNode is in Safe Mode, create a checkpoint by running: <br/>' +
+    '$ TDB COMMAND <br/>' +
+    '3. You will be able to proceed to the next step once we detect that the NameNode is in Safe Mode and that the checkpoint has been created successfully.',
   'admin.highAvailability.wizard.step3.body':'Confirm your host selection and click Deploy to activate NameNode HA.',
   'admin.highAvailability.wizard.step2.body':'Select a host that will be running an additional NameNode.<br/> In addition,' +
-  ' select 3 hosts that will be running JournalNodes to store NameNode edit logs in a fault tolerant maner.',
+    ' select 3 hosts that will be running JournalNodes to store NameNode edit logs in a fault tolerant maner.',
   'admin.highAvailability.wizard.step1.body':'We will walk you through enabling NameNode HA with this wizard.<br/>' +
-  'In NameNode HA, you will be running one more NameNode in addition to the current NameNode.  This allows for an ' +
-  'active-standby configuration that automatically fails over if the active NameNode fails.<br/>' +
-  'Note that your current Secondary NameNode will be disabled.<br/>' +
-  'In addition, the NameNodes will be storing the edit logs on multiple JournalNodes for fault tolerance.<br/>' +
-  'Once you make your host selection for NameNodes and JournalNodes and confirm your selection, the wizard ' +
-  'will make necessary changes to enable NameNode HA.<br/>' +
-  'You will be prompted to run manual steps as needed.<br/>' +
-  'Let"s get started.',
+    'In NameNode HA, you will be running one more NameNode in addition to the current NameNode.  This allows for an ' +
+    'active-standby configuration that automatically fails over if the active NameNode fails.<br/>' +
+    'Note that your current Secondary NameNode will be disabled.<br/>' +
+    'In addition, the NameNodes will be storing the edit logs on multiple JournalNodes for fault tolerance.<br/>' +
+    'Once you make your host selection for NameNodes and JournalNodes and confirm your selection, the wizard ' +
+    'will make necessary changes to enable NameNode HA.<br/>' +
+    'You will be prompted to run manual steps as needed.<br/>' +
+    'Let"s get started.',
 
   'admin.security.title':'Kerberos Security has not been enabled on this cluster.',
   'admin.security.enabled': 'Kerberos security is enabled on the cluster',

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/routes/high_availability_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/high_availability_routes.js b/ambari-web/app/routes/high_availability_routes.js
index 1d19646..bcb4ddf 100644
--- a/ambari-web/app/routes/high_availability_routes.js
+++ b/ambari-web/app/routes/high_availability_routes.js
@@ -131,6 +131,25 @@ module.exports = Em.Route.extend({
     back: function (router) {
       router.transitionTo('step4');
     },
+    next: function (router) {
+      router.transitionTo('step6');
+    }
+  }),
+
+  step6: Em.Route.extend({
+    route: '/step6',
+    connectOutlets: function (router) {
+      $('a.close').hide();
+      var controller = router.get('highAvailabilityWizardController');
+      controller.setCurrentStep('6');
+      controller.dataLoading().done(function () {
+        controller.loadAllPriorSteps();
+        controller.connectOutlet('highAvailabilityWizardStep6',  controller.get('content'));
+      })
+    },
+    back: function (router) {
+      router.transitionTo('step5');
+    },
     next: function (router) {}
   }),
 
@@ -142,5 +161,7 @@ module.exports = Em.Route.extend({
 
   gotoStep4: Em.Router.transitionTo('step4'),
 
-  gotoStep5: Em.Router.transitionTo('step5')
+  gotoStep5: Em.Router.transitionTo('step5'),
+
+  gotoStep6: Em.Router.transitionTo('step6')
 });

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/templates/main/admin/highAvailability/step4.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/highAvailability/step4.hbs b/ambari-web/app/templates/main/admin/highAvailability/step4.hbs
index a555437..d164ec4 100644
--- a/ambari-web/app/templates/main/admin/highAvailability/step4.hbs
+++ b/ambari-web/app/templates/main/admin/highAvailability/step4.hbs
@@ -16,7 +16,7 @@
 * limitations under the License.
 }}
 <div>
-  <h2>{{t admin.highAvailability.wizard.step4.header}}</h2>
+  <h2>{{t admin.highAvailability.wizard.step4.bodyHeader}}</h2>
   <p class="alert alert-info">
     {{{view.step4BodyText}}}
   </p>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/templates/main/admin/highAvailability/step6.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/highAvailability/step6.hbs b/ambari-web/app/templates/main/admin/highAvailability/step6.hbs
new file mode 100644
index 0000000..b04b599
--- /dev/null
+++ b/ambari-web/app/templates/main/admin/highAvailability/step6.hbs
@@ -0,0 +1,27 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+<div>
+  <h2>{{t admin.highAvailability.wizard.step6.bodyHeader}}</h2>
+  <p class="alert alert-info">
+    {{{view.step6BodyText}}}
+  </p>
+  <div class="btn-area">
+    <a class="btn btn-success pull-right" {{action next}}>{{t common.next}} &rarr;</a>
+    <span class="pull-right btn-extra-info">{{t admin.highAvailability.wizard.step6.jsNoInit}}</span>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs b/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs
index b393620..2420613 100644
--- a/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs
+++ b/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs
@@ -29,7 +29,8 @@
               <li {{bindAttr class="isStep2:active view.isStep2Disabled:disabled"}}><a href="javascript:void(null);"  {{action gotoStep2 target="controller"}}>{{t admin.highAvailability.wizard.step2.header}}</a></li>
               <li {{bindAttr class="isStep3:active view.isStep3Disabled:disabled"}}><a href="javascript:void(null);"  {{action gotoStep3 target="controller"}}>{{t admin.highAvailability.wizard.step3.header}}</a></li>
               <li {{bindAttr class="isStep4:active view.isStep4Disabled:disabled"}}><a href="javascript:void(null);"  {{action gotoStep4 target="controller"}}>{{t admin.highAvailability.wizard.step4.header}}</a></li>
-              <li {{bindAttr class="isStep5:active view.isStep4Disabled:disabled"}}><a href="javascript:void(null);"  {{action gotoStep5 target="controller"}}>{{t admin.highAvailability.wizard.step5.header}}</a></li>
+              <li {{bindAttr class="isStep5:active view.isStep5Disabled:disabled"}}><a href="javascript:void(null);"  {{action gotoStep5 target="controller"}}>{{t admin.highAvailability.wizard.step5.header}}</a></li>
+              <li {{bindAttr class="isStep6:active view.isStep6Disabled:disabled"}}><a href="javascript:void(null);"  {{action gotoStep6 target="controller"}}>{{t admin.highAvailability.wizard.step6.header}}</a></li>
             </ul>
           </div>
         </div>

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index c6eeb5d..e5192d5 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -60,6 +60,7 @@ require('views/main/admin/highAvailability/step2_view');
 require('views/main/admin/highAvailability/step3_view');
 require('views/main/admin/highAvailability/step4_view');
 require('views/main/admin/highAvailability/step5_view');
+require('views/main/admin/highAvailability/step6_view');
 require('views/main/admin/cluster');
 require('views/main/admin/misc_view');
 require('views/main/admin/stack_upgrade');

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/views/main/admin/highAvailability/step4_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/highAvailability/step4_view.js b/ambari-web/app/views/main/admin/highAvailability/step4_view.js
index 1f38920..6920241 100644
--- a/ambari-web/app/views/main/admin/highAvailability/step4_view.js
+++ b/ambari-web/app/views/main/admin/highAvailability/step4_view.js
@@ -23,10 +23,13 @@ App.HighAvailabilityWizardStep4View = Em.View.extend({
 
   templateName: require('templates/main/admin/highAvailability/step4'),
 
-  step4BodyText: function () {
+  didInsertElement: function() {
     this.get('controller').loadUsers();
+  },
+
+  step4BodyText: function () {
     var nN = this.get('controller.content.masterComponentHosts').findProperty('isCurNameNode', true);
-    return Em.I18n.t('admin.highAvailability.wizard.step4.body').format("hdfs", nN.hostName);
+    return Em.I18n.t('admin.highAvailability.wizard.step4.body').format(this.get('controller.content.hdfsUser'), nN.hostName);
   }.property('controller.content.masterComponentHosts')
 
 });

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/views/main/admin/highAvailability/step6_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/highAvailability/step6_view.js b/ambari-web/app/views/main/admin/highAvailability/step6_view.js
new file mode 100644
index 0000000..4ffe6d1
--- /dev/null
+++ b/ambari-web/app/views/main/admin/highAvailability/step6_view.js
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+var App = require('app');
+
+App.HighAvailabilityWizardStep6View = Em.View.extend({
+
+  templateName: require('templates/main/admin/highAvailability/step6'),
+
+  step6BodyText: function () {
+    var nN = this.get('controller.content.masterComponentHosts').findProperty('isCurNameNode', true);
+    return Em.I18n.t('admin.highAvailability.wizard.step6.body').format(this.get('controller.content.hdfsUser'), nN.hostName);
+  }.property('controller.content.masterComponentHosts')
+
+});

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13ca404d/ambari-web/app/views/main/admin/highAvailability/wizard_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/highAvailability/wizard_view.js b/ambari-web/app/views/main/admin/highAvailability/wizard_view.js
index d1d4e85..c88d2f6 100644
--- a/ambari-web/app/views/main/admin/highAvailability/wizard_view.js
+++ b/ambari-web/app/views/main/admin/highAvailability/wizard_view.js
@@ -43,6 +43,10 @@ App.HighAvailabilityWizardView = Em.View.extend({
     return this.isStepDisabled(5);
   }.property('controller.isStepDisabled.@each.value').cacheable(),
 
+  isStep6Disabled: function () {
+    return this.isStepDisabled(6);
+  }.property('controller.isStepDisabled.@each.value').cacheable(),
+
   isStepDisabled: function (index) {
     return this.get('controller.isStepDisabled').findProperty('step', index).get('value');
   }