|
@@ -18,6 +18,7 @@
|
|
|
|
|
|
|
|
|
var App = require('app');
|
|
|
+var stringUtils = require('utils/string_utils');
|
|
|
|
|
|
App.InstallerController = App.WizardController.extend({
|
|
|
|
|
@@ -606,7 +607,15 @@ App.InstallerController = App.WizardController.extend({
|
|
|
{
|
|
|
type: 'async',
|
|
|
callback: function () {
|
|
|
- return this.loadStacks();
|
|
|
+ var dfd = $.Deferred();
|
|
|
+
|
|
|
+ this.loadStacks().always(function() {
|
|
|
+ App.router.get('clusterController').loadAmbariProperties().always(function() {
|
|
|
+ dfd.resolve();
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ return dfd.promise();
|
|
|
}
|
|
|
},
|
|
|
{
|
|
@@ -719,5 +728,47 @@ App.InstallerController = App.WizardController.extend({
|
|
|
var step = this.get('isStepDisabled').findProperty('step', i);
|
|
|
step.set('value', true);
|
|
|
}
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Compare jdk versions used for ambari and selected stack.
|
|
|
+ * Validation check will fire only for non-custom jdk configuration.
|
|
|
+ *
|
|
|
+ * @param {Function} successCallback
|
|
|
+ * @param {Function} failCallback
|
|
|
+ */
|
|
|
+ validateJDKVersion: function (successCallback, failCallback) {
|
|
|
+ var selectedStack = App.Stack.find().findProperty('isSelected', true),
|
|
|
+ currentJDKVersion = App.router.get('clusterController.ambariProperties')['java.version'],
|
|
|
+ minJDKVersion = selectedStack.get('minJdkVersion'),
|
|
|
+ maxJDKVersion = selectedStack.get('maxJdkVersion'),
|
|
|
+ t = Em.I18n.t,
|
|
|
+ fCallback = failCallback || function() {},
|
|
|
+ sCallback = successCallback || function() {};
|
|
|
+
|
|
|
+ // Skip jdk check if min and max required version not set in stack definition.
|
|
|
+ if (!minJDKVersion && !maxJDKVersion) {
|
|
|
+ sCallback();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (currentJDKVersion) {
|
|
|
+ if (stringUtils.compareVersions(currentJDKVersion, selectedStack.get('minJdkVersion')) < 0 ||
|
|
|
+ stringUtils.compareVersions(selectedStack.get('maxJdkVersion'), currentJDKVersion) < 0) {
|
|
|
+ // checks and process only major part for now
|
|
|
+ var versionDistance = parseInt(maxJDKVersion.split('.')[1]) - parseInt(minJDKVersion.split('.')[1]);
|
|
|
+ var versionsList = [minJDKVersion];
|
|
|
+ for (var i = 1; i < (versionDistance + 1); i++) {
|
|
|
+ versionsList.push("" + minJDKVersion.split('.')[0] + '.' + (+minJDKVersion.split('.')[1] + i));
|
|
|
+ }
|
|
|
+ var versionsString = stringUtils.getFormattedStringFromArray(versionsList, t('or'));
|
|
|
+ var popupBody = t('popup.jdkValidation.body').format(selectedStack.get('stackName') + ' ' + selectedStack.get('stackVersion'), versionsString, currentJDKVersion);
|
|
|
+ App.showConfirmationPopup(sCallback, popupBody, fCallback, t('popup.jdkValidation.header'), t('common.proceedAnyway'), true);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sCallback();
|
|
|
}
|
|
|
+
|
|
|
});
|