You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2016/12/14 20:44:24 UTC

ambari git commit: AMBARI-14958. Alerts: Create new Alerts Notification type for SNMP to handle Ambari MIB. (Vivek Subramanian via yusaku)

Repository: ambari
Updated Branches:
  refs/heads/trunk 162ee83c5 -> f936fd04d


AMBARI-14958. Alerts: Create new Alerts Notification type for SNMP to handle Ambari MIB. (Vivek Subramanian via yusaku)


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

Branch: refs/heads/trunk
Commit: f936fd04ddbffa0cd78e827d61c2a27c4be1270c
Parents: 162ee83
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Wed Dec 14 12:43:53 2016 -0800
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Wed Dec 14 12:43:53 2016 -0800

----------------------------------------------------------------------
 .../manage_alert_notifications_controller.js    | 36 +++++++++-
 .../main/alerts/create_alert_notification.hbs   | 72 +++++++++++++++++---
 .../alerts/manage_alert_notifications_view.js   |  6 ++
 3 files changed, 101 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f936fd04/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js b/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js
index 10a7918..466d2e1 100644
--- a/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js
+++ b/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js
@@ -167,7 +167,7 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
    * used in Type combobox
    * @type {Array}
    */
-  methods: ['EMAIL', 'SNMP'],
+  methods: ['EMAIL', 'SNMP', 'Custom SNMP'],
 
   /**
    * List of available value for Severity Filter
@@ -321,6 +321,16 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
         errorKey: 'hostError',
         validator: 'hostsValidation'
       }
+    ],
+    CustomSNMP: [
+      {
+        errorKey: 'portError',
+        validator: 'portValidation'
+      },
+      {
+        errorKey: 'hostError',
+        validator: 'hostsValidation'
+      }
     ]
   },
 
@@ -461,11 +471,17 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
 
         isEmailMethodSelected: Em.computed.equal('controller.inputFields.method.value', 'EMAIL'),
 
+        isSNMPMethodSelected: Em.computed.equal('controller.inputFields.method.value', 'SNMP'),
+
+        isCustomSNMPMethodSelected: Em.computed.equal('controller.inputFields.method.value', 'Custom SNMP'),
+
         methodObserver: function () {
           var currentMethod = this.get('controller.inputFields.method.value'),
             validationMap = self.get('validationMap');
           self.get('methods').forEach(function (method) {
-            var validations = validationMap[method];
+            // Replace blank spaces with empty character
+            var mapKey = method.replace(/\s/g, "");
+            var validations = validationMap[mapKey];
             if (method === currentMethod) {
               validations.mapProperty('validator').forEach(function (key) {
                 this.get(key).call(this);
@@ -745,6 +761,11 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
         properties['ambari.dispatch.credential.password'] = inputFields.get('SMTPPassword.value');
         properties['mail.smtp.starttls.enable'] = inputFields.get('SMTPSTARTTLS.value');
       }
+    } else if(inputFields.get('method.value') === 'SNMP') {
+      properties['ambari.dispatch.snmp.version'] = inputFields.get('version.value');
+      properties['ambari.dispatch.snmp.community'] = inputFields.get('community.value');
+      properties['ambari.dispatch.recipients'] = inputFields.get('host.value').replace(/\s/g, '').split(',');
+      properties['ambari.dispatch.snmp.port'] = inputFields.get('port.value');
     } else {
       properties['ambari.dispatch.snmp.version'] = inputFields.get('version.value');
       properties['ambari.dispatch.snmp.oids.trap'] = inputFields.get('OIDs.value');
@@ -757,12 +778,21 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
     inputFields.get('customProperties').forEach(function (customProperty) {
       properties[customProperty.name] = customProperty.value;
     });
+    var getNotificationType = function() {
+      var methodValue = inputFields.get('method.value');
+      if(methodValue == "Custom SNMP") {
+        methodValue = "SNMP";
+      } else if(methodValue == "SNMP") {
+        methodValue = "AMBARI_SNMP"
+      }
+      return methodValue;
+    };
     var apiObject = {
       AlertTarget: {
         name: inputFields.get('name.value'),
         description: inputFields.get('description.value'),
         global: inputFields.get('allGroups.value') === 'all',
-        notification_type: inputFields.get('method.value'),
+        notification_type: getNotificationType(),
         alert_states: inputFields.get('severityFilter.value'),
         properties: properties
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/f936fd04/ambari-web/app/templates/main/alerts/create_alert_notification.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/alerts/create_alert_notification.hbs b/ambari-web/app/templates/main/alerts/create_alert_notification.hbs
index 342b247..5b40bca 100644
--- a/ambari-web/app/templates/main/alerts/create_alert_notification.hbs
+++ b/ambari-web/app/templates/main/alerts/create_alert_notification.hbs
@@ -208,7 +208,11 @@
           {{view App.CheckboxView disabledBinding="controller.inputFields.SMTPUseAuthentication.invertedValue" checkedBinding="controller.inputFields.SMTPSTARTTLS.value" id="inputSMTPSTARTTLS"}}
         </div>
       </div>
-    {{else}}
+    {{/if}}
+    {{! alert-notification email end }}
+
+    {{! alert-notification SNMP }}
+    {{#if view.isSNMPMethodSelected}}
       <div class="form-group">
         <label class="control-label col-md-2">{{controller.inputFields.version.label}}</label>
 
@@ -218,14 +222,6 @@
       </div>
 
       <div class="form-group">
-          <label class="control-label col-md-2">{{controller.inputFields.OIDs.label}}</label>
-
-          <div class="col-md-10">
-            {{view Em.TextField valueBinding="controller.inputFields.OIDs.value" classNames="form-control"}}
-          </div>
-      </div>
-
-      <div class="form-group">
         <label class="control-label col-md-2">{{controller.inputFields.community.label}}</label>
 
         <div class="col-md-10">
@@ -261,7 +257,63 @@
         {{/if}}
       </div>
     {{/if}}
-    {{! alert-notification email end }}
+    {{! alert-notification SNMP end }}
+
+    {{! alert-notification Custom SNMP }}
+    {{#if view.isCustomSNMPMethodSelected}}
+      <div class="form-group">
+        <label class="control-label col-md-2">{{controller.inputFields.version.label}}</label>
+
+        <div class="col-md-10">
+          {{view Em.Select selectionBinding="controller.inputFields.version.value" contentBinding="controller.SNMPVersions" classNames="form-control"}}
+        </div>
+      </div>
+
+      <div class="form-group">
+        <label class="control-label col-md-2">{{controller.inputFields.OIDs.label}}</label>
+
+        <div class="col-md-10">
+          {{view Em.TextField valueBinding="controller.inputFields.OIDs.value" classNames="form-control"}}
+        </div>
+      </div>
+
+      <div class="form-group">
+        <label class="control-label col-md-2">{{controller.inputFields.community.label}}</label>
+
+        <div class="col-md-10">
+          {{view Em.TextField valueBinding="controller.inputFields.community.value" classNames="form-control"}}
+        </div>
+      </div>
+
+      <div {{bindAttr class=":form-group controller.inputFields.host.errorMsg:has-error"}}>
+        <label class="control-label col-md-2">{{controller.inputFields.host.label}}</label>
+
+        <div class="col-md-10">
+          {{view Em.TextField valueBinding="controller.inputFields.host.value" classNames="form-control"}}
+        </div>
+
+        {{#if controller.inputFields.host.errorMsg}}
+          <div class="col-md-10 col-md-offset-2 help-block validation-block error-msg">
+            {{controller.inputFields.host.errorMsg}}
+          </div>
+        {{/if}}
+      </div>
+
+      <div {{bindAttr class=":form-group controller.inputFields.port.errorMsg:has-error"}}>
+        <label class="control-label col-md-2">{{controller.inputFields.port.label}}</label>
+
+        <div class="col-md-10">
+          {{view Em.TextField valueBinding="controller.inputFields.port.value" classNames="form-control"}}
+        </div>
+
+        {{#if controller.inputFields.port.errorMsg}}
+          <div class="col-md-10 col-md-offset-2 help-block validation-block error-msg">
+            {{controller.inputFields.port.errorMsg}}
+          </div>
+        {{/if}}
+      </div>
+    {{/if}}
+    {{! alert-notification Custom SNMP end }}
 
     {{! alert-notification custom properties }}
     {{#each customProperty in controller.inputFields.customProperties}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f936fd04/ambari-web/app/views/main/alerts/manage_alert_notifications_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/alerts/manage_alert_notifications_view.js b/ambari-web/app/views/main/alerts/manage_alert_notifications_view.js
index abb1694..9d01791 100644
--- a/ambari-web/app/views/main/alerts/manage_alert_notifications_view.js
+++ b/ambari-web/app/views/main/alerts/manage_alert_notifications_view.js
@@ -70,6 +70,12 @@ App.ManageAlertNotificationsView = Em.View.extend({
    */
   showSNMPDetails: Em.computed.equal('controller.selectedAlertNotification.type', 'SNMP'),
 
+  /**
+   * Show Custom SNMP information if selected alert notification has type Custom SNMP
+   * @type {boolean}
+   */
+  showCustomSNMPDetails: Em.computed.equal('controller.selectedAlertNotification.type', 'Custom SNMP'),
+  
   email: function () {
     return this.get('controller.selectedAlertNotification.properties')['ambari.dispatch.recipients'];
   }.property('controller.selectedAlertNotification.properties'),