Skip to content

Commit 74a39c6

Browse files
authored
Merge branch 'master' into get_group_conditions
2 parents 25aa12e + cb9cb3d commit 74a39c6

3 files changed

Lines changed: 62 additions & 8 deletions

File tree

hawkular/alerts.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,24 @@ def create_group_trigger(self, trigger):
156156
data = self._serialize_object(trigger)
157157
return Trigger(self._post(self._service_url(['triggers', 'groups']), data))
158158

159+
def update_group_trigger(self, group_id, trigger):
160+
"""
161+
:param group_id: group trigger id to be updated
162+
:param trigger: Trigger object, the group trigger to be updated
163+
"""
164+
data = self._serialize_object(trigger)
165+
self._put(self._service_url(['triggers', 'groups', group_id]), data, parse_json=False)
166+
167+
def delete_group_trigger(self, group_id, keep_non_orphans=False, keep_orphans=False):
168+
"""
169+
Delete a group trigger
170+
:param group_id: ID of the group trigger to delete
171+
:param keep_non_orphans: if True converts the non-orphan member triggers to standard triggers
172+
:param keep_orphans: if True converts the orphan member triggers to standard triggers
173+
"""
174+
params = {'keepNonOrphans': str(keep_non_orphans).lower(), 'keepOrphans': str(keep_orphans).lower()}
175+
self._delete(self._service_url(['triggers', 'groups', group_id], params=params))
176+
159177
def create_group_member(self, member):
160178
data = self._serialize_object(member)
161179
return Trigger(self._post(self._service_url(['triggers', 'groups', 'members']), data))

hawkular/client.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ def _get_status_url(self):
165165
def tenant(self, tenant_id):
166166
self.tenant_id = tenant_id
167167

168-
def _http(self, url, method, data=None, decoder=None):
168+
def _http(self, url, method, data=None, decoder=None, parse_json=True):
169169
res = None
170170
req = Request(url=url)
171171
req.add_header('Content-Type', 'application/json')
@@ -193,10 +193,13 @@ def _http(self, url, method, data=None, decoder=None):
193193
req.get_method = lambda: method
194194
res = urlopen(req, context=self.context)
195195

196-
if res.getcode() == 200:
197-
data = json.load(reader(res), cls=decoder)
198-
elif res.getcode() == 204:
199-
data = {}
196+
if parse_json:
197+
if res.getcode() == 200:
198+
data = json.load(reader(res), cls=decoder)
199+
elif res.getcode() == 204:
200+
data = {}
201+
else:
202+
data = reader(res).read()
200203

201204
return data
202205

@@ -207,11 +210,11 @@ def _http(self, url, method, data=None, decoder=None):
207210
if res:
208211
res.close()
209212

210-
def _put(self, url, data):
211-
return self._http(url, 'PUT', data)
213+
def _put(self, url, data, parse_json=True):
214+
return self._http(url, 'PUT', data, parse_json=parse_json)
212215

213216
def _delete(self, url):
214-
return self._http(url, 'DELETE')
217+
return self._http(url, 'DELETE', parse_json=False)
215218

216219
def _post(self, url, data):
217220
return self._http(url, 'POST', data)

tests/test_alerts.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@
2222
import os
2323
from tests import base
2424

25+
try:
26+
# Python 3
27+
from urllib.error import HTTPError
28+
except ImportError:
29+
# Fall back to Python 2's urllib2
30+
from urllib2 import HTTPError
31+
2532

2633
class TestAlertsFunctionsBase(unittest.TestCase):
2734
def setUp(self):
@@ -165,6 +172,23 @@ def test_get_trigger_conditions(self):
165172
gc_dids = [c.data_id for c in gc]
166173
self.assertEqual(gc_dids, ['did1', 'did2', 'did3'])
167174

175+
def test_delete_group_trigger(self):
176+
# Create a group trigger
177+
gt = Trigger()
178+
gt.id = 'delete_group_trigger'
179+
gt.name = 'group_trigger_to_delete'
180+
self.client.create_group_trigger(gt)
181+
182+
group_count = len(self.client.list_triggers())
183+
# Delete the created group trigger
184+
self.client.delete_group_trigger('delete_group_trigger')
185+
186+
# Compare number of remaining triggers and query the deleted trigger id
187+
self.assertEqual(len(self.client.list_triggers()), group_count-1)
188+
with self.assertRaises(HTTPError) as e:
189+
self.client.get_trigger('delete_group_trigger')
190+
self.assertEqual(e.getcode(), 404)
191+
168192
def test_create_groups(self):
169193
# Create a group trigger
170194
t = Trigger()
@@ -198,3 +222,12 @@ def test_create_groups(self):
198222
self.assertEqual(len(gcc), 1)
199223
t_m1c = self.client.create_group_member(m1)
200224
self.assertEqual(t_m1c.type, TriggerType.MEMBER)
225+
226+
# Update group trigger
227+
t.enabled = True
228+
t.severity = Severity.MEDIUM
229+
230+
self.client.update_group_trigger(t.id, t)
231+
gt = self.client.get_trigger(t.id)
232+
self.assertEqual(gt.enabled, True)
233+
self.assertEqual(gt.severity, Severity.MEDIUM)

0 commit comments

Comments
 (0)