diff options
author | Yusaku Sako <yusaku@apache.org> | 2012-12-09 13:37:36 +0000 |
---|---|---|
committer | Yusaku Sako <yusaku@apache.org> | 2012-12-09 13:37:36 +0000 |
commit | 8bf497655267cf5120e7a5989aae7be2111c4d4a (patch) | |
tree | 2fdc6890a3b786c681271532b7ac16f67808c1bc /ambari-web | |
parent | 6b5925ee37bf169ca98590a4aa628c4ea6c510ea (diff) |
AMBARI-1059. Refactor cluster management. (yusaku)
git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1418947 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'ambari-web')
-rw-r--r-- | ambari-web/app/controllers/installer.js | 4 | ||||
-rw-r--r-- | ambari-web/app/controllers/main/service/add_controller.js | 113 | ||||
-rw-r--r-- | ambari-web/app/controllers/wizard/step5_controller.js | 53 | ||||
-rw-r--r-- | ambari-web/app/controllers/wizard/step8_controller.js | 4 | ||||
-rw-r--r-- | ambari-web/app/models/component.js | 2 | ||||
-rw-r--r-- | ambari-web/app/routes/add_service_routes.js | 10 | ||||
-rw-r--r-- | ambari-web/app/templates/wizard/step6.hbs | 2 | ||||
-rw-r--r-- | ambari-web/app/views/wizard/step6_view.js | 2 |
8 files changed, 66 insertions, 124 deletions
diff --git a/ambari-web/app/controllers/installer.js b/ambari-web/app/controllers/installer.js index 6f314e8489..669565b52b 100644 --- a/ambari-web/app/controllers/installer.js +++ b/ambari-web/app/controllers/installer.js @@ -440,7 +440,6 @@ App.InstallerController = Em.Controller.extend({ var servicesInfo = App.db.getService(); servicesInfo.forEach(function (item, index) { servicesInfo[index] = Em.Object.create(item); - servicesInfo[index].isInstalled = false; }); this.set('content.services', servicesInfo); console.log('installerController.loadServices: loaded data ', servicesInfo); @@ -488,7 +487,7 @@ App.InstallerController = Em.Controller.extend({ * Load master component hosts data for using in required step controllers */ loadMasterComponentHosts: function () { - var masterComponentHosts = App.db.getMasterComponentHosts() || []; + var masterComponentHosts = App.db.getMasterComponentHosts(); this.set("content.masterComponentHosts", masterComponentHosts); console.log("InstallerController.loadMasterComponentHosts: loaded hosts ", masterComponentHosts); }, @@ -837,7 +836,6 @@ App.InstallerController = Em.Controller.extend({ finish: function(){ this.setCurrentStep('1', false); App.db.setService(undefined); //not to use this data at AddService page - App.db.setHosts(undefined); } }); diff --git a/ambari-web/app/controllers/main/service/add_controller.js b/ambari-web/app/controllers/main/service/add_controller.js index 7eebb248de..a74c0945fa 100644 --- a/ambari-web/app/controllers/main/service/add_controller.js +++ b/ambari-web/app/controllers/main/service/add_controller.js @@ -43,7 +43,6 @@ App.AddServiceController = Em.Controller.extend({ hostSlaveComponents: null, masterComponentHosts: null, serviceConfigProperties: null, - advancedServiceConfig: null, controllerName: 'addServiceController' }), @@ -204,23 +203,19 @@ App.AddServiceController = Em.Controller.extend({ * Will be used at <code>Assign Masters(step5)</code> step */ loadConfirmedHosts: function(){ - var hosts = App.db.getHosts(); - if(!hosts){ - var hosts = {}; - - App.Host.find().forEach(function(item){ - hosts[item.get('id')] = { - name: item.get('id'), - cpu: item.get('cpu'), - memory: item.get('memory'), - bootStatus: "success", - isInstalled: true - }; - }); - } + var hosts = {}; + + App.Host.find().forEach(function(item){ + hosts[item.get('id')] = { + name: item.get('id'), + cpu: item.get('cpu'), + memory: item.get('memory'), + bootStatus: "success", + isInstalled: true + }; + }); this.set('content.hostsInfo', hosts); - console.log('AddServiceController.loadConfirmedHosts: loaded hosts', hosts); }, /** @@ -273,7 +268,6 @@ App.AddServiceController = Em.Controller.extend({ servicesInfo.forEach(function(item, index){ servicesInfo[index].isSelected = App.Service.find().someProperty('id', item.serviceName); servicesInfo[index].isDisabled = servicesInfo[index].isSelected; - servicesInfo[index].isInstalled = servicesInfo[index].isSelected; }); } @@ -282,7 +276,7 @@ App.AddServiceController = Em.Controller.extend({ }); this.set('content.services', servicesInfo); console.log('AddServiceController.loadServices: loaded data ', servicesInfo); - console.log('selected services ', servicesInfo.filterProperty('isSelected', true).filterProperty('isDisabled', false).mapProperty('serviceName')); + console.log('selected services ', servicesInfo.filterProperty('isSelected', true).mapProperty('serviceName')); }, /** @@ -291,14 +285,15 @@ App.AddServiceController = Em.Controller.extend({ */ saveServices: function (stepController) { var serviceNames = []; + // we can also do it without stepController since all data, + // changed at page, automatically changes in model(this.content.services) App.db.setService(stepController.get('content')); - console.log('AddServiceController.saveServices: saved data', stepController.get('content')); - stepController.filterProperty('isSelected', true).filterProperty('isInstalled', false).forEach(function (item) { + stepController.filterProperty('isSelected', true).filterProperty('isDisabled', false).forEach(function (item) { serviceNames.push(item.serviceName); }); this.set('content.selectedServiceNames', serviceNames); App.db.setSelectedServiceNames(serviceNames); - console.log('AddServiceController.selectedServiceNames:', serviceNames); + console.log('AddServiceController.saveServices: saved data ', serviceNames); }, /** @@ -311,12 +306,14 @@ App.AddServiceController = Em.Controller.extend({ var installedComponents = App.Component.find(); obj.forEach(function (_component) { + if(!installedComponents.someProperty('componentName', _component.component_name)){ masterComponentHosts.push({ display_name: _component.display_name, component: _component.component_name, hostName: _component.selectedHost, - isInstalled: installedComponents.someProperty('componentName', _component.component_name) + isInstalled: false }); + } }); console.log("AddServiceController.saveMasterComponentHosts: saved hosts ", masterComponentHosts); @@ -328,18 +325,15 @@ App.AddServiceController = Em.Controller.extend({ * Load master component hosts data for using in required step controllers */ loadMasterComponentHosts: function () { - var masterComponentHosts = App.db.getMasterComponentHosts(); - if(!masterComponentHosts){ - masterComponentHosts = []; - App.Component.find().filterProperty('isMaster', true).forEach(function(item){ - masterComponentHosts.push({ - component: item.get('componentName'), - hostName: item.get('host.hostName'), - isInstalled: true - }) - }); - - } + var masterComponentHosts = App.db.getMasterComponentHosts() || []; + App.Component.find().filterProperty('isMaster', true).forEach(function(item){ + masterComponentHosts.push({ + component: item.get('componentName'), + display_name: item.get('displayName'), + hostName: item.get('host.hostName'), + isInstalled: true + }) + }); this.set("content.masterComponentHosts", masterComponentHosts); console.log("AddServiceController.loadMasterComponentHosts: loaded hosts ", masterComponentHosts); }, @@ -355,7 +349,6 @@ App.AddServiceController = Em.Controller.extend({ var isHbSelected = stepController.get('isHbSelected'); App.db.setHostSlaveComponents(hosts); - console.log('addServiceController.hostSlaveComponents: saved hosts', hosts); this.set('content.hostSlaveComponents', hosts); var dataNodeHosts = []; @@ -424,7 +417,6 @@ App.AddServiceController = Em.Controller.extend({ }); App.db.setSlaveComponentHosts(slaveComponentHosts); - console.log('addServiceController.slaveComponentHosts: saved hosts', slaveComponentHosts); this.set('content.slaveComponentHosts', slaveComponentHosts); }, @@ -526,55 +518,6 @@ App.AddServiceController = Em.Controller.extend({ } }, - loadAdvancedConfigs: function () { - App.db.getSelectedServiceNames().forEach(function (_serviceName) { - this.loadAdvancedConfig(_serviceName); - }, this); - }, - /** - * Generate serviceProperties save it to localdata - * called form stepController step6WizardController - */ - - loadAdvancedConfig: function (serviceName) { - var self = this; - var url = (App.testMode) ? '/data/wizard/stack/hdp/version01/' + serviceName + '.json' : '/api/stacks/HDP/version/1.2.0/services/' + serviceName; // TODO: get this url from the stack selected by the user in Install Options page - var method = 'GET'; - $.ajax({ - type: method, - url: url, - async: false, - dataType: 'text', - timeout: 5000, - success: function (data) { - var jsonData = jQuery.parseJSON(data); - console.log("TRACE: Step6 submit -> In success function for the loadAdvancedConfig call"); - console.log("TRACE: Step6 submit -> value of the url is: " + url); - var serviceComponents = jsonData.properties; - serviceComponents.setEach('serviceName', serviceName); - var configs; - if (App.db.getAdvancedServiceConfig()) { - configs = App.db.getAdvancedServiceConfig(); - } else { - configs = []; - } - configs = configs.concat(serviceComponents); - self.set('content.advancedServiceConfig', configs); - App.db.setAdvancedServiceConfig(configs); - console.log('TRACE: servicename: ' + serviceName); - }, - - error: function (request, ajaxOptions, error) { - console.log("TRACE: STep6 submit -> In error function for the loadAdvancedConfig call"); - console.log("TRACE: STep6 submit-> value of the url is: " + url); - console.log("TRACE: STep6 submit-> error code status is: " + request.status); - console.log('Step6 submit: Error message is: ' + request.responseText); - }, - - statusCode: require('data/statusCodes') - }); - }, - /** * Generate clients list for selected services and save it to model * @param stepController step8WizardController or step9WizardController diff --git a/ambari-web/app/controllers/wizard/step5_controller.js b/ambari-web/app/controllers/wizard/step5_controller.js index 9f7cf054ad..bddfdad340 100644 --- a/ambari-web/app/controllers/wizard/step5_controller.js +++ b/ambari-web/app/controllers/wizard/step5_controller.js @@ -74,35 +74,46 @@ App.WizardStep5Controller = Em.Controller.extend({ loadComponents: function () { var services = this.get('content.services') - .filterProperty('isSelected', true).mapProperty('serviceName'); //list of shown services + .filterProperty('isSelected', true).mapProperty('serviceName'); services.forEach(function (item) { this.get("selectedServices").pushObject(Ember.Object.create({service_name: item})); }, this); - var masterHosts = this.get('content.masterComponentHosts'); //saved to local storadge info - - var resultComponents = new Ember.Set(); - - var masterComponents = this.get('components').filterProperty('isMaster', true); //get full list from mock data - - for (var index in services) { - var componentInfo = masterComponents.filterProperty('service_name', services[index]); + var masterHosts = this.get('content.masterComponentHosts'); + + var components = new Ember.Set(); + if (!masterHosts) { + + var masterComponents = this.get('components').filterProperty('isMaster', true); + for (var index in services) { + var componentInfo = masterComponents.filterProperty('service_name', services[index]); + componentInfo.forEach(function (_componentInfo) { + console.log("TRACE: master component name is: " + _componentInfo.display_name); + var componentObj = {}; + componentObj.component_name = _componentInfo.component_name; + componentObj.display_name = _componentInfo.display_name; + componentObj.selectedHost = this.selectHost(_componentInfo.component_name); // call the method that plays selectNode algorithm or fetches from server + componentObj.isInstalled = App.Component.find().someProperty('componentName', _componentInfo.component_name); + componentObj.availableHosts = []; + components.add(componentObj); + }, this); + } - componentInfo.forEach(function (_componentInfo) { + } else { - var savedComponent = masterHosts.findProperty('component', _componentInfo.component_name); + masterHosts.forEach(function (_masterComponentHost) { var componentObj = {}; - componentObj.component_name = _componentInfo.component_name; - componentObj.display_name = _componentInfo.display_name; - componentObj.selectedHost = savedComponent ? savedComponent.hostName : this.selectHost(_componentInfo.component_name); // call the method that plays selectNode algorithm or fetches from server - componentObj.isInstalled = savedComponent ? savedComponent.isInstalled : App.Component.find().someProperty('componentName', _componentInfo.component_name); + componentObj.component_name = _masterComponentHost.component; + componentObj.display_name = _masterComponentHost.display_name; + componentObj.selectedHost = _masterComponentHost.hostName; + componentObj.isInstalled = _masterComponentHost.isInstalled; componentObj.availableHosts = []; - resultComponents.add(componentObj); + components.add(componentObj); }, this); - } - return resultComponents; + } + return components; }, /** @@ -139,12 +150,6 @@ App.WizardStep5Controller = Em.Controller.extend({ this.get("selectedServicesMasters").pushObject(componentObj); } }, this); - - // if no new master nodes - if(!masterComponents.filterProperty('isInstalled', false).length){ - console.log('no master components to add') - App.router.send('next'); - } }, getKerberosServer: function (noOfHosts) { diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js index 098a7d6890..a27d7f92b9 100644 --- a/ambari-web/app/controllers/wizard/step8_controller.js +++ b/ambari-web/app/controllers/wizard/step8_controller.js @@ -29,6 +29,10 @@ App.WizardStep8Controller = Em.Controller.extend({ configMapping: require('data/config_mapping'), selectedServices: function () { + var services = App.Service.find(); + this.get('content.services').forEach(function (item) { + item.set('isInstalled', services.someProperty('serviceName', item.get('serviceName'))); + }); return this.get('content.services').filterProperty('isSelected', true).filterProperty('isInstalled', false); }.property('content.services').cacheable(), diff --git a/ambari-web/app/models/component.js b/ambari-web/app/models/component.js index 21d6213da6..318f9af03c 100644 --- a/ambari-web/app/models/component.js +++ b/ambari-web/app/models/component.js @@ -37,7 +37,7 @@ App.Component = DS.Model.extend({ isMaster: function () { switch (this.get('componentName')) { case 'NAMENODE': - case 'SECONDARY_NAMENODE': + case 'SNAMENODE': case 'JOBTRACKER': case 'ZOOKEEPER_SERVER': case 'HIVE_SERVER': diff --git a/ambari-web/app/routes/add_service_routes.js b/ambari-web/app/routes/add_service_routes.js index 3458478fb3..1fe9a231b8 100644 --- a/ambari-web/app/routes/add_service_routes.js +++ b/ambari-web/app/routes/add_service_routes.js @@ -85,14 +85,7 @@ module.exports = Em.Route.extend({ controller.loadAllPriorSteps(); controller.connectOutlet('wizardStep6', controller.get('content')); }, - back: function(router){ - var controller = router.get('addServiceController'); - if(controller.get('content.masterComponentHosts').someProperty('isInstalled', false)){ - router.transitionTo('step2'); - } else { - router.transitionTo('step1'); - } - }, + back: Em.Router.transitionTo('step2'), next: function (router) { var addServiceController = router.get('addServiceController'); var wizardStep6Controller = router.get('wizardStep6Controller'); @@ -101,7 +94,6 @@ module.exports = Em.Route.extend({ addServiceController.saveSlaveComponentHosts(wizardStep6Controller); addServiceController.get('content').set('serviceConfigProperties', null); App.db.setServiceConfigProperties(null); - addServiceController.loadAdvancedConfigs(); router.transitionTo('step4'); } } diff --git a/ambari-web/app/templates/wizard/step6.hbs b/ambari-web/app/templates/wizard/step6.hbs index a42f1ea616..002a475c20 100644 --- a/ambari-web/app/templates/wizard/step6.hbs +++ b/ambari-web/app/templates/wizard/step6.hbs @@ -85,7 +85,7 @@ </table> </div> <div class="btn-area"> - <a class="btn" {{action back}}>← Back</a> + <a class="btn" {{action back href="true"}}>← Back</a> <a class="btn btn-success pull-right" {{action next}}>Next →</a> </div> </div> diff --git a/ambari-web/app/views/wizard/step6_view.js b/ambari-web/app/views/wizard/step6_view.js index 5fc1c8b19e..6dd82dd0d3 100644 --- a/ambari-web/app/views/wizard/step6_view.js +++ b/ambari-web/app/views/wizard/step6_view.js @@ -61,7 +61,7 @@ App.WizardStep6HostView = Em.View.extend({ if(components){ components = components.join(" /\n"); this.$().popover({ - title: 'master components hosted on ' + this.get('host.hostName'), + title: 'master components hosted on ' + this.get('host.hostname'), content: components, placement: 'right', trigger: 'hover' |