add_service_routes.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  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 = Em.Route.extend({
  20. route: '/services/add',
  21. enter: function (router) {
  22. console.log('in /service/add:enter');
  23. if (App.get('isAdmin')) {
  24. Em.run.next(function () {
  25. var addServiceController = router.get('addServiceController');
  26. App.router.get('updateController').set('isWorking', false);
  27. var popup = App.ModalPopup.show({
  28. classNames: ['full-width-modal'],
  29. header:Em.I18n.t('services.add.header'),
  30. bodyClass: App.AddServiceView.extend({
  31. controllerBinding: 'App.router.addServiceController'
  32. }),
  33. primary:Em.I18n.t('form.cancel'),
  34. showFooter: false,
  35. secondary: null,
  36. onPrimary:function () {
  37. this.hide();
  38. App.router.transitionTo('main.services.index');
  39. },
  40. onClose: function() {
  41. this.set('showCloseButton', false); // prevent user to click "Close" many times
  42. App.router.get('updateController').set('isWorking', true);
  43. var self = this;
  44. App.router.get('updateController').updateServiceMetric(function(){
  45. self.hide();
  46. });
  47. App.router.transitionTo('main.services.index');
  48. },
  49. didInsertElement: function(){
  50. this.fitHeight();
  51. }
  52. });
  53. addServiceController.set('popup',popup);
  54. var currentClusterStatus = App.clusterStatus.get('value');
  55. if (currentClusterStatus) {
  56. switch (currentClusterStatus.clusterState) {
  57. case 'ADD_SERVICES_DEPLOY_PREP_2' :
  58. addServiceController.setCurrentStep('5');
  59. break;
  60. case 'ADD_SERVICES_INSTALLING_3' :
  61. case 'SERVICE_STARTING_3' :
  62. addServiceController.setCurrentStep('6');
  63. break;
  64. case 'ADD_SERVICES_INSTALLED_4' :
  65. addServiceController.setCurrentStep('7');
  66. break;
  67. default:
  68. break;
  69. }
  70. }
  71. router.transitionTo('step' + addServiceController.get('currentStep'));
  72. });
  73. } else {
  74. Em.run.next(function () {
  75. App.router.transitionTo('main.services');
  76. });
  77. }
  78. },
  79. /*connectOutlets: function (router) {
  80. console.log('in /service/add:connectOutlets');
  81. router.get('mainController').connectOutlet('addService');
  82. },*/
  83. step1: Em.Route.extend({
  84. route: '/step1',
  85. connectOutlets: function (router) {
  86. console.log('in addService.step1:connectOutlets');
  87. var controller = router.get('addServiceController');
  88. controller.setCurrentStep('1');
  89. controller.set('hideBackButton', true);
  90. controller.dataLoading().done(function () {
  91. controller.loadServicesFromServer();
  92. controller.loadAllPriorSteps();
  93. controller.connectOutlet('wizardStep4', controller.get('content.services'));
  94. })
  95. },
  96. next: function (router) {
  97. var addServiceController = router.get('addServiceController');
  98. var wizardStep4Controller = router.get('wizardStep4Controller');
  99. addServiceController.saveServices(wizardStep4Controller);
  100. addServiceController.saveClients(wizardStep4Controller);
  101. addServiceController.setDBProperty('masterComponentHosts', undefined);
  102. router.transitionTo('step2');
  103. }
  104. }),
  105. step2: Em.Route.extend({
  106. route: '/step2',
  107. connectOutlets: function (router) {
  108. console.log('in addService.step2:connectOutlets');
  109. var controller = router.get('addServiceController');
  110. controller.setCurrentStep('2');
  111. controller.set('hideBackButton', false);
  112. controller.dataLoading().done(function () {
  113. controller.loadAllPriorSteps();
  114. controller.connectOutlet('wizardStep5', controller.get('content'));
  115. })
  116. },
  117. back: Em.Router.transitionTo('step1'),
  118. next: function (router) {
  119. var addServiceController = router.get('addServiceController');
  120. var wizardStep5Controller = router.get('wizardStep5Controller');
  121. addServiceController.saveMasterComponentHosts(wizardStep5Controller);
  122. addServiceController.setDBProperty('slaveComponentHosts', undefined);
  123. router.transitionTo('step3');
  124. }
  125. }),
  126. step3: Em.Route.extend({
  127. route: '/step3',
  128. connectOutlets: function (router) {
  129. console.log('in addService.step3:connectOutlets');
  130. var controller = router.get('addServiceController');
  131. controller.setCurrentStep('3');
  132. controller.dataLoading().done(function () {
  133. controller.loadAllPriorSteps();
  134. var wizardStep6Controller = router.get('wizardStep6Controller');
  135. wizardStep6Controller.set('wizardController', controller);
  136. controller.connectOutlet('wizardStep6', controller.get('content'));
  137. wizardStep6Controller.set('isMasters', false);
  138. })
  139. },
  140. back: function(router){
  141. var controller = router.get('addServiceController');
  142. if(!controller.get('content.skipMasterStep')){
  143. router.transitionTo('step2');
  144. } else {
  145. router.transitionTo('step1');
  146. }
  147. },
  148. next: function (router) {
  149. var addServiceController = router.get('addServiceController');
  150. var wizardStep6Controller = router.get('wizardStep6Controller');
  151. if (wizardStep6Controller.validate()) {
  152. addServiceController.saveSlaveComponentHosts(wizardStep6Controller);
  153. addServiceController.get('content').set('serviceConfigProperties', null);
  154. addServiceController.setDBProperty('serviceConfigProperties', null);
  155. router.transitionTo('step4');
  156. }
  157. }
  158. }),
  159. step4: Em.Route.extend({
  160. route: '/step4',
  161. connectOutlets: function (router) {
  162. console.log('in addService.step4:connectOutlets');
  163. var controller = router.get('addServiceController');
  164. controller.setCurrentStep('4');
  165. controller.dataLoading().done(function () {
  166. controller.loadAllPriorSteps();
  167. controller.loadAdvancedConfigs();
  168. var wizardStep7Controller = router.get('wizardStep7Controller');
  169. wizardStep7Controller.set('wizardController', controller);
  170. controller.connectOutlet('wizardStep7', controller.get('content'));
  171. })
  172. },
  173. back: function(router){
  174. var controller = router.get('addServiceController');
  175. if(!controller.get('content.skipSlavesStep')){
  176. router.transitionTo('step3');
  177. } else if(!controller.get('content.skipMasterStep')) {
  178. router.transitionTo('step2');
  179. } else {
  180. router.transitionTo('step1');
  181. }
  182. },
  183. next: function (router) {
  184. var addServiceController = router.get('addServiceController');
  185. var wizardStep7Controller = router.get('wizardStep7Controller');
  186. addServiceController.saveServiceConfigProperties(wizardStep7Controller);
  187. router.transitionTo('step5');
  188. }
  189. }),
  190. step5: Em.Route.extend({
  191. route: '/step5',
  192. connectOutlets: function (router, context) {
  193. console.log('in addService.step5:connectOutlets');
  194. var controller = router.get('addServiceController');
  195. controller.setCurrentStep('5');
  196. controller.dataLoading().done(function () {
  197. controller.loadAllPriorSteps();
  198. var wizardStep8Controller = router.get('wizardStep8Controller');
  199. wizardStep8Controller.set('wizardController', controller);
  200. controller.connectOutlet('wizardStep8', controller.get('content'));
  201. })
  202. },
  203. back: function(router){
  204. var controller = router.get('addServiceController');
  205. if(!controller.get('content.skipConfigStep')) {
  206. router.transitionTo('step4');
  207. }
  208. else {
  209. if(!controller.get('content.skipSlavesStep')) {
  210. router.transitionTo('step3');
  211. }
  212. else {
  213. if(!controller.get('content.skipMasterStep')) {
  214. router.transitionTo('step2');
  215. }
  216. else {
  217. router.transitionTo('step1');
  218. }
  219. }
  220. }
  221. },
  222. next: function (router) {
  223. var addServiceController = router.get('addServiceController');
  224. var wizardStep8Controller = router.get('wizardStep8Controller');
  225. addServiceController.installServices();
  226. addServiceController.setInfoForStep9();
  227. addServiceController.saveClusterState('ADD_SERVICES_INSTALLING_3');
  228. wizardStep8Controller.set('servicesInstalled', true);
  229. router.transitionTo('step6');
  230. }
  231. }),
  232. step6: Em.Route.extend({
  233. route: '/step6',
  234. connectOutlets: function (router, context) {
  235. console.log('in addService.step6:connectOutlets');
  236. var controller = router.get('addServiceController');
  237. controller.setCurrentStep('6');
  238. controller.dataLoading().done(function () {
  239. controller.loadAllPriorSteps();
  240. var wizardStep9Controller = router.get('wizardStep9Controller');
  241. wizardStep9Controller.set('wizardController', controller);
  242. if (!App.testMode) { //if test mode is ON don't disable prior steps link.
  243. controller.setLowerStepsDisable(6);
  244. }
  245. controller.connectOutlet('wizardStep9', controller.get('content'));
  246. })
  247. },
  248. back: Em.Router.transitionTo('step5'),
  249. retry: function(router,context) {
  250. var addServiceController = router.get('addServiceController');
  251. var wizardStep9Controller = router.get('wizardStep9Controller');
  252. if (wizardStep9Controller.get('showRetry')) {
  253. if (wizardStep9Controller.get('content.cluster.status') === 'INSTALL FAILED') {
  254. var isRetry = true;
  255. addServiceController.installServices(isRetry);
  256. addServiceController.setInfoForStep9();
  257. wizardStep9Controller.resetHostsForRetry();
  258. // We need to do recovery based on whether we are in Add Host or Installer wizard
  259. addServiceController.saveClusterState('ADD_SERVICES_INSTALLING_3');
  260. }
  261. wizardStep9Controller.navigateStep();
  262. }
  263. },
  264. unroutePath: function() {
  265. return false;
  266. },
  267. next: function (router) {
  268. var addServiceController = router.get('addServiceController');
  269. var wizardStep9Controller = router.get('wizardStep9Controller');
  270. addServiceController.saveInstalledHosts(wizardStep9Controller);
  271. // We need to do recovery based on whether we are in Add Host or Installer wizard
  272. addServiceController.saveClusterState('ADD_SERVICES_INSTALLED_4');
  273. router.transitionTo('step7');
  274. }
  275. }),
  276. step7: Em.Route.extend({
  277. route: '/step7',
  278. connectOutlets: function (router, context) {
  279. console.log('in addService.step7:connectOutlets');
  280. var controller = router.get('addServiceController');
  281. controller.setCurrentStep('7');
  282. controller.dataLoading().done(function () {
  283. controller.loadAllPriorSteps();
  284. controller.setLowerStepsDisable(7);
  285. controller.connectOutlet('wizardStep10', controller.get('content'));
  286. })
  287. },
  288. back: Em.Router.transitionTo('step6'),
  289. complete: function (router, context) {
  290. var addServiceController = router.get('addServiceController');
  291. addServiceController.get('popup').onClose();
  292. addServiceController.finish();
  293. // We need to do recovery based on whether we are in Add Host or Installer wizard
  294. addServiceController.saveClusterState('DEFAULT');
  295. }
  296. }),
  297. gotoStep1: Em.Router.transitionTo('step1'),
  298. gotoStep2: Em.Router.transitionTo('step2'),
  299. gotoStep3: Em.Router.transitionTo('step3'),
  300. gotoStep4: Em.Router.transitionTo('step4'),
  301. gotoStep5: Em.Router.transitionTo('step5'),
  302. gotoStep6: Em.Router.transitionTo('step6'),
  303. gotoStep7: Em.Router.transitionTo('step7'),
  304. backToServices: function (router) {
  305. App.router.get('updateController').set('isWorking', true);
  306. router.transitionTo('services');
  307. }
  308. });