diff --git a/action_plugins/uptime.py b/action_plugins/uptime.py index 88f3f53a763fe274101ff5f5ab23d4b1e9220689..7ff1b6a174e78b4f414301bfb25595f0a7c4c3bd 100644 --- a/action_plugins/uptime.py +++ b/action_plugins/uptime.py @@ -141,6 +141,10 @@ class ActionModule(ActionBase): self._request('checks', check, 'PUT') + def _deleteCheck(self, check): + self._request('checks/' + check.get('_id'), None, 'DELETE') + + def _updateCheck(self, existing, check): changed = False @@ -148,6 +152,8 @@ class ActionModule(ActionBase): existing['pollerParams'] = {} for key, value in check.iteritems(): + if key == 'enabled': + continue if key in self.pollerParams: existing[key] = existing['pollerParams'].get(key, '') if existing[key] is None: @@ -165,9 +171,9 @@ class ActionModule(ActionBase): self._request('checks/' + existing.get('_id'), existing, 'POST') - def _findExistingCheck(self, url): + def _findExistingCheck(self, url, type): for check in self.checks: - if (check.get('url') == url): + if (check.get('url') == url and check.get('type') == type): return check return False @@ -184,6 +190,7 @@ class ActionModule(ActionBase): def _defaultCheck(self): return { + 'enabled': True, 'interval': 60000, 'maxTime': 1500, 'isPaused': False, @@ -202,6 +209,8 @@ class ActionModule(ActionBase): check[key] = uptime[key] if 'name' in uptime: check['name'] = uptime['name'] + if 'type' in uptime: + check['type'] = uptime['type'] if 'tags' in uptime: check['tags'] = uptime['tags'] if 'pollerParams' in uptime: @@ -245,9 +254,13 @@ class ActionModule(ActionBase): def _processItem(self, item, field): url = self._buildUrl(item, field) check = self._buildCheck(item, url) - existing = self._findExistingCheck(url) + existing = self._findExistingCheck(url, check['type']) if existing: - self._updateCheck(existing, check) + if check['enabled']: + self._updateCheck(existing, check) + else: + self._deleteCheck(existing) else: - self._createCheck(check) + if check['enabled']: + self._createCheck(check)