high_availability_routes.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. module.exports = App.WizardRoute.extend({
  20. route: '/highAvailability/NameNode/enable',
  21. enter: function (router) {
  22. Em.run.next(function () {
  23. var highAvailabilityWizardController = router.get('highAvailabilityWizardController');
  24. App.router.get('updateController').set('isWorking', false);
  25. var popup = App.ModalPopup.show({
  26. classNames: ['full-width-modal'],
  27. header: Em.I18n.t('admin.highAvailability.wizard.header'),
  28. bodyClass: App.HighAvailabilityWizardView.extend({
  29. controller: highAvailabilityWizardController
  30. }),
  31. primary: Em.I18n.t('form.cancel'),
  32. showFooter: false,
  33. secondary: null,
  34. hideCloseButton: function () {
  35. var currStep = App.router.get('highAvailabilityWizardController.currentStep');
  36. switch (currStep) {
  37. case "5" :
  38. case "7" :
  39. case "9" :
  40. if(App.supports.autoRollbackHA){
  41. this.set('showCloseButton', false);
  42. }else{
  43. this.set('showCloseButton', true);
  44. }
  45. break;
  46. default :
  47. this.set('showCloseButton', true);
  48. }
  49. }.observes('App.router.highAvailabilityWizardController.currentStep'),
  50. onClose: function () {
  51. var self = this;
  52. var currStep = App.router.get('highAvailabilityWizardController.currentStep');
  53. var highAvailabilityProgressPageController = App.router.get('highAvailabilityProgressPageController');
  54. if(parseInt(currStep) > 4){
  55. if(!App.supports.autoRollbackHA){
  56. highAvailabilityProgressPageController.manualRollback();
  57. } else{
  58. this.hide();
  59. App.router.get('highAvailabilityWizardController').setCurrentStep('1');
  60. App.router.transitionTo('rollbackHighAvailability');
  61. }
  62. } else {
  63. var controller = App.router.get('highAvailabilityWizardController');
  64. controller.clearTasksData();
  65. controller.finish();
  66. App.router.get('updateController').set('isWorking', true);
  67. App.clusterStatus.setClusterStatus({
  68. clusterName: controller.get('content.cluster.name'),
  69. clusterState: 'DEFAULT',
  70. localdb: App.db.data
  71. },{alwaysCallback: function() {self.hide();App.router.transitionTo('main.services.index');location.reload();}});
  72. }
  73. },
  74. didInsertElement: function () {
  75. this.fitHeight();
  76. }
  77. });
  78. highAvailabilityWizardController.set('popup', popup);
  79. var currentClusterStatus = App.clusterStatus.get('value');
  80. if (currentClusterStatus) {
  81. switch (currentClusterStatus.clusterState) {
  82. case 'HIGH_AVAILABILITY_DEPLOY' :
  83. highAvailabilityWizardController.setCurrentStep(currentClusterStatus.localdb.HighAvailabilityWizard.currentStep);
  84. break;
  85. default:
  86. var currStep = App.router.get('highAvailabilityWizardController.currentStep');
  87. highAvailabilityWizardController.setCurrentStep(currStep);
  88. break;
  89. }
  90. }
  91. router.transitionTo('step' + highAvailabilityWizardController.get('currentStep'));
  92. });
  93. },
  94. step1: Em.Route.extend({
  95. route: '/step1',
  96. connectOutlets: function (router) {
  97. var controller = router.get('highAvailabilityWizardController');
  98. controller.usersLoading().done(function () {
  99. controller.saveHdfsUser();
  100. controller.setCurrentStep('1');
  101. controller.dataLoading().done(function () {
  102. controller.loadAllPriorSteps();
  103. controller.connectOutlet('highAvailabilityWizardStep1', controller.get('content'));
  104. })
  105. })
  106. },
  107. unroutePath: function () {
  108. return false;
  109. },
  110. next: function (router) {
  111. var controller = router.get('highAvailabilityWizardController');
  112. controller.saveNameServiceId(router.get('highAvailabilityWizardStep1Controller.content.nameServiceId'));
  113. router.transitionTo('step2');
  114. }
  115. }),
  116. step2: Em.Route.extend({
  117. route: '/step2',
  118. connectOutlets: function (router) {
  119. var controller = router.get('highAvailabilityWizardController');
  120. controller.setCurrentStep('2');
  121. controller.dataLoading().done(function () {
  122. controller.loadAllPriorSteps();
  123. controller.connectOutlet('highAvailabilityWizardStep2', controller.get('content'));
  124. })
  125. },
  126. unroutePath: function () {
  127. return false;
  128. },
  129. next: function (router) {
  130. var controller = router.get('highAvailabilityWizardController');
  131. var highAvailabilityWizardStep2Controller = router.get('highAvailabilityWizardStep2Controller');
  132. var addNN = highAvailabilityWizardStep2Controller.get('selectedServicesMasters').findProperty('isAddNameNode', true).get('selectedHost');
  133. var sNN = highAvailabilityWizardStep2Controller.get('selectedServicesMasters').findProperty('component_name','SECONDARY_NAMENODE').get('selectedHost');
  134. if(addNN){
  135. App.db.setRollBackHighAvailabilityWizardAddNNHost(addNN);
  136. }
  137. if(sNN){
  138. App.db.setRollBackHighAvailabilityWizardSNNHost(sNN);
  139. }
  140. controller.saveMasterComponentHosts(highAvailabilityWizardStep2Controller);
  141. controller.get('content').set('serviceConfigProperties', null);
  142. controller.setDBProperty('serviceConfigProperties', null);
  143. router.transitionTo('step3');
  144. },
  145. back: function (router) {
  146. router.transitionTo('step1');
  147. }
  148. }),
  149. step3: Em.Route.extend({
  150. route: '/step3',
  151. connectOutlets: function (router) {
  152. var controller = router.get('highAvailabilityWizardController');
  153. controller.setCurrentStep('3');
  154. controller.dataLoading().done(function () {
  155. controller.loadAllPriorSteps();
  156. controller.connectOutlet('highAvailabilityWizardStep3', controller.get('content'));
  157. })
  158. },
  159. unroutePath: function () {
  160. return false;
  161. },
  162. next: function (router) {
  163. var controller = router.get('highAvailabilityWizardController');
  164. var stepController = router.get('highAvailabilityWizardStep3Controller');
  165. controller.saveServiceConfigProperties(stepController);
  166. controller.saveConfigTag(stepController.get("hdfsSiteTag"));
  167. controller.saveConfigTag(stepController.get("coreSiteTag"));
  168. if (App.Service.find().someProperty('serviceName', 'HBASE')) {
  169. controller.saveConfigTag(stepController.get("hbaseSiteTag"));
  170. }
  171. router.transitionTo('step4');
  172. },
  173. back: Em.Router.transitionTo('step2')
  174. }),
  175. step4: Em.Route.extend({
  176. route: '/step4',
  177. connectOutlets: function (router) {
  178. var controller = router.get('highAvailabilityWizardController');
  179. controller.setCurrentStep('4');
  180. controller.setLowerStepsDisable(4);
  181. controller.dataLoading().done(function () {
  182. controller.loadAllPriorSteps();
  183. controller.connectOutlet('highAvailabilityWizardStep4', controller.get('content'));
  184. })
  185. },
  186. unroutePath: function () {
  187. return false;
  188. },
  189. next: function (router) {
  190. var controller = router.get('highAvailabilityWizardController');
  191. controller.clearTasksData();
  192. router.transitionTo('step5');
  193. }
  194. }),
  195. step5: Em.Route.extend({
  196. route: '/step5',
  197. connectOutlets: function (router) {
  198. var controller = router.get('highAvailabilityWizardController');
  199. controller.setCurrentStep('5');
  200. controller.setLowerStepsDisable(5);
  201. controller.dataLoading().done(function () {
  202. controller.loadAllPriorSteps();
  203. controller.connectOutlet('highAvailabilityWizardStep5', controller.get('content'));
  204. })
  205. },
  206. unroutePath: function () {
  207. return false;
  208. },
  209. next: function (router) {
  210. var controller = router.get('highAvailabilityWizardController');
  211. controller.clearTasksData();
  212. router.transitionTo('step6');
  213. }
  214. }),
  215. step6: Em.Route.extend({
  216. route: '/step6',
  217. connectOutlets: function (router) {
  218. var controller = router.get('highAvailabilityWizardController');
  219. controller.setCurrentStep('6');
  220. controller.setLowerStepsDisable(6);
  221. controller.dataLoading().done(function () {
  222. controller.loadAllPriorSteps();
  223. controller.connectOutlet('highAvailabilityWizardStep6', controller.get('content'));
  224. })
  225. },
  226. unroutePath: function () {
  227. return false;
  228. },
  229. next: function (router) {
  230. router.transitionTo('step7');
  231. }
  232. }),
  233. step7: Em.Route.extend({
  234. route: '/step7',
  235. connectOutlets: function (router) {
  236. var controller = router.get('highAvailabilityWizardController');
  237. controller.setCurrentStep('7');
  238. controller.setLowerStepsDisable(7);
  239. controller.dataLoading().done(function () {
  240. controller.loadAllPriorSteps();
  241. controller.connectOutlet('highAvailabilityWizardStep7', controller.get('content'));
  242. })
  243. },
  244. unroutePath: function () {
  245. return false;
  246. },
  247. next: function (router) {
  248. var controller = router.get('highAvailabilityWizardController');
  249. controller.clearTasksData();
  250. router.transitionTo('step8');
  251. }
  252. }),
  253. step8: Em.Route.extend({
  254. route: '/step8',
  255. connectOutlets: function (router) {
  256. var controller = router.get('highAvailabilityWizardController');
  257. controller.setCurrentStep('8');
  258. controller.setLowerStepsDisable(8);
  259. controller.dataLoading().done(function () {
  260. controller.loadAllPriorSteps();
  261. controller.connectOutlet('highAvailabilityWizardStep8', controller.get('content'));
  262. })
  263. },
  264. unroutePath: function () {
  265. return false;
  266. },
  267. next: function (router) {
  268. App.showConfirmationPopup(function() {
  269. router.transitionTo('step9');
  270. }, Em.I18n.t('admin.highAvailability.wizard.step8.confirmPopup.body'));
  271. }
  272. }),
  273. step9: Em.Route.extend({
  274. route: '/step9',
  275. connectOutlets: function (router) {
  276. var controller = router.get('highAvailabilityWizardController');
  277. controller.setCurrentStep('9');
  278. controller.setLowerStepsDisable(9);
  279. controller.dataLoading().done(function () {
  280. controller.loadAllPriorSteps();
  281. controller.connectOutlet('highAvailabilityWizardStep9', controller.get('content'));
  282. })
  283. },
  284. unroutePath: function () {
  285. return false;
  286. },
  287. next: function (router) {
  288. var controller = router.get('highAvailabilityWizardController');
  289. controller.clearTasksData();
  290. controller.finish();
  291. App.clusterStatus.setClusterStatus({
  292. clusterName: controller.get('content.cluster.name'),
  293. clusterState: 'DEFAULT',
  294. localdb: App.db.data
  295. },{alwaysCallback: function() {controller.get('popup').hide();router.transitionTo('main.services.index');location.reload();}});
  296. }
  297. })
  298. });