Skip to content

Commit

Permalink
Merge pull request #251 from beer-garden/issue/647
Browse files Browse the repository at this point in the history
Implementation of file-based triggers
  • Loading branch information
hazmat345 authored Nov 10, 2020
2 parents d448db6 + 4803f7f commit a85d0c4
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 2 deletions.
48 changes: 47 additions & 1 deletion brewtils/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
"DateTrigger",
"CronTrigger",
"IntervalTrigger",
"FileTrigger",
"Garden",
"Operation",
]
Expand Down Expand Up @@ -963,7 +964,7 @@ def __repr__(self):


class Job(BaseModel):
TRIGGER_TYPES = {"interval", "date", "cron"}
TRIGGER_TYPES = {"interval", "date", "cron", "file"}
STATUS_TYPES = {"RUNNING", "PAUSED"}
schema = "JobSchema"

Expand Down Expand Up @@ -1170,6 +1171,51 @@ def scheduler_kwargs(self):
return kwargs


class FileTrigger(BaseModel):
schema = "FileTriggerSchema"

def __init__(
self,
pattern=None,
path=None,
recursive=None,
callbacks=None,
):
self.pattern = pattern
self.path = path
self.recursive = recursive
self.callbacks = callbacks

def __str__(self):
return repr(self)

def __repr__(self):
return "<FileTrigger: %s %s %s %s>" % (
self.pattern,
self.path,
self.recursive,
self.callbacks,
)

@property
def scheduler_attributes(self):
return ["pattern", "path", "recursive", "callbacks"]

@property
def scheduler_kwargs(self):
kwargs = {key: getattr(self, key) for key in self.scheduler_attributes}
kwargs.update(
{
"pattern": self.pattern,
"path": self.path,
"recursive": self.recursive,
"callbacks": self.callbacks,
}
)

return kwargs


class Garden(BaseModel):
schema = "GardenSchema"

Expand Down
1 change: 1 addition & 0 deletions brewtils/schema_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class SchemaParser(object):
"CronTriggerSchema": brewtils.models.CronTrigger,
"DateTriggerSchema": brewtils.models.DateTrigger,
"EventSchema": brewtils.models.Event,
"FileTriggerSchema": brewtils.models.FileTrigger,
"GardenSchema": brewtils.models.Garden,
"InstanceSchema": brewtils.models.Instance,
"IntervalTriggerSchema": brewtils.models.IntervalTrigger,
Expand Down
12 changes: 11 additions & 1 deletion brewtils/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
"DateTriggerSchema",
"IntervalTriggerSchema",
"CronTriggerSchema",
"FileTriggerSchema",
"GardenSchema",
"OperationSchema",
]
Expand Down Expand Up @@ -377,6 +378,13 @@ class CronTriggerSchema(BaseSchema):
jitter = fields.Int(allow_none=True)


class FileTriggerSchema(BaseSchema):
pattern = fields.List(fields.Str(), allow_none=True)
path = fields.Str(allow_none=True)
recursive = fields.Bool(allow_none=True)
callbacks = fields.Dict(fields.Bool(), allow_none=True)


class GardenSchema(BaseSchema):
id = fields.Str(allow_none=True)
name = fields.Str(allow_none=True)
Expand All @@ -394,7 +402,7 @@ class JobSchema(BaseSchema):
trigger_type = fields.Str(allow_none=True)
trigger = ModelField(
type_field="trigger_type",
allowed_types=["interval", "date", "cron"],
allowed_types=["interval", "date", "cron", "file"],
allow_none=True,
)
request_template = fields.Nested("RequestTemplateSchema", allow_none=True)
Expand Down Expand Up @@ -426,6 +434,7 @@ class OperationSchema(BaseSchema):
"CronTrigger": CronTriggerSchema,
"DateTrigger": DateTriggerSchema,
"Event": EventSchema,
"FileTrigger": FileTriggerSchema,
"Garden": GardenSchema,
"Instance": InstanceSchema,
"IntervalTrigger": IntervalTriggerSchema,
Expand All @@ -446,5 +455,6 @@ class OperationSchema(BaseSchema):
"interval": IntervalTriggerSchema,
"date": DateTriggerSchema,
"cron": CronTriggerSchema,
"file": FileTriggerSchema,
}
)

0 comments on commit a85d0c4

Please sign in to comment.