def start_schedule(self, instance, external_schedule): check.inst_param(instance, "instance", DagsterInstance) check.inst_param(external_schedule, "external_schedule", ExternalSchedule) schedule_origin_id = external_schedule.get_origin_id() # If the cron job already exists, remove it. This prevents duplicate entries. # Then, add a new cron job to the cron tab. if self.running_schedule_count(instance, external_schedule.get_origin_id()) > 0: self._end_cron_job(instance, schedule_origin_id) self._start_cron_job(instance, external_schedule) # Verify that the cron job is running running_schedule_count = self.running_schedule_count( instance, schedule_origin_id) if running_schedule_count == 0: raise DagsterSchedulerError( "Attempted to write cron job for schedule " "{schedule_name}, but failed. " "The scheduler is not running {schedule_name}.".format( schedule_name=external_schedule.name)) elif running_schedule_count > 1: raise DagsterSchedulerError( "Attempted to write cron job for schedule " "{schedule_name}, but duplicate cron jobs were found. " "There are {running_schedule_count} jobs running for the schedule." "To resolve, run `dagster schedule up`, or edit the cron tab to " "remove duplicate schedules".format( schedule_name=external_schedule.name, running_schedule_count=running_schedule_count, ))
def start_schedule(self, instance, repository_name, schedule_name): check.inst_param(instance, 'instance', DagsterInstance) check.str_param(repository_name, 'repository_name') check.str_param(schedule_name, 'schedule_name') schedule = self._get_schedule_by_name(instance, repository_name, schedule_name) # If the cron job already exists, remove it. This prevents duplicate entries. # Then, add a new cron job to the cron tab. if self.running_schedule_count(repository_name, schedule.name) > 0: self._end_cron_job(instance, repository_name, schedule) self._start_cron_job(instance, repository_name, schedule) # Verify that the cron job is running running_schedule_count = self.running_schedule_count(repository_name, schedule.name) if running_schedule_count == 0: raise DagsterSchedulerError( "Attempted to write cron job for schedule " "{schedule_name}, but failed. " "The scheduler is not running {schedule_name}.".format(schedule_name=schedule.name) ) elif running_schedule_count > 1: raise DagsterSchedulerError( "Attempted to write cron job for schedule " "{schedule_name}, but duplicate cron jobs were found. " "There are {running_schedule_count} jobs running for the schedule." "To resolve, run `dagster schedule up`, or edit the cron tab to " "remove duplicate schedules".format( schedule_name=schedule.name, running_schedule_count=running_schedule_count ) )
def wipe(self, instance): # Note: This method deletes schedules from ALL repositories check.inst_param(instance, 'instance', DagsterInstance) self._api.delete_collection_namespaced_cron_job(namespace=self._namespace) time.sleep(self.grace_period_seconds) # Verify that no cron jobs are running running_cron_job_count = len(self.get_all_cron_jobs()) if running_cron_job_count != 0: raise DagsterSchedulerError( 'Attempted to delete all K8s CronJobs but failed. There are ' 'still {} running schedules'.format(running_cron_job_count) )
def stop_schedule(self, instance, schedule_origin_id): check.inst_param(instance, "instance", DagsterInstance) check.str_param(schedule_origin_id, "schedule_origin_id") if self.get_cron_job(schedule_origin_id): self._end_cron_job(schedule_origin_id=schedule_origin_id) cron_job = self.get_cron_job(schedule_origin_id) if cron_job: schedule = self._get_schedule_state(instance, schedule_origin_id) raise DagsterSchedulerError( "Attempted to remove existing K8s CronJob for schedule " "{schedule_name}, but failed. Schedule is still running.". format(schedule_name=schedule.name))
def start_schedule(self, instance, external_schedule): check.inst_param(instance, "instance", DagsterInstance) check.inst_param(external_schedule, "external_schedule", ExternalSchedule) self._start_cron_job(external_schedule) # Verify that the cron job is running cron_job = self.get_cron_job(schedule_origin_id=external_schedule.get_external_origin_id()) if not cron_job: raise DagsterSchedulerError( "Attempted to add K8s CronJob for schedule {schedule_name}, but failed. " "The schedule {schedule_name} is not running.".format( schedule_name=external_schedule.name ) ) return
def stop_schedule(self, instance, schedule_origin_id): check.inst_param(instance, "instance", DagsterInstance) check.str_param(schedule_origin_id, "schedule_origin_id") schedule = self._get_schedule_state(instance, schedule_origin_id) self._end_cron_job(instance, schedule_origin_id) # Verify that the cron job has been removed running_schedule_count = self.running_schedule_count( instance, schedule_origin_id) if running_schedule_count > 0: raise DagsterSchedulerError( "Attempted to remove existing cron job for schedule " "{schedule_name}, but failed. " "There are still {running_schedule_count} jobs running for the schedule." .format(schedule_name=schedule.name, running_schedule_count=running_schedule_count))
def stop_schedule(self, instance, repository_name, schedule_name): check.inst_param(instance, 'instance', DagsterInstance) check.str_param(repository_name, 'repository_name') check.str_param(schedule_name, 'schedule_name') schedule = self._get_schedule_by_name(instance, repository_name, schedule_name) self._end_cron_job(instance, repository_name, schedule) # Verify that the cron job has been removed running_schedule_count = self.running_schedule_count(repository_name, schedule.name) if running_schedule_count > 0: raise DagsterSchedulerError( "Attempted to remove existing cron job for schedule " "{schedule_name}, but failed. " "There are still {running_schedule_count} jobs running for the schedule.".format( schedule_name=schedule.name, running_schedule_count=running_schedule_count ) )
def start_schedule(self, instance, external_schedule): check.inst_param(instance, 'instance', DagsterInstance) check.inst_param(external_schedule, 'external_schedule', ExternalSchedule) schedule_origin_id = external_schedule.get_origin_id() should_patch_schedule = (True if self.get_cron_job( schedule_origin_id=schedule_origin_id) else False) self._start_cron_job(external_schedule, should_patch_schedule) # Verify that the cron job is running cron_job = self.get_cron_job(schedule_origin_id) if not cron_job: raise DagsterSchedulerError( "Attempted to add K8s CronJob for schedule {schedule_name}, but failed. " "The schedule {schedule_name} is not running.".format( schedule_name=external_schedule.name)) return