blob: b935b222b941db22f0f9d37301cf6d24e6078020 [file] [log] [blame]
/**
* 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');
App.ApplicationController = Em.Controller.extend(App.Persist, {
name: 'applicationController',
isPollerRunning: false,
clusterName: Em.computed.alias('App.router.clusterController.clusterName'),
/**
* set ambari server version from installerController or mainController, making sure version shown up all the time
*/
ambariVersion: function () {
return App.router.get('installerController.ambariServerVersion') || App.router.get('mainController.ambariServerVersion') || Em.I18n.t('common.notAvailable');
}.property('App.router.installerController.ambariServerVersion', 'App.router.mainController.ambariServerVersion'),
clusterDisplayName: Em.computed.truncate('clusterName', 13, 10),
isClusterDataLoaded: Em.computed.and('App.router.clusterController.isLoaded','App.router.loggedIn'),
isExistingClusterDataLoaded: Em.computed.and('App.router.clusterInstallCompleted', 'isClusterDataLoaded'),
enableLinks: Em.computed.and('isExistingClusterDataLoaded', '!App.isOnlyViewUser'),
/**
* Determines if "Exit" menu-item should be shown
* It should if cluster isn't installed
* If cluster is installer, <code>isClusterDataLoaded</code> is checked
* @type {boolean}
*/
showExitLink: function () {
if (App.router.get('clusterInstallCompleted')) {
return this.get('isClusterDataLoaded');
}
return true;
}.property('App.router.clusterInstallCompleted', 'isClusterDataLoaded'),
/**
* Determines if "Manage Ambari" menu-item should be shown
*
* @type {boolean}
*/
showManageAmbari: function () {
if (App.router.get('clusterInstallCompleted')) {
return this.get('isClusterDataLoaded');
}
return App.get('isPermissionDataLoaded');
}.property('App.router.clusterInstallCompleted', 'isClusterDataLoaded', 'App.isPermissionDataLoaded'),
/**
* Determines if upgrade label should be shown
*
* @type {boolean}
*/
showUpgradeLabel: Em.computed.or('App.upgradeInProgress', 'App.upgradeHolding', 'App.upgradeSuspended'),
/**
* @return {{msg: string, cls: string, icon: string}}
*/
upgradeMap: function () {
var upgradeInProgress = App.get('upgradeInProgress');
var upgradeHolding = App.get('upgradeHolding');
var upgradeSuspended = App.get('upgradeSuspended');
var isDowngrade = App.router.get('mainAdminStackAndUpgradeController.isDowngrade');
var typeSuffix = isDowngrade ? 'downgrade' : 'upgrade';
var hasUpgradePrivilege = App.isAuthorized('CLUSTER.UPGRADE_DOWNGRADE_STACK');
var wizardWatcherController = App.router.get('wizardWatcherController');
var isNotWizardUser;
var wizardUserName;
if (upgradeInProgress) {
isNotWizardUser =wizardWatcherController.get('isNonWizardUser');
wizardUserName = wizardWatcherController.get('wizardUser');
return {
cls: hasUpgradePrivilege? 'upgrade-in-progress' : 'upgrade-in-progress not-allowed-cursor',
icon: 'glyphicon-cog',
msg: isNotWizardUser ? Em.I18n.t('admin.stackVersions.version.' + typeSuffix + '.running.nonWizard').format(wizardUserName) : Em.I18n.t('admin.stackVersions.version.' + typeSuffix + '.running')
}
}
if (upgradeHolding) {
return {
cls: hasUpgradePrivilege? 'upgrade-holding' : 'upgrade-holding not-allowed-cursor',
icon: 'glyphicon-pause',
msg: Em.I18n.t('admin.stackVersions.version.' + typeSuffix + '.pause')
}
}
if (upgradeSuspended) {
return {
cls: hasUpgradePrivilege? 'upgrade-aborted' : 'upgrade-aborted not-allowed-cursor',
icon: 'glyphicon-pause',
msg: Em.I18n.t('admin.stackVersions.version.' + typeSuffix + '.suspended')
}
}
return {};
}.property('App.upgradeInProgress', 'App.upgradeHolding', 'App.upgradeSuspended', 'App.router.mainAdminStackAndUpgradeController.isDowngrade'),
startKeepAlivePoller: function() {
if (!this.get('isPollerRunning')) {
this.set('isPollerRunning',true);
App.updater.run(this, 'getStack', 'isPollerRunning', App.sessionKeepAliveInterval);
}
},
getStack: function(callback) {
App.ajax.send({
name: 'router.login.clusters',
sender: this,
callback: callback
});
},
goToAdminView: function () {
App.router.route("adminView");
},
goToDashboard: function () {
if (this.get('enableLinks')) {
App.router.route("main/dashboard");
}
},
showAboutPopup: function() {
App.ModalPopup.show({
header: Em.I18n.t('common.aboutAmbari'),
secondary: false,
bodyClass: Em.View.extend({
templateName: require('templates/common/about'),
ambariVersion: this.get('ambariVersion')
})
});
}
});