Repository: ambari
Updated Branches:
  refs/heads/branch-2.2 778580b4f -> 22d12b877


AMBARI-14788. Alerts: Ability to customize timeout for WEB alerts in Ambari Web 
(onechiporenko)


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

Branch: refs/heads/branch-2.2
Commit: 22d12b877c54a799492550eaa859d21c86e3f252
Parents: 778580b
Author: Oleg Nechiporenko <onechipore...@apache.org>
Authored: Mon Jan 25 17:47:15 2016 +0200
Committer: Oleg Nechiporenko <onechipore...@apache.org>
Committed: Thu Jan 28 12:51:37 2016 +0200

----------------------------------------------------------------------
 .../alerts/definition_configs_controller.js     | 12 +++++---
 .../app/mappers/alert_definitions_mapper.js     | 24 +++++++++++++--
 ambari-web/app/models/alerts/alert_config.js    | 20 +++++++++---
 .../app/models/alerts/alert_definition.js       | 32 ++++++++++++++------
 .../definitions_configs_controller_test.js      |  4 +--
 5 files changed, 69 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/22d12b87/ambari-web/app/controllers/main/alerts/definition_configs_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/alerts/definition_configs_controller.js 
b/ambari-web/app/controllers/main/alerts/definition_configs_controller.js
index 326a900..38f3fa0 100644
--- a/ambari-web/app/controllers/main/alerts/definition_configs_controller.js
+++ b/ambari-web/app/controllers/main/alerts/definition_configs_controller.js
@@ -289,6 +289,9 @@ App.MainAlertDefinitionConfigsController = 
Em.Controller.extend({
         showInputForValue: false,
         text: isWizard ? '' : this.getThresholdsProperty('critical', 'text'),
         value: isWizard ? '' : this.getThresholdsProperty('critical', 'value')
+      }),
+      App.AlertConfigProperties.ConnectionTimeout.create({
+        value: alertDefinition.get('uri.connectionTimeout')
       })
     ]);
 
@@ -542,13 +545,14 @@ App.MainAlertDefinitionConfigsController = 
Em.Controller.extend({
    * @type {Boolean}
    */
   hasThresholdsError: function () {
+    var smallValue, smallValid, largeValue, largeValid;
     if (this.get('configs').findProperty('name', 'warning_threshold')) {
-      var smallValue = Em.get(this.get('configs').findProperty('name', 
'warning_threshold'), 'value');
-      var smallValid = Em.get(this.get('configs').findProperty('name', 
'warning_threshold'), 'isValid');
+      smallValue = Em.get(this.get('configs').findProperty('name', 
'warning_threshold'), 'value');
+      smallValid = Em.get(this.get('configs').findProperty('name', 
'warning_threshold'), 'isValid');
     }
     if (this.get('configs').findProperty('name', 'critical_threshold')) {
-      var largeValue = Em.get(this.get('configs').findProperty('name', 
'critical_threshold'), 'value');
-      var largeValid = Em.get(this.get('configs').findProperty('name', 
'critical_threshold'), 'isValid');
+      largeValue = Em.get(this.get('configs').findProperty('name', 
'critical_threshold'), 'value');
+      largeValid = Em.get(this.get('configs').findProperty('name', 
'critical_threshold'), 'isValid');
     }
     return smallValid && largeValid ? Number(smallValue) > Number(largeValue) 
: false;
   }.property('configs.@each.value'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/22d12b87/ambari-web/app/mappers/alert_definitions_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/alert_definitions_mapper.js 
b/ambari-web/app/mappers/alert_definitions_mapper.js
index 976f7e1..b79a90c 100644
--- a/ambari-web/app/mappers/alert_definitions_mapper.js
+++ b/ambari-web/app/mappers/alert_definitions_mapper.js
@@ -25,6 +25,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({
   reportModel: App.AlertReportDefinition,
   metricsSourceModel: App.AlertMetricsSourceDefinition,
   metricsUriModel: App.AlertMetricsUriDefinition,
+  parameterModel: App.AlertDefinitionParameter,
 
   config: {
     id: 'AlertDefinition.id',
@@ -42,6 +43,11 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({
     reporting_type: 'array',
     reporting: {
       item: 'id'
+    },
+    parameters_key: 'reporting',
+    parameters_type: 'array',
+    parameters: {
+      item: 'id'
     }
   },
 
@@ -66,7 +72,19 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({
     http: 'AlertDefinition.source.uri.http',
     https: 'AlertDefinition.source.uri.https',
     https_property: 'AlertDefinition.source.uri.https_property',
-    https_property_value: 'AlertDefinition.source.uri.https_property_value'
+    https_property_value: 'AlertDefinition.source.uri.https_property_value',
+    connection_timeout: 'AlertDefinition.source.uri.connection_timeout'
+  },
+
+  parameterConfig: {
+    id: 'AlertDefinition.source.parameters.id',
+    name: 'AlertDefinition.source.parameters.name',
+    display_name: 'AlertDefinition.source.parameters.display_name',
+    units: 'AlertDefinition.source.parameters.units',
+    value: 'AlertDefinition.source.parameters.value',
+    description: 'AlertDefinition.source.parameters.description',
+    type: 'AlertDefinition.source.parameters.type',
+    threshold: 'AlertDefinition.source.parameters.threshold'
   },
 
   map: function (json) {
@@ -77,7 +95,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({
           alertReportDefinitions = [],
           alertMetricsSourceDefinitions = [],
           alertMetricsUriDefinitions = [],
-          alertGroupsMap = App.cache['previousAlertGroupsMap'],
+          alertGroupsMap = App.cache.previousAlertGroupsMap,
           existingAlertDefinitions = App.AlertDefinition.find(),
           existingAlertDefinitionsMap = {},
           alertDefinitionsToDelete = 
existingAlertDefinitions.mapProperty('id'),
@@ -92,7 +110,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({
         var reporting = item.AlertDefinition.source.reporting;
         for (var report in reporting) {
           if (reporting.hasOwnProperty(report)) {
-            if (report == "units") {
+            if (report === "units") {
               convertedReportDefinitions.push({
                 id: item.AlertDefinition.id + report,
                 type: report,

http://git-wip-us.apache.org/repos/asf/ambari/blob/22d12b87/ambari-web/app/models/alerts/alert_config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/alerts/alert_config.js 
b/ambari-web/app/models/alerts/alert_config.js
index df2e579..b910339 100644
--- a/ambari-web/app/models/alerts/alert_config.js
+++ b/ambari-web/app/models/alerts/alert_config.js
@@ -346,8 +346,8 @@ App.AlertConfigProperties = {
      * @type {bool}
      */
     wasChanged: function () {
-      return (this.get('previousValue') !== null && this.get('value') !== 
this.get('previousValue')) ||
-      (this.get('previousText') !== null && this.get('text') !== 
this.get('previousText'));
+      return this.get('previousValue') !== null && this.get('value') !== 
this.get('previousValue') ||
+      this.get('previousText') !== null && this.get('text') !== 
this.get('previousText');
     }.property('value', 'text', 'previousValue', 'previousText'),
 
     /**
@@ -437,6 +437,18 @@ App.AlertConfigProperties = {
     }.property('value')
   }),
 
+  ConnectionTimeout: App.AlertConfigProperty.extend({
+    name: 'connection_timeout',
+    label: 'Connection Timeout',
+    displayType: 'textField',
+    classNames: 'alert-connection-timeout',
+    apiProperty: 'source.uri.connection_timeout',
+    isValid: function () {
+      var value = this.get('value');
+      return numericUtils.isPositiveNumber(value);
+    }.property('value')
+  }),
+
   DefaultPort: App.AlertConfigProperty.extend({
     name: 'default_port',
     label: 'Default Port',
@@ -572,7 +584,7 @@ App.AlertConfigProperties.Thresholds = {
      */
     getNewValue: function () {
       var value = this.get('value');
-      return (value && !isNaN(value)) ? (Number(value) * 100) + '' : value;
+      return value && !isNaN(value) ? Number(value) * 100 + '' : value;
     },
 
     /**
@@ -581,7 +593,7 @@ App.AlertConfigProperties.Thresholds = {
      */
     getNewDisplayValue: function () {
       var displayValue = this.get('displayValue');
-      return (displayValue && !isNaN(displayValue)) ? (Number(displayValue) / 
100) + '' : displayValue;
+      return displayValue && !isNaN(displayValue) ? Number(displayValue) / 100 
+ '' : displayValue;
     }
 
   }),

http://git-wip-us.apache.org/repos/asf/ambari/blob/22d12b87/ambari-web/app/models/alerts/alert_definition.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/alerts/alert_definition.js 
b/ambari-web/app/models/alerts/alert_definition.js
index 1ea6411..0b92429 100644
--- a/ambari-web/app/models/alerts/alert_definition.js
+++ b/ambari-web/app/models/alerts/alert_definition.js
@@ -33,6 +33,7 @@ App.AlertDefinition = DS.Model.extend({
   type: DS.attr('string'),
   groups: DS.hasMany('App.AlertGroup'),
   reporting: DS.hasMany('App.AlertReportDefinition'),
+  parameters: DS.hasMany('App.AlertDefinitionParameter'),
   lastTriggered: DS.attr('number'),
   lastTriggeredRaw: DS.attr('number'),
 
@@ -157,7 +158,7 @@ App.AlertDefinition = DS.Model.extend({
         '<span class="alert-state-single-host label alert-state-PENDING"><span 
class="icon-medkit"></span> ' + shortState + ' (' + 
summary[state].maintenanceCount + ')</span>' : '';
         return result;
       }).without('').join(' ');
-    } else if (hostCnt == 1) {
+    } else if (hostCnt === 1) {
       // single host, single status
       return order.map(function (state) {
         var shortState = self.get('shortState')[state];
@@ -168,7 +169,7 @@ App.AlertDefinition = DS.Model.extend({
         '<span class="alert-state-single-host label alert-state-PENDING"><span 
class="icon-medkit"></span> ' + shortState + '</span>' : '';
         return result;
       }).without('').join(' ');
-    } else if (hostCnt == 0) {
+    } else if (!hostCnt) {
       // none
       return '<span class="alert-state-single-host label 
alert-state-PENDING">NONE</span>';
     }
@@ -304,14 +305,14 @@ App.AlertDefinition.reopenClass({
    */
   getSortDefinitionsByStatus: function (order) {
     return function (a, b) {
-      var a_summary = a.get('summary'),
-        b_summary = b.get('summary'),
-        st_order = a.get('severityOrder'),
+      var aSummary = a.get('summary'),
+        bSummary = b.get('summary'),
+        stOrder = a.get('severityOrder'),
         ret = 0;
-      for (var i = 0; i < st_order.length; i++) {
-        var a_v = Em.isNone(a_summary[st_order[i]]) ? 0 : 
a_summary[st_order[i]].count + a_summary[st_order[i]].maintenanceCount,
-          b_v = Em.isNone(b_summary[st_order[i]]) ? 0 : 
b_summary[st_order[i]].count + b_summary[st_order[i]].maintenanceCount;
-        ret = b_v - a_v;
+      for (var i = 0; i < stOrder.length; i++) {
+        var aV = Em.isNone(aSummary[stOrder[i]]) ? 0 : 
aSummary[stOrder[i]].count + aSummary[stOrder[i]].maintenanceCount,
+          bV = Em.isNone(bSummary[stOrder[i]]) ? 0 : 
bSummary[stOrder[i]].count + bSummary[stOrder[i]].maintenanceCount;
+        ret = bV - aV;
         if (ret !== 0) {
           break;
         }
@@ -322,6 +323,16 @@ App.AlertDefinition.reopenClass({
 
 });
 
+App.AlertDefinitionParameter = DS.Model.extend({
+  name: DS.attr('string'),
+  displayName: DS.attr('string'),
+  unit: DS.attr('string'),
+  value: DS.attr('number'),
+  description: DS.attr('string'),
+  type: DS.attr('string'),
+  threshold: DS.attr('string')
+});
+
 App.AlertReportDefinition = DS.Model.extend({
   type: DS.attr('string'),
   text: DS.attr('string'),
@@ -337,7 +348,8 @@ App.AlertMetricsUriDefinition = DS.Model.extend({
   http: DS.attr('string'),
   https: DS.attr('string'),
   httpsProperty: DS.attr('string'),
-  httpsPropertyValue: DS.attr('string')
+  httpsPropertyValue: DS.attr('string'),
+  connectionTimeout: DS.attr('number')
 });
 
 App.AlertDefinition.FIXTURES = [];

http://git-wip-us.apache.org/repos/asf/ambari/blob/22d12b87/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
 
b/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
index ac06de7..dce3935 100644
--- 
a/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
+++ 
b/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
@@ -225,12 +225,12 @@ describe('App.MainAlertDefinitionConfigsController', 
function () {
       controller.set('isWizard', true);
       var result = controller.renderWebConfigs();
 
-      expect(result.length).to.equal(11);
+      expect(result.length).to.equal(12);
 
       controller.set('isWizard', false);
       result = controller.renderWebConfigs();
 
-      expect(result.length).to.equal(5);
+      expect(result.length).to.equal(6);
     });
 
   });

Reply via email to