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 2016/02/29 23:46:31 UTC

ambari git commit: AMBARI-15235. Display tag for StandBy name node should not be changed to NameNode if there is an active namenode. (jaimin)

Repository: ambari
Updated Branches:
  refs/heads/trunk 7a36ae748 -> a5ed43fca


AMBARI-15235. Display tag for StandBy name node should not be changed to NameNode if there is an active namenode. (jaimin)


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

Branch: refs/heads/trunk
Commit: a5ed43fcab5de7fcb94fa56e7279f32e158760e3
Parents: 7a36ae7
Author: Jaimin Jetly <ja...@hortonworks.com>
Authored: Mon Feb 29 14:42:58 2016 -0800
Committer: Jaimin Jetly <ja...@hortonworks.com>
Committed: Mon Feb 29 14:46:19 2016 -0800

----------------------------------------------------------------------
 .../app/mappers/service_metrics_mapper.js       |  17 +++-
 .../test/mappers/service_metrics_mapper_test.js | 101 +++++++++++++++++++
 2 files changed, 114 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/a5ed43fc/ambari-web/app/mappers/service_metrics_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/service_metrics_mapper.js b/ambari-web/app/mappers/service_metrics_mapper.js
index a88c3e6..9d5c155 100644
--- a/ambari-web/app/mappers/service_metrics_mapper.js
+++ b/ambari-web/app/mappers/service_metrics_mapper.js
@@ -408,20 +408,23 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({
           var haState2 = Em.get(component.host_components[1], 'metrics.dfs.FSNamesystem.HAState');
           var active_name_node = [];
           var standby_name_nodes = [];
+          var namenodeName1 = component.host_components[0].HostRoles.host_name;
+          var namenodeName2 = component.host_components[1].HostRoles.host_name;
+
           switch (haState1) {
             case "active":
-              active_name_node.push(component.host_components[0].HostRoles.host_name);
+              active_name_node.push(namenodeName1);
               break;
             case "standby":
-              standby_name_nodes.push(component.host_components[0].HostRoles.host_name);
+              standby_name_nodes.push(namenodeName1);
               break;
           }
           switch (haState2) {
             case "active":
-              active_name_node.push(component.host_components[1].HostRoles.host_name);
+              active_name_node.push(namenodeName2);
               break;
             case "standby":
-              standby_name_nodes.push(component.host_components[1].HostRoles.host_name);
+              standby_name_nodes.push(namenodeName2);
               break;
           }
           item.active_name_node_id = null;
@@ -433,6 +436,12 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({
               break;
           }
           switch (standby_name_nodes.length) {
+            case 0:
+              if (active_name_node.length === 1) {
+                var standbyNameNode =  (active_name_node[0] === namenodeName1) ? namenodeName2 : namenodeName1;
+                item.standby_name_node_id = 'NAMENODE' + '_' + standbyNameNode;
+              }
+              break;
             case 1:
               item.standby_name_node_id = 'NAMENODE' + '_' + standby_name_nodes[0];
               break;

http://git-wip-us.apache.org/repos/asf/ambari/blob/a5ed43fc/ambari-web/test/mappers/service_metrics_mapper_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mappers/service_metrics_mapper_test.js b/ambari-web/test/mappers/service_metrics_mapper_test.js
index d2c9cc0..4e0f216 100644
--- a/ambari-web/test/mappers/service_metrics_mapper_test.js
+++ b/ambari-web/test/mappers/service_metrics_mapper_test.js
@@ -20,6 +20,107 @@ var App = require('app');
 
 describe('App.serviceMetricsMapper', function () {
 
+  describe('#computeAdditionalRelations', function () {
+
+    var tests = [
+      {
+        message: 'if both namenodes are standby then `display_name_advanced` for both should be `Standby NameNode`',
+        haStateForNn1: 'standby',
+        haStateForNn2: 'standby',
+        expectedNameForNn1: 'Standby NameNode',
+        expectedNameForNn2: 'Standby NameNode'
+      },
+      {
+        message: 'if one namenode is active and another is standby then they should be shown as  `Active NameNode` and `Standby NameNode` respectively',
+        haStateForNn1: 'active',
+        haStateForNn2: 'standby',
+        expectedNameForNn1: 'Active NameNode',
+        expectedNameForNn2: 'Standby NameNode'
+      },
+      {
+        message: 'if one namenode is active and another is unknown then they should be shown as  `Active NameNode` and `Standby NameNode` respectively',
+        haStateForNn1: 'active',
+        haStateForNn2: undefined,
+        expectedNameForNn1: 'Active NameNode',
+        expectedNameForNn2: 'Standby NameNode'
+      },
+      {
+        message: 'if both namenodes state are unknown then `display_name_advanced` for both should be null (NN will be shown with display name as `NameNode`)',
+        haStateForNn1: undefined,
+        haStateForNn2: undefined,
+        expectedNameForNn1: null,
+        expectedNameForNn2: null
+      }
+    ];
+
+    var services = [
+      {
+        ServiceInfo: {
+          service_name: "HDFS"
+        },
+        components: [
+          {
+            ServiceComponentInfo: {
+              component_name: "NAMENODE",
+              service_name: "HDFS"
+            },
+            host_components: [
+              {
+                HostRoles: {
+                  component_name: "NAMENODE",
+                  host_name: "h1"
+                },
+                metrics: {
+                  dfs: {
+                    FSNamesystem: {
+                      HAState: ""
+                    }
+                  }
+                }
+              },
+              {
+                HostRoles: {
+                  component_name: "NAMENODE",
+                  host_name: "h2"
+                },
+                metrics: {
+                  dfs: {
+                    FSNamesystem: {
+                      HAState: ""
+                    }
+                  }
+                }
+              }
+            ]
+          }
+        ]
+      }
+    ];
+
+    var hostComponents = [
+      {
+        component_name: "NAMENODE",
+        host_id: "h1",
+        service_id: "HDFS"
+      },
+      {
+        component_name: "NAMENODE",
+        host_id: "h2",
+        service_id: "HDFS"
+      }
+    ];
+
+    tests.forEach(function (test) {
+      it(test.message, function () {
+        services[0].components[0].host_components[0].metrics.dfs.FSNamesystem['HAState'] = test.haStateForNn1;
+        services[0].components[0].host_components[1].metrics.dfs.FSNamesystem['HAState'] = test.haStateForNn2;
+        App.serviceMetricsMapper.computeAdditionalRelations(hostComponents, services);
+        expect(hostComponents[0].display_name_advanced).to.equal(test.expectedNameForNn1);
+        expect(hostComponents[1].display_name_advanced).to.equal(test.expectedNameForNn2);
+      });
+    });
+  });
+
   describe('#yarnMapper', function () {
 
     it('should set ACTIVE RM first in any cases (if RM HA enabled)', function() {