Skip to content

Commit 01a21ed

Browse files
committed
Add support for update group trigger definition in Hawkular alerts
Added a test to `test_create_groups`. Also, now handles JSON decode errors when the request has no response body (only status code).
1 parent c29d801 commit 01a21ed

3 files changed

Lines changed: 27 additions & 9 deletions

File tree

hawkular/alerts.py

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

158+
def update_group_trigger(self, group_id, trigger):
159+
"""
160+
:param group_id: group trigger id to be updated
161+
:param trigger: Trigger object, the group trigger to be updated
162+
"""
163+
data = self._serialize_object(trigger)
164+
self._put(self._service_url(['triggers', 'groups', group_id]), data, parse_json=False)
165+
158166
def create_group_member(self, member):
159167
data = self._serialize_object(member)
160168
return Trigger(self._post(self._service_url(['triggers', 'groups', 'members']), data))

hawkular/client.py

Lines changed: 10 additions & 9 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')
@@ -192,12 +192,13 @@ def _http(self, url, method, data=None, decoder=None):
192192
try:
193193
req.get_method = lambda: method
194194
res = urlopen(req, context=self.context)
195-
196-
if res.getcode() == 200:
197-
data = json.load(reader(res), cls=decoder)
198-
elif res.getcode() == 204:
199-
data = {}
200-
195+
if parse_json:
196+
if res.getcode() == 200:
197+
data = json.load(reader(res), cls=decoder)
198+
elif res.getcode() == 204:
199+
data = {}
200+
else:
201+
data = reader(res).read()
201202
return data
202203

203204
except Exception as e:
@@ -207,8 +208,8 @@ def _http(self, url, method, data=None, decoder=None):
207208
if res:
208209
res.close()
209210

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

213214
def _delete(self, url):
214215
return self._http(url, 'DELETE')

tests/test_alerts.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,12 @@ def test_create_groups(self):
158158
self.assertEqual(len(gcc), 1)
159159
t_m1c = self.client.create_group_member(m1)
160160
self.assertEqual(t_m1c.type, TriggerType.MEMBER)
161+
162+
# Update group trigger
163+
t.enabled = True
164+
t.severity = Severity.MEDIUM
165+
166+
self.client.update_group_trigger(t.id, t)
167+
gt = self.client.get_trigger(t.id)
168+
self.assertEqual(gt.enabled, True)
169+
self.assertEqual(gt.severity, Severity.MEDIUM)

0 commit comments

Comments
 (0)