This module implements a time-based job scheduler. Every job will execute a request to the hive with a predefined ingrid message payload.
docker pull registry.goingrid.io/services/cron:v0.1.0
The cron service accepts no properties.
The standard control Ingrid-Mode=execution
is automatically added to each job.
Logging every minute (config.json)
{
"jobs": [
{
"name": "logging",
"schedule": "@every 1m",
"ingrid_msg": {
"Class": "log",
"Operation": "slap",
"Data": {
"actor": [ "cron" ],
"severity": [ "info" ],
"message": [ "This is a scheduled message. See you in a minute." ]
}
}
}
]
}
Docker configuration
cron:
image: registry.goingrid.io/trigger/cron:v0.1.0
deploy:
restart_policy:
condition: on-failure
placement:
constraints:
- node.role == manager
environment:
NAME: "cron"
SERVERHOST: "hive"
SERVERAUTH: "file:///run/secrets/ing-hive-key"
OUTPUTCHANNEL: "main"
CONFIG: "hive://config.json"
depends_on:
- hive
secrets:
- ing-hive-key
networks:
- ing-entry
- ing-middle
Parameter | Default | Description |
---|---|---|
Config | "config.json" |
Config file used for scheduling jobs (see additional configuration file) |
Additionally the cron service includes all properties of the service configuration and the output configuration.
The configuration file consists of a list of jobs. The name
identifies the job name, schedule
defines the scheduled time (see below for format possibilities) and ingrid_msg
defines the request that will be sent.
{
"jobs": [
{
"name": "Job name",
"schedule": "@every 1m",
"ingrid_msg": {
"Class": "example",
"Operation": "example",
"Data": {
"example": [ "example" ]
}
}
}
]
}
A cron expression represents a set of times, using 5 space-separated fields.
Field name | Mandatory? | Allowed values | Allowed special characters |
---|---|---|---|
Minutes | Yes | 0-59 | * / , - |
Hours | Yes | 0-23 | * / , - |
Day of month | Yes | 1-31 | * / , - ? |
Month | Yes | 1-12 or JAN-DEC | * / , - |
Day of week | Yes | 0-6 or SUN-SAT | * / , - ? |
Month and Day-of-week field values are case insensitive. “SUN”, “Sun”, and “sun” are equally accepted.
The specific interpretation of the format is based on the Cron Wikipedia page: https://en.wikipedia.org/wiki/Cron
Asterisk ( * )
The asterisk indicates that the cron expression will match for all values of the field; e.g., using an asterisk in the 5th field (month) would indicate every month.
Slash ( / )
Slashes are used to describe increments of ranges. For example 3-59/15
in the 1st field (minutes) would indicate the 3rd minute of the hour and every 15 minutes thereafter. The form “*\/…” is equivalent to the form “first-last/…”, that is, an increment over the largest possible range of the field. The form “N/…” is accepted as meaning “N-MAX/…”, that is, starting at N, use the increment until the end of that specific range. It does not wrap around.
Comma ( , )
Commas are used to separate items of a list. For example, using “MON,WED,FRI” in the 5th field (day of week) would mean Mondays, Wednesdays and Fridays.
Hyphen ( - )
Hyphens are used to define ranges. For example, 9-17 would indicate every hour between 9am and 5pm inclusive.
Question mark ( ? )
Question mark may be used instead of ‘*’ for leaving either day-of-month or day-of-week blank.
You may use one of several pre-defined schedules in place of a cron expression.
Entry | Description | Equivalent To |
---|---|---|
@yearly (or @annually) | Run once a year, midnight, Jan. 1st | 0 0 1 1 * |
@monthly | Run once a month, midnight, first of month | 0 0 1 * * |
@weekly | Run once a week, midnight between Sat/Sun | 0 0 * * 0 |
@daily (or @midnight) | Run once a day, midnight | 0 0 * * * |
@hourly | Run once an hour, beginning of hour | 0 * * * * |