Updated Branches: refs/heads/trunk 758df470e -> 73ba823ae
AMBARI-2846. NameNode HA Wizard: "Initialize Metadata" 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/73ba823a Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/73ba823a Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/73ba823a Branch: refs/heads/trunk Commit: 73ba823aeb9876de21b59330ac2cb1dd32d5a5c5 Parents: 758df47 Author: Yusaku Sako <[email protected]> Authored: Thu Aug 8 18:10:56 2013 -0700 Committer: Yusaku Sako <[email protected]> Committed: Thu Aug 8 18:10:56 2013 -0700 ---------------------------------------------------------------------- ambari-web/app/controllers.js | 1 + .../admin/highAvailability/step6_controller.js | 4 +-- .../admin/highAvailability/step8_controller.js | 26 +++++++++++++++ .../admin/highAvailability/wizard_controller.js | 3 +- ambari-web/app/messages.js | 35 +++++++++++++------- .../app/routes/high_availability_routes.js | 25 +++++++++++++- .../main/admin/highAvailability/step8.hbs | 27 +++++++++++++++ .../main/admin/highAvailability/wizard.hbs | 1 + ambari-web/app/utils/ajax.js | 4 +-- ambari-web/app/views.js | 1 + .../main/admin/highAvailability/step8_view.js | 32 ++++++++++++++++++ .../main/admin/highAvailability/wizard_view.js | 3 ++ 12 files changed, 143 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/ambari-web/app/controllers.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers.js b/ambari-web/app/controllers.js index 67e212a..dc2a030 100644 --- a/ambari-web/app/controllers.js +++ b/ambari-web/app/controllers.js @@ -36,6 +36,7 @@ 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/highAvailability/step7_controller'); +require('controllers/main/admin/highAvailability/step8_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/73ba823a/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 index 84e3b44..8a36a3f 100644 --- a/ambari-web/app/controllers/main/admin/highAvailability/step6_controller.js +++ b/ambari-web/app/controllers/main/admin/highAvailability/step6_controller.js @@ -18,9 +18,7 @@ var App = require('app'); -require('controllers/main/admin/misc_controller'); - -App.HighAvailabilityWizardStep6Controller = App.MainAdminMiscController.extend({ +App.HighAvailabilityWizardStep6Controller = Em.Controller.extend({ name:"highAvailabilityWizardStep6Controller" http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/ambari-web/app/controllers/main/admin/highAvailability/step8_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/highAvailability/step8_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/step8_controller.js new file mode 100644 index 0000000..cf49652 --- /dev/null +++ b/ambari-web/app/controllers/main/admin/highAvailability/step8_controller.js @@ -0,0 +1,26 @@ +/** + * 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.HighAvailabilityWizardStep8Controller = Em.Controller.extend({ + + name:"highAvailabilityWizardStep8Controller" + +}) + http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/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 c2a9c2d..39c4f1e 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: 7, + totalSteps: 8, /** * Used for hiding back button in wizard @@ -165,6 +165,7 @@ App.HighAvailabilityWizardController = App.WizardController.extend({ loadAllPriorSteps: function () { var step = this.get('currentStep'); switch (step) { + case '8': case '7': case '6': case '5': http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index 2836337..602c20b 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -647,9 +647,12 @@ 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.step6.header':'Initialize JournalNodes', + 'admin.highAvailability.wizard.step8.header':'Initialize Metadata', '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.step6.header':'Initialize JournalNodes', + 'admin.highAvailability.wizard.step8.bodyHeader':'Manual Steps Required: Initialize NameNode HA Metadata', + 'admin.highAvailability.wizard.step5.task0.title':'Stop all services', 'admin.highAvailability.wizard.step5.task1.title':'Install Additional NameNode', @@ -667,17 +670,25 @@ Em.I18n.translations = { '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/>' + + 'admin.highAvailability.wizard.step8.metaNoInit':'Metadata not initialized yet', + + + 'admin.highAvailability.wizard.step8.body':'Note: The following command must be run as the user {0} on {2}, not {1} <br/><br/>' + + '1. Initialize the metadata for additional NameNode by running: <br/><br/>' + + '$ hdfs namenode -bootstrapStandby<br/><br/>' + + 'Note: The following command must be run as the user {0} on {1}, not {2} <br/><br/>' + + '2. Initialize the metadata for NameNode automatic failover by running:<br/>' + + '$ hdfs -zkfc formatZK<br/><br/>' + + '3. You will be able to proceed to the next step once we detect that the steps were completed successfully.', + 'admin.highAvailability.wizard.step6.body':'Note: The following commands must be run as the user {0} on {1} <br/><br/>' + + '1. Initialize the JournalNodes by running: <br/><br/>' + + '$ hdfs namenode -initializeSharedEdits<br/><br/>' + + '2. You will be able to proceed to the next step once we detect that the JournalNodes have been initialized successfully.', + 'admin.highAvailability.wizard.step4.body':'Note: The following commands must be run as the user {0} on {1} <br/><br/>' + + '1. Put the NameNode in safe mode (read-only-mode) by running: <br/><br/>' + + '$ hdfs dfsadmin -safemode enter <br/><br/>' + + '2. Once NameNode is in Safe Mode, create a checkpoint by running: <br/><br/>' + + '$ TDB COMMAND <br/><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,' + http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/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 30e6e13..da06316 100644 --- a/ambari-web/app/routes/high_availability_routes.js +++ b/ambari-web/app/routes/high_availability_routes.js @@ -170,6 +170,27 @@ module.exports = Em.Route.extend({ router.transitionTo('step6'); }, next: function (router) { + router.transitionTo('step8'); + } + }), + + step8: Em.Route.extend({ + route: '/step8', + connectOutlets: function (router) { + $('a.close').hide(); + var controller = router.get('highAvailabilityWizardController'); + controller.setCurrentStep('8'); + controller.setLowerStepsDisable(8); + controller.dataLoading().done(function () { + controller.loadAllPriorSteps(); + controller.connectOutlet('highAvailabilityWizardStep8', controller.get('content')); + }) + }, + back: function (router) { + router.transitionTo('step7'); + }, + next: function (router) { + router.transitionTo('step9'); } }), @@ -185,5 +206,7 @@ module.exports = Em.Route.extend({ gotoStep6: Em.Router.transitionTo('step6'), - gotoStep7: Em.Router.transitionTo('step7') + gotoStep7: Em.Router.transitionTo('step7'), + + gotoStep8: Em.Router.transitionTo('step8') }); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/ambari-web/app/templates/main/admin/highAvailability/step8.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/admin/highAvailability/step8.hbs b/ambari-web/app/templates/main/admin/highAvailability/step8.hbs new file mode 100644 index 0000000..5863699 --- /dev/null +++ b/ambari-web/app/templates/main/admin/highAvailability/step8.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.step8.bodyHeader}}</h2> + <p class="alert alert-info"> + {{{view.step8BodyText}}} + </p> + <div class="btn-area"> + <a class="btn btn-success pull-right" {{action next}}>{{t common.next}} →</a> + <span class="pull-right btn-extra-info">{{t admin.highAvailability.wizard.step8.metaNoInit}}</span> + </div> +</div> http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/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 b4612e0..4ad0154 100644 --- a/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs +++ b/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs @@ -32,6 +32,7 @@ <li {{bindAttr class="isStep5:active view.isStep5Disabled:disabled"}}><a href="javascript:void(null);" {{action gotoStep5 target="controller"}}>{{t admin.highAvailability.wizard.progressPage.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> <li {{bindAttr class="isStep7:active view.isStep7Disabled:disabled"}}><a href="javascript:void(null);" {{action gotoStep7 target="controller"}}>{{t admin.highAvailability.wizard.progressPage.header}}</a></li> + <li {{bindAttr class="isStep8:active view.isStep8Disabled:disabled"}}><a href="javascript:void(null);" {{action gotoStep8 target="controller"}}>{{t admin.highAvailability.wizard.step8.header}}</a></li> </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/ambari-web/app/utils/ajax.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js index 8c7bd80..6c45490 100644 --- a/ambari-web/app/utils/ajax.js +++ b/ambari-web/app/utils/ajax.js @@ -646,11 +646,11 @@ var urls = { 'type': 'PUT', 'format': function () { return { - data: { + data: JSON.stringify({ "HostRoles": { "state": "MAINTENANCE" } - } + }) } } }, http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/ambari-web/app/views.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js index 4f7bd1a..02b84a2 100644 --- a/ambari-web/app/views.js +++ b/ambari-web/app/views.js @@ -63,6 +63,7 @@ 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/highAvailability/step7_view'); +require('views/main/admin/highAvailability/step8_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/73ba823a/ambari-web/app/views/main/admin/highAvailability/step8_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/admin/highAvailability/step8_view.js b/ambari-web/app/views/main/admin/highAvailability/step8_view.js new file mode 100644 index 0000000..bf4b369 --- /dev/null +++ b/ambari-web/app/views/main/admin/highAvailability/step8_view.js @@ -0,0 +1,32 @@ +/** + * 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.HighAvailabilityWizardStep8View = Em.View.extend({ + + templateName: require('templates/main/admin/highAvailability/step8'), + + step8BodyText: function () { + var nN = this.get('controller.content.masterComponentHosts').findProperty('isCurNameNode', true); + var addNN = this.get('controller.content.masterComponentHosts').findProperty('isAddNameNode', true); + return Em.I18n.t('admin.highAvailability.wizard.step8.body').format(this.get('controller.content.hdfsUser'), nN.hostName, addNN.hostName); + }.property('controller.content.masterComponentHosts') + +}); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/73ba823a/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 cc9f6a8..84a776f 100644 --- a/ambari-web/app/views/main/admin/highAvailability/wizard_view.js +++ b/ambari-web/app/views/main/admin/highAvailability/wizard_view.js @@ -51,6 +51,9 @@ App.HighAvailabilityWizardView = Em.View.extend({ return this.isStepDisabled(7); }.property('[email protected]').cacheable(), + isStep8Disabled: function () { + return this.isStepDisabled(8); + }.property('[email protected]').cacheable(), isStepDisabled: function (index) { return this.get('controller.isStepDisabled').findProperty('step', index).get('value');
