reassign_master_routes.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  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: '/service/reassign',
  21. leaveWizard: function (router, context) {
  22. var reassignMasterController = router.get('reassignMasterController');
  23. App.router.get('updateController').set('isWorking', true);
  24. reassignMasterController.finish();
  25. App.clusterStatus.setClusterStatus({
  26. clusterName: App.router.get('content.cluster.name'),
  27. clusterState: 'DEFAULT',
  28. localdb: App.db.data
  29. }, {alwaysCallback: function () {
  30. context.hide();
  31. router.transitionTo('main.index');
  32. location.reload();
  33. }});
  34. },
  35. enter: function (router) {
  36. console.log('in /service/reassign:enter');
  37. var context = this;
  38. var reassignMasterController = router.get('reassignMasterController');
  39. reassignMasterController.dataLoading().done(function () {
  40. if (App.router.get('mainHostController.hostsCountMap.TOTAL') > 1) {
  41. Em.run.next(function () {
  42. App.router.get('updateController').set('isWorking', false);
  43. var popup = App.ModalPopup.show({
  44. classNames: ['full-width-modal'],
  45. header: Em.I18n.t('services.reassign.header'),
  46. bodyClass: App.ReassignMasterView.extend({
  47. controller: reassignMasterController
  48. }),
  49. primary: Em.I18n.t('form.cancel'),
  50. showFooter: false,
  51. secondary: null,
  52. onPrimary: function () {
  53. this.hide();
  54. App.router.get('updateController').set('isWorking', true);
  55. App.router.transitionTo('main.services.index');
  56. },
  57. onClose: function () {
  58. var reassignMasterController = router.get('reassignMasterController');
  59. var currStep = reassignMasterController.get('currentStep');
  60. if (parseInt(currStep) > 3) {
  61. var self = this;
  62. App.showConfirmationPopup(function () {
  63. router.get('reassignMasterWizardStep' + currStep + 'Controller').removeObserver('tasks.@each.status', this, 'onTaskStatusChange');
  64. context.leaveWizard(router, self);
  65. }, Em.I18n.t('services.reassign.closePopup').format(reassignMasterController.get('content.reassign.display_name')));
  66. } else {
  67. context.leaveWizard(router, this);
  68. }
  69. },
  70. didInsertElement: function () {
  71. this.fitHeight();
  72. }
  73. });
  74. reassignMasterController.set('popup', popup);
  75. reassignMasterController.loadSecurityEnabled();
  76. reassignMasterController.loadComponentToReassign();
  77. var currentClusterStatus = App.clusterStatus.get('value');
  78. if (currentClusterStatus) {
  79. switch (currentClusterStatus.clusterState) {
  80. case 'REASSIGN_MASTER_INSTALLING' :
  81. reassignMasterController.setCurrentStep(currentClusterStatus.localdb.ReassignMaster.currentStep);
  82. break;
  83. }
  84. }
  85. router.transitionTo('step' + reassignMasterController.get('currentStep'));
  86. });
  87. } else {
  88. App.showAlertPopup(Em.I18n.t('common.error'), Em.I18n.t('services.reassign.error.fewHosts'), function () {
  89. router.transitionTo('main.services.index');
  90. })
  91. }
  92. });
  93. },
  94. step1: Em.Route.extend({
  95. route: '/step1',
  96. connectOutlets: function (router) {
  97. console.log('in reassignMaster.step1:connectOutlets');
  98. var controller = router.get('reassignMasterController');
  99. controller.setCurrentStep('1');
  100. controller.dataLoading().done(function () {
  101. controller.loadAllPriorSteps();
  102. controller.connectOutlet('reassignMasterWizardStep1', controller.get('content'));
  103. })
  104. },
  105. next: function (router) {
  106. App.db.setMasterComponentHosts(undefined);
  107. router.transitionTo('step2');
  108. },
  109. unroutePath: function () {
  110. return false;
  111. }
  112. }),
  113. step2: Em.Route.extend({
  114. route: '/step2',
  115. connectOutlets: function (router) {
  116. console.log('in reassignMaster.step2:connectOutlets');
  117. var controller = router.get('reassignMasterController');
  118. controller.setCurrentStep('2');
  119. controller.dataLoading().done(function () {
  120. controller.loadAllPriorSteps();
  121. controller.connectOutlet('reassignMasterWizardStep2', controller.get('content'));
  122. })
  123. },
  124. back: Em.Router.transitionTo('step1'),
  125. next: function (router) {
  126. var controller = router.get('reassignMasterController');
  127. var reassignMasterWizardStep2 = router.get('reassignMasterWizardStep2Controller');
  128. controller.saveMasterComponentHosts(reassignMasterWizardStep2);
  129. var reassignHosts = {};
  130. var componentName = reassignMasterWizardStep2.get('content.reassign.component_name');
  131. var masterAssignmentsHosts = reassignMasterWizardStep2.get('selectedServicesMasters').filterProperty('component_name', componentName).mapProperty('selectedHost');
  132. var currentMasterHosts = App.HostComponent.find().filterProperty('componentName', componentName).mapProperty('hostName');
  133. masterAssignmentsHosts.forEach(function (host) {
  134. if (!currentMasterHosts.contains(host)) {
  135. reassignHosts.target = host;
  136. }
  137. }, this);
  138. currentMasterHosts.forEach(function (host) {
  139. if (!masterAssignmentsHosts.contains(host)) {
  140. reassignHosts.source = host;
  141. }
  142. }, this);
  143. controller.saveReassignHosts(reassignHosts);
  144. router.transitionTo('step3');
  145. },
  146. unroutePath: function () {
  147. return false;
  148. }
  149. }),
  150. step3: Em.Route.extend({
  151. route: '/step3',
  152. connectOutlets: function (router) {
  153. console.log('in reassignMaster.step3:connectOutlets');
  154. var controller = router.get('reassignMasterController');
  155. controller.setCurrentStep('3');
  156. controller.dataLoading().done(function () {
  157. controller.loadAllPriorSteps();
  158. controller.connectOutlet('reassignMasterWizardStep3', controller.get('content'));
  159. })
  160. },
  161. back: Em.Router.transitionTo('step2'),
  162. next: function (router) {
  163. App.db.setReassignTasksStatuses(undefined);
  164. App.db.setReassignTasksRequestIds(undefined);
  165. App.clusterStatus.setClusterStatus({
  166. clusterName: router.get('reassignMasterController.content.cluster.name'),
  167. clusterState: 'REASSIGN_MASTER_INSTALLING',
  168. wizardControllerName: 'reassignMasterController',
  169. localdb: App.db.data
  170. });
  171. router.transitionTo('step4');
  172. },
  173. unroutePath: function () {
  174. return false;
  175. }
  176. }),
  177. step4: Em.Route.extend({
  178. route: '/step4',
  179. connectOutlets: function (router) {
  180. console.log('in reassignMaster.step4:connectOutlets');
  181. var controller = router.get('reassignMasterController');
  182. controller.setCurrentStep('4');
  183. controller.setLowerStepsDisable(4);
  184. controller.dataLoading().done(function () {
  185. controller.loadAllPriorSteps();
  186. controller.connectOutlet('reassignMasterWizardStep4', controller.get('content'));
  187. })
  188. },
  189. next: function (router) {
  190. router.get('reassignMasterController').setCurrentStep('5');
  191. App.clusterStatus.setClusterStatus({
  192. clusterName: router.get('reassignMasterController.content.cluster.name'),
  193. clusterState: 'REASSIGN_MASTER_INSTALLING',
  194. wizardControllerName: 'reassignMasterController',
  195. localdb: App.db.data
  196. });
  197. router.transitionTo('step5');
  198. },
  199. complete: function (router) {
  200. var controller = router.get('reassignMasterController');
  201. var reassignMasterWizardStep4 = router.get('reassignMasterWizardStep4Controller');
  202. if (!reassignMasterWizardStep4.get('isSubmitDisabled')) {
  203. controller.finish();
  204. controller.get('popup').hide();
  205. App.clusterStatus.setClusterStatus({
  206. clusterName: router.get('reassignMasterController.content.cluster.name'),
  207. clusterState: 'DEFAULT',
  208. localdb: App.db.data
  209. }, {alwaysCallback: function () {
  210. controller.get('popup').hide();
  211. router.transitionTo('main.index');
  212. location.reload();
  213. }});
  214. }
  215. },
  216. unroutePath: function () {
  217. return false;
  218. }
  219. }),
  220. step5: Em.Route.extend({
  221. route: '/step5',
  222. connectOutlets: function (router) {
  223. console.log('in reassignMaster.step5:connectOutlets');
  224. var controller = router.get('reassignMasterController');
  225. controller.setCurrentStep('5');
  226. controller.dataLoading().done(function () {
  227. controller.loadAllPriorSteps();
  228. controller.setLowerStepsDisable(5);
  229. if ((controller.get('content.reassign.component_name') === 'NAMENODE') || controller.get('content.reassign.component_name') === 'SECONDARY_NAMENODE') {
  230. controller.usersLoading().done(function () {
  231. controller.connectOutlet('reassignMasterWizardStep5', controller.get('content'));
  232. })
  233. } else {
  234. controller.connectOutlet('reassignMasterWizardStep5', controller.get('content'));
  235. }
  236. })
  237. },
  238. next: function (router) {
  239. App.showConfirmationPopup(function () {
  240. router.transitionTo('step6');
  241. }, Em.I18n.t('services.reassign.step5.confirmPopup.body'));
  242. },
  243. unroutePath: function () {
  244. return false;
  245. }
  246. }),
  247. step6: Em.Route.extend({
  248. route: '/step6',
  249. connectOutlets: function (router) {
  250. console.log('in reassignMaster.step6:connectOutlets');
  251. var controller = router.get('reassignMasterController');
  252. controller.setCurrentStep('6');
  253. controller.setLowerStepsDisable(6);
  254. controller.dataLoading().done(function () {
  255. controller.loadAllPriorSteps();
  256. controller.connectOutlet('reassignMasterWizardStep6', controller.get('content'));
  257. })
  258. },
  259. next: function (router) {
  260. var controller = router.get('reassignMasterController');
  261. var reassignMasterWizardStep6 = router.get('reassignMasterWizardStep6Controller');
  262. if (!reassignMasterWizardStep6.get('isSubmitDisabled')) {
  263. controller.finish();
  264. controller.get('popup').hide();
  265. App.clusterStatus.setClusterStatus({
  266. clusterName: router.get('reassignMasterController.content.cluster.name'),
  267. clusterState: 'DEFAULT',
  268. localdb: App.db.data
  269. }, {alwaysCallback: function () {
  270. controller.get('popup').hide();
  271. router.transitionTo('main.index');
  272. location.reload();
  273. }});
  274. }
  275. },
  276. unroutePath: function () {
  277. return false;
  278. }
  279. }),
  280. gotoStep1: Em.Router.transitionTo('step1'),
  281. gotoStep2: Em.Router.transitionTo('step2'),
  282. gotoStep3: Em.Router.transitionTo('step3'),
  283. gotoStep4: Em.Router.transitionTo('step4'),
  284. gotoStep5: Em.Router.transitionTo('step5'),
  285. gotoStep6: Em.Router.transitionTo('step6'),
  286. backToServices: function (router) {
  287. App.router.get('updateController').set('isWorking', true);
  288. router.transitionTo('services');
  289. }
  290. });