blob: 2faffb4a7db37d7410ad3bea497974191cf67a1b [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.db = {};
var InitialData = {
'app': {
'loginName': '',
'authenticated': false,
'configs': [],
'tags': [],
'tables': {
'filterConditions': {},
'displayLength': {},
'startIndex': {},
'sortingConditions': {},
'selectedItems': {}
}
},
'Installer': {},
'AddHost': {},
'AddService': {},
'WidgetWizard': {},
'KerberosWizard': {},
'ReassignMaster': {},
'AddSecurity': {},
'AddAlertDefinition': {
content: {}
},
'HighAvailabilityWizard': {},
'RMHighAvailabilityWizard': {},
'AddHawqStandbyWizard': {},
'RemoveHawqStandbyWizard': {},
'ActivateHawqStandbyWizard': {},
'RAHighAvailabilityWizard': {},
'NameNodeFederationWizard': {},
'RollbackHighAvailabilityWizard': {},
'MainAdminStackAndUpgrade': {},
'KerberosDisable': {},
'tmp': {}
};
function checkNamespace(namespace) {
if (!namespace) {
return false;
}
if (Em.isNone(Em.get(App.db.data, namespace))) {
Em.setFullPath(App.db.data, namespace, {});
}
return true;
}
if (typeof Storage === 'undefined') {
// stub for unit testing purposes
window.localStorage = {};
localStorage.setItem = function (key, val) {
this[key] = val;
};
localStorage.getItem = function (key) {
return this[key];
};
window.localStorage.setObject = function (key, value) {
this[key] = value;
};
window.localStorage.getObject = function (key) {
return this[key];
};
}
else {
Storage.prototype.setObject = function (key, value) {
this.setItem(key, JSON.stringify(value));
};
Storage.prototype.getObject = function (key) {
var value = this.getItem(key);
return value && JSON.parse(value);
};
}
App.db.cleanUp = function () {
App.db.data = InitialData;
localStorage.setObject('ambari', App.db.data);
};
App.db.cleanTmp = function () {
App.db.data.tmp = {};
localStorage.setObject('ambari', App.db.data);
};
App.db.updateStorage = function () {
App.db.data = localStorage.getObject('ambari');
if (Em.get(App, 'db.data.app.tables') && Em.get(App, 'db.data.app.configs')) {
return true;
}
App.db.cleanUp();
return false;
};
/*
Initialize wizard namespaces if they are not initialized on login.
This will be required during upgrade.
*/
App.db.mergeStorage = function () {
if (localStorage.getObject('ambari') == null) {
App.db.cleanUp();
} else {
localStorage.setObject('ambari', $.extend(true, {}, InitialData, App.db.data));
}
};
// called whenever user logs in
if (localStorage.getObject('ambari') == null) {
App.db.cleanUp();
}
/**
*
* @param {string} namespace
* @param {string} key
* @returns {*}
*/
App.db.get = function (namespace, key) {
App.db.data = localStorage.getObject('ambari');
Em.assert('`namespace` should be defined', !!namespace);
checkNamespace(namespace);
return Em.get(Em.get(App.db.data, namespace), key);
};
/**
*
* @param {string} namespace
* @param {string[]} listOfProperties
* @returns {object}
*/
App.db.getProperties = function (namespace, listOfProperties) {
App.db.data = localStorage.getObject('ambari');
Em.assert('`namespace` should be defined', !!namespace);
checkNamespace(namespace);
return Em.getProperties(Em.get(App.db.data, namespace), listOfProperties);
};
/**
*
* @param {string} namespace
* @param {string} key
* @param {*} value
*/
App.db.set = function (namespace, key, value) {
App.db.data = localStorage.getObject('ambari');
Em.assert('`namespace` should be defined', !!namespace);
checkNamespace(namespace);
Em.set(Em.get(App.db.data, namespace), key, value);
localStorage.setObject('ambari', App.db.data);
};
/**
*
* @param {string} namespace
* @param {{key: value}} hash
*/
App.db.setProperties = function (namespace, hash) {
App.db.data = localStorage.getObject('ambari');
Em.assert('`namespace` should be defined', !!namespace);
checkNamespace(namespace);
Em.setProperties(Em.get(App.db.data, namespace), hash);
localStorage.setObject('ambari', App.db.data);
};
App.db.setLoginName = function (name) {
App.db.set('app', 'loginName', name);
};
/**
* Set user model to db
* @param user
*/
App.db.setUser = function (user) {
App.db.set('app', 'user', user);
};
App.db.setAuth = function (auth) {
App.db.set('app', 'auth', auth);
};
App.db.setAuthenticated = function (authenticated) {
App.db.set('app', 'authenticated', authenticated);
App.db.data = localStorage.getObject('ambari');
};
App.db.setFilterConditions = function (name, filterConditions) {
App.db.set('app.tables.filterConditions', name, filterConditions);
};
App.db.setComboSearchQuery = function (name, query) {
App.db.set('app.tables.comboSearchQuery', name, query);
};
App.db.setDisplayLength = function (name, displayLength) {
App.db.set('app.tables.displayLength', name, displayLength);
};
App.db.setStartIndex = function (name, startIndex) {
App.db.set('app.tables.startIndex', name, startIndex);
};
App.db.setSortingStatuses = function (name, sortingConditions) {
App.db.set('app.tables.sortingConditions', name, sortingConditions);
};
App.db.setSelectedHosts = function (selectedHosts) {
App.db.set('app.tables.selectedItems', 'mainHostController', selectedHosts);
};
App.db.unselectHosts = function (hostsToUnselect = []) {
let selectedHosts = App.db.getSelectedHosts();
selectedHosts = selectedHosts.filter(host => hostsToUnselect.indexOf(host) === -1);
App.db.setSelectedHosts(selectedHosts);
};
App.db.setMasterComponentHosts = function (masterComponentHosts) {
App.db.set('Installer', 'masterComponentHosts', masterComponentHosts);
};
App.db.setMasterToReassign = function (masterComponent) {
App.db.set('ReassignMaster', 'masterComponent', masterComponent);
};
App.db.setReassignTasksStatuses = function (tasksStatuses) {
App.db.set('ReassignMaster', 'tasksStatuses', tasksStatuses);
};
App.db.setReassignTasksRequestIds = function (requestIds) {
App.db.set('ReassignMaster', 'tasksRequestIds', requestIds);
};
App.db.setStacks = function (stacks) {
App.db.set('Installer', 'stacksVersions', stacks);
};
App.db.setOses = function (oses) {
App.db.set('Installer', 'operatingSystems', oses);
};
App.db.setRepos = function (repos) {
App.db.set('Installer', 'repositories', repos);
};
App.db.setLocalRepoVDFData = function (data) {
App.db.set('Installer', 'localRepoVDFData', data);
};
App.db.setConfigs = function (configs) {
App.db.set('app', 'configs', configs);
};
App.db.setTags = function (tags) {
App.db.set('app', 'tags', tags);
};
/**
* Set current step value for specified Wizard Type
* @param wizardType
* @param currentStep
*/
App.db.setWizardCurrentStep = function (wizardType, currentStep) {
App.db.set(wizardType.capitalize(), 'currentStep', currentStep);
};
/**
* Set localStorage with data from server
*/
App.db.setLocalStorage = function () {
localStorage.setObject('ambari', App.db.data);
};
App.db.setSecurityWizardStatus = function (status) {
App.db.set('AddSecurity', 'status', status);
};
App.db.setDisableSecurityStatus = function (status) {
App.db.set('AddSecurity', 'disableSecurityStatus', status);
};
App.db.setSecurityDeployCommands = function (commands) {
App.db.set('AddSecurity', 'securityDeployCommands', commands);
};
App.db.setHighAvailabilityWizardConfigTag = function (tag) {
App.db.set('HighAvailabilityWizard', tag.name, tag.value);
};
App.db.setHighAvailabilityWizardHdfsClientHosts = function (hostNames) {
App.db.set('HighAvailabilityWizard', 'hdfsClientHostNames', hostNames);
};
App.db.setHighAvailabilityWizardTasksStatuses = function (tasksStatuses) {
App.db.set('HighAvailabilityWizard', 'tasksStatuses', tasksStatuses);
};
App.db.setHighAvailabilityWizardTasksRequestIds = function (requestIds) {
App.db.set('HighAvailabilityWizard', 'tasksRequestIds', requestIds);
};
App.db.setHighAvailabilityWizardHdfsUser = function (hdfsUser) {
App.db.set('HighAvailabilityWizard', 'hdfsUser', hdfsUser);
};
App.db.setHighAvailabilityWizardRequestIds = function (requestIds) {
App.db.set('HighAvailabilityWizard', 'requestIds', requestIds);
};
App.db.setHighAvailabilityWizardNameServiceId = function (nameServiceId) {
App.db.set('HighAvailabilityWizard', 'nameServiceId', nameServiceId);
};
App.db.setRollBackHighAvailabilityWizardAddNNHost = function (host) {
App.db.set('RollbackHighAvailabilityWizard', 'addNNHost', host);
};
App.db.setRollBackHighAvailabilityWizardSNNHost = function (host) {
App.db.set('RollbackHighAvailabilityWizard', 'sNNHost', host);
};
App.db.setRollBackHighAvailabilityWizardSelectedAddNN = function (host) {
App.db.set('RollbackHighAvailabilityWizard', 'selectedAddNN', host);
};
App.db.setRollBackHighAvailabilityWizardSelectedSNN = function (host) {
App.db.set('RollbackHighAvailabilityWizard', 'selectedSNNH', host);
};
App.db.setRollbackHighAvailabilityWizardTasksStatuses = function (tasksStatuses) {
App.db.set('RollbackHighAvailabilityWizard', 'tasksStatuses', tasksStatuses);
};
App.db.setRollbackHighAvailabilityWizardRequestIds = function (requestIds) {
App.db.set('RollbackHighAvailabilityWizard', 'requestIds', requestIds);
};
App.db.setReassignMasterWizardRequestIds = function (requestIds) {
App.db.set('ReassignMaster', 'requestIds', requestIds);
};
App.db.setReassignMasterWizardComponentDir = function (componentDir) {
App.db.set('ReassignMaster', 'componentDir', componentDir);
};
App.db.setReassignMasterWizardReassignHosts = function (reassignHosts) {
App.db.set('ReassignMaster', 'reassignHosts', reassignHosts);
};
App.db.setKerberosWizardConfigTag = function (tag) {
App.db.set('KerberosWizard', tag.name, tag.value);
};
App.db.setManageJournalNodeWizardConfigTag = function (tag) {
App.db.set('ManageJournalNodeWizard', tag.name, tag.value);
};
/**
* Get user model from db
* @return {*}
*/
App.db.getUser = function () {
return App.db.get('app', 'user');
};
App.db.getAuth = function () {
return App.db.get('app', 'auth');
};
App.db.getLoginName = function () {
return App.db.get('app', 'loginName');
};
App.db.getAuthenticated = function () {
return Boolean(App.db.get('app', 'authenticated'));
};
App.db.getFilterConditions = function (name) {
return name ? App.db.get('app.tables.filterConditions', name) : null;
};
App.db.getComboSearchQuery = function (name) {
return name ? App.db.get('app.tables.comboSearchQuery', name) : null;
};
App.db.getDisplayLength = function (name) {
return name ? App.db.get('app.tables.displayLength', name) : null;
};
App.db.getStartIndex = function (name) {
return name ? App.db.get('app.tables.startIndex', name): null;
};
App.db.getSortingStatuses = function (name) {
return name ? App.db.get('app.tables.sortingConditions', name): null;
};
App.db.getSelectedHosts = function () {
return App.db.get('app.tables.selectedItems', 'mainHostController') || [];
};
/**
* Return current step for specified Wizard Type
* @param wizardType
* @return {*}
*/
App.db.getWizardCurrentStep = function (wizardType) {
return App.db.get(wizardType.capitalize(), 'currentStep') || 0;
};
App.db.getAllHostNames = function () {
return App.db.get('Installer', 'hostNames');
};
App.db.getMasterToReassign = function () {
return App.db.get('ReassignMaster', 'masterComponent');
};
App.db.getReassignTasksStatuses = function () {
return App.db.get('ReassignMaster', 'tasksStatuses');
};
App.db.getReassignTasksRequestIds = function () {
return App.db.get('ReassignMaster', 'tasksRequestIds');
};
App.db.getSecurityWizardStatus = function () {
return App.db.get('AddSecurity', 'status');
};
App.db.getDisableSecurityStatus = function () {
return App.db.get('AddSecurity', 'disableSecurityStatus');
};
App.db.getStacks = function () {
return App.db.get('Installer', 'stacksVersions');
};
App.db.getOses = function () {
return App.db.get('Installer', 'operatingSystems');
};
App.db.getRepos = function () {
return App.db.get('Installer', 'repositories');
};
App.db.getLocalRepoVDFData = function () {
return App.db.get('Installer', 'localRepoVDFData');
};
App.db.getHighAvailabilityWizardHdfsUser = function () {
return App.db.get('HighAvailabilityWizard', 'hdfsUser');
};
App.db.getHighAvailabilityWizardTasksStatuses = function () {
return App.db.get('HighAvailabilityWizard', 'tasksStatuses');
};
App.db.getHighAvailabilityWizardTasksRequestIds = function () {
return App.db.get('HighAvailabilityWizard', 'tasksRequestIds');
};
App.db.getHighAvailabilityWizardFailedTask = function () {
return App.db.get('HighAvailabilityWizard', 'failedTask');
};
App.db.getHighAvailabilityWizardHdfsClientHosts = function () {
return App.db.get('HighAvailabilityWizard', 'hdfsClientHostNames');
};
App.db.getHighAvailabilityWizardConfigTag = function (tag) {
return App.db.get('HighAvailabilityWizard', tag);
};
App.db.getHighAvailabilityWizardRequestIds = function () {
return App.db.get('HighAvailabilityWizard', 'requestIds');
};
App.db.getHighAvailabilityWizardNameServiceId = function () {
return App.db.get('HighAvailabilityWizard', 'nameServiceId');
};
App.db.getRollbackHighAvailabilityWizardTasksStatuses = function () {
return App.db.get('RollbackHighAvailabilityWizard', 'tasksStatuses');
};
App.db.getRollbackHighAvailabilityWizardRequestIds = function () {
return App.db.get('RollbackHighAvailabilityWizard', 'requestIds');
};
App.db.getRollBackHighAvailabilityWizardAddNNHost = function () {
return App.db.get('RollbackHighAvailabilityWizard', 'addNNHost');
};
App.db.getRollBackHighAvailabilityWizardSNNHost = function () {
return App.db.get('RollbackHighAvailabilityWizard', 'sNNHost');
};
App.db.getReassignMasterWizardRequestIds = function () {
return App.db.get('ReassignMaster', 'requestIds');
};
App.db.getReassignMasterWizardComponentDir = function () {
return App.db.get('ReassignMaster', 'componentDir');
};
App.db.getManageJournalNodeWizardConfigTag = function (tag) {
return App.db.get('ManageJournalNodeWizard', tag);
};
App.db.getConfigs = function () {
return App.db.get('app', 'configs');
};
App.db.getTags = function () {
return App.db.get('app', 'tags');
};
App.db.getReassignMasterWizardReassignHosts = function () {
return App.db.get('ReassignMaster', 'reassignHosts');
};
module.exports = App.db;