You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by on...@apache.org on 2014/01/30 16:15:30 UTC

git commit: AMBARI-4471. Refactor of component lists. (Denys Buzhor via onechiporenko)

Updated Branches:
  refs/heads/trunk ab014b384 -> 16773c272


AMBARI-4471. Refactor of component lists. (Denys Buzhor via onechiporenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/16773c27
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/16773c27
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/16773c27

Branch: refs/heads/trunk
Commit: 16773c272afa83df396a387fd4ef0c08af0be04d
Parents: ab014b3
Author: Oleg Nechiporenko <on...@apache.org>
Authored: Thu Jan 30 17:14:35 2014 +0200
Committer: Oleg Nechiporenko <on...@apache.org>
Committed: Thu Jan 30 17:14:35 2014 +0200

----------------------------------------------------------------------
 ambari-web/app/app.js                           | 16 ++++++++++-
 ambari-web/app/assets/test/tests.js             |  3 ++-
 ambari-web/app/config.js                        |  3 ---
 .../app/controllers/wizard/step9_controller.js  |  8 +++---
 ambari-web/app/data/service_components.js       |  2 +-
 ambari-web/app/views/main/host/summary.js       |  6 ++---
 ambari-web/app/views/main/service/item.js       |  2 +-
 ambari-web/test/app_test.js                     | 28 ++++++++++++++++++++
 ambari-web/test/installer/step9_test.js         | 11 +++++---
 9 files changed, 61 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/app/app.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/app.js b/ambari-web/app/app.js
index 8078961..a8eb611 100644
--- a/ambari-web/app/app.js
+++ b/ambari-web/app/app.js
@@ -71,8 +71,22 @@ module.exports = Em.Application.create({
   isHaEnabled: function() {
     if (!this.get('isHadoop2Stack')) return false;
     return !this.HostComponent.find().someProperty('componentName', 'SECONDARY_NAMENODE');
-  }.property('router.clusterController.isLoaded')
+  }.property('router.clusterController.isLoaded'),
 
+  components: Ember.Object.create({
+    reassignable: ['NAMENODE', 'SECONDARY_NAMENODE', 'JOBTRACKER', 'RESOURCEMANAGER'],
+    restartable: ['APP_TIMELINE_SERVER'],
+    deletable: ['SUPERVISOR', 'HBASE_MASTER'],
+    slaves: function() {
+      return require('data/service_components').filter(function(component){
+        return !component.isClient && !component.isMaster
+      }).mapProperty('component_name').uniq().without("DASHBOARD");
+    }.property().cacheable(),
+
+    masters: function() {
+      return require('data/service_components').filterProperty('isMaster', true).mapProperty('component_name').uniq();
+    }.property().cacheable()
+  })
 });
 
 /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index 20ff4b3..85181fc 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+require('test/app_test');
 require('test/controllers/global/background_operations_test');
 require('test/controllers/global/cluster_controller_test');
 require('test/controllers/main/app_contoller_test');
@@ -99,4 +100,4 @@ require('test/views/main/dashboard/widgets/namenode_cpu_test');
 require('test/views/common/configs/services_config_test');
 require('test/views/wizard/step9_view_test');
 require('test/models/host_test');
-require('test/models/rack_test');
\ No newline at end of file
+require('test/models/rack_test');

http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/app/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/config.js b/ambari-web/app/config.js
index 2b11095..711be61 100644
--- a/ambari-web/app/config.js
+++ b/ambari-web/app/config.js
@@ -38,9 +38,6 @@ App.maxRunsForAppBrowser = 500;
 App.pageReloadTime=3600000;
 App.singleNodeInstall = false;
 App.singleNodeAlias = document.location.hostname;
-App.reassignableComponents = ['NAMENODE', 'SECONDARY_NAMENODE', 'JOBTRACKER', 'RESOURCEMANAGER'];
-App.restartableComponents = ['APP_TIMELINE_SERVER'];
-App.deletableComponents = ['SUPERVISOR', 'HBASE_MASTER'];
 
 // experimental features are automatically enabled if running on brunch server
 App.enableExperimental = false;

http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/app/controllers/wizard/step9_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step9_controller.js b/ambari-web/app/controllers/wizard/step9_controller.js
index 6c3fe08..47509a5 100644
--- a/ambari-web/app/controllers/wizard/step9_controller.js
+++ b/ambari-web/app/controllers/wizard/step9_controller.js
@@ -352,7 +352,7 @@ App.WizardStep9Controller = Em.Controller.extend({
       data = {
         "RequestInfo": {
           "context": Em.I18n.t("requestInfo.startHostComponents"),
-          "query": "HostRoles/component_name.in(GANGLIA_MONITOR,HBASE_REGIONSERVER,DATANODE,TASKTRACKER,NODEMANAGER)&HostRoles/state=INSTALLED&HostRoles/host_name.in(" + hostnames.join(',') + ")"
+          "query": "HostRoles/component_name.in(" + App.get('components.slaves').join(',') + ")&HostRoles/state=INSTALLED&HostRoles/host_name.in(" + hostnames.join(',') + ")"
         },
         "Body": {
           "HostRoles": { "state": "STARTED" }
@@ -467,8 +467,8 @@ App.WizardStep9Controller = Em.Controller.extend({
   isMasterFailed: function(polledData) {
     var result = false;
     polledData.filterProperty('Tasks.command', 'INSTALL').filterProperty('Tasks.status', 'FAILED').mapProperty('Tasks.role').forEach (
-      function (task) {
-        if (!['DATANODE', 'TASKTRACKER', 'HBASE_REGIONSERVER', 'GANGLIA_MONITOR'].contains(task)) {
+      function (role) {
+        if (!App.get('components.slaves').contains(role)) {
           result = true;
         }
       }
@@ -546,7 +546,7 @@ App.WizardStep9Controller = Em.Controller.extend({
         return;
       }
       var actionsPerRole = polledData.filterProperty('Tasks.role', role);
-      if (['DATANODE', 'TASKTRACKER', 'HBASE_REGIONSERVER', 'GANGLIA_MONITOR'].contains(role)) {
+      if (App.get('components.slaves').contains(role)) {
         // check slave components for success factor.
         // partial failure for slave components are allowed.
         var actionsFailed = actionsPerRole.filterProperty('Tasks.status', 'FAILED');

http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/app/data/service_components.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/service_components.js b/ambari-web/app/data/service_components.js
index 1efe894..5fc4580 100644
--- a/ambari-web/app/data/service_components.js
+++ b/ambari-web/app/data/service_components.js
@@ -241,7 +241,7 @@ module.exports = new Ember.Set([
     service_name: 'HIVE',
     component_name: 'MYSQL_SERVER',
     display_name: 'MySQL Server for Hive',
-    isMaster: false,
+    isMaster: true,
     isClient: false,
     description: ''
   },

http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/app/views/main/host/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/summary.js b/ambari-web/app/views/main/host/summary.js
index 5d64894..6703800 100644
--- a/ambari-web/app/views/main/host/summary.js
+++ b/ambari-web/app/views/main/host/summary.js
@@ -773,7 +773,7 @@ App.MainHostSummaryView = Em.View.extend({
      * Shows whether we need to show Delete button
      */
     isDeletableComponent: function () {
-      return App.deletableComponents.contains(this.get('content.componentName'));
+      return App.get('components.deletable').contains(this.get('content.componentName'));
     }.property('content'),
 
     isDeleteComponentDisabled: function () {
@@ -782,11 +782,11 @@ App.MainHostSummaryView = Em.View.extend({
     }.property('workStatus'),
 
     isReassignable: function () {
-      return App.supports.reassignMaster && App.reassignableComponents.contains(this.get('content.componentName')) && App.Host.find().content.length > 1;
+      return App.supports.reassignMaster && App.get('components.reassignable').contains(this.get('content.componentName')) && App.Host.find().content.length > 1;
     }.property('content.componentName'),
 
     isRestartableComponent: function() {
-      return App.restartableComponents.contains(this.get('content.componentName'));
+      return App.get('components.restartable').contains(this.get('content.componentName'));
     }.property('content'),
 
     isRestartComponentDisabled: function() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/app/views/main/service/item.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/item.js b/ambari-web/app/views/main/service/item.js
index 1f1c3ab..683b5c1 100644
--- a/ambari-web/app/views/main/service/item.js
+++ b/ambari-web/app/views/main/service/item.js
@@ -46,7 +46,7 @@ App.MainServiceItemView = Em.View.extend({
       case 'MAPREDUCE':
         if (App.supports.reassignMaster && hosts > 1) {
           allMasters.forEach(function (hostComponent) {
-            if (App.reassignableComponents.contains(hostComponent)) {
+            if (App.get('components.reassignable').contains(hostComponent)) {
               options.push({action: 'reassignMaster', context: hostComponent, cssClass: 'icon-share-alt', 
                 'label': Em.I18n.t('services.service.actions.reassign.master').format(App.format.role(hostComponent)), disabled: false});
             }

http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/test/app_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/app_test.js b/ambari-web/test/app_test.js
new file mode 100644
index 0000000..59ec825
--- /dev/null
+++ b/ambari-web/test/app_test.js
@@ -0,0 +1,28 @@
+/**
+ * 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');
+
+describe('#App.components', function() {
+  it('slaves and masters should not intersect', function() {
+    var intersected = App.get('components.slaves').filter(function(item){
+      return App.get('components.masters').contains(item);
+    });
+    expect(intersected).to.eql([]);
+  });
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/16773c27/ambari-web/test/installer/step9_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/installer/step9_test.js b/ambari-web/test/installer/step9_test.js
index a3b4370..eb0de3f 100644
--- a/ambari-web/test/installer/step9_test.js
+++ b/ambari-web/test/installer/step9_test.js
@@ -379,7 +379,8 @@ describe('App.InstallerStep9Controller', function () {
           {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'DATANODE'}},
           {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'TASKTRACKER'}},
           {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'HBASE_REGIONSERVER'}},
-          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'GANGLIA_MONITOR'}}
+          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'GANGLIA_MONITOR'}},
+          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'SUPERVISOR'}}
         ],
         e: false,
         m: 'No one Master is failed'
@@ -389,7 +390,8 @@ describe('App.InstallerStep9Controller', function () {
           {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'NAMENODE'}},
           {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'TASKTRACKER'}},
           {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'HBASE_REGIONSERVER'}},
-          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'GANGLIA_MONITOR'}}
+          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'GANGLIA_MONITOR'}},
+          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'SUPERVISOR'}}
         ],
         e: true,
         m: 'One Master is failed'
@@ -399,7 +401,8 @@ describe('App.InstallerStep9Controller', function () {
           {Tasks: {command: 'PENDING',status: 'FAILED',role: 'NAMENODE'}},
           {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'TASKTRACKER'}},
           {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'HBASE_REGIONSERVER'}},
-          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'GANGLIA_MONITOR'}}
+          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'GANGLIA_MONITOR'}},
+          {Tasks: {command: 'INSTALL',status: 'FAILED',role: 'SUPERVISOR'}}
         ],
         e: false,
         m: 'one Master is failed but command is not install'
@@ -967,4 +970,4 @@ describe('App.InstallerStep9Controller', function () {
     });
   });
 
-});
\ No newline at end of file
+});