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 2016/02/08 17:52:24 UTC
ambari git commit: AMBARI-14958. Alerts: Create new Alerts
Notification type for SNMP to handle Ambari MIB (onechiporenko)
Repository: ambari
Updated Branches:
refs/heads/trunk 5cb0fadda -> e139ef57c
AMBARI-14958. Alerts: Create new Alerts Notification type for SNMP to handle Ambari MIB (onechiporenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e139ef57
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e139ef57
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e139ef57
Branch: refs/heads/trunk
Commit: e139ef57ce0ec3d705489a36cb2d7cc78f6458c1
Parents: 5cb0fad
Author: Oleg Nechiporenko <on...@apache.org>
Authored: Mon Feb 8 16:58:17 2016 +0200
Committer: Oleg Nechiporenko <on...@apache.org>
Committed: Mon Feb 8 18:52:14 2016 +0200
----------------------------------------------------------------------
.../manage_alert_notifications_controller.js | 74 +++++++-----
...anage_alert_notifications_controller_test.js | 121 +++++++++++--------
.../views/common/log_file_search_view_test.js | 3 +-
3 files changed, 116 insertions(+), 82 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e139ef57/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 79e524e..244b8f0 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
@@ -61,9 +61,7 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
value: '',
defaultValue: 'custom',
disabled: false,
- isAll: function () {
- return this.get('value') == 'all';
- }.property('value')
+ isAll: Em.computed.equal('value', 'all')
}),
method: {
label: Em.I18n.t('alerts.actions.manage_alert_notifications_popup.method'),
@@ -159,7 +157,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
@@ -220,7 +218,8 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
'mail.smtp.from',
'mail.smtp.host',
'mail.smtp.port',
- 'mail.smtp.starttls.enable'
+ 'mail.smtp.starttls.enable',
+ 'ambari.dispatch-property.script'
],
validationMap: {
@@ -242,6 +241,16 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
validator: 'retypePasswordValidation'
}
],
+ 'Custom SNMP': [
+ {
+ errorKey: 'portError',
+ validator: 'portValidation'
+ },
+ {
+ errorKey: 'hostError',
+ validator: 'hostsValidation'
+ }
+ ],
SNMP: [
{
errorKey: 'portError',
@@ -322,24 +331,25 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
fillEditCreateInputs: function (addCopyToName) {
var inputFields = this.get('inputFields');
var selectedAlertNotification = this.get('selectedAlertNotification');
+ var props = selectedAlertNotification.get('properties');
inputFields.set('name.value', (addCopyToName ? 'Copy of ' : '') + selectedAlertNotification.get('name'));
inputFields.set('groups.value', selectedAlertNotification.get('groups').toArray());
- inputFields.set('email.value', selectedAlertNotification.get('properties')['ambari.dispatch.recipients'] ?
- selectedAlertNotification.get('properties')['ambari.dispatch.recipients'].join(', ') : '');
- inputFields.set('SMTPServer.value', selectedAlertNotification.get('properties')['mail.smtp.host']);
- inputFields.set('SMTPPort.value', selectedAlertNotification.get('properties')['mail.smtp.port']);
- inputFields.set('SMTPUseAuthentication.value', selectedAlertNotification.get('properties')['mail.smtp.auth'] !== "false");
- inputFields.set('SMTPUsername.value', selectedAlertNotification.get('properties')['ambari.dispatch.credential.username']);
- inputFields.set('SMTPPassword.value', selectedAlertNotification.get('properties')['ambari.dispatch.credential.password']);
- inputFields.set('retypeSMTPPassword.value', selectedAlertNotification.get('properties')['ambari.dispatch.credential.password']);
- inputFields.set('SMTPSTARTTLS.value', selectedAlertNotification.get('properties')['mail.smtp.starttls.enable'] !== "false");
- inputFields.set('emailFrom.value', selectedAlertNotification.get('properties')['mail.smtp.from']);
- inputFields.set('version.value', selectedAlertNotification.get('properties')['ambari.dispatch.snmp.version']);
- inputFields.set('OIDs.value', selectedAlertNotification.get('properties')['ambari.dispatch.snmp.oids.trap']);
- inputFields.set('community.value', selectedAlertNotification.get('properties')['ambari.dispatch.snmp.community']);
- inputFields.set('host.value', selectedAlertNotification.get('properties')['ambari.dispatch.recipients'] ?
- selectedAlertNotification.get('properties')['ambari.dispatch.recipients'].join(', ') : '');
- inputFields.set('port.value', selectedAlertNotification.get('properties')['ambari.dispatch.snmp.port']);
+ inputFields.set('email.value', props['ambari.dispatch.recipients'] ?
+ props['ambari.dispatch.recipients'].join(', ') : '');
+ inputFields.set('SMTPServer.value', props['mail.smtp.host']);
+ inputFields.set('SMTPPort.value', props['mail.smtp.port']);
+ inputFields.set('SMTPUseAuthentication.value', props['mail.smtp.auth'] !== "false");
+ inputFields.set('SMTPUsername.value', props['ambari.dispatch.credential.username']);
+ inputFields.set('SMTPPassword.value', props['ambari.dispatch.credential.password']);
+ inputFields.set('retypeSMTPPassword.value', props['ambari.dispatch.credential.password']);
+ inputFields.set('SMTPSTARTTLS.value', props['mail.smtp.starttls.enable'] !== "false");
+ inputFields.set('emailFrom.value', props['mail.smtp.from']);
+ inputFields.set('version.value', props['ambari.dispatch.snmp.version']);
+ inputFields.set('OIDs.value', props['ambari.dispatch.snmp.oids.trap']);
+ inputFields.set('community.value', props['ambari.dispatch.snmp.community']);
+ inputFields.set('host.value', props['ambari.dispatch.recipients'] ?
+ props['ambari.dispatch.recipients'].join(', ') : '');
+ inputFields.set('port.value', props['ambari.dispatch.snmp.port']);
inputFields.set('severityFilter.value', selectedAlertNotification.get('alertStates'));
inputFields.set('global.value', selectedAlertNotification.get('global'));
inputFields.set('allGroups.value', selectedAlertNotification.get('global') ? 'all' : 'custom');
@@ -348,14 +358,13 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
inputFields.set('description.value', selectedAlertNotification.get('description'));
inputFields.set('method.value', selectedAlertNotification.get('type'));
inputFields.get('customProperties').clear();
- var properties = selectedAlertNotification.get('properties');
var ignoredCustomProperties = this.get('ignoredCustomProperties');
- Em.keys(properties).forEach(function (k) {
+ Em.keys(props).forEach(function (k) {
if (ignoredCustomProperties.contains(k)) return;
inputFields.get('customProperties').pushObject({
name: k,
- value: properties[k],
- defaultValue: properties[k]
+ value: props[k],
+ defaultValue: props[k]
});
});
},
@@ -394,7 +403,7 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
validationMap = self.get('validationMap');
self.get('methods').forEach(function (method) {
var validations = validationMap[method];
- if (method == currentMethod) {
+ if (method === currentMethod) {
validations.mapProperty('validator').forEach(function (key) {
this.get(key).call(this);
}, this);
@@ -418,7 +427,7 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
if (!newName) {
this.set('nameError', true);
errorMessage = Em.I18n.t('alerts.actions.manage_alert_notifications_popup.error.name.empty');
- } else if (newName && newName != this.get('currentName') && self.get('alertNotifications').mapProperty('name').contains(newName)) {
+ } else if (newName && newName !== this.get('currentName') && self.get('alertNotifications').mapProperty('name').contains(newName)) {
this.set('nameError', true);
errorMessage = Em.I18n.t('alerts.actions.manage_alert_notifications_popup.error.name.existed');
} else {
@@ -475,7 +484,7 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
hostsValidation: function() {
var inputValue = this.get('controller.inputFields.host.value').trim(),
- hostError = false;;
+ hostError = false;
if (!this.get('isEmailMethodSelected')) {
var array = inputValue.split(',');
hostError = array.some(function(hostname) {
@@ -531,7 +540,7 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
* @method selectAllGroups
*/
selectAllGroups: function () {
- if (this.get('controller.inputFields.allGroups.value') == 'custom') {
+ if (this.get('controller.inputFields.allGroups.value') === 'custom') {
this.set('groupSelect.selection', this.get('groupSelect.content').slice());
}
},
@@ -541,7 +550,7 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
* @method clearAllGroups
*/
clearAllGroups: function () {
- if (this.get('controller.inputFields.allGroups.value') == 'custom') {
+ if (this.get('controller.inputFields.allGroups.value') === 'custom') {
this.set('groupSelect.selection', []);
}
},
@@ -645,6 +654,9 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
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');
+ if (inputFields.get('method.value') === 'SNMP') {
+ properties['ambari.dispatch-property.script'] = "org.apache.ambari.contrib.snmp.script";
+ }
}
inputFields.get('customProperties').forEach(function (customProperty) {
properties[customProperty.name] = customProperty.value;
@@ -659,7 +671,7 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
properties: properties
}
};
- if (inputFields.get('allGroups.value') == 'custom') {
+ if (inputFields.get('allGroups.value') === 'custom') {
apiObject.AlertTarget.groups = inputFields.get('groups.value').mapProperty('id');
}
return apiObject;
http://git-wip-us.apache.org/repos/asf/ambari/blob/e139ef57/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js b/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js
index 19d0c1b..283c0af 100644
--- a/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js
+++ b/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js
@@ -699,56 +699,77 @@ describe('App.ManageAlertNotificationsController', function () {
describe("#formatNotificationAPIObject()", function () {
- var inputFields = Em.Object.create({
- name: {
- value: 'test_name'
- },
- groups: {
- value: [{id: 1}, {id: 2}, {id: 3}]
- },
- allGroups: {
- value: 'custom'
- },
- global: {
- value: false
- },
- method: {
- value: 'EMAIL'
- },
- email: {
- value: 'test1@test.test, test2@test.test,test3@test.test , test4@test.test'
- },
- severityFilter: {
- value: ['OK', 'CRITICAL']
- },
- SMTPServer: {
- value: 's1'
- },
- SMTPPort: {
- value: '25'
- },
- SMTPUseAuthentication: {
- value: "true"
- },
- SMTPUsername: {
- value: 'user'
- },
- SMTPPassword: {
- value: 'pass'
- },
- SMTPSTARTTLS: {
- value: "true"
- },
- emailFrom: {
- value: 'from'
- },
- description: {
- value: 'test_description'
- },
- customProperties: [
- {name: 'n1', value: 'v1'},
- {name: 'n2', value: 'v2'}
- ]
+ var inputFields;
+
+ beforeEach(function () {
+ inputFields = Em.Object.create({
+ name: {
+ value: 'test_name'
+ },
+ groups: {
+ value: [{id: 1}, {id: 2}, {id: 3}]
+ },
+ allGroups: {
+ value: 'custom'
+ },
+ global: {
+ value: false
+ },
+ method: {
+ value: 'EMAIL'
+ },
+ email: {
+ value: 'test1@test.test, test2@test.test,test3@test.test , test4@test.test'
+ },
+ severityFilter: {
+ value: ['OK', 'CRITICAL']
+ },
+ SMTPServer: {
+ value: 's1'
+ },
+ SMTPPort: {
+ value: '25'
+ },
+ SMTPUseAuthentication: {
+ value: "true"
+ },
+ SMTPUsername: {
+ value: 'user'
+ },
+ SMTPPassword: {
+ value: 'pass'
+ },
+ SMTPSTARTTLS: {
+ value: "true"
+ },
+ emailFrom: {
+ value: 'from'
+ },
+ description: {
+ value: 'test_description'
+ },
+ host: {
+ value: ''
+ },
+ customProperties: [
+ {name: 'n1', value: 'v1'},
+ {name: 'n2', value: 'v2'}
+ ]
+ });
+ });
+
+ it('should set property `ambari.dispatch-property.script` for SNMP type', function () {
+ Em.set(inputFields, 'method.value', 'SNMP');
+ controller.set('inputFields', inputFields);
+ var result = controller.formatNotificationAPIObject();
+ expect(result.AlertTarget.properties['ambari.dispatch-property.script']).to.be.equal('org.apache.ambari.contrib.snmp.script');
+ });
+
+ it('should not set property `ambari.dispatch-property.script` for EMAIL type', function () {
+ Em.set(inputFields, 'method.value', 'EMAIL');
+ controller.set('inputFields', inputFields);
+ var result = controller.formatNotificationAPIObject();
+ expect(result.AlertTarget.properties).to.not.have.property('ambari.dispatch-property.script');
});
it("should create object with properties from inputFields values", function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/e139ef57/ambari-web/test/views/common/log_file_search_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/log_file_search_view_test.js b/ambari-web/test/views/common/log_file_search_view_test.js
index ca208b3..a5f940e 100644
--- a/ambari-web/test/views/common/log_file_search_view_test.js
+++ b/ambari-web/test/views/common/log_file_search_view_test.js
@@ -32,7 +32,8 @@ describe('App.LogFileSearchView', function() {
isIncluded: !!isIncluded
});
};
- var cases = [
+
+ [
{
viewContent: {
keywordsFilterValue: 'some_keyword'