reassign_master_routes.js 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  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. module.exports = Em.Route.extend({
  19. route: '/services/reassign',
  20. enter: function (router) {
  21. console.log('in /service/reassign:enter');
  22. Em.run.next(function () {
  23. var reassignMasterController = router.get('reassignMasterController');
  24. App.router.get('updateController').set('isWorking', false);
  25. var hostsUrl = '/hosts?fields=Hosts/host_name,Hosts/disk_info,host_components';
  26. router.get('clusterController').requestHosts(hostsUrl, function () {
  27. console.log('Request for hosts, with disk_info parameter');
  28. });
  29. var popup = App.ModalPopup.show({
  30. classNames: ['full-width-modal'],
  31. header: Em.I18n.t('services.reassign.header'),
  32. bodyClass: App.ReassignMasterView.extend({
  33. controller: reassignMasterController
  34. }),
  35. primary: Em.I18n.t('form.cancel'),
  36. showFooter: false,
  37. secondary: null,
  38. onPrimary: function () {
  39. this.hide();
  40. App.router.get('updateController').set('isWorking', true);
  41. App.router.transitionTo('main.services.index');
  42. },
  43. onClose: function () {
  44. this.hide();
  45. App.router.get('updateController').set('isWorking', true);
  46. App.router.transitionTo('main.services.index')
  47. },
  48. didInsertElement: function () {
  49. this.fitHeight();
  50. }
  51. });
  52. reassignMasterController.set('popup', popup);
  53. App.clusterStatus.updateFromServer();
  54. var currentClusterStatus = App.clusterStatus.get('value');
  55. if (currentClusterStatus) {
  56. switch (currentClusterStatus.clusterState) {
  57. case 'REASSIGN_MASTER_INSTALLING' :
  58. App.db.data = currentClusterStatus.localdb;
  59. reassignMasterController.setCurrentStep(currentClusterStatus.localdb.ReassignMaster.currentStep);
  60. break;
  61. }
  62. }
  63. router.transitionTo('step' + reassignMasterController.get('currentStep'));
  64. });
  65. },
  66. step1: Em.Route.extend({
  67. route: '/step1',
  68. connectOutlets: function (router) {
  69. console.log('in reassignMaster.step1:connectOutlets');
  70. var controller = router.get('reassignMasterController');
  71. controller.setCurrentStep('1');
  72. controller.dataLoading().done(function () {
  73. controller.loadAllPriorSteps();
  74. controller.connectOutlet('reassignMasterWizardStep1');
  75. })
  76. },
  77. next: function (router) {
  78. App.db.setMasterComponentHosts(undefined);
  79. router.transitionTo('step2');
  80. }
  81. }),
  82. step2: Em.Route.extend({
  83. route: '/step2',
  84. connectOutlets: function (router) {
  85. console.log('in reassignMaster.step2:connectOutlets');
  86. var controller = router.get('reassignMasterController');
  87. controller.setCurrentStep('2');
  88. controller.dataLoading().done(function () {
  89. controller.loadAllPriorSteps();
  90. controller.connectOutlet('reassignMasterWizardStep2', controller.get('content'));
  91. })
  92. },
  93. back: Em.Router.transitionTo('step1'),
  94. next: function (router) {
  95. var controller = router.get('reassignMasterController');
  96. var reassignMasterWizardStep2 = router.get('reassignMasterWizardStep2Controller');
  97. controller.saveMasterComponentHosts(reassignMasterWizardStep2);
  98. var reassignHosts = {};
  99. var componentName = reassignMasterWizardStep2.get('content.reassign.component_name');
  100. var masterAssignmentsHosts = reassignMasterWizardStep2.get('selectedServicesMasters').filterProperty('component_name', componentName).mapProperty('selectedHost');
  101. var currentMasterHosts = App.HostComponent.find().filterProperty('componentName', componentName).mapProperty('host.hostName');
  102. masterAssignmentsHosts.forEach(function (host) {
  103. if (!currentMasterHosts.contains(host)) {
  104. reassignHosts.target = host;
  105. }
  106. }, this);
  107. currentMasterHosts.forEach(function (host) {
  108. if (!masterAssignmentsHosts.contains(host)) {
  109. reassignHosts.source = host;
  110. }
  111. }, this);
  112. controller.saveReassignHosts(reassignHosts);
  113. router.transitionTo('step3');
  114. }
  115. }),
  116. step3: Em.Route.extend({
  117. route: '/step3',
  118. connectOutlets: function (router) {
  119. console.log('in reassignMaster.step3:connectOutlets');
  120. var controller = router.get('reassignMasterController');
  121. controller.setCurrentStep('3');
  122. controller.dataLoading().done(function () {
  123. controller.loadAllPriorSteps();
  124. controller.connectOutlet('reassignMasterWizardStep3', controller.get('content'));
  125. })
  126. },
  127. back: Em.Router.transitionTo('step2'),
  128. next: function (router) {
  129. App.db.setReassignTasksStatuses(undefined);
  130. App.db.setReassignMasterWizardLogs(undefined);
  131. App.clusterStatus.setClusterStatus({
  132. clusterName: router.get('reassignMasterController.content.cluster.name'),
  133. clusterState: 'REASSIGN_MASTER_INSTALLING',
  134. wizardControllerName: 'reassignMasterController',
  135. localdb: App.db.data
  136. });
  137. router.transitionTo('step4');
  138. }
  139. }),
  140. step4: Em.Route.extend({
  141. route: '/step4',
  142. connectOutlets: function (router) {
  143. console.log('in reassignMaster.step4:connectOutlets');
  144. var controller = router.get('reassignMasterController');
  145. controller.setCurrentStep('4');
  146. controller.dataLoading().done(function () {
  147. controller.loadAllPriorSteps();
  148. controller.setLowerStepsDisable(4);
  149. controller.connectOutlet('reassignMasterWizardStep4', controller.get('content'));
  150. })
  151. },
  152. next: function (router) {
  153. router.get('reassignMasterController').setCurrentStep('5');
  154. App.clusterStatus.setClusterStatus({
  155. clusterName: router.get('reassignMasterController.content.cluster.name'),
  156. clusterState: 'REASSIGN_MASTER_INSTALLING',
  157. wizardControllerName: 'reassignMasterController',
  158. localdb: App.db.data
  159. });
  160. router.transitionTo('step5');
  161. },
  162. complete: function (router) {
  163. var controller = router.get('reassignMasterController');
  164. var reassignMasterWizardStep4 = router.get('reassignMasterWizardStep4Controller');
  165. if (!reassignMasterWizardStep4.get('isSubmitDisabled')) {
  166. controller.finish();
  167. controller.get('popup').hide();
  168. App.clusterStatus.setClusterStatus({
  169. clusterName: router.get('reassignMasterController.content.cluster.name'),
  170. clusterState: 'REASSIGN_MASTER_COMPLETED',
  171. wizardControllerName: 'reassignMasterController',
  172. localdb: App.db.data
  173. });
  174. router.transitionTo('main.index');
  175. location.reload();
  176. }
  177. },
  178. unroutePath: function () {
  179. return false;
  180. }
  181. }),
  182. step5: Em.Route.extend({
  183. route: '/step5',
  184. connectOutlets: function (router) {
  185. console.log('in reassignMaster.step5:connectOutlets');
  186. var controller = router.get('reassignMasterController');
  187. controller.setCurrentStep('5');
  188. controller.dataLoading().done(function () {
  189. controller.loadAllPriorSteps();
  190. controller.setLowerStepsDisable(5);
  191. if ((controller.get('content.reassign.component_name') === 'NAMENODE') && (!App.HostComponent.find().someProperty('componentName', 'SECONDARY_NAMENODE'))) {
  192. controller.usersLoading().done(function () {
  193. controller.connectOutlet('reassignMasterWizardStep5', controller.get('content'));
  194. })
  195. } else {
  196. controller.connectOutlet('reassignMasterWizardStep5', controller.get('content'));
  197. }
  198. })
  199. },
  200. next: Em.Router.transitionTo('step6'),
  201. unroutePath: function () {
  202. return false;
  203. }
  204. }),
  205. step6: Em.Route.extend({
  206. route: '/step6',
  207. connectOutlets: function (router) {
  208. console.log('in reassignMaster.step6:connectOutlets');
  209. var controller = router.get('reassignMasterController');
  210. controller.setCurrentStep('6');
  211. controller.dataLoading().done(function () {
  212. controller.loadAllPriorSteps();
  213. controller.setLowerStepsDisable(6);
  214. controller.connectOutlet('reassignMasterWizardStep6', controller.get('content'));
  215. })
  216. },
  217. next: function (router) {
  218. var controller = router.get('reassignMasterController');
  219. var reassignMasterWizardStep6 = router.get('reassignMasterWizardStep6Controller');
  220. if (!reassignMasterWizardStep6.get('isSubmitDisabled')) {
  221. controller.finish();
  222. controller.get('popup').hide();
  223. App.clusterStatus.setClusterStatus({
  224. clusterName: router.get('reassignMasterController.content.cluster.name'),
  225. clusterState: 'REASSIGN_MASTER_COMPLETED',
  226. wizardControllerName: 'reassignMasterController',
  227. localdb: App.db.data
  228. });
  229. router.transitionTo('main.index');
  230. location.reload();
  231. }
  232. },
  233. unroutePath: function () {
  234. return false;
  235. }
  236. }),
  237. gotoStep1: Em.Router.transitionTo('step1'),
  238. gotoStep2: Em.Router.transitionTo('step2'),
  239. gotoStep3: Em.Router.transitionTo('step3'),
  240. gotoStep4: Em.Router.transitionTo('step4'),
  241. gotoStep5: Em.Router.transitionTo('step5'),
  242. gotoStep6: Em.Router.transitionTo('step6'),
  243. backToServices: function (router) {
  244. App.router.get('updateController').set('isWorking', true);
  245. router.transitionTo('services');
  246. }
  247. });