main.js 32 KB

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