# Path: chaosmonkey/engine/cme_manager.py
# class CMEManager:
#     def __init__(self):
#     def configure(self, scheduler, sql_store, planners_store, attacks_store):
#     def scheduler(self):
#     def attacks_store(self):
#     def planners_store(self):
#     def sql_store(self):
#     def get_executors(self, executed=False):
#     def get_executor(self, executor_id):
#     def get_executors_for_plan(self, plan_id):
#     def update_executor_trigger(self, executor_id, trigger):
#     def remove_executor(self, executor_id):
#     def add_executor(self, date, name, attack_config, plan_id):
#     def get_attack_list(self):
#     def get_planner_list(self):
#     def execute_plan(self, name, planner_config, attack_config):
#     def add_plan(self, name):
#     def get_plan(self, plan_id):
#     def get_plans(self, show_all=None):
#     def delete_plan(self, plan_id):
#     def _job_to_executor(job):


from chaosmonkey.engine.cme_manager import manager
    example = None  # must override

    def __init__(self, name):
        self.name = name

    def plan(self, planner_config, attack_config):
        """
        Plan the jobs.
        This method should use the config to schedule jobs based on the
        configuration for the planner

        :param planner_config:    configuration related to the scheduler
        :param attack_config:   configuration related to the attack
        """
        raise NotImplementedError("Plans should implement this!")

    @staticmethod
    def add_plan(name):
        return manager.add_plan(name)

    @staticmethod
    def _add_executor(date, name, attack_config, plan_id):
        """
        Add a job to the global scheduler

        :param date: date to execute the job
        :param name: job name
        :param attack_config: configuration related to the attack
        """
        date_timezone = manager.scheduler.timezone.localize(date)

# Path: chaosmonkey/engine/cme_manager.py
# class CMEManager:
#     def __init__(self):
#     def configure(self, scheduler, sql_store, planners_store, attacks_store):
#     def scheduler(self):
#     def attacks_store(self):
#     def planners_store(self):
#     def sql_store(self):
#     def get_executors(self, executed=False):
#     def get_executor(self, executor_id):
#     def get_executors_for_plan(self, plan_id):
#     def update_executor_trigger(self, executor_id, trigger):
#     def remove_executor(self, executor_id):
#     def add_executor(self, date, name, attack_config, plan_id):
#     def get_attack_list(self):
#     def get_planner_list(self):
#     def execute_plan(self, name, planner_config, attack_config):
#     def add_plan(self, name):
#     def get_plan(self, plan_id):
#     def get_plans(self, show_all=None):
#     def delete_plan(self, plan_id):
#     def _job_to_executor(job):


# Path: chaosmonkey/planners/planner.py
from chaosmonkey.engine.cme_manager import manager

    example = None  # must override

    def __init__(self, name):
        self.name = name

    def plan(self, planner_config, attack_config):
        """
        Plan the jobs.
        This method should use the config to schedule jobs based on the
        configuration for the planner

        :param planner_config:    configuration related to the scheduler
        :param attack_config:   configuration related to the attack
        """
        raise NotImplementedError("Plans should implement this!")

    @staticmethod
    def add_plan(name):
        return manager.add_plan(name)

    @staticmethod
    def _add_executor(date, name, attack_config, plan_id):
        """
        Add a job to the global scheduler

        :param date: date to execute the job
        :param name: job name
        :param attack_config: configuration related to the attack
        """
        date_timezone = manager.scheduler.timezone.localize(date)

        manager.add_executor(date_timezone, name, attack_config, plan_id)