You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mi...@apache.org on 2016/04/26 06:15:03 UTC

ambari git commit: AMBARI-16074: Show number of PXFs Live widget on main dashboard (mithmatt)

Repository: ambari
Updated Branches:
  refs/heads/trunk 29179e766 -> 47510ed78


AMBARI-16074: Show number of PXFs Live widget on main dashboard (mithmatt)


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

Branch: refs/heads/trunk
Commit: 47510ed78590116dd3c34c89b47a43b45abb1fba
Parents: 29179e7
Author: Matt <mm...@pivotal.io>
Authored: Mon Apr 25 21:12:30 2016 -0700
Committer: Matt <mm...@pivotal.io>
Committed: Mon Apr 25 21:12:30 2016 -0700

----------------------------------------------------------------------
 ambari-web/app/assets/test/tests.js             |  1 +
 .../app/mappers/components_state_mapper.js      |  5 ++
 ambari-web/app/messages.js                      |  7 +-
 ambari-web/app/views.js                         |  1 +
 ambari-web/app/views/main/dashboard/widgets.js  | 19 +++-
 .../main/dashboard/widgets/hawqsegment_live.js  |  6 +-
 .../views/main/dashboard/widgets/pxf_live.js    | 91 ++++++++++++++++++++
 .../main/dashboard/widgets/pxf_live_test.js     | 65 ++++++++++++++
 8 files changed, 185 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/47510ed7/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 33e7f1c..7226720 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -254,6 +254,7 @@ var files = [
   'test/views/main/dashboard/widgets/node_managers_live_test',
   'test/views/main/dashboard/widgets/datanode_live_test',
   'test/views/main/dashboard/widgets/hawqsegment_live_test',
+  'test/views/main/dashboard/widgets/pxf_live_test',
   'test/views/main/dashboard/widgets/hbase_average_load_test',
   'test/views/main/dashboard/widgets/hbase_regions_in_transition_test',
   'test/views/main/dashboard/widgets/namenode_rpc_test',

http://git-wip-us.apache.org/repos/asf/ambari/blob/47510ed7/ambari-web/app/mappers/components_state_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/components_state_mapper.js b/ambari-web/app/mappers/components_state_mapper.js
index 755c0f5..96eb52b 100644
--- a/ambari-web/app/mappers/components_state_mapper.js
+++ b/ambari-web/app/mappers/components_state_mapper.js
@@ -65,6 +65,11 @@ App.componentsStateMapper = App.QuickDataMapper.create({
       hawq_segments_installed: 'INSTALLED_PATH',
       hawq_segments_total: 'TOTAL_PATH'
     },
+    'PXF': {
+      pxfs_started: 'STARTED_PATH',
+      pxfs_installed: 'INSTALLED_PATH',
+      pxfs_total: 'TOTAL_PATH'
+    },
     'HBASE_REGIONSERVER': {
       region_servers_started: 'STARTED_PATH',
       region_servers_installed: 'INSTALLED_PATH',

http://git-wip-us.apache.org/repos/asf/ambari/blob/47510ed7/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 04041aa..8c8b9e5 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -2615,6 +2615,7 @@ Em.I18n.translations = {
   'dashboard.widgets.error.invalid': 'Invalid! Enter a number between 0 - {0}',
   'dashboard.widgets.error.smaller': 'Threshold 1 should be smaller than threshold 2!',
   'dashboard.widgets.HawqSegmentUp': 'HAWQ Segments Live',
+  'dashboard.widgets.PxfUp': 'PXFs Live',
 
   'dashboard': {
     'widgets': {
@@ -2721,9 +2722,9 @@ Em.I18n.translations = {
   'dashboard.services.hbase.masterStarted':'Master Started',
   'dashboard.services.hbase.masterActivated':'Master Activated',
 
-  'dashboard.services.hawq.segments.started':'started',
-  'dashboard.services.hawq.segments.stopped':'stopped',
-  'dashboard.services.hawq.segments.total':'in total',
+  'dashboard.services.components.started':'started',
+  'dashboard.services.components.stopped':'stopped',
+  'dashboard.services.components.total':'in total',
 
   'dashboard.services.hive.clients':'Hive Clients',
   'dashboard.services.hive.client':'Hive Client',

http://git-wip-us.apache.org/repos/asf/ambari/blob/47510ed7/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 6bb2774..8e02639 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -233,6 +233,7 @@ require('views/main/dashboard/widgets/namenode_cpu');
 require('views/main/dashboard/widgets/hdfs_capacity');
 require('views/main/dashboard/widgets/datanode_live');
 require('views/main/dashboard/widgets/hawqsegment_live');
+require('views/main/dashboard/widgets/pxf_live');
 require('views/main/dashboard/widgets/namenode_rpc');
 require('views/main/dashboard/widgets/metrics_memory');
 require('views/main/dashboard/widgets/metrics_network');

http://git-wip-us.apache.org/repos/asf/ambari/blob/47510ed7/ambari-web/app/views/main/dashboard/widgets.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/widgets.js b/ambari-web/app/views/main/dashboard/widgets.js
index 067607f..38181c0 100644
--- a/ambari-web/app/views/main/dashboard/widgets.js
+++ b/ambari-web/app/views/main/dashboard/widgets.js
@@ -129,7 +129,8 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, Ap
       '17', '18', '19', '20', '23', // all yarn
       '21', // storm
       '22', // flume
-      '24' // hawq
+      '24', // hawq
+      '25' // pxf
     ]; // all in order
     var hiddenFull = [
       ['15', 'Region In Transition']
@@ -180,6 +181,12 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, Ap
         visibleFull = visibleFull.without(item);
       }, this);
     }
+    if (this.get('pxf_model') == null) {
+      var pxf = ['25'];
+      pxf.forEach(function (item) {
+        visibleFull = visibleFull.without(item);
+      }, this);
+    }
     var obj = this.get('initPrefObject');
     obj.set('visible', visibleFull);
     obj.set('hidden', hiddenFull);
@@ -201,6 +208,8 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, Ap
 
   hawq_model: null,
 
+  pxf_model: null,
+
   /**
    * List of visible widgets
    * @type {Ember.Enumerable}
@@ -395,7 +404,8 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, Ap
       yarn_model: ['17', '18', '19', '20', '23'],
       storm_model: ['21'],
       flume_model: ['22'],
-      hawq_model: ['24']
+      hawq_model: ['24'],
+      pxf_model: ['25']
     };
 
     // check each service, find out the newly added service and already deleted service
@@ -463,7 +473,8 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, Ap
       '21': App.SuperVisorUpView,
       '22': App.FlumeAgentUpView,
       '23': App.YARNLinksView,
-      '24': App.HawqSegmentUpView
+      '24': App.HawqSegmentUpView,
+      '25': App.PxfUpView
     }, id);
   },
 
@@ -480,7 +491,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, Ap
     visible: [],
     hidden: [],
     threshold: {1: [80, 90], 2: [85, 95], 3: [90, 95], 4: [80, 90], 5: [1000, 3000], 6: [], 7: [], 8: [], 9: [], 10: [], 11: [], 12: [], 13: [70, 90], 14: [150, 250], 15: [3, 10], 16: [],
-      17: [70, 90], 18: [], 19: [50, 75], 20: [50, 75], 21: [85, 95], 22: [85, 95], 23: [], 24: [75, 90]} // id:[thresh1, thresh2]
+      17: [70, 90], 18: [], 19: [50, 75], 20: [50, 75], 21: [85, 95], 22: [85, 95], 23: [], 24: [75, 90], 25: [75, 90]} // id:[thresh1, thresh2]
   }),
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/47510ed7/ambari-web/app/views/main/dashboard/widgets/hawqsegment_live.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/widgets/hawqsegment_live.js b/ambari-web/app/views/main/dashboard/widgets/hawqsegment_live.js
index bec98c6..04e7d66 100644
--- a/ambari-web/app/views/main/dashboard/widgets/hawqsegment_live.js
+++ b/ambari-web/app/views/main/dashboard/widgets/hawqsegment_live.js
@@ -38,9 +38,9 @@ App.HawqSegmentUpView = App.TextDashboardWidgetView.extend(App.EditableWithLimit
 
   hiddenInfo: function () {
     return [
-      this.get('hawqSegmentsStarted') + ' ' + Em.I18n.t('dashboard.services.hawq.segments.started'),
-      this.get('hawqSegmentsInstalled') + ' ' + Em.I18n.t('dashboard.services.hawq.segments.stopped'),
-      this.get('hawqSegmentsTotal')+ ' ' + Em.I18n.t('dashboard.services.hawq.segments.total')
+      this.get('hawqSegmentsStarted') + ' ' + Em.I18n.t('dashboard.services.components.started'),
+      this.get('hawqSegmentsInstalled') + ' ' + Em.I18n.t('dashboard.services.components.stopped'),
+      this.get('hawqSegmentsTotal')+ ' ' + Em.I18n.t('dashboard.services.components.total')
     ];
   }.property('hawqSegmentsStarted', 'hawqSegmentsInstalled', 'hawqSegmentsTotal'),
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/47510ed7/ambari-web/app/views/main/dashboard/widgets/pxf_live.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/widgets/pxf_live.js b/ambari-web/app/views/main/dashboard/widgets/pxf_live.js
new file mode 100644
index 0000000..75f5886
--- /dev/null
+++ b/ambari-web/app/views/main/dashboard/widgets/pxf_live.js
@@ -0,0 +1,91 @@
+/**
+ * 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');
+
+function counterOrNA(key) {
+  var _key = 'model.{0}'.format(key);
+  return Em.computed(_key, function () {
+    var value = this.get(_key);
+    if (Em.isNone(value)) {
+      return Em.I18n.t('services.service.summary.notAvailable');
+    }
+    return value;
+  });
+}
+
+App.PxfUpView = App.TextDashboardWidgetView.extend(App.EditableWithLimitWidgetMixin, {
+
+  title: Em.I18n.t('dashboard.widgets.PxfUp'),
+  id: '25',
+
+  model_type: 'pxf',
+
+  hiddenInfo: function () {
+    return [
+      this.get('pxfsStarted') + ' ' + Em.I18n.t('dashboard.services.components.started'),
+      this.get('pxfsInstalled') + ' ' + Em.I18n.t('dashboard.services.components.stopped'),
+      this.get('pxfsTotal')+ ' ' + Em.I18n.t('dashboard.services.components.total')
+    ];
+  }.property('pxfsStarted', 'pxfsInstalled', 'pxfsTotal'),
+
+  hiddenInfoClass: "hidden-info-three-line",
+
+  thresh1: 75,
+  thresh2: 90,
+  maxValue: 100,
+
+  pxfsStarted: counterOrNA('pxfsStarted'),
+
+  pxfsInstalled: counterOrNA('pxfsInstalled'),
+
+  pxfsTotal: counterOrNA('pxfsTotal'),
+
+  /**
+   * @type {?number}
+   */
+  data: function () {
+    if (this.get('someMetricsNA')) {
+      return null;
+    }
+    return (this.get('pxfsStarted') / this.get('model.pxfsTotal')).toFixed(2) * 100;
+  }.property('model.pxfsTotal', 'pxfsStarted', 'someMetricsNA'),
+
+  /**
+   * @type {string}
+   */
+  content: function () {
+    if (this.get('someMetricsNA')) {
+      return Em.I18n.t('services.service.summary.notAvailable');
+    }
+    return this.get('pxfsStarted') + "/" + this.get('model.pxfsTotal');
+  }.property('model.pxfsTotal', 'pxfsStarted', 'someMetricsNA'),
+
+  hintInfo: function () {
+    var maxTmp = parseFloat(this.get('maxValue'));
+    return Em.I18n.t('dashboard.widgets.hintInfo.hint1').format(maxTmp);
+  }.property('maxValue'),
+
+  /**
+   * @type {boolean}
+   */
+  someMetricsNA: function() {
+    return Em.isNone(this.get('model.pxfsStarted')) || Em.isNone(this.get('model.pxfsTotal'));
+  }.property('model.pxfsStarted', 'model.pxfsTotal')
+
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/47510ed7/ambari-web/test/views/main/dashboard/widgets/pxf_live_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/dashboard/widgets/pxf_live_test.js b/ambari-web/test/views/main/dashboard/widgets/pxf_live_test.js
new file mode 100644
index 0000000..94f47e6
--- /dev/null
+++ b/ambari-web/test/views/main/dashboard/widgets/pxf_live_test.js
@@ -0,0 +1,65 @@
+/**
+ * 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');
+
+require('views/main/dashboard/widget');
+require('views/main/dashboard/widgets/text_widget');
+require('views/main/dashboard/widgets/pxf_live');
+
+var view;
+
+function testCounterOrNa(propertyName, dependentKey) {
+  describe('#' + propertyName, function () {
+
+    beforeEach(function () {
+      view.reopen({
+        model: Em.Object.create()
+      });
+      view.get('model').set(dependentKey, []);
+    });
+
+    it('n/a (1)', function () {
+      view.get('model').set(dependentKey, null);
+      expect(view.get(propertyName)).to.be.equal(Em.I18n.t('services.service.summary.notAvailable'));
+    });
+
+    it('n/a (2)', function () {
+      view.get('model').set(dependentKey, undefined);
+      expect(view.get(propertyName)).to.be.equal(Em.I18n.t('services.service.summary.notAvailable'));
+    });
+
+    it('value exist', function () {
+      view.get('model').set(dependentKey, 123);
+      expect(view.get(propertyName)).to.be.equal(123);
+    });
+
+  });
+}
+
+describe('App.PxfUpView', function() {
+
+  beforeEach(function () {
+    view = App.PxfUpView.create();
+  });
+
+  testCounterOrNa('pxfsStarted', 'pxfsStarted');
+  testCounterOrNa('pxfsInstalled', 'pxfsInstalled');
+  testCounterOrNa('pxfsStarted', 'pxfsStarted');
+
+});