Updated Branches: refs/heads/trunk 915f74b29 -> 938878647
AMBARI-2818. NameNode HA Wizard: "Create Checkpoint" 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/93887864 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/93887864 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/93887864 Branch: refs/heads/trunk Commit: 93887864704475d35ac574c344c2904a87a964ea Parents: 915f74b Author: Yusaku Sako <[email protected]> Authored: Tue Aug 6 13:59:46 2013 -0700 Committer: Yusaku Sako <[email protected]> Committed: Tue Aug 6 13:59:46 2013 -0700 ---------------------------------------------------------------------- ambari-web/app/controllers.js | 1 + .../highAvailability/progress_controller.js | 2 +- .../admin/highAvailability/step4_controller.js | 54 ++------------ .../admin/highAvailability/step5_controller.js | 74 ++++++++++++++++++++ .../admin/highAvailability/wizard_controller.js | 3 +- ambari-web/app/messages.js | 52 +++++--------- .../app/routes/high_availability_routes.js | 24 ++++++- ambari-web/app/styles/application.less | 4 ++ .../main/admin/highAvailability/step4.hbs | 26 ++----- .../main/admin/highAvailability/step5.hbs | 41 +++++++++++ .../main/admin/highAvailability/wizard.hbs | 1 + ambari-web/app/views.js | 1 + .../main/admin/highAvailability/step4_view.js | 40 ++--------- .../main/admin/highAvailability/step5_view.js | 62 ++++++++++++++++ .../main/admin/highAvailability/wizard_view.js | 4 ++ 15 files changed, 246 insertions(+), 143 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/controllers.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers.js b/ambari-web/app/controllers.js index e4fbbf5..ff38aaf 100644 --- a/ambari-web/app/controllers.js +++ b/ambari-web/app/controllers.js @@ -33,6 +33,7 @@ require('controllers/main/admin/highAvailability/step1_controller'); 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/cluster'); require('controllers/main/admin/stack_upgrade_controller'); require('controllers/main/admin/user'); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/controllers/main/admin/highAvailability/progress_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/highAvailability/progress_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/progress_controller.js index 6cb1048..72a4b32 100644 --- a/ambari-web/app/controllers/main/admin/highAvailability/progress_controller.js +++ b/ambari-web/app/controllers/main/admin/highAvailability/progress_controller.js @@ -42,7 +42,7 @@ App.HighAvailabilityProgressPageController = Em.Controller.extend({ var commands = this.get('commands'); for (var i = 0; i < commands.length; i++) { this.get('tasks').pushObject(Ember.Object.create({ - title: Em.I18n.t('admin.highAvailability.wizard.step4.task' + i + '.title'), + title: Em.I18n.t('admin.highAvailability.wizard.step5.task' + i + '.title'), status: 'PENDING', id: i, command: commands[i] http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/controllers/main/admin/highAvailability/step4_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/highAvailability/step4_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/step4_controller.js index 1fa3e48..6455ef8 100644 --- a/ambari-web/app/controllers/main/admin/highAvailability/step4_controller.js +++ b/ambari-web/app/controllers/main/admin/highAvailability/step4_controller.js @@ -18,57 +18,11 @@ var App = require('app'); -App.HighAvailabilityWizardStep4Controller = App.HighAvailabilityProgressPageController.extend({ +require('controllers/main/admin/misc_controller'); - commands: ['stopAllServices', 'installNameNode', 'installJournalNode', 'startJournalNode', 'disableSNameNode', 'reconfigureHDFS'], +App.HighAvailabilityWizardStep4Controller = App.MainAdminMiscController.extend({ - stopAllServices: function () { - App.ajax.send({ - name: 'admin.high_availability.stop_all_services', - sender: this, - success: 'startPolling', - error: 'onTaskError' - }); - }, + name:"highAvailabilityWizardStep4Controller" - installNameNode: function () { - var hostName = this.get('content.masterComponentHosts').findProperty('isAddNameNode').hostName; - this.createComponent('NAMENODE', hostName); - }, - - installJournalNode: function () { - var hostNames = this.get('content.masterComponentHosts').filterProperty('component', 'JOURNALNODE').mapProperty('hostName'); - this.createComponent('JOURNALNODE', hostNames); - }, - - startJournalNode: function () { - var hostNames = this.get('content.masterComponentHosts').filterProperty('component', 'JOURNALNODE').mapProperty('hostName'); - this.startComponent('JOURNALNODE', hostNames); - }, - - disableSNameNode: function () { - var hostName = this.get('content.masterComponentHosts').findProperty('component', 'SECONDARY_NAMENODE').hostName; - App.ajax.send({ - name: 'admin.high_availability.maintenance_mode', - sender: this, - data: { - hostName: hostName, - componentName: 'SECONDARY_NAMENODE' - }, - success: 'onTaskCompleted', - error: 'onTaskError' - }); - }, - - reconfigureHDFS: function () { - var hostNames = this.get('content.masterComponentHosts').filterProperty('component', 'NAMENODE').mapProperty('hostName'); - var params = { - data: { - hostName: hostNames, - componentName: 'HDFS_CLIENT' - } - }; - this.installComponent(null, params); - } -}); +}) http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/controllers/main/admin/highAvailability/step5_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/highAvailability/step5_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/step5_controller.js new file mode 100644 index 0000000..305c45d --- /dev/null +++ b/ambari-web/app/controllers/main/admin/highAvailability/step5_controller.js @@ -0,0 +1,74 @@ +/** + * 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.HighAvailabilityWizardStep5Controller = App.HighAvailabilityProgressPageController.extend({ + + commands: ['stopAllServices', 'installNameNode', 'installJournalNode', 'startJournalNode', 'disableSNameNode', 'reconfigureHDFS'], + + stopAllServices: function () { + App.ajax.send({ + name: 'admin.high_availability.stop_all_services', + sender: this, + success: 'startPolling', + error: 'onTaskError' + }); + }, + + installNameNode: function () { + var hostName = this.get('content.masterComponentHosts').findProperty('isAddNameNode').hostName; + this.createComponent('NAMENODE', hostName); + }, + + installJournalNode: function () { + var hostNames = this.get('content.masterComponentHosts').filterProperty('component', 'JOURNALNODE').mapProperty('hostName'); + this.createComponent('JOURNALNODE', hostNames); + }, + + startJournalNode: function () { + var hostNames = this.get('content.masterComponentHosts').filterProperty('component', 'JOURNALNODE').mapProperty('hostName'); + this.startComponent('JOURNALNODE', hostNames); + }, + + disableSNameNode: function () { + var hostName = this.get('content.masterComponentHosts').findProperty('component', 'SECONDARY_NAMENODE').hostName; + App.ajax.send({ + name: 'admin.high_availability.maintenance_mode', + sender: this, + data: { + hostName: hostName, + componentName: 'SECONDARY_NAMENODE' + }, + success: 'onTaskCompleted', + error: 'onTaskError' + }); + }, + + reconfigureHDFS: function () { + var hostNames = this.get('content.masterComponentHosts').filterProperty('component', 'NAMENODE').mapProperty('hostName'); + var params = { + data: { + hostName: hostNames, + componentName: 'HDFS_CLIENT' + } + }; + this.installComponent(null, params); + } +}); + http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/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 2535171..6a79d39 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: 4, + totalSteps: 5, /** * Used for hiding back button in wizard @@ -163,6 +163,7 @@ App.HighAvailabilityWizardController = App.WizardController.extend({ loadAllPriorSteps: function () { var step = this.get('currentStep'); switch (step) { + case '5': case '4': case '3': case '2': http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index 54c11b1..e271f31 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -644,20 +644,29 @@ Em.I18n.translations = { 'admin.highAvailability.wizard.step1.header':'Get Started', 'admin.highAvailability.wizard.step2.header':'Select Hosts', 'admin.highAvailability.wizard.step3.header':'Review', - 'admin.highAvailability.wizard.step4.header':'Deploy', - 'admin.highAvailability.wizard.step4.notice':'Please wait while NameNode HA is being deployed.', - 'admin.highAvailability.wizard.step4.task0.title':'Stop all services', - 'admin.highAvailability.wizard.step4.task1.title':'Install Additional NameNode', - 'admin.highAvailability.wizard.step4.task2.title':'Install JournalNodes', - 'admin.highAvailability.wizard.step4.task3.title':'Start JournalNodes', - 'admin.highAvailability.wizard.step4.task4.title':'Disable Secondary NameNode', - 'admin.highAvailability.wizard.step4.task5.title':'Reconfigure HDFS', + 'admin.highAvailability.wizard.step4.header':'Create Checkpoint', + 'admin.highAvailability.wizard.step5.header':'Deploy', + + 'admin.highAvailability.wizard.step5.notice':'Please wait while NameNode HA is being deployed.', + 'admin.highAvailability.wizard.step5.task0.title':'Stop all services', + 'admin.highAvailability.wizard.step5.task1.title':'Install Additional NameNode', + 'admin.highAvailability.wizard.step5.task2.title':'Install JournalNodes', + 'admin.highAvailability.wizard.step5.task3.title':'Start JournalNodes', + 'admin.highAvailability.wizard.step5.task4.title':'Disable Secondary NameNode', + 'admin.highAvailability.wizard.step5.task5.title':'Reconfigure HDFS', 'admin.highAvailability.wizard.step3.nn1':'Current NameNode is on {0}.', 'admin.highAvailability.wizard.step3.nn2':'Additional NameNode will be installed on {0}.', '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.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.', '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.', @@ -910,25 +919,7 @@ Em.I18n.translations = { 'services.service.info.metrics.yarn.gc': 'Garbage Collection', 'services.service.info.metrics.yarn.gc.displayNames.gcTimeMillis':'Time', - 'services.service.info.metrics.yarn.allocated.memory': 'Cluster Memory', - 'services.service.info.metrics.yarn.allocated.memory.displayNames.allocated': 'Allocated', - 'services.service.info.metrics.yarn.allocated.memory.displayNames.available': 'Available', - 'services.service.info.metrics.yarn.allocated.memory.displayNames.pending': 'Pending', - 'services.service.info.metrics.yarn.allocated.container': 'Containers', - 'services.service.info.metrics.yarn.allocated.container.displayNames.allocated': 'Allocated', - 'services.service.info.metrics.yarn.allocated.container.displayNames.reserved': 'Reserved', - 'services.service.info.metrics.yarn.allocated.container.displayNames.pending': 'Pending', - 'services.service.info.metrics.yarn.nodemanager.statuses':'NodeManagers', - 'services.service.info.metrics.yarn.nodemanager.statuses.displayNames.active':'Active Nodemanagers', - 'services.service.info.metrics.yarn.nodemanager.statuses.displayNames.decommissioned':'Decommissioned Nodemanagers', - 'services.service.info.metrics.yarn.nodemanager.statuses.displayNames.lost':'Lost Nodemanagers', - 'services.service.info.metrics.yarn.nodemanager.statuses.displayNames.rebooted':'Rebooted Nodemanagers', - 'services.service.info.metrics.yarn.nodemanager.statuses.displayNames.unhealthy':'Unhealthy Nodemanagers', - 'services.service.info.metrics.yarn.queueMemoryResource':'Queue Memory', - 'services.service.info.metrics.yarn.queueMemoryResource.displayNames.allocated':'Allocated ({0})', - 'services.service.info.metrics.yarn.queueMemoryResource.displayNames.available':'Available ({0})', - 'services.service.info.metrics.yarn.queueMemoryResource.displayName':'Queue Memory ({0})', - + 'services.service.info.menu.summary':'Summary', 'services.service.info.menu.configs':'Configs', 'services.service.info.summary.hostsRunningMonitor':'{0}/{1}', @@ -1183,7 +1174,6 @@ Em.I18n.translations = { 'dashboard.widgets.ResourceManagerHeap': 'ResourceManager Heap', 'dashboard.widgets.ResourceManagerUptime': 'ResourceManager Uptime', 'dashboard.widgets.NodeManagersLive': 'NodeManagers Live', - 'dashboard.widgets.YARNMemory': 'YARN Memory', 'dashboard.services':'Services', 'dashboard.services.hosts':'Hosts', @@ -1221,10 +1211,6 @@ Em.I18n.translations = { 'dashboard.services.yarn.containers.msg': '{0} allocated / {1} pending / {2} reserved', 'dashboard.services.yarn.apps': 'Applications', 'dashboard.services.yarn.apps.msg': '{0} submitted / {1} running / {2} pending / {3} completed / {4} killed / {5} failed', - 'dashboard.services.yarn.memory': 'Cluster Memory', - 'dashboard.services.yarn.memory.msg': '{0} used / {1} reserved / {2} total', - 'dashboard.services.yarn.queues': 'Queues', - 'dashboard.services.yarn.queues.msg': '{0} Queues', 'dashboard.services.mapreduce.summary':'{0} of {1} trackers live, {2} jobs running, {3} jobs waiting', 'dashboard.services.mapreduce.taskTrackers':'TaskTrackers', http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/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 0d53fad..1d19646 100644 --- a/ambari-web/app/routes/high_availability_routes.js +++ b/ambari-web/app/routes/high_availability_routes.js @@ -103,7 +103,6 @@ module.exports = Em.Route.extend({ step4: Em.Route.extend({ route: '/step4', connectOutlets: function (router) { - $('a.close').hide(); var controller = router.get('highAvailabilityWizardController'); controller.setCurrentStep('4'); controller.setLowerStepsDisable(4); @@ -112,8 +111,25 @@ module.exports = Em.Route.extend({ controller.connectOutlet('highAvailabilityWizardStep4', controller.get('content')); }) }, + next: function (router) { + router.transitionTo('step5'); + } + }), + + step5: Em.Route.extend({ + route: '/step5', + connectOutlets: function (router) { + $('a.close').hide(); + var controller = router.get('highAvailabilityWizardController'); + controller.setCurrentStep('5'); + controller.setLowerStepsDisable(5); + controller.dataLoading().done(function () { + controller.loadAllPriorSteps(); + controller.connectOutlet('highAvailabilityWizardStep5', controller.get('content')); + }) + }, back: function (router) { - router.transitionTo('step3'); + router.transitionTo('step4'); }, next: function (router) {} }), @@ -124,5 +140,7 @@ module.exports = Em.Route.extend({ gotoStep3: Em.Router.transitionTo('step3'), - gotoStep4: Em.Router.transitionTo('step4') + gotoStep4: Em.Router.transitionTo('step4'), + + gotoStep5: Em.Router.transitionTo('step5') }); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/styles/application.less ---------------------------------------------------------------------- diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less index d8438cd..59775f8 100644 --- a/ambari-web/app/styles/application.less +++ b/ambari-web/app/styles/application.less @@ -280,6 +280,10 @@ h1 { .btn.btn-success { /* float: right; */ } + .btn-extra-info{ + padding-top: 6px; + padding-right: 15px; + } .btn-area { margin-top: 20px; } http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/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 5fefd4f..a555437 100644 --- a/ambari-web/app/templates/main/admin/highAvailability/step4.hbs +++ b/ambari-web/app/templates/main/admin/highAvailability/step4.hbs @@ -15,27 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. }} -<div id="ha-step4"> +<div> <h2>{{t admin.highAvailability.wizard.step4.header}}</h2> - - <div class="alert alert-info">{{t admin.highAvailability.wizard.step4.notice}}</div> - {{#each task in controller.tasks}} - {{#view view.taskView contentBinding="task"}} - <div class="item"> - <i {{bindAttr class="view.icon view.iconColor"}}></i> - <a href="javascript:void(0)">{{task.title}}</a> - </div> - <div {{bindAttr class="view.showProgressBar::hide :row :span12" }}> - <div class="progress-bar span4"> - <div class="progress-striped active progress-info progress"> - <div class="bar" {{bindAttr style="view.barWidth"}}></div> - </div> - </div> - <div class="span1">{{task.progress}}%</div> - </div> - {{/view}} - {{/each}} + <p class="alert alert-info"> + {{{view.step4BodyText}}} + </p> <div class="btn-area"> - <a {{bindAttr class=":btn controller.isSubmitDisabled:disabled :btn-success :pull-right"}} {{action done target="controller"}}>{{t common.done}}</a> + <a class="btn btn-success pull-right" {{action next}}>{{t common.next}} →</a> + <span class="pull-right btn-extra-info">{{t admin.highAvailability.wizard.step4.ckNotCreated}}</span> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/templates/main/admin/highAvailability/step5.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/admin/highAvailability/step5.hbs b/ambari-web/app/templates/main/admin/highAvailability/step5.hbs new file mode 100644 index 0000000..5d7028d --- /dev/null +++ b/ambari-web/app/templates/main/admin/highAvailability/step5.hbs @@ -0,0 +1,41 @@ +{{! +* 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 id="ha-step4"> + <h2>{{t admin.highAvailability.wizard.step5.header}}</h2> + + <div class="alert alert-info">{{t admin.highAvailability.wizard.step5.notice}}</div> + {{#each task in controller.tasks}} + {{#view view.taskView contentBinding="task"}} + <div class="item"> + <i {{bindAttr class="view.icon view.iconColor"}}></i> + <a href="javascript:void(0)">{{task.title}}</a> + </div> + <div {{bindAttr class="view.showProgressBar::hide :row :span12" }}> + <div class="progress-bar span4"> + <div class="progress-striped active progress-info progress"> + <div class="bar" {{bindAttr style="view.barWidth"}}></div> + </div> + </div> + <div class="span1">{{task.progress}}%</div> + </div> + {{/view}} + {{/each}} + <div class="btn-area"> + <a {{bindAttr class=":btn controller.isSubmitDisabled:disabled :btn-success :pull-right"}} {{action done target="controller"}}>{{t common.done}}</a> + </div> +</div> http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/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 e5ad773..b393620 100644 --- a/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs +++ b/ambari-web/app/templates/main/admin/highAvailability/wizard.hbs @@ -29,6 +29,7 @@ <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> </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/views.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js index 0595562..c6eeb5d 100644 --- a/ambari-web/app/views.js +++ b/ambari-web/app/views.js @@ -59,6 +59,7 @@ require('views/main/admin/highAvailability/step1_view'); 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/cluster'); require('views/main/admin/misc_view'); require('views/main/admin/stack_upgrade'); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/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 b3ed648..1f38920 100644 --- a/ambari-web/app/views/main/admin/highAvailability/step4_view.js +++ b/ambari-web/app/views/main/admin/highAvailability/step4_view.js @@ -23,40 +23,10 @@ App.HighAvailabilityWizardStep4View = Em.View.extend({ templateName: require('templates/main/admin/highAvailability/step4'), - didInsertElement: function () { - this.get('controller').loadStep(); - }, + step4BodyText: function () { + this.get('controller').loadUsers(); + var nN = this.get('controller.content.masterComponentHosts').findProperty('isCurNameNode', true); + return Em.I18n.t('admin.highAvailability.wizard.step4.body').format("hdfs", nN.hostName); + }.property('controller.content.masterComponentHosts') - taskView: Em.View.extend({ - icon: '', - iconColor: '', - - didInsertElement: function () { - this.onStatus(); - }, - - barWidth: function () { - return 'width: ' + this.get('content.progress') + '%;'; - }.property('content.progress'), - - onStatus: function () { - if (this.get('content.status') === 'IN_PROGRESS') { - this.set('icon', 'icon-cog'); - this.set('iconColor', 'text-info'); - } else if (this.get('content.status') === 'FAILED') { - this.set('icon', 'icon-exclamation-sign'); - this.set('iconColor', 'text-error'); - } else if (this.get('content.status') === 'COMPLETED') { - this.set('icon', 'icon-ok'); - this.set('iconColor', 'text-success'); - } else { - this.set('icon', 'icon-cog'); - this.set('iconColor', ''); - } - }.observes('content.status'), - - showProgressBar: function () { - return this.get('content.status') === "IN_PROGRESS"; - }.property('content.status') - }) }); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/ambari-web/app/views/main/admin/highAvailability/step5_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/admin/highAvailability/step5_view.js b/ambari-web/app/views/main/admin/highAvailability/step5_view.js new file mode 100644 index 0000000..ba5efc5 --- /dev/null +++ b/ambari-web/app/views/main/admin/highAvailability/step5_view.js @@ -0,0 +1,62 @@ +/** + * 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.HighAvailabilityWizardStep5View = Em.View.extend({ + + templateName: require('templates/main/admin/highAvailability/step5'), + + didInsertElement: function () { + this.get('controller').loadStep(); + }, + + taskView: Em.View.extend({ + icon: '', + iconColor: '', + + didInsertElement: function () { + this.onStatus(); + }, + + barWidth: function () { + return 'width: ' + this.get('content.progress') + '%;'; + }.property('content.progress'), + + onStatus: function () { + if (this.get('content.status') === 'IN_PROGRESS') { + this.set('icon', 'icon-cog'); + this.set('iconColor', 'text-info'); + } else if (this.get('content.status') === 'FAILED') { + this.set('icon', 'icon-exclamation-sign'); + this.set('iconColor', 'text-error'); + } else if (this.get('content.status') === 'COMPLETED') { + this.set('icon', 'icon-ok'); + this.set('iconColor', 'text-success'); + } else { + this.set('icon', 'icon-cog'); + this.set('iconColor', ''); + } + }.observes('content.status'), + + showProgressBar: function () { + return this.get('content.status') === "IN_PROGRESS"; + }.property('content.status') + }) +}); http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/93887864/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 3b3b739..d1d4e85 100644 --- a/ambari-web/app/views/main/admin/highAvailability/wizard_view.js +++ b/ambari-web/app/views/main/admin/highAvailability/wizard_view.js @@ -39,6 +39,10 @@ App.HighAvailabilityWizardView = Em.View.extend({ return this.isStepDisabled(4); }.property('[email protected]').cacheable(), + isStep5Disabled: function () { + return this.isStepDisabled(5); + }.property('[email protected]').cacheable(), + isStepDisabled: function (index) { return this.get('controller.isStepDisabled').findProperty('step', index).get('value'); }
