diff --git a/orchestrator/activities/formatters.py b/orchestrator/activities/formatters.py index 7b4dac0..376ec44 100644 --- a/orchestrator/activities/formatters.py +++ b/orchestrator/activities/formatters.py @@ -119,6 +119,31 @@ class Formatters(BaseActivity): return slot_config + def compare_configs(self, + schedules: dict[str, Any], current_schedules: dict[str, Any], + to_update: dict[str, Any], to_create: dict[str, Any], + namespace: str): + """ + Compares the schedules and current schedules, and updates the + to_update and to_create dictionaries. + """ + + for schedule_name, schedule in schedules.items(): + if schedule_name in current_schedules: + old_config = current_schedules[schedule_name]['data'] + + self.logger.debug(f"Comparing {schedule_name}:") + self.logger.debug(json.dumps( + old_config, indent=4, sort_keys=True)) + self.logger.debug(json.dumps( + schedule, indent=4, sort_keys=True)) + + if schedule != old_config: + to_update[namespace][schedule_name] = schedule + + elif schedule_name not in current_schedules: + to_create[namespace][schedule_name] = schedule + @activity.defn(name="create_schedule_config") async def create_schedule_config(self, input_data: dict[str, Any]) -> dict[str, Any]: @@ -158,21 +183,8 @@ class Formatters(BaseActivity): for namespace, schedules in schedule_config.items(): current_schedules = current_schedule_config.get(namespace, {}) - for schedule_name, schedule in schedules.items(): - if schedule_name in current_schedules: - old_config = current_schedules[schedule_name]['data'] - - self.logger.debug(f"Comparing {schedule_name}:") - self.logger.debug(json.dumps( - old_config, indent=4, sort_keys=True)) - self.logger.debug(json.dumps( - schedule, indent=4, sort_keys=True)) - - if schedule != old_config: - to_update[namespace][schedule_name] = schedule - - elif schedule_name not in current_schedules: - to_create[namespace][schedule_name] = schedule + self.compare_configs( + schedules, current_schedules, to_update, to_create, namespace) for namespace, schedules in current_schedule_config.items(): for schedule_name in schedules: