def list(ctx, include_all, verbose): """List scheduled jobs""" include_deleted = None if include_all else False scheduled_jobs = get_scheduled_jobs(include_deleted=include_deleted) ctx.obj["headers"] = (SCHEDULED_JOB_VERBOSE_HEADERS if verbose else SCHEDULED_JOB_HEADERS) _click_echo_jobs(scheduled_jobs)
def delete(name, force): """Delete scheduled job""" if not force: to_delete = get_scheduled_jobs(name_pattern=name) if not to_delete: click.echo("no jobs found matching the given name pattern") return click.echo("the following jobs will be deleted:") _click_echo_jobs(to_delete) click.confirm("are you sure?", abort=True) delete_scheduled_job(name)
def get_dags(self): # type: () -> List[DAG] logger.debug("about to get scheduler job dags from dbnd db") dags = [] jobs = get_scheduled_jobs() validated_jobs = [ s["DbndScheduledJob"] for s in jobs if not s["DbndScheduledJob"].get("validation_errors") ] for job in validated_jobs: if "schedule_interval" not in job: continue dag = self.job_to_dag(job) dags.append(dag) return dags
def build_delta(self): from_file = self.read_config(self.config_file) file_modified_time = make_aware( datetime.utcfromtimestamp(os.path.getmtime(self.config_file))) if not from_file: from_file = [] from_file = self.load_and_validate(from_file) from_db = [ s["DbndScheduledJob"] for s in get_scheduled_jobs(from_file_only=True, include_deleted=None) ] return self.delta(from_db, from_file, file_modified_time)
def get_scheduled_jobs(self): # type: () -> List[dict] return [ s["DbndScheduledJob"] for s in get_scheduled_jobs() if not s["DbndScheduledJob"].get("validation_errors") ]