Skip to content

Commit e4810db

Browse files
author
xigeng
committed
fix is_enabled not work with reload
1 parent 1dc4f30 commit e4810db

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

elastalert/elastalert.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,10 @@ def __init__(self, args):
170170

171171
remove = []
172172
for rule in self.rules:
173-
if not self.init_rule(rule):
173+
if 'is_enabled' in rule and not rule['is_enabled']:
174+
self.disabled_rules.append(rule)
175+
remove.append(rule)
176+
elif not self.init_rule(rule):
174177
remove.append(rule)
175178
list(map(self.rules.remove, remove))
176179

@@ -968,7 +971,7 @@ def run_rule(self, rule, endtime, starttime=None):
968971

969972
def init_rule(self, new_rule, new=True):
970973
''' Copies some necessary non-config state from an exiting rule to a new rule. '''
971-
if not new:
974+
if not new and self.scheduler.get_job(job_id=new_rule['name']):
972975
self.scheduler.remove_job(job_id=new_rule['name'])
973976

974977
try:
@@ -1088,6 +1091,15 @@ def load_rule_changes(self):
10881091
elastalert_logger.info('Rule file %s is now disabled.' % (rule_file))
10891092
# Remove this rule if it's been disabled
10901093
self.rules = [rule for rule in self.rules if rule['rule_file'] != rule_file]
1094+
# Stop job if is running
1095+
if self.scheduler.get_job(job_id=new_rule['name']):
1096+
self.scheduler.remove_job(job_id=new_rule['name'])
1097+
# Append to disabled_rule
1098+
for disabled_rule in self.disabled_rules:
1099+
if disabled_rule['name'] == new_rule['name']:
1100+
break
1101+
else:
1102+
self.disabled_rules.append(new_rule)
10911103
continue
10921104
except EAException as e:
10931105
message = 'Could not load rule %s: %s' % (rule_file, e)
@@ -1106,7 +1118,6 @@ def load_rule_changes(self):
11061118
# Re-enable if rule had been disabled
11071119
for disabled_rule in self.disabled_rules:
11081120
if disabled_rule['name'] == new_rule['name']:
1109-
self.rules.append(disabled_rule)
11101121
self.disabled_rules.remove(disabled_rule)
11111122
break
11121123

elastalert/loaders.py

100644100755
Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,6 @@ def load(self, conf, args=None):
117117
if not rule:
118118
logging.error('Invalid rule file skipped: %s' % rule_file)
119119
continue
120-
# By setting "is_enabled: False" in rule file, a rule is easily disabled
121-
if 'is_enabled' in rule and not rule['is_enabled']:
122-
continue
123120
if rule['name'] in names:
124121
raise EAException('Duplicate rule named %s' % (rule['name']))
125122
except EAException as e:

0 commit comments

Comments
 (0)