You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ja...@apache.org on 2014/07/01 22:28:38 UTC
git commit: AMBARI-6328. Add Service wizard: ATS should not be added
in secure cluster. (jaimin)
Repository: ambari
Updated Branches:
refs/heads/branch-1.6.1 b0adc2f6f -> d5e205377
AMBARI-6328. Add Service wizard: ATS should not be added in secure cluster. (jaimin)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d5e20537
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d5e20537
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d5e20537
Branch: refs/heads/branch-1.6.1
Commit: d5e205377015ae498975cf745e6f81852899071a
Parents: b0adc2f
Author: Jaimin Jetly <ja...@hortonworks.com>
Authored: Tue Jul 1 13:27:43 2014 -0700
Committer: Jaimin Jetly <ja...@hortonworks.com>
Committed: Tue Jul 1 13:27:57 2014 -0700
----------------------------------------------------------------------
.../app/controllers/wizard/step5_controller.js | 27 ++++++---
.../app/controllers/wizard/step8_controller.js | 63 ++++++--------------
ambari-web/app/models/service_config.js | 25 +++++---
3 files changed, 54 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/d5e20537/ambari-web/app/controllers/wizard/step5_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step5_controller.js b/ambari-web/app/controllers/wizard/step5_controller.js
index 5d1137f..6bcc467 100644
--- a/ambari-web/app/controllers/wizard/step5_controller.js
+++ b/ambari-web/app/controllers/wizard/step5_controller.js
@@ -152,7 +152,7 @@ App.WizardStep5Controller = Em.Controller.extend({
if (!hostObj) return;
var masterServices = this.get("selectedServicesMasters").filterProperty("selectedHost", item),
masterServicesToDisplay = [];
- masterServices.mapProperty('display_name').uniq().forEach(function(n) {
+ masterServices.mapProperty('display_name').uniq().forEach(function (n) {
masterServicesToDisplay.pushObject(masterServices.findProperty('display_name', n));
});
mappingObject = Em.Object.create({
@@ -167,14 +167,14 @@ App.WizardStep5Controller = Em.Controller.extend({
return mapping.sortProperty('host_name');
}.property("selectedServicesMasters.@each.selectedHost", 'selectedServicesMasters.@each.isHostNameValid'),
-
+
/**
* Count of hosts without masters
* @type {number}
*/
remainingHosts: function () {
if (this.get('content.controllerName') === 'installerController') {
- return 0;
+ return 0;
} else {
return (this.get("hosts.length") - this.get("masterHostMapping.length"));
}
@@ -256,7 +256,7 @@ App.WizardStep5Controller = Em.Controller.extend({
*/
updateComponent: function (componentName) {
var component = this.last(componentName);
- if(!component) {
+ if (!component) {
return;
}
var services = this.get('content.services').filterProperty('isInstalled', true).mapProperty('serviceName');
@@ -320,15 +320,24 @@ App.WizardStep5Controller = Em.Controller.extend({
loadComponents: function () {
var services = this.get('content.services').filterProperty('isSelected', true).mapProperty('serviceName'); //list of shown services
+ var selectedServices = this.get('content.services').filterProperty('isSelected').filterProperty('isInstalled', false).mapProperty('serviceName');
var masterComponents = App.StackServiceComponent.find().filterProperty('isShownOnInstallerAssignMasterPage', true); //get full list from mock data
var masterHosts = this.get('content.masterComponentHosts'); //saved to local storage info
var resultComponents = [];
- var servicesLength = services.length;
- for (var index = 0; index < servicesLength; index++) {
+ for (var index = 0; index < services.length; index++) {
var componentInfo = masterComponents.filterProperty('serviceName', services[index]);
+ // If service is already installed and not being added as a new service then render on UI only those master components
+ // that have already installed hostComponents.
+ // NOTE: On upgrade there might be a prior installed service with non-installed newly introduced serviceComponent
+ var isNotSelectedService = !selectedServices.contains(services[index]);
+ if (isNotSelectedService) {
+ componentInfo = componentInfo.filter(function (_component) {
+ return App.HostComponent.find().someProperty('componentName',_component.get('componentName'));
+ });
+ }
componentInfo.forEach(function (_componentInfo) {
if (_componentInfo.get('componentName') == 'ZOOKEEPER_SERVER' || _componentInfo.get('componentName') == 'HBASE_MASTER') {
@@ -381,7 +390,7 @@ App.WizardStep5Controller = Em.Controller.extend({
* @private
* @method _isHiveCoHost
*/
- _isHiveCoHost: function(componentName) {
+ _isHiveCoHost: function (componentName) {
return ['HIVE_METASTORE', 'WEBHCAT_SERVER'].contains(componentName) && !this.get('isReassignWizard');
},
@@ -582,13 +591,13 @@ App.WizardStep5Controller = Em.Controller.extend({
* @returns {boolean} true - valid, false - invalid
* @method isHostNameValid
*/
- isHostNameValid: function(componentName, selectedHost) {
+ isHostNameValid: function (componentName, selectedHost) {
return (selectedHost.trim() !== '') &&
this.get('hosts').mapProperty('host_name').contains(selectedHost) &&
(this.get('selectedServicesMasters').
filterProperty('component_name', componentName).
mapProperty('selectedHost').
- filter(function(h) {
+ filter(function (h) {
return h === selectedHost;
}).length <= 1);
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/d5e20537/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index 2beff37..4c97e41 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -569,7 +569,7 @@ App.WizardStep8Controller = Em.Controller.extend({
if (['addHostController', 'addServiceController'].contains(this.get('content.controllerName'))) {
this.loadRepoInfo();
} else {
- // from install wizard
+ // from install wizard
var selectedStack = this.get('content.stacks').findProperty('isSelected', true);
var allRepos = [];
if (selectedStack && selectedStack.operatingSystems) {
@@ -655,7 +655,7 @@ App.WizardStep8Controller = Em.Controller.extend({
if (Em.isNone(serviceObj)) return;
serviceObj.get('service_components').forEach(function (_component) {
this.assignComponentHosts(_component);
- console.log(' ---INFO: step8: service component: ' + _service.serviceName);
+ console.log(' ---INFO: step8: service component: ' + _service.serviceName);
}, this);
this.get('services').pushObject(serviceObj);
}, this);
@@ -673,7 +673,7 @@ App.WizardStep8Controller = Em.Controller.extend({
console.log(' --- ---INFO: step8: in customHandler');
}
else {
- console.log(' --- ---INFO: step8: NOT in customHandler');
+ console.log(' --- ---INFO: step8: NOT in customHandler');
if (component.get('isMaster')) {
console.log(' --- ---INFO: step8: component isMaster');
componentValue = this.get('content.masterComponentHosts')
@@ -699,22 +699,22 @@ App.WizardStep8Controller = Em.Controller.extend({
loadHiveDbValue: function (dbComponent) {
var db,
serviceConfigPreoprties = this.get('wizardController').getDBProperty('serviceConfigProperties'),
- hiveDb = serviceConfigPreoprties .findProperty('name', 'hive_database');
+ hiveDb = serviceConfigPreoprties.findProperty('name', 'hive_database');
if (hiveDb.value === 'New MySQL Database') {
dbComponent.set('component_value', 'MySQL (New Database)');
}
else {
if (hiveDb.value === 'Existing MySQL Database') {
- db = serviceConfigPreoprties .findProperty('name', 'hive_existing_mysql_database');
+ db = serviceConfigPreoprties.findProperty('name', 'hive_existing_mysql_database');
dbComponent.set('component_value', db.value + ' (' + hiveDb.value + ')');
}
else {
if (hiveDb.value === Em.I18n.t('services.service.config.hive.oozie.postgresql')) {
- db = serviceConfigPreoprties .findProperty('name', 'hive_existing_postgresql_database');
+ db = serviceConfigPreoprties.findProperty('name', 'hive_existing_postgresql_database');
dbComponent.set('component_value', db.value + ' (' + hiveDb.value + ')');
}
else { // existing oracle database
- db = serviceConfigPreoprties .findProperty('name', 'hive_existing_oracle_database');
+ db = serviceConfigPreoprties.findProperty('name', 'hive_existing_oracle_database');
dbComponent.set('component_value', db.value + ' (' + hiveDb.value + ')');
}
}
@@ -1073,34 +1073,6 @@ App.WizardStep8Controller = Em.Controller.extend({
}
});
}, this);
-
- if (this.get('content.controllerName') == 'addServiceController' && !App.get('testMode')) {
- // Add service-components which show up in newer versions but did not
- // exist in older ones.
- var self = this;
- var newServiceComponents = {};
- if (App.get('isHadoop21Stack')) {
- if (App.YARNService.find().objectAt(0)) {
- newServiceComponents['APP_TIMELINE_SERVER'] = 'YARN';
- }
- }
- for (var componentName in newServiceComponents) {
- if (newServiceComponents.hasOwnProperty(componentName)) {
- var serviceName = newServiceComponents[componentName];
- // Create only if it doesnt exist
- App.ajax.send({
- name: 'service.service_component',
- sender: self,
- data: {
- serviceName: serviceName,
- componentName: componentName,
- async: false
- },
- error: 'newServiceComponentErrorCallback'
- });
- }
- }
- }
},
/**
@@ -1164,9 +1136,12 @@ App.WizardStep8Controller = Em.Controller.extend({
* @method createMasterHostComponents
*/
createMasterHostComponents: function () {
- var masterHosts = this.get('content.masterComponentHosts');
- masterHosts.mapProperty('component').uniq().forEach(function (component) {
- var hostNames = masterHosts.filterProperty('component', component).filterProperty('isInstalled', false).mapProperty('hostName');
+ // create master components for only selected services.
+ var selectedMasterComponents = this.get('content.masterComponentHosts').filter(function (_component) {
+ return this.get('selectedServices').mapProperty('serviceName').contains(_component.serviceId)
+ }, this);
+ selectedMasterComponents.mapProperty('component').uniq().forEach(function (component) {
+ var hostNames = selectedMasterComponents.filterProperty('component', component).filterProperty('isInstalled', false).mapProperty('hostName');
this.registerHostsToComponent(hostNames, component);
}, this);
},
@@ -1230,7 +1205,7 @@ App.WizardStep8Controller = Em.Controller.extend({
var installedHosts = this.get('content.hosts');
for (var hostName in installedHosts) {
if (installedHosts[hostName].isInstalled &&
- installedHosts[hostName].hostComponents.filterProperty('HostRoles.state', 'INSTALLED').mapProperty('HostRoles.component_name').contains(_client.component_name)) {
+ installedHosts[hostName].hostComponents.filterProperty('HostRoles.state', 'INSTALLED').mapProperty('HostRoles.component_name').contains(_client.component_name)) {
clientHosts.push(hostName);
}
}
@@ -1250,10 +1225,10 @@ App.WizardStep8Controller = Em.Controller.extend({
* hostName: {String}
* }
* to content.additionalClients
- * later it will be used to install client on host before istalling new services
+ * later it will be used to install client on host before installing new services
*/
if (this.get('content.controllerName') === 'addServiceController' && hostNames.length > 0) {
- hostNames.forEach(function (hostName) {
+ hostNames.forEach(function (hostName) {
this.get('content.additionalClients').push(Em.Object.create({
componentName: _client.component_name, hostName: hostName
}))
@@ -1599,7 +1574,7 @@ App.WizardStep8Controller = Em.Controller.extend({
createCoreSiteObj: function () {
var coreSiteObj = this.get('configs').filterProperty('filename', 'core-site.xml'),
coreSiteProperties = {},
- // some configs needs to be skipped if services are not selected
+ // some configs needs to be skipped if services are not selected
isOozieSelected = this.get('selectedServices').someProperty('serviceName', 'OOZIE'),
oozieUser = this.get('globals').someProperty('name', 'oozie_user') ? this.get('globals').findProperty('name', 'oozie_user').value : null,
isHiveSelected = this.get('selectedServices').someProperty('serviceName', 'HIVE'),
@@ -1619,8 +1594,8 @@ App.WizardStep8Controller = Em.Controller.extend({
// exclude some configs if service wasn't selected
if (
(isOozieSelected || (_coreSiteObj.name != 'hadoop.proxyuser.' + oozieUser + '.hosts' && _coreSiteObj.name != 'hadoop.proxyuser.' + oozieUser + '.groups')) &&
- (isHiveSelected || (_coreSiteObj.name != 'hadoop.proxyuser.' + hiveUser + '.hosts' && _coreSiteObj.name != 'hadoop.proxyuser.' + hiveUser + '.groups')) &&
- (isHcatSelected || (_coreSiteObj.name != 'hadoop.proxyuser.' + hcatUser + '.hosts' && _coreSiteObj.name != 'hadoop.proxyuser.' + hcatUser + '.groups'))) {
+ (isHiveSelected || (_coreSiteObj.name != 'hadoop.proxyuser.' + hiveUser + '.hosts' && _coreSiteObj.name != 'hadoop.proxyuser.' + hiveUser + '.groups')) &&
+ (isHcatSelected || (_coreSiteObj.name != 'hadoop.proxyuser.' + hcatUser + '.hosts' && _coreSiteObj.name != 'hadoop.proxyuser.' + hcatUser + '.groups'))) {
coreSiteProperties[_coreSiteObj.name] = App.config.escapeXMLCharacters(_coreSiteObj.value);
}
if (isGLUSTERFSSelected && _coreSiteObj.name == "fs.default.name") {
http://git-wip-us.apache.org/repos/asf/ambari/blob/d5e20537/ambari-web/app/models/service_config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service_config.js b/ambari-web/app/models/service_config.js
index dfc480e..d405fe6 100644
--- a/ambari-web/app/models/service_config.js
+++ b/ambari-web/app/models/service_config.js
@@ -321,8 +321,11 @@ App.ServiceConfigProperty = Ember.Object.extend({
this.set('value', masterComponentHostsInDB.findProperty('component', 'RESOURCEMANAGER').hostName);
break;
case 'ats_host':
- if (!App.supports.appTimelineServer) return; // @todo remove test mode check after App Timeline service integration
- this.set('value', masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER').hostName);
+ var atsHost = masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER');
+ if (atsHost)
+ this.set('value', atsHost.hostName);
+ else
+ this.set('value', 'false');
break;
case 'yarn.resourcemanager.hostname':
var rmHost = masterComponentHostsInDB.findProperty('component', 'RESOURCEMANAGER').hostName;
@@ -350,16 +353,22 @@ App.ServiceConfigProperty = Ember.Object.extend({
this.setDefaultValue("(\\w*)(?=:)",rmHost);
break;
case 'yarn.timeline-service.webapp.address':
- var hsHost = masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER').hostName;
- this.setDefaultValue("(0.0.0.0)(?=:)", hsHost);
+ var atsHost = masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER');
+ if (atsHost) {
+ this.setDefaultValue("(0.0.0.0)(?=:)", atsHost.hostName);
+ }
break;
case 'yarn.timeline-service.webapp.https.address':
- var hsHost = masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER').hostName;
- this.setDefaultValue("(0.0.0.0)(?=:)", hsHost);
+ var atsHost = masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER');
+ if (atsHost) {
+ this.setDefaultValue("(0.0.0.0)(?=:)", atsHost.hostName);
+ }
break;
case 'yarn.timeline-service.address':
- var hsHost = masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER').hostName;
- this.setDefaultValue("(0.0.0.0)(?=:)", hsHost);
+ var atsHost = masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER');
+ if (atsHost) {
+ this.setDefaultValue("(0.0.0.0)(?=:)", atsHost.hostName);
+ }
break;
case 'nm_hosts':
this.set('value', slaveComponentHostsInDB.findProperty('componentName', 'NODEMANAGER').hosts.mapProperty('hostName'));