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 2014/12/02 00:56:56 UTC
ambari git commit: AMBARI-8461. Alerts: UI cleanup. (xiwang via
yusaku)
Repository: ambari
Updated Branches:
refs/heads/trunk 73352f4bf -> 03872cafa
AMBARI-8461. Alerts: UI cleanup. (xiwang via yusaku)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/03872caf
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/03872caf
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/03872caf
Branch: refs/heads/trunk
Commit: 03872cafaba7c03266b1320c530df9c30c356dca
Parents: 73352f4
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Mon Dec 1 15:56:35 2014 -0800
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Mon Dec 1 15:56:35 2014 -0800
----------------------------------------------------------------------
.../controllers/global/cluster_controller.js | 9 +-
.../app/controllers/global/update_controller.js | 11 +++
.../main/alert_definitions_controller.js | 94 +++++++++++++-------
.../alert_definitions_actions_controller.js | 3 +-
.../alerts/definition_details_controller.js | 10 +++
ambari-web/app/messages.js | 14 +--
ambari-web/app/styles/alerts.less | 77 +++++++++++-----
ambari-web/app/styles/application.less | 18 ++--
.../app/templates/common/alerts_popup.hbs | 34 +++----
.../main/alerts/alert_definitions_actions.hbs | 2 +-
.../main/alerts/create_new_alert_group.hbs | 28 +++---
.../main/alerts/definition_details.hbs | 36 +++++---
.../main/alerts/manage_alert_groups_popup.hbs | 8 +-
.../alerts/manage_alert_notifications_popup.hbs | 2 +-
.../templates/main/service/new_config_group.hbs | 4 +-
ambari-web/app/utils/ajax/ajax.js | 4 +-
.../global/update_controller_test.js | 2 +-
.../main/alert_definitions_controller_test.js | 14 +--
18 files changed, 240 insertions(+), 130 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/controllers/global/cluster_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/cluster_controller.js b/ambari-web/app/controllers/global/cluster_controller.js
index 6107e68..e0d5841 100644
--- a/ambari-web/app/controllers/global/cluster_controller.js
+++ b/ambari-web/app/controllers/global/cluster_controller.js
@@ -314,6 +314,7 @@ App.ClusterController = Em.Controller.extend({
* 10. update stale_configs of host-components (depends on App.supports.hostOverrides)
* 11. load root service (Ambari)
* 12. load alert definitions to model
+ * 13. load unhealthy alert instances
*/
self.loadStackServiceComponents(function (data) {
data.items.forEach(function (service) {
@@ -345,8 +346,11 @@ App.ClusterController = Em.Controller.extend({
updater.updateAlertGroups(function () {
updater.updateAlertDefinitions(function() {
updater.updateAlertDefinitionSummary(function () {
- self.updateLoadStatus('alertGroups');
- self.updateLoadStatus('alertDefinitions');
+ updater.updateUnhealthyAlertInstances(function () {
+ self.updateLoadStatus('alertGroups');
+ self.updateLoadStatus('alertDefinitions');
+ self.updateLoadStatus('alertInstancesUnhealthy');
+ });
});
});
});
@@ -354,6 +358,7 @@ App.ClusterController = Em.Controller.extend({
else {
self.updateLoadStatus('alertGroups');
self.updateLoadStatus('alertDefinitions');
+ self.updateLoadStatus('alertInstancesUnhealthy');
}
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/controllers/global/update_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/update_controller.js b/ambari-web/app/controllers/global/update_controller.js
index e54716b..bb56c88 100644
--- a/ambari-web/app/controllers/global/update_controller.js
+++ b/ambari-web/app/controllers/global/update_controller.js
@@ -132,6 +132,7 @@ App.UpdateController = Em.Controller.extend({
App.updater.run(this, 'updateAlertGroups', 'isWorking', App.alertGroupsUpdateInterval);
App.updater.run(this, 'updateAlertDefinitions', 'isWorking', App.alertDefinitionsUpdateInterval);
App.updater.run(this, 'updateAlertDefinitionSummary', 'isWorking', App.alertDefinitionsUpdateInterval);
+ App.updater.run(this, 'updateUnhealthyAlertInstances', 'isWorking', App.alertInstancesUpdateInterval);
}
}
}.observes('isWorking'),
@@ -460,6 +461,16 @@ App.UpdateController = Em.Controller.extend({
});
},
+ updateUnhealthyAlertInstances: function (callback) {
+ var testUrl = '/data/alerts/alert_instances.json';
+ var realUrl = '/alerts?fields=*&Alert/state.in(CRITICAL,WARNING)';
+ var url = this.getUrl(testUrl, realUrl);
+
+ App.HttpClient.get(url, App.alertInstanceMapper, {
+ complete: callback
+ });
+ },
+
updateAlertDefinitionSummary: function(callback) {
var testUrl = '/data/alerts/alert_summary.json';
var realUrl = '/alerts?format=groupedSummary';
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/controllers/main/alert_definitions_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/alert_definitions_controller.js b/ambari-web/app/controllers/main/alert_definitions_controller.js
index 6bf486f..66e8a7e 100644
--- a/ambari-web/app/controllers/main/alert_definitions_controller.js
+++ b/ambari-web/app/controllers/main/alert_definitions_controller.js
@@ -84,22 +84,6 @@ App.MainAlertDefinitionsController = Em.ArrayController.extend({
},
/**
- * Alerts number to show up on top-nav bar: number of critical/warning alerts
- * @type {number}
- */
- allAlertsCount: function () {
- return this.get('content').filterProperty('isCriticalOrWarning').get('length');
- }.property('content.@each.isCriticalOrWarning'),
-
- /**
- * If critical alerts exist, if true, the alert badge should be red.
- * @type {boolean}
- */
- isCriticalAlerts: function () {
- return this.get('content').someProperty('isCritical');
- }.property('content.@each.isCritical'),
-
- /**
* Calculate critical/warning count for each service, to show up the label on services menu
* @method getCriticalAlertsCountForService
* @return {number}
@@ -109,6 +93,32 @@ App.MainAlertDefinitionsController = Em.ArrayController.extend({
return alertsForService.filterProperty('isCriticalOrWarning').get('length');
},
+
+ /**
+ * ========================== alerts popup dialog =========================
+ */
+
+ /**
+ * Alerts number to show up on top-nav bar: number of critical/warning alerts
+ * @type {number}
+ */
+ allAlertsCount: function () {
+ return this.get('unhealthyAlertInstances').get('length');
+ }.property('unhealthyAlertInstances.length'),
+
+ unhealthyAlertInstances: function() {
+ return App.AlertInstance.find().toArray().filterProperty('state', 'CRITICAL').concat(
+ App.AlertInstance.find().toArray().filterProperty('state', 'WARNING')
+ );
+ }.property('mapperTimestamp'),
+
+ /**
+ * if critical alerts exist, if true, the alert badge should be red.
+ */
+ isCriticalAlerts: function () {
+ return this.get('unhealthyAlertInstances').someProperty('state', 'CRITICAL');
+ }.property('unhealthyAlertInstances.@each.state'),
+
/**
* Onclick handler for alerts number located right to bg ops number (see application.hbs)
* @method showPopup
@@ -134,36 +144,60 @@ App.MainAlertDefinitionsController = Em.ArrayController.extend({
controller: self,
- content: function () {
- // show crit/warn alerts only.
- return this.get('controller.content').filterProperty('isCriticalOrWarning');
- }.property('controller.content.@each.isCriticalOrWarning'),
+ contents: function () {
+ return this.get('controller.unhealthyAlertInstances');
+ }.property('controller.unhealthyAlertInstances.length', 'controller.unhealthyAlertInstances.@each.state'),
isLoaded: function () {
- return !!this.get('controller.content.length');
- }.property('controller.content.length'),
+ return !!this.get('controller.unhealthyAlertInstances');
+ }.property('controller.unhealthyAlertInstances'),
isAlertEmptyList: function () {
- return !this.get('content.length');
- }.property('content.length'),
+ return !this.get('contents.length');
+ }.property('contents.length'),
+ /**
+ * Router transition to alert definition details page
+ * @param event
+ */
gotoAlertDetails: function (event) {
- this.get('parentView').hide();
- App.router.transitionTo('main.alerts.alertDetails', event.context);
+ if (event && event.context) {
+ this.get('parentView').hide();
+ var definition = this.get('controller.content').findProperty('id', event.context.get('definitionId'));
+ App.router.transitionTo('main.alerts.alertDetails', definition);
+ }
},
+ /**
+ * Router transition to service summary page
+ * @param event
+ */
gotoService: function (event) {
- this.get('parentView').hide();
- App.router.transitionTo('main.services.service', event.context);
+ if (event && event.context) {
+ this.get('parentView').hide();
+ App.router.transitionTo('main.services.service', event.context);
+ }
},
+ /**
+ * Router transition to host level alerts page
+ * @param event
+ */
+ goToHostAlerts: function (event) {
+ if (event && event.context) {
+ this.get('parentView').hide();
+ App.router.transitionTo('main.hosts.hostDetails.alerts', event.context);
+ }
+ },
+
+ /**
+ * Router transition to alert summary page
+ */
showMore: function () {
this.get('parentView').hide();
App.router.transitionTo('main.alerts.index');
}
-
})
})
}
-
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/controllers/main/alerts/alert_definitions_actions_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/alerts/alert_definitions_actions_controller.js b/ambari-web/app/controllers/main/alerts/alert_definitions_actions_controller.js
index e56743b..14d2a8b 100644
--- a/ambari-web/app/controllers/main/alerts/alert_definitions_actions_controller.js
+++ b/ambari-web/app/controllers/main/alerts/alert_definitions_actions_controller.js
@@ -85,8 +85,7 @@ App.MainAlertDefinitionActionsController = Em.ArrayController.extend({
controllerBinding: 'App.router.manageAlertGroupsController'
}),
- classNames: ['sixty-percent-width-modal', 'manage-configuration-group-popup'],
-
+ classNames: ['sixty-percent-width-modal', 'manage-alert-group-popup'],
primary: Em.I18n.t('common.save'),
onPrimary: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/controllers/main/alerts/definition_details_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/alerts/definition_details_controller.js b/ambari-web/app/controllers/main/alerts/definition_details_controller.js
index 6a4603c..e0f4d63 100644
--- a/ambari-web/app/controllers/main/alerts/definition_details_controller.js
+++ b/ambari-web/app/controllers/main/alerts/definition_details_controller.js
@@ -181,6 +181,16 @@ App.MainAlertDefinitionDetailsController = Em.Controller.extend({
},
/**
+ * Router transition to service page
+ * @param event
+ */
+ goToService: function (event) {
+ if (event && event.context) {
+ App.router.transitionTo('main.services.service', event.context);
+ }
+ },
+
+ /**
* Router transition to host level alerts page
* @param {object} event
* @method goToHostAlerts
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 302f2b5..e1fa969 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -844,14 +844,15 @@ Em.I18n.translations = {
'alerts.add.step2.header': 'Configure',
'alerts.add.step3.header': 'Review',
- 'alerts.fastAccess.popup.header': '{0} critical or warning alerts',
- 'alerts.fastAccess.popup.body.name': 'Alert name',
- 'alerts.fastAccess.popup.body.showmore': 'Show all Alerts',
- 'alerts.fastAccess.popup.body.noalerts': 'No critical or warning alerts',
+ 'alerts.fastAccess.popup.header': '{0} Critical or Warning Alerts',
+ 'alerts.fastAccess.popup.body.name': 'Alert Name',
+ 'alerts.fastAccess.popup.body.showmore': 'Show all Alerts Definitions',
+ 'alerts.fastAccess.popup.body.noalerts': 'No critical or warning alerts to display',
'alerts.actions.create': 'Create Alert',
'alerts.actions.manageGroups': 'Manage Alert Groups',
'alerts.actions.manageNotifications': 'Manage Notifications',
+ 'alerts.actions.manageNotifications.info': 'You can manage notification methods and recipients.',
'alerts.table.noAlerts': 'No Alerts to display',
'alerts.table.header.lastTriggered': 'Last Triggered',
@@ -873,6 +874,7 @@ Em.I18n.translations = {
'alerts.definition.details.enableDisable': 'Enable / Disable',
'alerts.definition.details.groups': 'Groups',
'alerts.definition.details.instances': 'Instances',
+ 'alerts.definition.details.serviceHost': 'Service: Host',
'alerts.definition.details.24-hour': '24-Hour',
'alerts.definition.details.notification': 'Notification',
'alerts.definition.details.noAlerts': 'No alert instances to show',
@@ -1774,7 +1776,7 @@ Em.I18n.translations = {
'alerts.actions.manage_alert_groups_popup.group_name_lable':'Name',
'alerts.actions.manage_alert_groups_popup.group_desc_lable':'Description',
'alerts.actions.manage_alert_groups_popup.notifications':'Notifications',
- 'alerts.actions.manage_alert_groups_popup.addButton':'Create new Alert Group',
+ 'alerts.actions.manage_alert_groups_popup.addButton':'Create Alert Group',
'alerts.actions.manage_alert_groups_popup.addGroup.exist': 'Alert Group with given name already exists',
'alerts.actions.manage_alert_groups_popup.removeButton':'Delete Alert Group',
'alerts.actions.manage_alert_groups_popup.renameButton':'Rename Alert Group',
@@ -1783,7 +1785,7 @@ Em.I18n.translations = {
'alerts.actions.manage_alert_groups_popup.addDefinitionDisabled':'There are no available alert definitions to add',
'alerts.actions.manage_alert_groups_popup.addDefinitionToDefault': 'You cannot add alert definition to a default group',
'alerts.actions.manage_alert_groups_popup.removeDefinition':'Remove alert definitions from selected Alert Group',
- 'alerts.actions.manage_alert_groups_popup.selectDefsDialog.title': 'Select Alert Group\'s Alert Definitions',
+ 'alerts.actions.manage_alert_groups_popup.selectDefsDialog.title': 'Select Alert Group Definitions',
'alerts.actions.manage_alert_groups_popup.selectDefsDialog.message': 'Select alert definitions to be added to this "{0}" Alert Group.',
'alerts.actions.manage_alert_groups_popup.selectDefsDialog.filter.placeHolder': 'All',
'alerts.actions.manage_alert_groups_popup.selectDefsDialog.selectedDefsLink': '{0} out of {1} alert definitions selected',
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/styles/alerts.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/alerts.less b/ambari-web/app/styles/alerts.less
index 2f9cc93..f1697de 100644
--- a/ambari-web/app/styles/alerts.less
+++ b/ambari-web/app/styles/alerts.less
@@ -157,8 +157,10 @@
text-decoration: none;
}
- .service-name {
+ .status {
margin-bottom: 30px;
+ text-align: center;
+ font-size: 20px;
}
.right-column {
@@ -180,11 +182,21 @@
font-weight: bold;
}
- .definition-name input {
- width: 99%;
- margin-bottom: 0px;
- margin-top: -4px;
- margin-left: -5px;
+ .definition-name {
+ .name-text-field{
+ margin-left: 2px;
+ margin-bottom: 0px;
+ input {
+ width: 99%;
+ margin-bottom: 0px;
+ margin-top: -4px;
+ margin-left: -5px;
+ }
+ }
+ .edit-buttons {
+ margin-bottom: 0px;
+ margin-top: -4px;
+ }
}
.edit-buttons {
@@ -293,6 +305,34 @@
}
}
+/*****start styles for manage alerts popup*****/
+.sixty-percent-width-modal.manage-alert-group-popup {
+ .modal{
+ max-height: 650px;
+ }
+ .modal-body {
+ max-height: 500px;
+ }
+ .group-select {
+ width: 100%;
+ height: 250px;
+ }
+ .btn-toolbar {
+ margin-top: 0px;
+ }
+ .manage-configuration-group-content {
+ margin-bottom: 0px;
+ }
+ .notification-editable-list {
+ .title {
+ font-weight: bold;
+ }
+ }
+}
+
+
+/*****end styles for manage alerts popup*****/
+
/*****start styles for alerts popup*****/
.alerts-popup {
.modal-body, .modal-footer, .modal-header {
@@ -313,32 +353,24 @@
padding: 0 0 20px 0;
height: 20px;
.status-top {
- width: 10%;
+ width: 5%;
padding-left: 20px;
}
.name-top {
- width: 40%;
+ width: 30%;
padding-left: 110px;
}
.service-top {
- width: 15%;
+ width: 30%;
padding-left: 5px;
}
.last-triggered-top {
- width: 20%;
padding-left: 5px;
}
.status-top,.name-top,.service-top,.last-triggered-top {
float: left;
text-align: left;
}
- .select-wrap {
- float: right;
- margin-top: -8px;
- select {
- width: 140px;
- }
- }
}
#alert-info{
overflow: auto;
@@ -355,18 +387,21 @@
.status-icon {
padding-left: 5px;
float: left;
- width: 10%;
- min-width: 30px;
+ width: 5%;
+ min-width: 20px;
}
.name-text {
padding-left: 10px;
- width: 40%;
+ width: 35%;
float: left;
}
.service-text {
padding-left: 5px;
- width: 15%;
+ width: 30%;
float: left;
+ .na-text {
+ color: #808080;
+ }
}
.last-triggered-text {
padding-left: 5px;
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index b4bb625..488fe3e 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -259,7 +259,7 @@ footer {
left: 0;
z-index: 1000;
float: left;
- min-width: 160px;
+ min-width: 180px;
padding: 5px 0;
margin: 2px 0 0;
list-style: none;
@@ -291,7 +291,7 @@ footer {
background: #953B39;
padding: 1px 4px;
float: right;
- margin-right: 10px;
+ margin-right: 5px;
margin-top: 3px;
}
}
@@ -301,9 +301,8 @@ footer {
.top-nav-dropdown-menu > li > a {
text-decoration: none;
text-align: left;
- padding: 5px;
display: block;
- padding: 3px 20px;
+ padding: 3px 10px;
clear: both;
font-weight: normal;
line-height: 20px;
@@ -2762,7 +2761,7 @@ width:100%;
padding: 1px 4px;
background: #953B39;
float: right;
- margin-right: 10px;
+ margin-right: 5px;
margin-top: 3px;
}
}
@@ -6614,16 +6613,13 @@ i.icon-asterisks {
}
}
-.notification-editable-list {
- .title {
- font-weight: bold;
- }
-}
-
.new-config-group-div {
td {
vertical-align: top;
}
+ td.title {
+ padding-top: 4px;
+ }
.textarea-full-width {
padding-right: 10px;
textarea {
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/templates/common/alerts_popup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/alerts_popup.hbs b/ambari-web/app/templates/common/alerts_popup.hbs
index 9ab715a..ff29fce 100644
--- a/ambari-web/app/templates/common/alerts_popup.hbs
+++ b/ambari-web/app/templates/common/alerts_popup.hbs
@@ -22,24 +22,26 @@
<div class="top-wrap">
<div class="status-top"></div>
<div class="name-top">{{t alerts.fastAccess.popup.body.name}}</div>
- <div class="service-top">{{t common.service}}</div>
+ <div class="service-top">{{t alerts.definition.details.serviceHost}}</div>
<div class="last-triggered-top">{{t alerts.table.header.lastTriggered}}</div>
</div>
- <div id="alert-info">
- {{#if view.isAlertEmptyList}}
- <div class="alert-list-wrap">{{t alerts.fastAccess.popup.body.noalerts}}</div>
- {{else}}
- {{#each alertDefinition in view.content}}
- <div class="alert-list-wrap">
- <div class="alert-list-line-cursor">
- <div class="status-icon">{{{alertDefinition.status}}}</div>
- <div class="name-text">
- <a href="#" {{action "gotoAlertDetails" alertDefinition target="view"}}>{{alertDefinition.label}}</a>
- </div>
- <div class="service-text">
- <a href="#" {{action "gotoService" alertDefinition.service target="view"}}>{{alertDefinition.service.displayName}}</a>
- </div>
- <div class="last-triggered-text">{{alertDefinition.lastTriggeredFormatted}}</div>
+ <div id="alert-info">
+ {{#if view.isAlertEmptyList}}
+ <div class="alert-list-wrap">{{t alerts.fastAccess.popup.body.noalerts}}</div>
+ {{else}}
+ {{#each alertInstance in view.contents}}
+ <div class="alert-list-wrap">
+ <div class="alert-list-line-cursor">
+ <div class="status-icon">{{{alertInstance.status}}}</div>
+ <div class="name-text"><a href="#" {{action "gotoAlertDetails" alertInstance target="view"}}>{{alertInstance.label}}</a></div>
+ <div class="service-text"><a href="#" {{action "gotoService" alertInstance.service target="view"}}>{{alertInstance.service.displayName}}</a>:
+ {{#if alertInstance.host}}
+ <a {{action "goToHostAlerts" alertInstance.host target="view"}} href="#">{{alertInstance.host.hostName}}</a>
+ {{else}}
+ <span class="na-text">{{t common.na}}</span>
+ {{/if}}
+ </div>
+ <div class="last-triggered-text">{{alertInstance.lastTriggered}}</div>
</div>
</div>
{{/each}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/templates/main/alerts/alert_definitions_actions.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/alerts/alert_definitions_actions.hbs b/ambari-web/app/templates/main/alerts/alert_definitions_actions.hbs
index 4187903..48fcad9 100644
--- a/ambari-web/app/templates/main/alerts/alert_definitions_actions.hbs
+++ b/ambari-web/app/templates/main/alerts/alert_definitions_actions.hbs
@@ -18,7 +18,7 @@
<div class="dropdown">
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">{{t common.actions}} <span class="caret"></span></a>
- <ul class="dropdown-menu">
+ <ul class="dropdown-menu pull-left">
{{#each action in controller}}
<li>
<a href="#" {{action actionHandler action target="controller"}}>
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/templates/main/alerts/create_new_alert_group.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/alerts/create_new_alert_group.hbs b/ambari-web/app/templates/main/alerts/create_new_alert_group.hbs
index 07dce96..170c8e8 100644
--- a/ambari-web/app/templates/main/alerts/create_new_alert_group.hbs
+++ b/ambari-web/app/templates/main/alerts/create_new_alert_group.hbs
@@ -16,18 +16,18 @@
* limitations under the License.
}}
-<div class="new-config-group-div">
- <div class="text-warning">
- {{#if view.parentView.warningMessage}}
- {{view.parentView.warningMessage}}
- {{else}}
-
- {{/if}}
- </div>
- <table>
- <tr>
- <td>{{t services.service.config_groups_popup.group_name_lable }}:</td>
- <td>{{view Ember.TextField maxlength="255" valueBinding="alertGroupName"}}</td>
- </tr>
- </table>
+<div class="new-config-group-div" id="create-new-alert-group">
+ <div class="text-warning">
+ {{#if view.parentView.warningMessage}}
+ {{view.parentView.warningMessage}}
+ {{else}}
+
+ {{/if}}
+ </div>
+ <table>
+ <tr>
+ <td class="title">{{t common.name}}: </td>
+ <td>{{view Ember.TextField maxlength="255" valueBinding="alertGroupName"}}</td>
+ </tr>
+ </table>
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/templates/main/alerts/definition_details.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/alerts/definition_details.hbs b/ambari-web/app/templates/main/alerts/definition_details.hbs
index edd2b4a..a27839c 100644
--- a/ambari-web/app/templates/main/alerts/definition_details.hbs
+++ b/ambari-web/app/templates/main/alerts/definition_details.hbs
@@ -23,19 +23,21 @@
{{! Left column }}
<div class="span9">
- <div class="definition-name">
+ <div class="definition-name row-fluid">
{{#if controller.editing.label.isEditing}}
- <div {{bindAttr class="controller.editing.label.isError:error :control-group"}}>
+ <div {{bindAttr class="controller.editing.label.isError:error :span8 :name-text-field :control-group"}}>
{{view Em.TextField valueBinding="controller.editing.label.value"}}
</div>
- <div class="edit-buttons">
+ <div class="edit-buttons span3">
<button {{action cancelEdit controller.editing.label target="controller"}} class="btn">{{t common.cancel}}</button>
<button {{bindAttr disabled="controller.editing.label.isError"}} {{action saveEdit controller.editing.label target="controller"}}
class="btn btn-primary">{{t common.save}}
</button>
</div>
{{else}}
- {{{controller.content.status}}} {{controller.content.label}}
+ <span>
+ {{controller.content.label}}
+ </span>
{{/if}}
{{#unless controller.editing.label.isEditing}}
{{#isAccessible ADMIN}}
@@ -95,8 +97,8 @@
{{! Right column }}
<div class="span3 right-column">
- <div class="service-name">
- {{t common.service}}: <span class="label label-info">{{controller.content.service.displayName}}</span>
+ <div class="status">
+ {{{controller.content.status}}}
</div>
<div>
{{#isAccessible ADMIN}}
@@ -112,10 +114,17 @@
{{/isAccessible}}
</div>
<div class="properties-list">
- <span>{{t common.type}}: {{controller.content.type}}</span>
<table>
<tbody>
<tr>
+ <td>{{t common.service}}:</td>
+ <td><span class="label label-info">{{controller.content.service.displayName}}</span></td>
+ </tr>
+ <tr>
+ <td>{{t common.type}}:</td>
+ <td>{{controller.content.type}}</td>
+ </tr>
+ <tr>
<td>{{t alerts.definition.details.groups}}:</td>
<td>HDFS Default (Admins)</td>
</tr>
@@ -145,7 +154,7 @@
<thead>
<tr>
<th class="first">{{t common.status}}</th>
- <th>{{t common.host}}</th>
+ <th>{{t alerts.definition.details.serviceHost}}</th>
<th>{{t alerts.table.header.lastTriggered}}</th>
<th>{{t alerts.definition.details.24-hour}}</th>
<th>{{t alerts.definition.details.notification}}</th>
@@ -155,8 +164,15 @@
{{#if view.pageContent}}
{{#each instance in view.pageContent}}
<tr>
- <td class="first">{{instance.state}}</td>
- <td><a {{action goToHostAlerts instance.host target="controller"}} href="#">{{instance.host.hostName}}</a></td>
+ <td class="first">{{{instance.status}}}</td>
+ <td>
+ <a {{action goToService instance.service target="controller"}} href="#">{{instance.service.displayName}}</a>:
+ {{#if instance.host}}
+ <a {{action goToHostAlerts instance.host target="controller"}} href="#">{{instance.host.hostName}}</a>
+ {{else}}
+ {{t common.na}}
+ {{/if}}
+ </td>
<td><time class="timeago" {{bindAttr data-original-title="instance.lastTriggered"}}>{{instance.lastTriggeredAgoFormatted}}</time></td>
<td>10</td>
<td class="last">Admins</td>
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/templates/main/alerts/manage_alert_groups_popup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/alerts/manage_alert_groups_popup.hbs b/ambari-web/app/templates/main/alerts/manage_alert_groups_popup.hbs
index 7446bd7..97d7d76 100644
--- a/ambari-web/app/templates/main/alerts/manage_alert_groups_popup.hbs
+++ b/ambari-web/app/templates/main/alerts/manage_alert_groups_popup.hbs
@@ -67,12 +67,12 @@
</div>
</div>
- <div class="row-fluid"> </div>
<div class="clearfix"></div>
-
<div class="row-fluid notification-editable-list">
- <div class="span3 title"><span class="icon-envelope-alt"></span> {{t alerts.actions.manage_alert_groups_popup.notifications}}</div>
- <div class="span8">
+ <div class="span4 title"><span class="icon-envelope-alt"></span> {{t alerts.actions.manage_alert_groups_popup.notifications}}</div>
+ </div>
+ <div class="row-fluid notification-editable-list">
+ <div class="span11">
{{view App.EditableList itemsBinding="selectedAlertGroup.notifications" resourcesBinding="selectedAlertGroup.alertNotifications" nameBinding="selectedAlertGroup.displayName"}}
</div>
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/templates/main/alerts/manage_alert_notifications_popup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/alerts/manage_alert_notifications_popup.hbs b/ambari-web/app/templates/main/alerts/manage_alert_notifications_popup.hbs
index 603e022..be83e47 100644
--- a/ambari-web/app/templates/main/alerts/manage_alert_notifications_popup.hbs
+++ b/ambari-web/app/templates/main/alerts/manage_alert_notifications_popup.hbs
@@ -15,7 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
}}
-
+<div class="alert alert-info margin-bottom-5">{{t alerts.actions.manageNotifications.info}}</div>
{{#if controller.isLoaded}}
<div class="row-fluid manage-configuration-group-content">
<div class="span12">
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/templates/main/service/new_config_group.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/new_config_group.hbs b/ambari-web/app/templates/main/service/new_config_group.hbs
index 5f4acb3..44a590d 100644
--- a/ambari-web/app/templates/main/service/new_config_group.hbs
+++ b/ambari-web/app/templates/main/service/new_config_group.hbs
@@ -26,11 +26,11 @@
</div>
<table>
<tr>
- <td>{{t services.service.config_groups_popup.group_name_lable }}:</td>
+ <td class="title">{{t services.service.config_groups_popup.group_name_lable }}: </td>
<td>{{view Ember.TextField maxlength="255" valueBinding="configGroupName"}}</td>
</tr>
<tr>
- <td>{{t services.service.config_groups_popup.group_desc_lable }}:</td>
+ <td class="title">{{t services.service.config_groups_popup.group_desc_lable }}: </td>
<td class="row-fluid">
{{view Ember.TextArea classNames="span12" valueBinding="configGroupDesc" rows="4"}}
</td>
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index 9cc559f..662c9b8 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -366,11 +366,11 @@ var urls = {
'mock': ''
},
'alerts.instances.by_definition': {
- 'real': '/clusters/{clusterName}/alerts?fields=*&Alert/definition_id={definitionId}',
+ 'real': '/clusters/{clusterName}/alerts?fields=*&(Alert/definition_id={definitionId}|Alert/state.in(CRITICAL,WARNING))',
'mock': '/data/alerts/alert_instances.json'
},
'alerts.instances.by_host': {
- 'real': '/clusters/{clusterName}/alerts?fields=*&Alert/host_name={hostName}',
+ 'real': '/clusters/{clusterName}/alerts?fields=*&(Alert/host_name={hostName}|Alert/state.in(CRITICAL,WARNING))',
'mock': '/data/alerts/alert_instances.json'
},
'alerts.update_alert_definition': {
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/test/controllers/global/update_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/global/update_controller_test.js b/ambari-web/test/controllers/global/update_controller_test.js
index 4f76a2a..5bd239b 100644
--- a/ambari-web/test/controllers/global/update_controller_test.js
+++ b/ambari-web/test/controllers/global/update_controller_test.js
@@ -62,7 +62,7 @@ describe('App.UpdateController', function () {
it('isWorking = true', function () {
controller.set('isWorking', true);
- expect(App.updater.run.callCount).to.equal(9);
+ expect(App.updater.run.callCount).to.equal(10);
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/03872caf/ambari-web/test/controllers/main/alert_definitions_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/alert_definitions_controller_test.js b/ambari-web/test/controllers/main/alert_definitions_controller_test.js
index 79361c6..e4e1d09 100644
--- a/ambari-web/test/controllers/main/alert_definitions_controller_test.js
+++ b/ambari-web/test/controllers/main/alert_definitions_controller_test.js
@@ -60,17 +60,17 @@ describe('App.MainAlertDefinitionsController', function() {
var bodyView;
beforeEach(function () {
- controller.reopen({content: [
- App.AlertDefinition.createRecord({summary: {CRITICAL: 1}}),
- App.AlertDefinition.createRecord({summary: {WARNING: 1}}),
- App.AlertDefinition.createRecord({summary: {OK: 1}}),
- App.AlertDefinition.createRecord({summary: {UNKNOWN: 1}})
+ controller.reopen({unhealthyAlertInstances: [
+ App.AlertInstance.createRecord({state: 'CRITICAL'}),
+ App.AlertInstance.createRecord({state: 'WARNING'}),
+ App.AlertInstance.createRecord({state: 'WARNING'}),
+ App.AlertInstance.createRecord({state: 'CRITICAL'})
]});
bodyView = controller.showPopup().get('bodyClass').create();
});
- it('#content', function () {
- expect(bodyView.get('content.length')).to.equal(2);
+ it('#contents', function () {
+ expect(bodyView.get('contents.length')).to.equal(4);
});
it('#isLoaded', function () {