main.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926
  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. console.log('in /main:enter');
  24. if (router.getAuthenticated()) {
  25. App.router.get('clusterController').loadClusterName(false);
  26. router.get('mainController').initialize();
  27. // TODO: redirect to last known state
  28. } else {
  29. Ember.run.next(function () {
  30. router.transitionTo('login');
  31. });
  32. }
  33. },
  34. /*
  35. routePath: function(router,event) {
  36. if (router.getAuthenticated()) {
  37. App.router.get('clusterController').loadClusterName(false);
  38. router.get('mainController').initialize();
  39. // TODO: redirect to last known state
  40. } else {
  41. Ember.run.next(function () {
  42. router.transitionTo('login');
  43. });
  44. }
  45. }, */
  46. index: Ember.Route.extend({
  47. route: '/',
  48. redirectsTo: 'dashboard'
  49. }),
  50. test: Em.Route.extend({
  51. route: '/test',
  52. connectOutlets: function (router, context) {
  53. router.get('mainController').connectOutlet('mainTest');
  54. }
  55. }),
  56. connectOutlets: function (router, context) {
  57. router.get('applicationController').connectOutlet('main');
  58. },
  59. charts: Em.Route.extend({
  60. route: '/charts',
  61. connectOutlets: function (router, context) {
  62. router.get('mainController').connectOutlet('mainCharts');
  63. },
  64. enter: function (router) {
  65. Em.run.next(function () {
  66. router.transitionTo('heatmap');
  67. });
  68. },
  69. index: Ember.Route.extend({
  70. route: '/',
  71. redirectsTo: 'heatmap'
  72. }),
  73. heatmap: Em.Route.extend({
  74. route: '/heatmap',
  75. connectOutlets: function (router, context) {
  76. router.get('mainChartsController').connectOutlet('mainChartsHeatmap');
  77. }
  78. }),
  79. horizon_chart: Em.Route.extend({
  80. route: '/horizon_chart',
  81. connectOutlets: function (router, context) {
  82. router.get('mainChartsController').connectOutlet('mainChartsHorizon');
  83. }
  84. }),
  85. showChart: function (router, event) {
  86. var parent = event.view._parentView;
  87. parent.deactivateChildViews();
  88. event.view.set('active', "active");
  89. router.transitionTo(event.context);
  90. }
  91. }),
  92. apps: Em.Route.extend({
  93. route: '/apps',
  94. connectOutlets: function (router) {
  95. if (stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 1 ||
  96. stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 0) {
  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. adminSecurity: Em.Route.extend({
  566. route: '/security',
  567. enter: function (router) {
  568. router.set('mainAdminController.category', "security");
  569. var controller = router.get('mainAdminSecurityController');
  570. if (!App.testMode) {
  571. App.clusterStatus.updateFromServer();
  572. var currentClusterStatus = App.clusterStatus.get('value');
  573. App.db.data = currentClusterStatus.localdb;
  574. if (currentClusterStatus.localdb.AddSecurity) {
  575. App.db.setSecurityDeployStages(currentClusterStatus.localdb.AddSecurity.securityDeployStages);
  576. controller.setAddSecurityWizardStatus(currentClusterStatus.localdb.AddSecurity.status);
  577. App.db.setServiceConfigProperties(currentClusterStatus.localdb.Installer.configProperties);
  578. App.db.setWizardCurrentStep('AddSecurity', currentClusterStatus.localdb.AddSecurity.currentStep);
  579. }
  580. App.db.setDisableSecurityStatus(currentClusterStatus.localdb.disableSecurityStatus);
  581. }
  582. if (!(controller.getAddSecurityWizardStatus() === 'RUNNING') && !(controller.getDisableSecurityStatus() === 'RUNNING')) {
  583. Em.run.next(function () {
  584. router.transitionTo('adminSecurity.index');
  585. });
  586. } else if (controller.getAddSecurityWizardStatus() === 'RUNNING') {
  587. Em.run.next(function () {
  588. router.transitionTo('adminAddSecurity');
  589. });
  590. } else if (controller.getDisableSecurityStatus() === 'RUNNING') {
  591. Em.run.next(function () {
  592. router.transitionTo('disableSecurity');
  593. });
  594. }
  595. },
  596. index: Ember.Route.extend({
  597. route: '/',
  598. connectOutlets: function (router, context) {
  599. var controller = router.get('mainAdminController');
  600. controller.set('category', "security");
  601. controller.connectOutlet('mainAdminSecurity');
  602. }
  603. }),
  604. addSecurity: function (router, object) {
  605. router.get('mainAdminSecurityController').setAddSecurityWizardStatus('RUNNING');
  606. router.transitionTo('adminAddSecurity');
  607. },
  608. disableSecurity: Ember.Route.extend({
  609. route: '/disableSecurity',
  610. enter: function (router) {
  611. //after refresh check if the wizard is open then restore it
  612. if (router.get('mainAdminSecurityController').getDisableSecurityStatus() === 'RUNNING') {
  613. App.clusterStatus.setClusterStatus({
  614. clusterName: this.get('clusterName'),
  615. clusterState: 'DISABLE_SECURITY',
  616. wizardControllerName: router.get('mainAdminSecurityDisableController.name'),
  617. localdb: App.db.data
  618. });
  619. Ember.run.next(function () {
  620. App.router.get('updateController').set('isWorking', false);
  621. App.ModalPopup.show({
  622. classNames: ['full-width-modal'],
  623. header: Em.I18n.t('admin.removeSecurity.header'),
  624. bodyClass: App.MainAdminSecurityDisableView.extend({
  625. controllerBinding: 'App.router.mainAdminSecurityDisableController'
  626. }),
  627. primary: Em.I18n.t('form.cancel'),
  628. secondary: null,
  629. showFooter: false,
  630. onClose: function () {
  631. var self = this;
  632. var controller = router.get('mainAdminSecurityDisableController');
  633. if (!controller.get('isSubmitDisabled')) {
  634. self.proceedOnClose();
  635. return;
  636. }
  637. var applyingConfigStage = controller.get('stages').findProperty('stage', 'stage3');
  638. if (applyingConfigStage && !applyingConfigStage.get('isCompleted')) {
  639. if (applyingConfigStage.get('isStarted')) {
  640. App.showAlertPopup(Em.I18n.t('admin.security.applying.config.header'), Em.I18n.t('admin.security.applying.config.body'));
  641. } else {
  642. App.showConfirmationPopup(function () {
  643. self.proceedOnClose();
  644. }, Em.I18n.t('admin.addSecurity.disable.onClose'));
  645. }
  646. } else {
  647. self.proceedOnClose();
  648. }
  649. },
  650. proceedOnClose: function () {
  651. router.get('mainAdminSecurityDisableController').clearStep();
  652. App.db.setSecurityDeployStages(undefined);
  653. App.router.get('updateController').set('isWorking', true);
  654. router.get('mainAdminSecurityController').setDisableSecurityStatus(undefined);
  655. App.clusterStatus.setClusterStatus({
  656. clusterName: router.get('content.cluster.name'),
  657. clusterState: 'SECURITY_COMPLETED',
  658. wizardControllerName: router.get('mainAdminSecurityDisableController.name'),
  659. localdb: App.db.data
  660. });
  661. this.hide();
  662. router.transitionTo('adminSecurity.index');
  663. },
  664. didInsertElement: function () {
  665. this.fitHeight();
  666. }
  667. });
  668. });
  669. } else {
  670. router.transitionTo('adminSecurity.index');
  671. }
  672. },
  673. unroutePath: function () {
  674. return false;
  675. },
  676. done: function (router, context) {
  677. var controller = router.get('mainAdminSecurityDisableController');
  678. if (!controller.get('isSubmitDisabled')) {
  679. $(context.currentTarget).parents("#modal").find(".close").trigger('click');
  680. }
  681. }
  682. }),
  683. adminAddSecurity: require('routes/add_security')
  684. }),
  685. adminCluster: Em.Route.extend({
  686. route: '/cluster',
  687. connectOutlets: function (router) {
  688. router.set('mainAdminController.category', "cluster");
  689. router.get('mainAdminController').connectOutlet('mainAdminCluster');
  690. }
  691. }),
  692. adminAdvanced: Em.Route.extend({
  693. route: '/advanced',
  694. connectOutlets: function (router) {
  695. router.set('mainAdminController.category', "advanced");
  696. router.get('mainAdminController').connectOutlet('mainAdminAdvanced');
  697. }
  698. }),
  699. adminMisc: Em.Route.extend({
  700. route: '/misc',
  701. connectOutlets: function (router) {
  702. router.set('mainAdminController.category', "misc");
  703. router.get('mainAdminController').connectOutlet('mainAdminMisc');
  704. }
  705. }),
  706. adminAudit: Em.Route.extend({
  707. route: '/audit',
  708. connectOutlets: function (router) {
  709. router.set('mainAdminController.category', "audit");
  710. router.get('mainAdminController').connectOutlet('mainAdminAudit');
  711. }
  712. }),
  713. upgradeStack: function (router, event) {
  714. if (!$(event.currentTarget).hasClass('inactive')) {
  715. router.transitionTo('stackUpgrade');
  716. }
  717. },
  718. adminNavigate: function (router, object) {
  719. router.transitionTo('admin' + object.context.capitalize());
  720. },
  721. //events
  722. goToAdmin: function (router, event) {
  723. router.transitionTo(event.context);
  724. }
  725. }),
  726. stackUpgrade: require('routes/stack_upgrade'),
  727. dashboard: Em.Route.extend({
  728. route: '/dashboard',
  729. connectOutlets: function (router, context) {
  730. router.get('mainController').connectOutlet('mainDashboard');
  731. },
  732. showDetails: function (router, event) {
  733. router.get('mainHostDetailsController').setBack(true);
  734. router.transitionTo('hosts.hostDetails.summary', event.context);
  735. }
  736. }),
  737. services: Em.Route.extend({
  738. route: '/services',
  739. index: Ember.Route.extend({
  740. route: '/',
  741. enter: function (router) {
  742. Ember.run.next(function () {
  743. var controller = router.get('mainController');
  744. controller.dataLoading().done(function () {
  745. var service = router.get('mainServiceItemController.content');
  746. if (!service) {
  747. service = App.Service.find().objectAt(0); // getting the first service to display
  748. }
  749. router.transitionTo('service.summary', service);
  750. });
  751. });
  752. }
  753. }),
  754. connectOutlets: function (router, context) {
  755. router.get('mainController').connectOutlet('mainService');
  756. },
  757. service: Em.Route.extend({
  758. route: '/:service_id',
  759. connectOutlets: function (router, service) {
  760. router.get('mainServiceController').connectOutlet('mainServiceItem', service);
  761. router.transitionTo('summary');
  762. },
  763. index: Ember.Route.extend({
  764. route: '/'
  765. }),
  766. summary: Em.Route.extend({
  767. route: '/summary',
  768. connectOutlets: function (router, context) {
  769. var item = router.get('mainServiceItemController.content');
  770. var viewName = 'mainServiceInfoSummary';
  771. router.get('mainServiceItemController').connectOutlet('mainServiceInfoSummary', item);
  772. }
  773. }),
  774. metrics: Em.Route.extend({
  775. route: '/metrics',
  776. connectOutlets: function (router, context) {
  777. var item = router.get('mainServiceItemController.content');
  778. router.get('mainServiceItemController').connectOutlet('mainServiceInfoMetrics', item);
  779. }
  780. }),
  781. configs: Em.Route.extend({
  782. route: '/configs',
  783. connectOutlets: function (router, context) {
  784. var item = router.get('mainServiceItemController.content');
  785. router.get('mainServiceItemController').connectOutlet('mainServiceInfoConfigs', item);
  786. }
  787. }),
  788. audit: Em.Route.extend({
  789. route: '/audit',
  790. connectOutlets: function (router, context) {
  791. var item = router.get('mainServiceItemController.content');
  792. router.get('mainServiceItemController').connectOutlet('mainServiceInfoAudit', item);
  793. }
  794. }),
  795. showInfo: function (router, event) {
  796. var parent = event.view._parentView;
  797. parent.deactivateChildViews();
  798. event.view.set('active', "active");
  799. router.transitionTo(event.context);
  800. },
  801. showDetails: function (router, event) {
  802. router.get('mainHostDetailsController').setBack(true);
  803. router.transitionTo('hosts.hostDetails.summary', event.context);
  804. }
  805. }),
  806. showService: Em.Router.transitionTo('service'),
  807. addService: Em.Router.transitionTo('serviceAdd')
  808. }),
  809. serviceAdd: require('routes/add_service_routes'),
  810. reassignMaster: require('routes/reassign_master_routes'),
  811. selectService: Em.Route.transitionTo('services.service.summary'),
  812. selectHost: function (router, event) {
  813. router.get('mainHostDetailsController').setBack(false);
  814. router.transitionTo('hosts.hostDetails.index', event.context);
  815. },
  816. filterHosts: function (router, component) {
  817. router.get('mainHostController').filterByComponent(component.context);
  818. router.transitionTo('hosts.index');
  819. }
  820. });