How to use the brewtils.models.Job function in brewtils

To help you get started, we’ve selected a few brewtils examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github beer-garden / beer-garden / src / app / beer_garden / db / sql / jobstore.py View on Github external
def update_job(self, job: APJob) -> None:
        """Update the next_run_time for the job."""
        db_job = query_unique(Job, id=job.id)
        db_job.next_run_time = job.next_run_time
        update(db_job)
github beer-garden / beer-garden / src / app / beer_garden / db / sql / jobstore.py View on Github external
def _get_jobs(self, conditions=None):
        jobs = []
        failed_jobs = []

        for job in query(Job, filter_params=conditions, order_by="next_run_time"):
            try:
                jobs.append(construct_job(job, self._scheduler, self._alias))
            except Exception as ex:
                failed_jobs.append(job)
                logger.exception(
                    f"Exception while restoring job {job.id}, about to remove: {ex}"
                )

        # Remove all the jobs we failed to restore
        for job in failed_jobs:
            delete(job)

        return jobs
github beer-garden / beer-garden / src / app / beer_garden / db / mongo / jobstore.py View on Github external
def _get_jobs(self, conditions=None):
        jobs = []
        failed_jobs = []

        for job in query(Job, filter_params=conditions, order_by="next_run_time"):
            try:
                jobs.append(construct_job(job, self._scheduler, self._alias))
            except Exception as ex:
                failed_jobs.append(job)
                logger.exception(
                    f"Exception while restoring job {job.id}, about to remove: {ex}"
                )

        # Remove all the jobs we failed to restore
        for job in failed_jobs:
            delete(job)

        return jobs
github beer-garden / beer-garden / src / app / beer_garden / db / mongo / models.py View on Github external
meta = {
        "auto_create_index": False,
        "index_background": True,
        "indexes": [
            {"name": "next_run_time_index", "fields": ["next_run_time"], "sparse": True}
        ],
    }

    TRIGGER_MODEL_MAPPING = {
        "date": DateTrigger,
        "cron": CronTrigger,
        "interval": IntervalTrigger,
    }

    name = StringField(required=True)
    trigger_type = StringField(required=True, choices=BrewtilsJob.TRIGGER_TYPES)
    trigger = GenericEmbeddedDocumentField(choices=list(TRIGGER_MODEL_MAPPING.values()))
    request_template = EmbeddedDocumentField("RequestTemplate", required=True)
    misfire_grace_time = IntField()
    coalesce = BooleanField(default=True)
    next_run_time = DateTimeField()
    success_count = IntField(required=True, default=0, min_value=0)
    error_count = IntField(required=True, default=0, min_value=0)
    status = StringField(
        required=True, choices=BrewtilsJob.STATUS_TYPES, default="RUNNING"
    )
    max_instances = IntField(default=3, min_value=1)

    def clean(self):
        """Validate before saving to the database"""

        if self.trigger_type not in self.TRIGGER_MODEL_MAPPING:
github beer-garden / beer-garden / src / app / beer_garden / db / mongo / models.py View on Github external
"date": DateTrigger,
        "cron": CronTrigger,
        "interval": IntervalTrigger,
    }

    name = StringField(required=True)
    trigger_type = StringField(required=True, choices=BrewtilsJob.TRIGGER_TYPES)
    trigger = GenericEmbeddedDocumentField(choices=list(TRIGGER_MODEL_MAPPING.values()))
    request_template = EmbeddedDocumentField("RequestTemplate", required=True)
    misfire_grace_time = IntField()
    coalesce = BooleanField(default=True)
    next_run_time = DateTimeField()
    success_count = IntField(required=True, default=0, min_value=0)
    error_count = IntField(required=True, default=0, min_value=0)
    status = StringField(
        required=True, choices=BrewtilsJob.STATUS_TYPES, default="RUNNING"
    )
    max_instances = IntField(default=3, min_value=1)

    def clean(self):
        """Validate before saving to the database"""

        if self.trigger_type not in self.TRIGGER_MODEL_MAPPING:
            raise ModelValidationError(
                f"Cannot save job. No mongo model for trigger type {self.trigger_type}"
            )

        trigger_class = self.TRIGGER_MODEL_MAPPING.get(self.trigger_type)
        if not isinstance(self.trigger, trigger_class):
            raise ModelValidationError(
                f"Cannot save job. Expected trigger type {self.trigger_type} but "
                f"actual type was {type(self.trigger)}"
github beer-garden / beer-garden / src / app / beer_garden / db / sql / jobstore.py View on Github external
def lookup_job(self, job_id):
        """Get job from mongo, convert it to an apscheduler Job.

        Args:
            job_id: The ID of the job to get.

        Returns:
            An apscheduler job or None.
        """
        return construct_job(query_unique(Job, id=job_id), self._scheduler, self._alias)
github beer-garden / beer-garden / src / app / beer_garden / db / db_models.py View on Github external
"date": brewtils.models.DateTrigger,
        "cron": brewtils.models.CronTrigger,
        "interval": brewtils.models.IntervalTrigger,
    }

    name = FieldBase(field_type="STRING", required=True)
    trigger_type = FieldBase(field_type="STRING", required=True, choices=BrewtilsJob.TRIGGER_TYPES)
    request_template = FieldBase(field_type=TRIGGER_MODEL_MAPPING, required=True, choices=list(TRIGGER_MODEL_MAPPING.values()))
    request_template = FieldBase(field_type=brewtils.models.RequestTemplate, required=True)
    misfire_grace_time = FieldBase(field_type="INT")
    coalesce = FieldBase(field_type="BOOLEAN",default=True)
    next_run_time = FieldBase(field_type="DATE")
    success_count = FieldBase(field_type="INT", required=True, default=0, min_value=0)
    error_count = FieldBase(field_type="INT", required=True, default=0, min_value=0)
    status = FieldBase(field_type="STRING",
        required=True, choices=BrewtilsJob.STATUS_TYPES, default="RUNNING"
    )
    max_instances = FieldBase(field_type="INT", default=3, min_value=1)

    def clean(self):
        """Validate before saving to the database"""

        if self.trigger_type not in self.TRIGGER_MODEL_MAPPING:
            raise ModelValidationError(
                f"Cannot save job. No mongo model for trigger type {self.trigger_type}"
            )

        trigger_class = self.TRIGGER_MODEL_MAPPING.get(self.trigger_type)
        if not isinstance(self.trigger, trigger_class):
            raise ModelValidationError(
                f"Cannot save job. Expected trigger type {self.trigger_type} but "
                f"actual type was {type(self.trigger)}"
github beer-garden / beer-garden / src / app / beer_garden / db / db_models.py View on Github external
year = FieldBase(field_type="STRING", default="*")
    month = FieldBase(field_type="STRING", default="1")
    day = FieldBase(field_type="STRING", default="1")
    week = FieldBase(field_type="STRING", default="*")
    day_of_week = FieldBase(field_type="STRING", default="*")
    hour = FieldBase(field_type="STRING", default="0")
    minute = FieldBase(field_type="STRING", default="0")
    second = FieldBase(field_type="STRING", default="0")
    start_date = FieldBase(field_type="DATE")
    end_date = FieldBase(field_type="DATE")
    timezone = FieldBase(field_type="STRING", default="utc", choices=pytz.all_timezones)
    jitter = FieldBase(field_type="INT")

class Job:
    brewtils_model = brewtils.models.Job

    TRIGGER_MODEL_MAPPING = {
        "date": brewtils.models.DateTrigger,
        "cron": brewtils.models.CronTrigger,
        "interval": brewtils.models.IntervalTrigger,
    }

    name = FieldBase(field_type="STRING", required=True)
    trigger_type = FieldBase(field_type="STRING", required=True, choices=BrewtilsJob.TRIGGER_TYPES)
    request_template = FieldBase(field_type=TRIGGER_MODEL_MAPPING, required=True, choices=list(TRIGGER_MODEL_MAPPING.values()))
    request_template = FieldBase(field_type=brewtils.models.RequestTemplate, required=True)
    misfire_grace_time = FieldBase(field_type="INT")
    coalesce = FieldBase(field_type="BOOLEAN",default=True)
    next_run_time = FieldBase(field_type="DATE")
    success_count = FieldBase(field_type="INT", required=True, default=0, min_value=0)
    error_count = FieldBase(field_type="INT", required=True, default=0, min_value=0)
github beer-garden / beer-garden / src / app / beer_garden / db / sql / api.py View on Github external
logger = logging.getLogger(__name__)

ModelType = Union[
    Type[brewtils.models.Command],
    Type[brewtils.models.Instance],
    Type[brewtils.models.Job],
    Type[brewtils.models.Request],
    Type[brewtils.models.RequestTemplate],
    Type[brewtils.models.System],
    Type[brewtils.models.Garden],
]

ModelItem = Union[
    brewtils.models.Command,
    brewtils.models.Instance,
    brewtils.models.Job,
    brewtils.models.Request,
    brewtils.models.RequestTemplate,
    brewtils.models.System,
    brewtils.models.Garden,
]

_model_map = beer_garden.db.sql.models.schema_mapping

engine = None
Session = None


def from_brewtils(obj: ModelItem) -> SqlModel:
    """Convert an item from its Brewtils model to its  one

    Args:
github beer-garden / beer-garden / src / app / beer_garden / db / mongo / jobstore.py View on Github external
def lookup_job(self, job_id):
        """Get job from mongo, convert it to an apscheduler Job.

        Args:
            job_id: The ID of the job to get.

        Returns:
            An apscheduler job or None.
        """
        return construct_job(query_unique(Job, id=job_id), self._scheduler, self._alias)