def execute(self, cmd_args): print('Exporting schedulation to file.') filename = cmd_args.get('--filename') or 'schedulation.yaml' config = self.config # get all schedules session = SqliteSession.create(config) schedules = session.query(Schedule).group_by(Schedule.name).all() session.close() job_list = [] for s in schedules: d = dict() d['id'] = s.id d['name'] = s.name d['description'] = s.description d['cronexp'] = s.cronexp d['enabled'] = s.enabled d['parameters'] = json.loads(s.parameters) job_list.append(d) write_yaml(filename, job_list) print(f'Export completed, schedulation saved to {filename}.')
def load_job_by_id(self, schedule_id): """Loads a schedulation from database and generates the related <job>. """ config = self.config # get all enabled schedules session = SqliteSession.create(config) sched = session.query(Schedule).filter( Schedule.id == schedule_id).one() session.close() return Job(sched)
def load_jobs(self): """Loads <job> objects from database schedules. """ config = self.config # get all enabled schedules session = SqliteSession.create(config) schedules = session.query(Schedule).filter( Schedule.enabled == True).all() session.close() jobs = [Job(sched) for sched in schedules] return jobs
def execute(self, request): config = self.config response = Response() follow_up = FollowUp(None) data = {} try: # get schedulation id args = request.data job_id = args['job_id'] # get all schedules session = SqliteSession.create(config) job = session.query(Schedule).filter(Schedule.id == job_id).one() session.close() job_dict = { 'id': job.id, 'name': job.name, 'description': job.description, 'cronexp': job.cronexp, 'enabled': job.enabled, 'parameters': job.parameters, } data['Result'] = job_dict except Exception: response.set_status(StatusCode.STATUS_ERROR) else: response.set_status(StatusCode.STATUS_OK) finally: response.set_data(data) return response, follow_up
def execute(self, request): config = self.config response = Response() follow_up = FollowUp(None) data = {} try: # get all schedules session = SqliteSession.create(config) schedules = session.query(Schedule).group_by(Schedule.name).all() session.close() job_list = [] for s in schedules: d = {} d['id'] = s.id d['name'] = s.name d['description'] = s.description d['cronexp'] = s.cronexp d['enabled'] = s.enabled job_list.append(d) data['Result'] = job_list except Exception: response.set_status(StatusCode.STATUS_ERROR) else: response.set_status(StatusCode.STATUS_OK) finally: response.set_data(data) return response, follow_up
def execute(self, cmd_args): filename = cmd_args.get('--filename') or 'schedulation.yaml' print(f'Importing schedulation from {filename}.') config = self.config # read from file schedulation = read_yaml(filename) try: # init DB session session = SqliteSession.create(config) # CLEAN TABLE BEFORE LOADING TASKS! session.query(Schedule).delete() for sch in schedulation: print(f'Importing job {sch["name"]}.') # create job object job = Schedule(name=sch['name'], description=sch['description'], cronexp=sch['cronexp'], parameters=json.dumps(sch['parameters']), enabled=sch['enabled']) session.add(job) session.commit() except Exception as err: print(f'Impossible to import schedulation: {str(err)}.') else: print('Import completed.') finally: session.close()
def execute(self, request): config = self.config response = Response() follow_up = FollowUp('RELOAD') # create db session session = SqliteSession.create(config) try: # get schedulation data from the user job_data = request.data # create and add job object job = Schedule(name=job_data['name'], description=job_data['description'], cronexp=job_data['cronexp'], parameters=job_data['parameters'], enabled=job_data['enabled']) # save session.add(job) session.commit() except Exception as err: response.set_status(StatusCode.STATUS_ERROR) msg = f'Impossible to add the job: {str(err)}.' response.set_data({'msg': msg}) else: response.set_status(StatusCode.STATUS_OK) response.set_data({'msg': 'Job has been added.'}) finally: session.close() return response, follow_up
def execute(self, request): config = self.config # get schedulation id args = request.data job_id = args['job_id'] response = Response() follow_up = FollowUp('RELOAD') # create db session session = SqliteSession.create(config) try: # enable sched = session.query(Schedule).filter(Schedule.id == job_id).one() sched.enabled = True # save session.add(sched) session.commit() except Exception: response.set_status(StatusCode.STATUS_ERROR) response.set_data({'msg': 'Impossible to enable the job.'}) else: response.set_status(StatusCode.STATUS_OK) response.set_data({'msg': 'Job has been enabled.'}) finally: session.close() return response, follow_up