Skip to content

Commit 57c1d5a

Browse files
authored
Merge pull request #25 from dkorn/get_group_conditions
Add support for getting all group conditions in Hawkular alerts
2 parents cb9cb3d + 74a39c6 commit 57c1d5a

2 files changed

Lines changed: 53 additions & 3 deletions

File tree

hawkular/alerts.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,10 @@ class GroupConditionsInfo(ApiOject):
7171
'conditions', 'data_id_member_map'
7272
]
7373

74-
defaults = {
75-
'conditions': []
76-
}
74+
def __init__(self, dictionary=dict()):
75+
ApiOject.__init__(self, dictionary)
76+
udict = self.transform_dict_to_underscore(dictionary)
77+
self.conditions = Condition.list_to_object_list(udict.get('conditions'))
7778

7879
def addCondition(self, c):
7980
self.conditions.append(c)
@@ -177,6 +178,15 @@ def create_group_member(self, member):
177178
data = self._serialize_object(member)
178179
return Trigger(self._post(self._service_url(['triggers', 'groups', 'members']), data))
179180

181+
def get_trigger_conditions(self, trigger_id):
182+
"""
183+
Get all conditions for a specific trigger
184+
:param trigger_id: Trigger definition id to be retrieved
185+
:return: list of condition objects
186+
"""
187+
response = self._get(self._service_url(['triggers', trigger_id, 'conditions']))
188+
return Condition.list_to_object_list(response)
189+
180190
def create_group_conditions(self, group_id, trigger_mode, conditions):
181191
data = self._serialize_object(conditions)
182192
url = self._service_url(['triggers', 'groups', group_id, 'conditions', trigger_mode])

tests/test_alerts.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,46 @@ def test_create_group_trigger(self):
132132
self.assertEqual(created_group_trigger.id, trigger.id)
133133
self.assertEqual(created_group_trigger.name, trigger.name)
134134

135+
def test_get_trigger_conditions(self):
136+
# Create group trigger object
137+
trigger = Trigger()
138+
trigger.id = 'group_trigger_01'
139+
trigger.name = 'group_trigger'
140+
self.client.create_group_trigger(trigger)
141+
142+
# Create condition objects
143+
condition1 = Condition()
144+
condition1.trigger_mode = TriggerMode.AUTORESOLVE
145+
condition1.type = ConditionType.THRESHOLD
146+
condition1.data_id = 'did1'
147+
condition1.threshold = 5
148+
condition1.operator = Operator.LT
149+
150+
condition2 = Condition()
151+
condition2.trigger_mode = TriggerMode.AUTORESOLVE
152+
condition2.type = ConditionType.THRESHOLD
153+
condition2.data_id = 'did2'
154+
condition2.threshold = 5
155+
condition2.operator = Operator.GT
156+
157+
condition3 = Condition()
158+
condition3.trigger_mode = TriggerMode.AUTORESOLVE
159+
condition3.type = ConditionType.THRESHOLD
160+
condition3.data_id = 'did3'
161+
condition3.threshold = 5
162+
condition3.operator = Operator.GTE
163+
164+
gc = GroupConditionsInfo()
165+
gc.addCondition(condition1)
166+
gc.addCondition(condition2)
167+
gc.addCondition(condition3)
168+
self.client.create_group_conditions(trigger.id, TriggerMode.AUTORESOLVE, gc)
169+
170+
gc = self.client.get_trigger_conditions(trigger.id)
171+
self.assertEqual(len(gc), 3)
172+
gc_dids = [c.data_id for c in gc]
173+
self.assertEqual(gc_dids, ['did1', 'did2', 'did3'])
174+
135175
def test_delete_group_trigger(self):
136176
# Create a group trigger
137177
gt = Trigger()

0 commit comments

Comments
 (0)