reassign_master_routes.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  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. if(reassignMasterController.get('content.hasCheckDBStep') && currStep !== "7") {
  63. App.showConfirmationPopup(function () {
  64. App.router.transitionTo('step7');
  65. }, Em.I18n.t('services.reassign.rollback.confirm'));
  66. } else {
  67. App.showConfirmationPopup(function () {
  68. router.get('reassignMasterWizardStep' + currStep + 'Controller').removeObserver('tasks.@each.status', this, 'onTaskStatusChange');
  69. context.leaveWizard(router, self);
  70. }, Em.I18n.t('services.reassign.closePopup').format(reassignMasterController.get('content.reassign.display_name')));
  71. }
  72. } else {
  73. context.leaveWizard(router, this);
  74. }
  75. },
  76. didInsertElement: function () {
  77. this.fitHeight();
  78. }
  79. });
  80. reassignMasterController.set('popup', popup);
  81. reassignMasterController.loadSecurityEnabled();
  82. reassignMasterController.loadComponentToReassign();
  83. var currentClusterStatus = App.clusterStatus.get('value');
  84. if (currentClusterStatus) {
  85. switch (currentClusterStatus.clusterState) {
  86. case 'REASSIGN_MASTER_INSTALLING' :
  87. reassignMasterController.setCurrentStep(currentClusterStatus.localdb.ReassignMaster.currentStep);
  88. break;
  89. }
  90. }
  91. router.transitionTo('step' + reassignMasterController.get('currentStep'));
  92. });
  93. } else {
  94. App.showAlertPopup(Em.I18n.t('common.error'), Em.I18n.t('services.reassign.error.fewHosts'), function () {
  95. router.transitionTo('main.services.index');
  96. })
  97. }
  98. });
  99. },
  100. step1: Em.Route.extend({
  101. route: '/step1',
  102. connectOutlets: function (router) {
  103. console.log('in reassignMaster.step1:connectOutlets');
  104. var controller = router.get('reassignMasterController');
  105. var step1Controller = router.get('reassignMasterWizardStep1Controller');
  106. controller.setCurrentStep('1');
  107. controller.dataLoading().done(function () {
  108. controller.loadAllPriorSteps();
  109. controller.connectOutlet('reassignMasterWizardStep1', controller.get('content'));
  110. step1Controller.loadConfigsTags();
  111. })
  112. },
  113. next: function (router) {
  114. App.db.setMasterComponentHosts(undefined);
  115. router.transitionTo('step2');
  116. },
  117. unroutePath: function () {
  118. return false;
  119. }
  120. }),
  121. step2: Em.Route.extend({
  122. route: '/step2',
  123. connectOutlets: function (router) {
  124. console.log('in reassignMaster.step2:connectOutlets');
  125. var controller = router.get('reassignMasterController');
  126. controller.setCurrentStep('2');
  127. controller.dataLoading().done(function () {
  128. controller.loadAllPriorSteps();
  129. controller.connectOutlet('reassignMasterWizardStep2', controller.get('content'));
  130. })
  131. },
  132. back: Em.Router.transitionTo('step1'),
  133. next: function (router) {
  134. var controller = router.get('reassignMasterController');
  135. var reassignMasterWizardStep2 = router.get('reassignMasterWizardStep2Controller');
  136. controller.saveMasterComponentHosts(reassignMasterWizardStep2);
  137. var reassignHosts = {};
  138. var componentName = reassignMasterWizardStep2.get('content.reassign.component_name');
  139. var masterAssignmentsHosts = reassignMasterWizardStep2.get('selectedServicesMasters').filterProperty('component_name', componentName).mapProperty('selectedHost');
  140. var currentMasterHosts = App.HostComponent.find().filterProperty('componentName', componentName).mapProperty('hostName');
  141. masterAssignmentsHosts.forEach(function (host) {
  142. if (!currentMasterHosts.contains(host)) {
  143. reassignHosts.target = host;
  144. }
  145. }, this);
  146. currentMasterHosts.forEach(function (host) {
  147. if (!masterAssignmentsHosts.contains(host)) {
  148. reassignHosts.source = host;
  149. }
  150. }, this);
  151. controller.saveReassignHosts(reassignHosts);
  152. router.transitionTo('step3');
  153. },
  154. unroutePath: function () {
  155. return false;
  156. }
  157. }),
  158. step3: Em.Route.extend({
  159. route: '/step3',
  160. connectOutlets: function (router) {
  161. console.log('in reassignMaster.step3:connectOutlets');
  162. var controller = router.get('reassignMasterController');
  163. controller.setCurrentStep('3');
  164. controller.dataLoading().done(function () {
  165. controller.loadAllPriorSteps();
  166. controller.connectOutlet('reassignMasterWizardStep3', controller.get('content'));
  167. })
  168. },
  169. back: Em.Router.transitionTo('step2'),
  170. next: function (router) {
  171. App.db.setReassignTasksStatuses(undefined);
  172. App.db.setReassignTasksRequestIds(undefined);
  173. App.clusterStatus.setClusterStatus({
  174. clusterName: router.get('reassignMasterController.content.cluster.name'),
  175. clusterState: 'REASSIGN_MASTER_INSTALLING',
  176. wizardControllerName: 'reassignMasterController',
  177. localdb: App.db.data
  178. });
  179. router.transitionTo('step4');
  180. },
  181. unroutePath: function () {
  182. return false;
  183. }
  184. }),
  185. step4: Em.Route.extend({
  186. route: '/step4',
  187. connectOutlets: function (router) {
  188. console.log('in reassignMaster.step4:connectOutlets');
  189. var controller = router.get('reassignMasterController');
  190. controller.setCurrentStep('4');
  191. controller.setLowerStepsDisable(4);
  192. controller.dataLoading().done(function () {
  193. controller.loadAllPriorSteps();
  194. controller.connectOutlet('reassignMasterWizardStep4', controller.get('content'));
  195. })
  196. },
  197. next: function (router) {
  198. router.get('reassignMasterController').setCurrentStep('5');
  199. App.clusterStatus.setClusterStatus({
  200. clusterName: router.get('reassignMasterController.content.cluster.name'),
  201. clusterState: 'REASSIGN_MASTER_INSTALLING',
  202. wizardControllerName: 'reassignMasterController',
  203. localdb: App.db.data
  204. });
  205. router.transitionTo('step5');
  206. },
  207. complete: function (router) {
  208. var controller = router.get('reassignMasterController');
  209. var reassignMasterWizardStep4 = router.get('reassignMasterWizardStep4Controller');
  210. if (!reassignMasterWizardStep4.get('isSubmitDisabled')) {
  211. controller.finish();
  212. controller.get('popup').hide();
  213. App.clusterStatus.setClusterStatus({
  214. clusterName: router.get('reassignMasterController.content.cluster.name'),
  215. clusterState: 'DEFAULT',
  216. localdb: App.db.data
  217. }, {alwaysCallback: function () {
  218. controller.get('popup').hide();
  219. router.transitionTo('main.index');
  220. location.reload();
  221. }});
  222. }
  223. },
  224. unroutePath: function () {
  225. return false;
  226. }
  227. }),
  228. step5: Em.Route.extend({
  229. route: '/step5',
  230. connectOutlets: function (router) {
  231. console.log('in reassignMaster.step5:connectOutlets');
  232. var controller = router.get('reassignMasterController');
  233. controller.setCurrentStep('5');
  234. controller.dataLoading().done(function () {
  235. controller.loadAllPriorSteps();
  236. controller.setLowerStepsDisable(5);
  237. if ((controller.get('content.reassign.component_name') === 'NAMENODE') || controller.get('content.reassign.component_name') === 'SECONDARY_NAMENODE') {
  238. controller.usersLoading().done(function () {
  239. controller.connectOutlet('reassignMasterWizardStep5', controller.get('content'));
  240. })
  241. } else {
  242. controller.connectOutlet('reassignMasterWizardStep5', controller.get('content'));
  243. }
  244. })
  245. },
  246. next: function (router) {
  247. App.showConfirmationPopup(function () {
  248. router.transitionTo('step6');
  249. }, Em.I18n.t('services.reassign.step5.confirmPopup.body'));
  250. },
  251. unroutePath: function () {
  252. return false;
  253. }
  254. }),
  255. step6: Em.Route.extend({
  256. route: '/step6',
  257. connectOutlets: function (router) {
  258. console.log('in reassignMaster.step6:connectOutlets');
  259. var controller = router.get('reassignMasterController');
  260. controller.setCurrentStep('6');
  261. controller.setLowerStepsDisable(6);
  262. controller.dataLoading().done(function () {
  263. controller.loadAllPriorSteps();
  264. controller.connectOutlet('reassignMasterWizardStep6', controller.get('content'));
  265. })
  266. },
  267. next: function (router) {
  268. var controller = router.get('reassignMasterController');
  269. var reassignMasterWizardStep6 = router.get('reassignMasterWizardStep6Controller');
  270. if (!reassignMasterWizardStep6.get('isSubmitDisabled')) {
  271. controller.finish();
  272. controller.get('popup').hide();
  273. App.clusterStatus.setClusterStatus({
  274. clusterName: router.get('reassignMasterController.content.cluster.name'),
  275. clusterState: 'DEFAULT',
  276. localdb: App.db.data
  277. }, {alwaysCallback: function () {
  278. controller.get('popup').hide();
  279. router.transitionTo('main.index');
  280. location.reload();
  281. }});
  282. }
  283. },
  284. unroutePath: function () {
  285. return false;
  286. }
  287. }),
  288. step7: Em.Route.extend({
  289. route: '/step7',
  290. connectOutlets: function (router) {
  291. console.log('in reassignMaster.step7:connectOutlets');
  292. var controller = router.get('reassignMasterController');
  293. controller.setCurrentStep('7');
  294. controller.setLowerStepsDisable(7);
  295. controller.dataLoading().done(function () {
  296. controller.loadAllPriorSteps();
  297. controller.connectOutlet('reassignMasterWizardStep7', controller.get('content'));
  298. });
  299. },
  300. next: function (router) {
  301. var controller = router.get('reassignMasterController');
  302. var reassignMasterWizardStep7 = router.get('reassignMasterWizardStep7Controller');
  303. if (!reassignMasterWizardStep7.get('isSubmitDisabled')) {
  304. controller.finish();
  305. controller.get('popup').hide();
  306. App.clusterStatus.setClusterStatus({
  307. clusterName: router.get('reassignMasterController.content.cluster.name'),
  308. clusterState: 'DEFAULT',
  309. localdb: App.db.data
  310. }, {alwaysCallback: function () {
  311. controller.get('popup').hide();
  312. router.transitionTo('main.index');
  313. location.reload();
  314. }});
  315. }
  316. },
  317. complete: function (router) {
  318. var controller = router.get('reassignMasterController');
  319. var reassignMasterWizardStep7 = router.get('reassignMasterWizardStep7Controller');
  320. if (!reassignMasterWizardStep7.get('isSubmitDisabled')) {
  321. controller.finish();
  322. controller.get('popup').hide();
  323. App.clusterStatus.setClusterStatus({
  324. clusterName: router.get('reassignMasterController.content.cluster.name'),
  325. clusterState: 'DEFAULT',
  326. localdb: App.db.data
  327. }, {alwaysCallback: function () {
  328. controller.get('popup').hide();
  329. router.transitionTo('main.index');
  330. location.reload();
  331. }});
  332. }
  333. },
  334. unroutePath: function () {
  335. return false;
  336. }
  337. }),
  338. gotoStep7: Em.Router.transitionTo('step7'),
  339. backToServices: function (router) {
  340. App.router.get('updateController').set('isWorking', true);
  341. router.transitionTo('services');
  342. }
  343. });