| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| var App = require('app'); |
| |
| module.exports = Em.Route.extend(App.RouterRedirections, { |
| route: '/installer', |
| App: require('app'), |
| |
| enter: function (router) { |
| var self = this; |
| |
| App.clusterStatus.set('wizardControllerName', App.router.get('installerController.name')); |
| |
| router.getAuthenticated().done(function (loggedIn) { |
| if (loggedIn) { |
| var applicationController = router.get('applicationController'); |
| App.router.get('experimentalController').loadSupports().complete(function () { |
| applicationController.startKeepAlivePoller(); |
| // check server/web client versions match |
| App.router.get('installerController').checkServerClientVersion().done(function () { |
| |
| $('title').text(Em.I18n.t('app.name.subtitle').format(Em.I18n.t('app.name.subtitle.installer'))); |
| $('#main').addClass('install-wizard-content'); |
| |
| App.router.get('mainViewsController').loadAmbariViews(); |
| if (App.isAuthorized('AMBARI.ADD_DELETE_CLUSTERS')) { |
| router.get('mainController').stopPolling(); |
| Em.run.next(function () { |
| App.clusterStatus.updateFromServer().complete(function () { |
| var currentClusterStatus = App.clusterStatus.get('value'); |
| //@TODO: Clean up following states. Navigation should be done solely via currentStep stored in the localDb and API persist endpoint. |
| // Actual currentStep value for the installer controller should always remain in sync with localdb and at persist store in the server. |
| if (currentClusterStatus) { |
| if (self.get('installerStatuses').contains(currentClusterStatus.clusterState)) { |
| self.redirectToInstaller(router, currentClusterStatus, true); |
| } |
| else { |
| router.transitionTo('main.dashboard.index'); |
| } |
| } |
| }); |
| }); |
| } else { |
| Em.run.next(function () { |
| App.router.transitionTo('main.views.index'); |
| }); |
| } |
| }); |
| }); |
| } else { |
| Ember.run.next(function () { |
| router.transitionTo('login'); |
| }); |
| } |
| }); |
| }, |
| |
| routePath: function (router, event) { |
| const stepIndex = installerController.getStepIndex(event) |
| router.setNavigationFlow(stepIndex); |
| |
| if (!router.isFwdNavigation) { |
| this._super(router, event); |
| } else { |
| router.set('backBtnForHigherStep', true); |
| |
| var installerController = router.get('installerController'); |
| router.transitionTo(installerController.get('currentStepName')); |
| } |
| }, |
| |
| connectOutlets: function (router, context) { |
| router.get('applicationController').connectOutlet('installer'); |
| }, |
| |
| step0: Em.Route.extend({ |
| route: '/step0', |
| breadcrumbs: { label: Em.I18n.translations['installer.step0.header'] }, |
| connectOutlets: function (router) { |
| console.time('step0 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep0Controller = router.get('wizardStep0Controller'); |
| wizardStep0Controller.set('wizardController', controller); |
| controller.setCurrentStep('step0'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardStep0', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('step0 connectOutlets'); |
| }); |
| }, |
| |
| next: function (router) { |
| console.time('step0 next'); |
| var controller = router.get('installerController'); |
| controller.save('cluster'); |
| App.db.setStacks(undefined); |
| App.db.setRepos(undefined); |
| App.db.setLocalRepoVDFData(undefined); |
| App.Stack.find().clear(); |
| |
| controller.set('content.stacks',undefined); |
| router.transitionTo('step2'); |
| console.timeEnd('step0 next'); |
| } |
| }), |
| |
| step2: Em.Route.extend({ |
| route: '/step2', |
| breadcrumbs: { label: Em.I18n.translations['installer.step2.header'] }, |
| connectOutlets: function (router, context) { |
| console.time('step2 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep2Controller = router.get('wizardStep2Controller'); |
| wizardStep2Controller.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('step2'); |
| router.setNavigationFlow(newStepIndex); |
| //controller.clearInstallOptions(); |
| controller.setCurrentStep('step2'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| self.scrollTop(); |
| controller.connectOutlet('wizardStep2', controller.get('content')); |
| console.timeEnd('step2 connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('step0'); |
| }, |
| |
| next: function (router) { |
| console.time('step2 next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| controller.save('installOptions'); |
| //hosts was saved to content.hosts inside wizardStep2Controller |
| controller.save('hosts'); |
| controller.setStepSaved('step2'); |
| router.transitionTo('step3'); |
| } |
| console.timeEnd('step2 next'); |
| } |
| }), |
| |
| step3: App.StepRoute.extend({ |
| route: '/step3', |
| breadcrumbs: { label: Em.I18n.translations['installer.step3.header'] }, |
| connectOutlets: function (router) { |
| console.time('step3 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep3Controller = router.get('wizardStep3Controller'); |
| wizardStep3Controller.set('wizardController', controller); |
| controller.setCurrentStep('step3'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardStep3', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('step3 connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('step2'); |
| }, |
| |
| next: function (router, context) { |
| console.time('step3 next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| var wizardStep3Controller = router.get('wizardStep3Controller'); |
| controller.saveConfirmedHosts(wizardStep3Controller); |
| if (!wizardStep3Controller.get('isSaved')) { |
| var wizardSelectMpacksController = App.router.get('wizardSelectMpacksController'); |
| wizardSelectMpacksController.set('wizardController', controller); |
| wizardSelectMpacksController.clearSelection(); |
| controller.set('content.selectedServices', undefined); |
| controller.set('content.selectedServiceNames', undefined); |
| controller.set('content.selectedMpacks', undefined); |
| controller.setDBProperties({ |
| bootStatus: true, |
| selectedServices: undefined, |
| selectedServiceNames: undefined, |
| installedServiceNames: undefined, |
| selectedMpack: undefined |
| }); |
| } |
| controller.setStepSaved('step3'); |
| router.transitionTo('configureDownload'); |
| console.timeEnd('step3 next'); |
| } |
| }, |
| exit: function (router) { |
| router.get('wizardStep3Controller').set('stopBootstrap', true); |
| }, |
| /** |
| * Wrapper for remove host action. |
| * Since saving data stored in installerController, we should call this from router |
| * @param router |
| * @param context Array of hosts to delete |
| */ |
| removeHosts: function (router, context) { |
| var controller = router.get('installerController'); |
| controller.removeHosts(context); |
| } |
| }), |
| |
| configureDownload: Em.Route.extend({ |
| route: '/configureDownload', |
| breadcrumbs: { label: Em.I18n.translations['installer.configureDownload.header'] }, |
| connectOutlets: function (router) { |
| console.time('configureDownload connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var configureDownloadController = router.get('wizardConfigureDownloadController'); |
| configureDownloadController.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('configureDownload'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('configureDownload'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardConfigureDownload', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('configureDownload connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('step3'); |
| }, |
| |
| next: function (router) { |
| console.time('configureDownload next'); |
| if(router.get('btnClickInProgress')) { |
| return; |
| } |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| controller.save('downloadConfig'); |
| controller.setDBProperty('service', undefined); |
| router.transitionTo('selectMpacks'); |
| console.timeEnd('configureDownload next'); |
| } |
| }), |
| |
| selectMpacks: App.StepRoute.extend({ |
| route: '/selectMpacks', |
| breadcrumbs: { label: Em.I18n.translations['installer.selectMpacks.header'] }, |
| connectOutlets: function (router) { |
| console.time('selectMpacks connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| controller.setCurrentStep('selectMpacks'); |
| var wizardSelectMpacksController = router.get('wizardSelectMpacksController'); |
| wizardSelectMpacksController.set('wizardController', controller); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardSelectMpacks', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('selectMpacks connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('configureDownload'); |
| }, |
| |
| next: function (router, context) { |
| console.time('selectMpacks next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| controller.save('selectedServiceNames'); |
| controller.save('selectedServices'); |
| controller.save('selectedMpacks'); |
| controller.save('advancedMode'); |
| var wizardSelectMpacksController = router.get('wizardSelectMpacksController'); |
| // Clear subsequent settings if user changed service selections |
| if (!wizardSelectMpacksController.get('isSaved')) { |
| router.get('wizardStep5Controller').clearRecommendations(); |
| controller.setDBProperty('recommendations', undefined); |
| controller.set('content.masterComponentHosts', undefined); |
| controller.setDBProperty('masterComponentHosts', undefined); |
| controller.clearEnhancedConfigs(); |
| controller.setDBProperty('slaveComponentHosts', undefined); |
| router.get('wizardStep6Controller').set('isClientsSet', false); |
| } |
| controller.setStepSaved('selectMpacks'); |
| const downloadConfig = controller.get('content.downloadConfig'); |
| if (downloadConfig && downloadConfig.useCustomRepo) { |
| router.transitionTo('customMpackRepos'); |
| } else { |
| router.transitionTo('downloadMpacks'); |
| } |
| console.timeEnd('selectMpacks next'); |
| } |
| }, |
| }), |
| |
| customMpackRepos: App.StepRoute.extend({ |
| route: '/customMpackRepos', |
| breadcrumbs: { label: Em.I18n.translations['installer.customMpackRepos.header'] }, |
| connectOutlets: function (router) { |
| console.time('customMpackRepos connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| const downloadConfig = controller.get('content.downloadConfig'); |
| |
| //do not allow navigation to this step unless we are using custom repos |
| if (downloadConfig && !downloadConfig.useCustomRepo) { |
| Em.run.next(function () { |
| router.transitionTo('downloadMpacks'); |
| }); |
| } |
| |
| var customMpackReposController = router.get('wizardCustomMpackReposController'); |
| customMpackReposController.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('customMpackRepos'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('customMpackRepos'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardCustomMpackRepos', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('customMpackRepos connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('selectMpacks'); |
| }, |
| |
| next: function (router) { |
| console.time('customMpackRepos next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| const controller = router.get('installerController'); |
| controller.save('selectedMpacks'); |
| controller.setStepSaved('customMpackRepos'); |
| router.transitionTo('downloadMpacks'); |
| console.timeEnd('customMpackRepos next'); |
| } |
| } |
| }), |
| |
| downloadMpacks: App.StepRoute.extend({ |
| route: '/downloadMpacks', |
| breadcrumbs: { label: Em.I18n.translations['installer.downloadMpacks.header'] }, |
| connectOutlets: function (router) { |
| console.time('downloadMpacks connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var downloadMpacksController = router.get('wizardDownloadMpacksController'); |
| downloadMpacksController.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('downloadMpacks'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('downloadMpacks'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardDownloadMpacks', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('downloadMpacks connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| const controller = router.get('installerController'); |
| controller.clearErrors(); |
| const downloadConfig = controller.get('content.downloadConfig'); |
| if (downloadConfig && downloadConfig.useCustomRepo) { |
| router.transitionTo('customMpackRepos'); |
| } else { |
| router.transitionTo('selectMpacks'); |
| } |
| }, |
| |
| next: function (router) { |
| console.time('downloadMpacks next'); |
| if(router.get('btnClickInProgress')) { |
| return; |
| } |
| App.set('router.nextBtnClickInProgress', true); |
| const controller = router.get('installerController'); |
| const downloadConfig = controller.get('content.downloadConfig'); |
| if (downloadConfig && downloadConfig.useCustomRepo) { |
| router.transitionTo('customProductRepos'); |
| } else { |
| router.transitionTo('step5'); |
| } |
| console.timeEnd('downloadMpacks next'); |
| } |
| }), |
| |
| customProductRepos: App.StepRoute.extend({ |
| route: '/customProductRepos', |
| breadcrumbs: { label: Em.I18n.translations['installer.customProductRepos.header'] }, |
| connectOutlets: function (router) { |
| console.time('customProductRepos connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| const downloadConfig = controller.get('content.downloadConfig'); |
| |
| //disable navigation to this step unless we are using custom repos |
| if (downloadConfig && !downloadConfig.useCustomRepo) { |
| Em.run.next(function () { |
| router.transitionTo('verifyProducts'); |
| }); |
| } |
| |
| var customMpackReposController = router.get('wizardCustomMpackReposController'); |
| customMpackReposController.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('customProductRepos'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('customProductRepos'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardCustomProductRepos', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('customProductRepos connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('downloadMpacks'); |
| }, |
| |
| next: function (router) { |
| console.time('customProductRepos next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| const controller = router.get('installerController'); |
| controller.clearErrors(); |
| controller.save('selectedMpacks'); |
| controller.setStepSaved('customProductRepos'); |
| router.transitionTo('verifyProducts'); |
| console.timeEnd('customProductRepos next'); |
| } |
| } |
| }), |
| |
| verifyProducts: App.StepRoute.extend({ |
| route: '/verifyProducts', |
| breadcrumbs: { label: Em.I18n.translations['installer.verifyProducts.header'] }, |
| connectOutlets: function (router) { |
| console.time('verifyProducts connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var verifyProductsController = router.get('wizardVerifyProductsController'); |
| verifyProductsController.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('verifyProducts'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('verifyProducts'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardVerifyProducts', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('verifyProducts connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| const controller = router.get('installerController'); |
| controller.clearErrors(); |
| const downloadConfig = controller.get('content.downloadConfig'); |
| if (downloadConfig && downloadConfig.useCustomRepo) { |
| router.transitionTo('customProductRepos'); |
| } else { |
| router.transitionTo('downloadMpacks'); |
| } |
| }, |
| |
| next: function (router) { |
| console.time('verifyProducts next'); |
| if (router.get('btnClickInProgress')) { |
| return; |
| } |
| App.set('router.nextBtnClickInProgress', true); |
| const controller = router.get('installerController'); |
| router.transitionTo(controller.getNextStepName()); |
| console.timeEnd('verifyProducts next'); |
| } |
| }), |
| |
| step4: App.StepRoute.extend({ |
| route: '/step4', |
| breadcrumbs: { label: Em.I18n.translations['installer.step4.header'] }, |
| connectOutlets: function (router, context) { |
| console.time('step4 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep4Controller = router.get('wizardStep4Controller'); |
| wizardStep4Controller.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('step4'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('step4'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardStep4', App.StackService.find().filterProperty('isInstallable', true)); |
| self.scrollTop(); |
| console.timeEnd('step4 connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function(router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('step1'); |
| }, |
| |
| next: function (router) { |
| console.time('step4 next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| var wizardStep4Controller = router.get('wizardStep4Controller'); |
| controller.saveServices(wizardStep4Controller); |
| controller.saveClients(wizardStep4Controller); |
| router.get('wizardStep5Controller').clearRecommendations(); // Force reload recommendation between steps 4 and 5 |
| controller.setDBProperties({ |
| recommendations: undefined, |
| masterComponentHosts: undefined |
| }); |
| controller.clearEnhancedConfigs(); |
| router.transitionTo('step5'); |
| } |
| console.timeEnd('step4 next'); |
| } |
| }), |
| |
| step5: App.StepRoute.extend({ |
| route: '/step5', |
| breadcrumbs: { label: Em.I18n.translations['installer.step5.header'] }, |
| connectOutlets: function (router, context) { |
| console.time('step5 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep5Controller = router.get('wizardStep5Controller'); |
| wizardStep5Controller.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('step5'); |
| router.setNavigationFlow(newStepIndex); |
| wizardStep5Controller.setProperties({ |
| servicesMasters: [], |
| isInitialLayout: true |
| }); |
| controller.setCurrentStep('step5'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardStep5', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('step5 connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| const downloadConfig = controller.get('content.downloadConfig'); |
| if (downloadConfig && downloadConfig.useCustomRepo) { |
| router.transitionTo('verifyProducts'); |
| } else { |
| router.transitionTo('downloadMpacks'); |
| } |
| }, |
| |
| next: function (router) { |
| console.time('step5 next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| var wizardStep5Controller = router.get('wizardStep5Controller'); |
| controller.saveMasterComponentHosts(wizardStep5Controller); |
| controller.setDBProperty('recommendations', wizardStep5Controller.get('content.recommendations') || wizardStep5Controller.get('recommendations')); |
| // Clear subsequent steps if user made changes |
| if (!wizardStep5Controller.get('isSaved')) { |
| controller.setDBProperty('slaveComponentHosts', undefined); |
| var wizardStep6Controller = router.get('wizardStep6Controller'); |
| wizardStep6Controller.set('isClientsSet', false); |
| } |
| controller.setStepSaved('step5'); |
| router.transitionTo('step6'); |
| } |
| console.timeEnd('step5 next'); |
| } |
| }), |
| |
| step6: App.StepRoute.extend({ |
| route: '/step6', |
| breadcrumbs: { label: Em.I18n.translations['installer.step6.header'] }, |
| connectOutlets: function (router, context) { |
| console.time('step6 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep6Controller = router.get('wizardStep6Controller'); |
| wizardStep6Controller.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('step6'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('step6'); |
| wizardStep6Controller.set('hosts', []); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardStep6', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('step6 connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function(router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('step5'); |
| }, |
| |
| next: function (router) { |
| console.time('step6 next'); |
| var controller = router.get('installerController'); |
| var wizardStep6Controller = router.get('wizardStep6Controller'); |
| if (!wizardStep6Controller.get('submitDisabled')) { |
| wizardStep6Controller.showValidationIssuesAcceptBox(function () { |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| controller.saveSlaveComponentHosts(wizardStep6Controller); |
| controller.get('content').set('serviceConfigProperties', null); |
| controller.get('content').set('componentsFromConfigs', []); |
| // Clear subsequent steps if user made changes |
| if (!wizardStep6Controller.get('isSaved')) { |
| controller.setDBProperties({ |
| serviceConfigGroups: null, |
| recommendationsHostGroups: wizardStep6Controller.get('content.recommendationsHostGroups'), |
| recommendationsConfigs: null, |
| componentsFromConfigs: [] |
| }); |
| controller.clearServiceConfigProperties(); |
| } |
| controller.setStepSaved('step6'); |
| router.transitionTo('step7'); |
| console.timeEnd('step6 next'); |
| } |
| }); |
| } |
| } |
| }), |
| |
| step7: App.StepRoute.extend({ |
| route: '/step7', |
| breadcrumbs: { label: Em.I18n.translations['installer.step7.header'] }, |
| connectOutlets: function (router, context) { |
| console.time('step7 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep7Controller = router.get('wizardStep7Controller'); |
| wizardStep7Controller.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('step7'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('step7'); |
| router.get('preInstallChecksController').loadStep(); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardStep7', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('step7 connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| console.time('step7 back'); |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| |
| var step = router.get('installerController.content.skipSlavesStep') ? 'step5' : 'step6'; |
| var wizardStep7Controller = router.get('wizardStep7Controller'); |
| |
| var goToNextStep = function() { |
| router.transitionTo(step); |
| }; |
| |
| if (wizardStep7Controller.hasChanges()) { |
| wizardStep7Controller.showChangesWarningPopup(goToNextStep); |
| } else { |
| goToNextStep(); |
| } |
| console.timeEnd('step7 back'); |
| }, |
| |
| next: function (router) { |
| console.time('step7 next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| var wizardStep7Controller = router.get('wizardStep7Controller'); |
| controller.saveServiceConfigProperties(wizardStep7Controller); |
| controller.saveServiceConfigGroups(wizardStep7Controller); |
| controller.setDBProperty('recommendationsConfigs', wizardStep7Controller.get('recommendationsConfigs')); |
| controller.saveComponentsFromConfigs(controller.get('content.componentsFromConfigs')); |
| controller.setDBProperty('recommendationsHostGroup', wizardStep7Controller.get('content.recommendationsHostGroup')); |
| controller.setDBProperty('masterComponentHosts', wizardStep7Controller.get('content.masterComponentHosts')); |
| App.clusterStatus.setClusterStatus({ |
| localdb: App.db.data |
| }); |
| router.transitionTo('step8'); |
| console.timeEnd('step7 next'); |
| } |
| } |
| }), |
| |
| step8: App.StepRoute.extend({ |
| route: '/step8', |
| breadcrumbs: { label: Em.I18n.translations['installer.step8.header'] }, |
| connectOutlets: function (router, context) { |
| console.time('step8 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep8Controller = router.get('wizardStep8Controller'); |
| wizardStep8Controller.set('wizardController', controller); |
| var newStepIndex = controller.getStepIndex('step8'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('step8'); |
| controller.loadAllPriorSteps().done(function () { |
| controller.setStepsEnable(); |
| controller.connectOutlet('wizardStep8', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('step8 connectOutlets'); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| if (router.get('wizardStep8Controller.isBackBtnDisabled') == false) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| |
| router.transitionTo('step7'); |
| } |
| }, |
| |
| next: function (router) { |
| console.time('step8 next'); |
| if (!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| var wizardStep8Controller = router.get('wizardStep8Controller'); |
| // invoke API call to install selected services |
| controller.installServices(false, function () { |
| controller.setInfoForStep9(); |
| // We need to do recovery based on whether we are in Add Host or Installer wizard |
| controller.saveClusterState('CLUSTER_INSTALLING_3'); |
| wizardStep8Controller.set('servicesInstalled', true); |
| router.transitionTo('step9'); |
| console.timeEnd('step8 next'); |
| }); |
| } |
| } |
| }), |
| |
| step9: Em.Route.extend({ |
| route: '/step9', |
| breadcrumbs: { label: Em.I18n.translations['installer.step9.header'] }, |
| connectOutlets: function (router, context) { |
| console.time('step9 connectOutlets'); |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep9Controller = router.get('wizardStep9Controller'); |
| wizardStep9Controller.set('wizardController', controller); |
| controller.loadAllPriorSteps().done(function () { |
| wizardStep9Controller.loadDoServiceChecksFlag().done(function () { |
| var newStepIndex = controller.getStepIndex('step7'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('step9'); |
| controller.setStepsEnable(); |
| if (!App.get('testMode')) { |
| controller.setLowerStepsDisable(9); |
| } |
| controller.connectOutlet('wizardStep9', controller.get('content')); |
| self.scrollTop(); |
| console.timeEnd('step9 connectOutlets'); |
| }); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('step8'); |
| }, |
| |
| retry: function (router) { |
| console.time('step9 retry'); |
| var controller = router.get('installerController'); |
| var wizardStep9Controller = router.get('wizardStep9Controller'); |
| if (wizardStep9Controller.get('showRetry')) { |
| if (wizardStep9Controller.get('content.cluster.status') === 'INSTALL FAILED') { |
| var isRetry = true; |
| controller.installServices(isRetry, function () { |
| controller.setInfoForStep9(); |
| wizardStep9Controller.resetHostsForRetry(); |
| // We need to do recovery based on whether we are in Add Host or Installer wizard |
| controller.saveClusterState('CLUSTER_INSTALLING_3'); |
| wizardStep9Controller.navigateStep(); |
| }); |
| } else { |
| wizardStep9Controller.navigateStep(); |
| } |
| console.timeEnd('step9 retry'); |
| } |
| }, |
| |
| unroutePath: function (router, context) { |
| // exclusion for transition to Admin view or Views view |
| if (context === '/adminView' || |
| context === '/main/views.index' || context === '/main/view.index') { |
| this._super(router, context); |
| } else { |
| return false; |
| } |
| }, |
| |
| next: function (router) { |
| console.time('step9 next'); |
| if(!router.get('btnClickInProgress')) { |
| App.set('router.nextBtnClickInProgress', true); |
| var controller = router.get('installerController'); |
| var wizardStep9Controller = router.get('wizardStep9Controller'); |
| controller.saveInstalledHosts(wizardStep9Controller); |
| controller.saveClusterState('CLUSTER_INSTALLED_4'); |
| router.transitionTo('step10'); |
| console.timeEnd('step9 next'); |
| } |
| } |
| }), |
| |
| step10: Em.Route.extend({ |
| route: '/step10', |
| breadcrumbs: { label: Em.I18n.translations['installer.step10.header'] }, |
| connectOutlets: function (router, context) { |
| var self = this; |
| var controller = router.get('installerController'); |
| var wizardStep10Controller = router.get('wizardStep10Controller'); |
| wizardStep10Controller.set('wizardController', controller); |
| controller.loadAllPriorSteps().done(function () { |
| if (!App.get('testMode')) { |
| var newStepIndex = controller.getStepIndex('step10'); |
| router.setNavigationFlow(newStepIndex); |
| controller.setCurrentStep('step10'); |
| controller.setStepsEnable(); |
| controller.setLowerStepsDisable(10); |
| } |
| controller.connectOutlet('wizardStep10', controller.get('content')); |
| self.scrollTop(); |
| }); |
| }, |
| |
| backTransition: function (router) { |
| var controller = router.get('installerController'); |
| controller.clearErrors(); |
| router.transitionTo('step9'); |
| }, |
| |
| complete: function (router, context) { |
| var controller = router.get('installerController'); |
| controller.finish(); |
| controller.setClusterProvisioningState('INSTALLED').complete(function () { |
| // We need to do recovery based on whether we are in Add Host or Installer wizard |
| controller.saveClusterState('DEFAULT'); |
| App.router.set('clusterController.isLoaded', false); |
| router.set('clusterInstallCompleted', true); |
| router.transitionTo('main.dashboard.index'); |
| }); |
| } |
| }), |
| |
| gotoStep0: Em.Router.transitionTo('step0'), |
| |
| gotoStep1: Em.Router.transitionTo('step1'), |
| |
| gotoStep2: Em.Router.transitionTo('step2'), |
| |
| gotoStep3: Em.Router.transitionTo('step3'), |
| |
| gotoStep4: Em.Router.transitionTo('step4'), |
| |
| gotoStep5: Em.Router.transitionTo('step5'), |
| |
| gotoStep6: Em.Router.transitionTo('step6'), |
| |
| gotoStep7: Em.Router.transitionTo('step7'), |
| |
| gotoStep8: Em.Router.transitionTo('step8'), |
| |
| gotoStep9: Em.Router.transitionTo('step9'), |
| |
| gotoStep10: Em.Router.transitionTo('step10'), |
| |
| gotoConfigureDownload: Em.Router.transitionTo('configureDownload'), |
| |
| gotoSelectMpacks: Em.Router.transitionTo('selectMpacks'), |
| |
| gotoCustomMpackRepos: Em.Router.transitionTo('customMpackRepos'), |
| |
| gotoDownloadMpacks: Em.Router.transitionTo('downloadMpacks'), |
| |
| gotoCustomProductRepos: Em.Router.transitionTo('customProductRepos'), |
| |
| gotoVerifyProducts: Em.Router.transitionTo('verifyProducts') |
| |
| }); |