浏览代码

AMBARI-9419. Sometimes manage alert groups doesn't work. (akovalenko)

Aleksandr Kovalenko 10 年之前
父节点
当前提交
d8997295d3

+ 3 - 21
ambari-web/app/mappers/alert_groups_mapper.js

@@ -38,27 +38,12 @@ App.alertGroupsMapper = App.QuickDataMapper.create({
     }
     }
   },
   },
 
 
-  /**
-   * Map for alertGroup's alertDefinitions
-   * Store alertDefinitions to alertGroup-properties basing on alertDefinitionType
-   * Format: key - alertDefinitionType, value - alertGroup-property where alertDefinition should be saved
-   * @type {object}
-   */
-  typesMap: {
-    PORT: 'port_alert_definitions',
-    METRIC: 'metrics_alert_definitions',
-    WEB: 'web_alert_definitions',
-    AGGREGATE: 'aggregate_alert_definitions',
-    SCRIPT: 'script_alert_definitions'
-  },
-
   map: function (json) {
   map: function (json) {
     if (!Em.isNone(json, 'items')) {
     if (!Em.isNone(json, 'items')) {
 
 
       var alertGroups = [],
       var alertGroups = [],
         self = this,
         self = this,
         groupsToDelete = App.AlertGroup.find().mapProperty('id'),
         groupsToDelete = App.AlertGroup.find().mapProperty('id'),
-        typesMap = this.get('typesMap'),
         /**
         /**
          * AlertGroups-map for <code>App.AlertDefinitionsMappers</code>
          * AlertGroups-map for <code>App.AlertDefinitionsMappers</code>
          * Format:
          * Format:
@@ -77,15 +62,12 @@ App.alertGroupsMapper = App.QuickDataMapper.create({
       json.items.forEach(function(item) {
       json.items.forEach(function(item) {
         var group = self.parseIt(item, self.get('config'));
         var group = self.parseIt(item, self.get('config'));
         groupsToDelete = groupsToDelete.without(group.id);
         groupsToDelete = groupsToDelete.without(group.id);
-        Em.keys(typesMap).forEach(function(k) {
-          group[typesMap[k]] = [];
-        });
         group.targets = [];
         group.targets = [];
+        group.definitions = [];
         if (item.AlertGroup.definitions) {
         if (item.AlertGroup.definitions) {
           item.AlertGroup.definitions.forEach(function(definition) {
           item.AlertGroup.definitions.forEach(function(definition) {
-            var type = typesMap[definition.source_type];
-            if (!group[type].contains(definition.id)) {
-              group[type].push(definition.id);
+            if (!group.definitions.contains(definition.id)) {
+              group.definitions.push(definition.id);
             }
             }
             if (Em.isNone(alertDefinitionsGroupsMap[definition.id])) {
             if (Em.isNone(alertDefinitionsGroupsMap[definition.id])) {
               alertDefinitionsGroupsMap[definition.id] = [];
               alertDefinitionsGroupsMap[definition.id] = [];

+ 1 - 1
ambari-web/app/models/alert_group.js

@@ -44,7 +44,7 @@ App.AlertGroup = DS.Model.extend({
   /**
   /**
    * @type {App.AlertDefinition[]}
    * @type {App.AlertDefinition[]}
    */
    */
-  definitions: App.AlertDefinition.find(),
+  definitions: DS.hasMany('App.AlertDefinition'),
 
 
   /**
   /**
    * @type {App.AlertNotification[]}
    * @type {App.AlertNotification[]}

+ 2 - 10
ambari-web/test/mappers/alert_groups_mapper_test.js

@@ -113,22 +113,14 @@ describe('App.alertGroupsMapper', function () {
           id: 3,
           id: 3,
           name: 'ZOOKEEPER',
           name: 'ZOOKEEPER',
           default: true,
           default: true,
-          port_alert_definitions: [8],
-          metrics_alert_definitions: [],
-          web_alert_definitions: [],
-          aggregate_alert_definitions: [9],
-          script_alert_definitions: [],
+          definitions: [8,9],
           targets: [1, 2]
           targets: [1, 2]
         },
         },
         {
         {
           id: 2,
           id: 2,
           name: 'YARN',
           name: 'YARN',
           default: true,
           default: true,
-          port_alert_definitions: [],
-          metrics_alert_definitions: [1, 5],
-          web_alert_definitions: [2, 3, 7],
-          aggregate_alert_definitions: [4],
-          script_alert_definitions: [6],
+          definitions: [1, 2, 3, 4, 5, 6, 7],
           targets: [2, 3]
           targets: [2, 3]
         }
         }
       ];
       ];