Ejemplo n.º 1
0
    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}.')
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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()
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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