main.js 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943
  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. var stringUtils = require('utils/string_utils');
  20. module.exports = Em.Route.extend({
  21. route: '/main',
  22. enter: function (router) {
  23. App.db.updateStorage();
  24. console.log('in /main:enter');
  25. if (router.getAuthenticated()) {
  26. App.router.get('clusterController').loadClusterName(false);
  27. router.get('mainController').initialize();
  28. // TODO: redirect to last known state
  29. } else {
  30. Ember.run.next(function () {
  31. router.transitionTo('login');
  32. });
  33. }
  34. },
  35. /*
  36. routePath: function(router,event) {
  37. if (router.getAuthenticated()) {
  38. App.router.get('clusterController').loadClusterName(false);
  39. router.get('mainController').initialize();
  40. // TODO: redirect to last known state
  41. } else {
  42. Ember.run.next(function () {
  43. router.transitionTo('login');
  44. });
  45. }
  46. }, */
  47. index: Ember.Route.extend({
  48. route: '/',
  49. redirectsTo: 'dashboard'
  50. }),
  51. test: Em.Route.extend({
  52. route: '/test',
  53. connectOutlets: function (router, context) {
  54. router.get('mainController').connectOutlet('mainTest');
  55. }
  56. }),
  57. connectOutlets: function (router, context) {
  58. router.get('applicationController').connectOutlet('main');
  59. },
  60. charts: Em.Route.extend({
  61. route: '/charts',
  62. connectOutlets: function (router, context) {
  63. router.get('mainController').connectOutlet('mainCharts');
  64. },
  65. enter: function (router) {
  66. Em.run.next(function () {
  67. router.transitionTo('heatmap');
  68. });
  69. },
  70. index: Ember.Route.extend({
  71. route: '/',
  72. redirectsTo: 'heatmap'
  73. }),
  74. heatmap: Em.Route.extend({
  75. route: '/heatmap',
  76. connectOutlets: function (router, context) {
  77. router.get('mainChartsController').connectOutlet('mainChartsHeatmap');
  78. }
  79. }),
  80. horizon_chart: Em.Route.extend({
  81. route: '/horizon_chart',
  82. connectOutlets: function (router, context) {
  83. router.get('mainChartsController').connectOutlet('mainChartsHorizon');
  84. }
  85. }),
  86. showChart: function (router, event) {
  87. var parent = event.view._parentView;
  88. parent.deactivateChildViews();
  89. event.view.set('active', "active");
  90. router.transitionTo(event.context);
  91. }
  92. }),
  93. apps: Em.Route.extend({
  94. route: '/apps',
  95. connectOutlets: function (router) {
  96. if (App.get('isHadoop2Stack')) {
  97. Em.run.next(function () {
  98. router.transitionTo('main.dashboard');
  99. });
  100. } else {
  101. router.get('mainAppsController').loadRuns();
  102. router.get('mainController').connectOutlet('mainApps');
  103. }
  104. }
  105. }),
  106. mirroring: Em.Route.extend({
  107. route: '/mirroring',
  108. index: Ember.Route.extend({
  109. route: '/',
  110. enter: function () {
  111. this.setupController()
  112. },
  113. setupController: function () {
  114. var controller = App.router.get('mainMirroringController');
  115. var datasets = App.Dataset.find();
  116. controller.set('datasets', datasets);
  117. },
  118. connectOutlets: function (router, context) {
  119. console.debug('Inside connectOutlets in ' + App.get('router.currentState.path'));
  120. router.get('mainController').connectOutlet('mainMirroring');
  121. }
  122. }),
  123. gotoMirroringHome: function (router) {
  124. router.transitionTo('mirroring/index');
  125. },
  126. addNewDataset: function (router) {
  127. router.transitionTo('addNewDatasetRoute');
  128. },
  129. addTargetCluster: function (router, event) {
  130. router.transitionTo('addTargetClusterRoute');
  131. },
  132. addNewDatasetRoute: Em.Route.extend({
  133. route: '/dataset/add',
  134. setupController: function (controller) {
  135. controller.createNewDataSet();
  136. },
  137. enter: function (router) {
  138. var controller = router.get('mainMirroringDataSetController');
  139. // if we are coming from closing AddCluster popup
  140. if (controller.isReturning) {
  141. controller.isReturning = false;
  142. return;
  143. }
  144. controller.set('isPopupForEdit', false);
  145. this.setupController(controller);
  146. var self = this;
  147. controller.set('isSubmitted', false);
  148. App.ModalPopup.show({
  149. classNames: ['sixty-percent-width-modal', 'hideCloseLink'],
  150. header: Em.I18n.t('mirroring.dataset.newDataset'),
  151. primary: Em.I18n.t('mirroring.dataset.save'),
  152. secondary: Em.I18n.t('common.cancel'),
  153. onPrimary: function () {
  154. controller.set('isSubmitted', true);
  155. var isValid = controller.validate();
  156. if (!isValid) {
  157. return;
  158. }
  159. newDataSet = controller.getNewDataSet();
  160. var schedule = newDataSet.get('schedule');
  161. var targetCluster = newDataSet.get('targetCluster');
  162. console.debug('Before setting, schedule = ' + schedule + " , targetCluster = " + targetCluster);
  163. var scheduleRecord = App.Dataset.Schedule.createRecord(schedule);
  164. var dataSetRecord = App.Dataset.createRecord(newDataSet);
  165. scheduleRecord.set('dataset', dataSetRecord);
  166. dataSetRecord.set('schedule', scheduleRecord);
  167. console.debug('After setting, schedule = ' + dataSetRecord.get('schedule') + " , targetCluster = " + dataSetRecord.get('targetCluster'));
  168. this.hide();
  169. router.transitionTo('main.mirroring.index');
  170. },
  171. onSecondary: function () {
  172. this.hide();
  173. router.transitionTo('main.mirroring.index');
  174. },
  175. bodyClass: App.MainMirroringDataSetView.extend({
  176. controller: router.get('mainMirroringDataSetController')
  177. })
  178. });
  179. }
  180. }),
  181. gotoShowJobs: function (router, event) {
  182. router.transitionTo('showDatasetJobs', event.context);
  183. },
  184. showDatasetJobs: Em.Route.extend({
  185. route: '/dataset/:dataset_id',
  186. connectOutlets: function (router, dataset) {
  187. router.get('mainController').connectOutlet('mainJobs', dataset);
  188. }
  189. }),
  190. editDataset: Em.Route.extend({
  191. route: '/dataset/:dataset_id/edit',
  192. setupController: function (controller, dataset) {
  193. controller.setOriginalDataSetRecord(dataset);
  194. controller.setDataSet(dataset);
  195. },
  196. connectOutlets: function (router, dataset) {
  197. var controller = router.get('mainMirroringDataSetController');
  198. // if we are coming from closing AddCluster popup
  199. if (controller.isReturning) {
  200. controller.isReturning = false;
  201. return;
  202. }
  203. // for showing delete button
  204. controller.set('isPopupForEdit', true);
  205. this.setupController(controller, dataset);
  206. var self = this;
  207. controller.set('isSubmitted', false);
  208. controller.set('popup', App.ModalPopup.show({
  209. classNames: ['sixty-percent-width-modal'],
  210. header: Em.I18n.t('mirroring.dataset.editDataset'),
  211. primary: Em.I18n.t('mirroring.dataset.save'),
  212. secondary: Em.I18n.t('common.cancel'),
  213. onPrimary: function () {
  214. controller.set('isSubmitted', true);
  215. var isValid = controller.validate();
  216. if (!isValid) {
  217. return;
  218. }
  219. newDataSet = controller.getNewDataSet();
  220. var originalRecord = controller.get('model.originalRecord');
  221. originalRecord.set('name', newDataSet.get('name'));
  222. originalRecord.set('sourceDir', newDataSet.get('sourceDir'));
  223. originalRecord.set('targetCluster', newDataSet.get('targetCluster'));
  224. originalRecord.set('targetDir', newDataSet.get('targetDir'));
  225. originalRecord.set('schedule', newDataSet.get('schedule'));
  226. this.hide();
  227. router.transitionTo('main.mirroring.index');
  228. },
  229. onSecondary: function () {
  230. this.hide();
  231. router.transitionTo('main.mirroring.index');
  232. },
  233. bodyClass: App.MainMirroringDataSetView.extend({
  234. controller: router.get('mainMirroringDataSetController')
  235. })
  236. })
  237. );
  238. }
  239. }),
  240. gotoEditDataset: function (router, event) {
  241. router.transitionTo('editDataset', event.context);
  242. },
  243. addTargetClusterRoute: Ember.Route.extend({
  244. route: '/targetCluster/add',
  245. initialState: 'testConnectionRoute',
  246. testConnectionRoute: Ember.Route.extend({
  247. setupController: function (controller) {
  248. controller.createTargetCluster();
  249. controller.set('model.isPopupForEdit', false);
  250. },
  251. enter: function (router, context) {
  252. console.debug('Inside connectOutlets in ' + App.get('router.currentState.path'));
  253. var self = this;
  254. var controller = App.router.get('mainMirroringTargetClusterController');
  255. this.setupController(controller);
  256. controller.set('isSubmitted1', false);
  257. controller.set('isSubmitted2', false);
  258. controller.set('popup', App.ModalPopup.show({
  259. classNames: ['sixty-percent-width-modal', 'hideCloseLink'],
  260. header: Em.I18n.t('mirroring.targetcluster.addCluster'),
  261. primary: Em.I18n.t('mirroring.targetcluster.testConnection'),
  262. onPrimary: function () {
  263. controller.set('isSubmitted1', true);
  264. var isValid = controller.validate1();
  265. if (!isValid) {
  266. return;
  267. }
  268. App.router.transitionTo('testConnectionResultsRoute');
  269. },
  270. onSecondary: function () {
  271. this.hide();
  272. var dscontroller = App.router.get('mainMirroringDataSetController');
  273. var tccontroller = App.router.get('mainMirroringTargetClusterController');
  274. var returnRoute = tccontroller.get('returnRoute');
  275. // if we have come from addNewDatasetRoute
  276. if (returnRoute) {
  277. dscontroller.isReturning = true;
  278. App.router.transitionTo(returnRoute);
  279. }
  280. else
  281. App.router.transitionTo('main.mirroring.index');
  282. },
  283. bodyClass: App.MainMirroringAddTargetClusterView.extend({
  284. controller: App.router.get('mainMirroringTargetClusterController')
  285. })
  286. }));
  287. },
  288. connectOutlets: function (router, context) {
  289. console.log("entering the connectOutlets method of testConnectionRoute.")
  290. var parentController = router.get('mainMirroringTargetClusterController');
  291. parentController.connectOutlet('testConnection', parentController.get('model'));
  292. },
  293. exit: function (stateManager) {
  294. console.log("exiting the testConnectionRoute state")
  295. }
  296. }),
  297. testConnectionResultsRoute: Ember.Route.extend({
  298. enter: function (stateManager) {
  299. console.log("entering the testConnectionResultsRoute state.")
  300. // lets change the primary button
  301. var controller = App.router.get('mainMirroringTargetClusterController');
  302. var popup = controller.get('popup');
  303. popup.set('primary', Em.I18n.t('common.save'));
  304. popup.set('onPrimary',
  305. function () {
  306. var controller = App.router.get('mainMirroringTargetClusterController');
  307. controller.set('isSubmitted2', true);
  308. var isValid = controller.validate2();
  309. if (!isValid) {
  310. return;
  311. }
  312. var controller = App.router.get('testConnectionResultsController');
  313. controller.saveClusterName();
  314. }
  315. );
  316. },
  317. connectOutlets: function (router, context) {
  318. console.log("entering the connectOutlets method of testConnectionResultsRoute.")
  319. var parentController = router.get('mainMirroringTargetClusterController');
  320. parentController.connectOutlet('testConnectionResults', parentController.get('model'));
  321. },
  322. exit: function (stateManager) {
  323. console.log("exiting the connectionSuccessRoute state")
  324. }
  325. })
  326. }),
  327. editTargetClusterRoute: Em.Route.extend({
  328. route: '/targetCluster/:targetCluster_id/edit',
  329. initialState: 'testConnectionRoute',
  330. setupController: function (controller, targetCluster) {
  331. controller.setOriginalRecord(targetCluster);
  332. controller.setTargetCluster(targetCluster);
  333. },
  334. connectOutlets: function (router, targetCluster) {
  335. // this connectOutlets is mainly to receive the 'targetCluster' argument
  336. var controller = router.get('mainMirroringTargetClusterController');
  337. // for showing delete button
  338. controller.set('model.isPopupForEdit', true);
  339. this.setupController(controller, targetCluster);
  340. },
  341. testConnectionRoute: Em.Route.extend({
  342. connectOutlets: function (router, targetCluster) {
  343. var controller = router.get('mainMirroringTargetClusterController');
  344. controller.set('isSubmitted1', false);
  345. controller.set('isSubmitted2', false);
  346. controller.set('popup', App.ModalPopup.show({
  347. classNames: ['sixty-percent-width-modal'],
  348. header: Em.I18n.t('mirroring.dataset.editDataset'),
  349. primary: Em.I18n.t('mirroring.targetcluster.testConnection'),
  350. onPrimary: function () {
  351. var controller = App.router.get('mainMirroringTargetClusterController');
  352. controller.set('isSubmitted1', true);
  353. var isValid = controller.validate1();
  354. if (!isValid) {
  355. return;
  356. }
  357. App.router.transitionTo('testConnectionResultsRoute');
  358. },
  359. secondary: Em.I18n.t('common.cancel'),
  360. onSecondary: function () {
  361. this.hide();
  362. router.transitionTo('main.mirroring.index');
  363. },
  364. bodyClass: App.MainMirroringAddTargetClusterView.extend({
  365. controller: App.router.get('mainMirroringTargetClusterController')
  366. })
  367. }));
  368. console.log("entering the connectOutlets method of testConnectionRoute.")
  369. var parentController = router.get('mainMirroringTargetClusterController');
  370. parentController.connectOutlet('testConnection', parentController.get('model'));
  371. }
  372. }),
  373. testConnection: function () {
  374. App.router.transitionTo('testConnectionResultsRoute');
  375. },
  376. testConnectionResultsRoute: Ember.Route.extend({
  377. enter: function (stateManager) {
  378. console.log("entering the testConnectionResultsRoute state.")
  379. // lets change the primary button
  380. var controller = App.router.get('mainMirroringTargetClusterController');
  381. var popup = controller.get('popup');
  382. popup.set('primary', Em.I18n.t('common.save'));
  383. popup.set('onPrimary',
  384. function () {
  385. var controller = App.router.get('mainMirroringTargetClusterController');
  386. controller.set('isSubmitted2', true);
  387. var isValid = controller.validate1();
  388. if (!isValid) {
  389. return;
  390. }
  391. var controller2 = App.router.get('testConnectionResultsController');
  392. controller2.saveClusterName();
  393. }
  394. );
  395. },
  396. connectOutlets: function (router, context) {
  397. console.log("entering the connectOutlets method of testConnectionResultsRoute.");
  398. var parentController = router.get('mainMirroringTargetClusterController');
  399. parentController.connectOutlet('testConnectionResults', parentController.get('model'));
  400. },
  401. exit: function (stateManager) {
  402. console.log("exiting the connectionSuccessRoute state")
  403. }
  404. })
  405. }),
  406. editTargetCluster: function (router, event) {
  407. router.transitionTo('editTargetClusterRoute', event.context);
  408. }
  409. }),
  410. hosts: Em.Route.extend({
  411. route: '/hosts',
  412. index: Ember.Route.extend({
  413. route: '/',
  414. connectOutlets: function (router, context) {
  415. router.get('mainController').connectOutlet('mainHost');
  416. }
  417. }),
  418. hostDetails: Em.Route.extend({
  419. route: '/:host_id',
  420. connectOutlets: function (router, host) {
  421. router.get('mainController').connectOutlet('mainHostDetails', host);
  422. },
  423. index: Ember.Route.extend({
  424. route: '/',
  425. redirectsTo: 'summary'
  426. }),
  427. summary: Em.Route.extend({
  428. route: '/summary',
  429. connectOutlets: function (router, context) {
  430. router.get('mainHostDetailsController').connectOutlet('mainHostSummary');
  431. }
  432. }),
  433. configs: Em.Route.extend({
  434. route: '/configs',
  435. connectOutlets: function (router, context) {
  436. router.get('mainHostDetailsController').connectOutlet('mainHostConfigs');
  437. }
  438. }),
  439. metrics: Em.Route.extend({
  440. route: '/metrics',
  441. connectOutlets: function (router, context) {
  442. router.get('mainHostDetailsController').connectOutlet('mainHostMetrics');
  443. }
  444. }),
  445. audit: Em.Route.extend({
  446. route: '/audit',
  447. connectOutlets: function (router, context) {
  448. router.get('mainHostDetailsController').connectOutlet('mainHostAudit');
  449. }
  450. }),
  451. hostNavigate: function (router, event) {
  452. var parent = event.view._parentView;
  453. parent.deactivateChildViews();
  454. event.view.set('active', "active");
  455. router.transitionTo(event.context);
  456. }
  457. }),
  458. back: function (router, event) {
  459. window.history.back();
  460. },
  461. showDetails: function (router, event) {
  462. router.get('mainHostDetailsController').setBack(true);
  463. router.transitionTo('hostDetails.summary', event.context)
  464. },
  465. addHost: function (router) {
  466. if (App.clusterStatus) {
  467. App.clusterStatus.updateFromServer();
  468. var currentClusterStatus = App.clusterStatus.get('value');
  469. if (currentClusterStatus && currentClusterStatus.clusterState == "ADD_HOSTS_COMPLETED_5") {
  470. // The last time add hosts ran, it left the status
  471. // in this state. We need to clear any previous status
  472. // so that the hosts page starts from fresh.
  473. currentClusterStatus.clusterState = 'CLUSTER_STARTED_5';
  474. }
  475. }
  476. router.transitionTo('hostAdd');
  477. }
  478. }),
  479. hostAdd: require('routes/add_host_routes'),
  480. admin: Em.Route.extend({
  481. route: '/admin',
  482. enter: function (router, transition) {
  483. if (!App.isAdmin) {
  484. Em.run.next(function () {
  485. router.transitionTo('main.dashboard');
  486. });
  487. }
  488. },
  489. routePath: function (router, event) {
  490. if (!App.isAdmin) {
  491. Em.run.next(function () {
  492. App.router.transitionTo('main.dashboard');
  493. });
  494. } else {
  495. var controller = router.get('mainAdminController');
  496. router.transitionTo('admin' + controller.get('category').capitalize());
  497. }
  498. },
  499. connectOutlets: function (router, context) {
  500. router.get('mainController').connectOutlet('mainAdmin');
  501. },
  502. index: Em.Route.extend({
  503. /* enter: function(router, transition){
  504. var controller = router.get('mainAdminController');
  505. router.transitionTo('admin' + controller.get('category').capitalize());
  506. }, */
  507. route: '/',
  508. redirectsTo: 'adminUser'
  509. }),
  510. adminUser: Em.Route.extend({
  511. route: '/user',
  512. index: Em.Route.extend({
  513. route: '/',
  514. redirectsTo: 'allUsers'
  515. }),
  516. enter: function (router) {
  517. router.set('mainAdminController.category', "user");
  518. Em.run.next(function () {
  519. router.transitionTo('allUsers');
  520. });
  521. },
  522. routePath: function (router, event) {
  523. router.set('mainAdminController.category', "user");
  524. router.transitionTo('allUsers');
  525. Em.run.next(function () {
  526. router.transitionTo('allUsers');
  527. });
  528. },
  529. // events
  530. gotoUsers: Em.Router.transitionTo("allUsers"),
  531. gotoCreateUser: Em.Router.transitionTo("createUser"),
  532. gotoEditUser: function (router, event) {
  533. router.transitionTo("editUser", event.context)
  534. },
  535. // states
  536. allUsers: Em.Route.extend({
  537. route: '/allUsers',
  538. // index: Ember.Route.extend({
  539. //route: '/',
  540. connectOutlets: function (router) {
  541. router.get('mainAdminController').connectOutlet('mainAdminUser');
  542. }
  543. //})
  544. }),
  545. createUser: Em.Route.extend({
  546. route: '/create',
  547. connectOutlets: function (router) {
  548. router.get('mainAdminController').connectOutlet('mainAdminUserCreate', {});
  549. }
  550. }),
  551. editUser: Em.Route.extend({
  552. route: '/edit/:user_id',
  553. connectOutlets: function (router, user) {
  554. router.get('mainAdminController').connectOutlet('mainAdminUserEdit', user);
  555. }
  556. })
  557. }),
  558. adminAuthentication: Em.Route.extend({
  559. route: '/authentication',
  560. connectOutlets: function (router, context) {
  561. router.set('mainAdminController.category', "authentication");
  562. router.get('mainAdminController').connectOutlet('mainAdminAuthentication');
  563. }
  564. }),
  565. adminHighAvailability: Em.Route.extend({
  566. route: '/highAvailability',
  567. enter: function (router) {
  568. Em.run.next(function () {
  569. router.transitionTo('adminHighAvailability.index');
  570. });
  571. },
  572. index: Ember.Route.extend({
  573. route: '/',
  574. connectOutlets: function (router, context) {
  575. router.set('mainAdminController.category', "highAvailability");
  576. router.get('mainAdminController').connectOutlet('mainAdminHighAvailability');
  577. }
  578. })
  579. }),
  580. enableHighAvailability: require('routes/high_availability_routes'),
  581. rollbackHighAvailability: require('routes/rollbackHA_routes'),
  582. adminSecurity: Em.Route.extend({
  583. route: '/security',
  584. enter: function (router) {
  585. router.set('mainAdminController.category', "security");
  586. var controller = router.get('mainAdminSecurityController');
  587. if (!App.testMode) {
  588. App.clusterStatus.updateFromServer();
  589. var currentClusterStatus = App.clusterStatus.get('value');
  590. App.db.data.AddSecurity = currentClusterStatus.localdb;
  591. if (currentClusterStatus.localdb) {
  592. App.db.setSecurityDeployStages(currentClusterStatus.localdb.securityDeployStages);
  593. controller.setAddSecurityWizardStatus(currentClusterStatus.localdb.status);
  594. App.db.setSecureConfigProperties(currentClusterStatus.localdb.secureConfigProperties);
  595. App.db.setWizardCurrentStep('AddSecurity', currentClusterStatus.localdb.currentStep);
  596. App.db.setIsNameNodeHa(currentClusterStatus.localdb.haStatus);
  597. App.db.setDisableSecurityStatus(currentClusterStatus.localdb.disableSecurityStatus);
  598. App.db.setSecureUserInfo(currentClusterStatus.localdb.secureUserInfo);
  599. }
  600. }
  601. if (!(controller.getAddSecurityWizardStatus() === 'RUNNING') && !(controller.getDisableSecurityStatus() === 'RUNNING')) {
  602. Em.run.next(function () {
  603. router.transitionTo('adminSecurity.index');
  604. });
  605. } else if (controller.getAddSecurityWizardStatus() === 'RUNNING') {
  606. Em.run.next(function () {
  607. router.transitionTo('adminAddSecurity');
  608. });
  609. } else if (controller.getDisableSecurityStatus() === 'RUNNING') {
  610. Em.run.next(function () {
  611. router.transitionTo('disableSecurity');
  612. });
  613. }
  614. },
  615. index: Ember.Route.extend({
  616. route: '/',
  617. connectOutlets: function (router, context) {
  618. var controller = router.get('mainAdminController');
  619. controller.set('category', "security");
  620. controller.connectOutlet('mainAdminSecurity');
  621. }
  622. }),
  623. addSecurity: function (router, object) {
  624. router.get('mainAdminSecurityController').setAddSecurityWizardStatus('RUNNING');
  625. router.transitionTo('adminAddSecurity');
  626. },
  627. disableSecurity: Ember.Route.extend({
  628. route: '/disableSecurity',
  629. enter: function (router) {
  630. //after refresh check if the wizard is open then restore it
  631. if (router.get('mainAdminSecurityController').getDisableSecurityStatus() === 'RUNNING') {
  632. Ember.run.next(function () {
  633. App.router.get('updateController').set('isWorking', false);
  634. App.ModalPopup.show({
  635. classNames: ['full-width-modal'],
  636. header: Em.I18n.t('admin.removeSecurity.header'),
  637. bodyClass: App.MainAdminSecurityDisableView.extend({
  638. controllerBinding: 'App.router.mainAdminSecurityDisableController'
  639. }),
  640. primary: Em.I18n.t('form.cancel'),
  641. secondary: null,
  642. showFooter: false,
  643. onClose: function () {
  644. var self = this;
  645. var controller = router.get('mainAdminSecurityDisableController');
  646. if (!controller.get('isSubmitDisabled')) {
  647. self.proceedOnClose();
  648. return;
  649. }
  650. var applyingConfigStage = controller.get('stages').findProperty('stage', 'stage3');
  651. if (applyingConfigStage && !applyingConfigStage.get('isCompleted')) {
  652. if (applyingConfigStage.get('isStarted')) {
  653. App.showAlertPopup(Em.I18n.t('admin.security.applying.config.header'), Em.I18n.t('admin.security.applying.config.body'));
  654. } else {
  655. App.showConfirmationPopup(function () {
  656. self.proceedOnClose();
  657. }, Em.I18n.t('admin.addSecurity.disable.onClose'));
  658. }
  659. } else {
  660. self.proceedOnClose();
  661. }
  662. },
  663. proceedOnClose: function () {
  664. router.get('mainAdminSecurityDisableController').clearStep();
  665. App.db.setSecurityDeployStages(undefined);
  666. App.router.get('updateController').set('isWorking', true);
  667. router.get('mainAdminSecurityController').setDisableSecurityStatus(undefined);
  668. App.clusterStatus.setClusterStatus({
  669. clusterName: router.get('content.cluster.name'),
  670. clusterState: 'SECURITY_COMPLETED',
  671. wizardControllerName: router.get('mainAdminSecurityDisableController.name'),
  672. localdb: App.db.data.AddSecurity
  673. });
  674. this.hide();
  675. router.transitionTo('adminSecurity.index');
  676. },
  677. didInsertElement: function () {
  678. this.fitHeight();
  679. }
  680. });
  681. });
  682. } else {
  683. router.transitionTo('adminSecurity.index');
  684. }
  685. },
  686. unroutePath: function () {
  687. return false;
  688. },
  689. done: function (router, context) {
  690. var controller = router.get('mainAdminSecurityDisableController');
  691. if (!controller.get('isSubmitDisabled')) {
  692. $(context.currentTarget).parents("#modal").find(".close").trigger('click');
  693. }
  694. }
  695. }),
  696. adminAddSecurity: require('routes/add_security')
  697. }),
  698. adminCluster: Em.Route.extend({
  699. route: '/cluster',
  700. connectOutlets: function (router) {
  701. router.set('mainAdminController.category', "cluster");
  702. router.get('mainAdminController').connectOutlet('mainAdminCluster');
  703. }
  704. }),
  705. adminAdvanced: Em.Route.extend({
  706. route: '/advanced',
  707. connectOutlets: function (router) {
  708. router.set('mainAdminController.category', "advanced");
  709. router.get('mainAdminController').connectOutlet('mainAdminAdvanced');
  710. }
  711. }),
  712. adminMisc: Em.Route.extend({
  713. route: '/misc',
  714. connectOutlets: function (router) {
  715. router.set('mainAdminController.category', "misc");
  716. router.get('mainAdminController').connectOutlet('mainAdminMisc');
  717. }
  718. }),
  719. adminAudit: Em.Route.extend({
  720. route: '/audit',
  721. connectOutlets: function (router) {
  722. router.set('mainAdminController.category', "audit");
  723. router.get('mainAdminController').connectOutlet('mainAdminAudit');
  724. }
  725. }),
  726. upgradeStack: function (router, event) {
  727. if (!$(event.currentTarget).hasClass('inactive')) {
  728. router.transitionTo('stackUpgrade');
  729. }
  730. },
  731. adminNavigate: function (router, object) {
  732. router.transitionTo('admin' + object.context.capitalize());
  733. },
  734. //events
  735. goToAdmin: function (router, event) {
  736. router.transitionTo(event.context);
  737. }
  738. }),
  739. stackUpgrade: require('routes/stack_upgrade'),
  740. dashboard: Em.Route.extend({
  741. route: '/dashboard',
  742. connectOutlets: function (router, context) {
  743. router.get('mainController').connectOutlet('mainDashboard');
  744. },
  745. showDetails: function (router, event) {
  746. router.get('mainHostDetailsController').setBack(true);
  747. router.transitionTo('hosts.hostDetails.summary', event.context);
  748. }
  749. }),
  750. services: Em.Route.extend({
  751. route: '/services',
  752. index: Ember.Route.extend({
  753. route: '/',
  754. enter: function (router) {
  755. Ember.run.next(function () {
  756. var controller = router.get('mainController');
  757. controller.dataLoading().done(function () {
  758. var service = router.get('mainServiceItemController.content');
  759. if (!service) {
  760. service = App.Service.find().objectAt(0); // getting the first service to display
  761. }
  762. router.transitionTo('service.summary', service);
  763. });
  764. });
  765. }
  766. }),
  767. connectOutlets: function (router, context) {
  768. router.get('mainController').connectOutlet('mainService');
  769. },
  770. service: Em.Route.extend({
  771. route: '/:service_id',
  772. connectOutlets: function (router, service) {
  773. router.get('mainServiceController').connectOutlet('mainServiceItem', service);
  774. router.transitionTo('summary');
  775. },
  776. index: Ember.Route.extend({
  777. route: '/'
  778. }),
  779. summary: Em.Route.extend({
  780. route: '/summary',
  781. connectOutlets: function (router, context) {
  782. var item = router.get('mainServiceItemController.content');
  783. var viewName = 'mainServiceInfoSummary';
  784. router.get('mainServiceItemController').connectOutlet('mainServiceInfoSummary', item);
  785. }
  786. }),
  787. metrics: Em.Route.extend({
  788. route: '/metrics',
  789. connectOutlets: function (router, context) {
  790. var item = router.get('mainServiceItemController.content');
  791. router.get('mainServiceItemController').connectOutlet('mainServiceInfoMetrics', item);
  792. }
  793. }),
  794. configs: Em.Route.extend({
  795. route: '/configs',
  796. connectOutlets: function (router, context) {
  797. var item = router.get('mainServiceItemController.content');
  798. router.get('mainServiceItemController').connectOutlet('mainServiceInfoConfigs', item);
  799. }
  800. }),
  801. audit: Em.Route.extend({
  802. route: '/audit',
  803. connectOutlets: function (router, context) {
  804. var item = router.get('mainServiceItemController.content');
  805. router.get('mainServiceItemController').connectOutlet('mainServiceInfoAudit', item);
  806. }
  807. }),
  808. showInfo: function (router, event) {
  809. var parent = event.view._parentView;
  810. parent.deactivateChildViews();
  811. event.view.set('active', "active");
  812. router.transitionTo(event.context);
  813. },
  814. showDetails: function (router, event) {
  815. router.get('mainHostDetailsController').setBack(true);
  816. router.transitionTo('hosts.hostDetails.summary', event.context);
  817. }
  818. }),
  819. showService: Em.Router.transitionTo('service'),
  820. addService: Em.Router.transitionTo('serviceAdd')
  821. }),
  822. serviceAdd: require('routes/add_service_routes'),
  823. reassignMaster: require('routes/reassign_master_routes'),
  824. selectService: Em.Route.transitionTo('services.service.summary'),
  825. selectHost: function (router, event) {
  826. router.get('mainHostDetailsController').setBack(false);
  827. router.transitionTo('hosts.hostDetails.index', event.context);
  828. },
  829. filterHosts: function (router, component) {
  830. router.get('mainHostController').filterByComponent(component.context);
  831. router.transitionTo('hosts.index');
  832. }
  833. });