From d0e9ace151a363446bec59bb57881ab694029f43 Mon Sep 17 00:00:00 2001 From: Pranesh Pandurangan Date: Thu, 19 Jun 2014 03:07:04 -0700 Subject: [PATCH] Separate out adding and deleting repair scripts Currently, any change in the repair cfg is considered as a new react script being registered. To change that add a _get_repairs function, and form a list of audits to create/nuke. Change-Id: I5c039f0fee3ef79e864493ace9cde366dc87a381 --- entropy/engine.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/entropy/engine.py b/entropy/engine.py index 799f623..472f027 100644 --- a/entropy/engine.py +++ b/entropy/engine.py @@ -118,7 +118,8 @@ class Engine(object): self.futures.append(self._serializer) # Start react scripts. - self.futures.extend(self.start_react_scripts()) + self.futures.extend(self.start_react_scripts( + self._get_react_scripts())) scheduler = self.executor.submit(self.schedule) self.futures.append(scheduler) @@ -236,7 +237,19 @@ class Engine(object): def repair_modified(self): LOG.info('Repair configuration changed') - self.futures.extend(self.start_react_scripts()) + repairs = self._get_react_scripts() + new_repairs = {} + repairs_to_delete = [] + for repair in repairs: + if repair not in self.running_repairs: + new_repairs[repair] = repairs[repair] + if self.running_repairs: + for repair in self.running_repairs: + if repair not in repairs: + repairs_to_delete.append(repair) + LOG.info('Will add new repairs: %s', new_repairs) + LOG.info('Will nuke repairs: %s', repairs_to_delete) + self.futures.extend(self.start_react_scripts(new_repairs)) def start_watchdog(self): LOG.debug('Watchdog mapping is: ', self._watchdog_event_fn) @@ -269,8 +282,11 @@ class Engine(object): LOG.exception("Could not run all audits in %s at %s", audit_list, execution_time) - def start_react_scripts(self): + def _get_react_scripts(self): repairs = self._backend_driver.get_repairs() + return repairs + + def start_react_scripts(self, repairs): futures = [] if repairs: for script in repairs: