mirror of
https://github.com/ZwareBear/awx.git
synced 2026-03-20 07:43:35 -05:00
359 lines
9.3 KiB
YAML
359 lines
9.3 KiB
YAML
---
|
|
- name: Get our collection package
|
|
controller_meta:
|
|
register: controller_meta
|
|
|
|
- name: Generate the name of our plugin
|
|
set_fact:
|
|
ruleset_plugin_name: "{{ controller_meta.prefix }}.schedule_rruleset"
|
|
rule_plugin_name: "{{ controller_meta.prefix }}.schedule_rrule"
|
|
|
|
|
|
- name: Call ruleset with no rules
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45') }}"
|
|
ignore_errors: True
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'You must include rules to be in the ruleset via the rules parameter' in results.msg"
|
|
|
|
|
|
- name: call ruleset with a missing frequency
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- interval: 1
|
|
byweekday: 'sunday'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'Rule 2 is missing a frequency' in results.msg"
|
|
|
|
|
|
- name: call ruleset with a missing frequency
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- interval: 1
|
|
byweekday: 'sunday'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'Rule 2 is missing a frequency' in results.msg"
|
|
|
|
|
|
- name: call rruleset with an invalid frequency
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'asdf'
|
|
interval: 1
|
|
byweekday: 'sunday'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'Frequency of rule 2 is invalid asdf' in results.msg"
|
|
|
|
|
|
- name: call rruleset with an invalid end_on
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'day'
|
|
interval: 1
|
|
byweekday: 'sunday'
|
|
end_on: 'a'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'In rule 2 end_on must either be an integer or in the format YYYY-MM-DD [HH:MM:SS]' in results.msg"
|
|
|
|
- name: Every Mondays
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules, timezone='UTC' ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
byweekday: 'monday'
|
|
|
|
- assert:
|
|
that:
|
|
- results is success
|
|
- "'DTSTART;TZID=UTC:20220430T103045 RRULE:FREQ=DAILY;BYDAY=MO;INTERVAL=1' == complex_rule"
|
|
|
|
|
|
- name: call rruleset with an invalid byweekday
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'day'
|
|
interval: 1
|
|
byweekday: 'junk'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'In rule 2 byweekday must only contain values' in results.msg"
|
|
|
|
|
|
- name: call rruleset with a monthly rule with invalid bymonthday (a)
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'month'
|
|
interval: 1
|
|
bymonthday: 'a'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'In rule 2 bymonthday must be between 1 and 31' in results.msg"
|
|
|
|
|
|
- name: call rruleset with a monthly rule with invalid bymonthday (-1)
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'month'
|
|
interval: 1
|
|
bymonthday: '-1'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'In rule 2 bymonthday must be between 1 and 31' in results.msg"
|
|
|
|
|
|
- name: call rruleset with a monthly rule with invalid bymonthday (32)
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'month'
|
|
interval: 1
|
|
bymonthday: 32
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'In rule 2 bymonthday must be between 1 and 31' in results.msg"
|
|
|
|
|
|
- name: call rruleset with a monthly rule with invalid bysetpos (junk)
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'month'
|
|
interval: 1
|
|
bysetpos: 'junk'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'In rule 2 bysetpos must only contain values in first, second, third, fourth, last' in results.msg"
|
|
|
|
|
|
- name: call rruleset with an invalid timezone
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules, timezone='junk' ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'day'
|
|
interval: 1
|
|
byweekday: 'sunday'
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'Timezone parameter is not valid' in results.msg"
|
|
|
|
|
|
- name: call rruleset with only exclude rules
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
include: False
|
|
- frequency: 'day'
|
|
interval: 1
|
|
byweekday: 'sunday'
|
|
include: False
|
|
|
|
- assert:
|
|
that:
|
|
- results is failed
|
|
- "'A ruleset must contain at least one RRULE' in results.msg"
|
|
|
|
|
|
- name: Every day except for Sundays
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules, timezone='UTC' ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'day'
|
|
interval: 1
|
|
byweekday: 'sunday'
|
|
include: False
|
|
|
|
- assert:
|
|
that:
|
|
- results is success
|
|
- "'DTSTART;TZID=UTC:20220430T103045 RRULE:FREQ=DAILY;INTERVAL=1 EXRULE:FREQ=DAILY;BYDAY=SU;INTERVAL=1' == complex_rule"
|
|
|
|
|
|
- name: Every day except for April 30th
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2023-04-28 17:00:00', rules=rrules, timezone='UTC' ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'day'
|
|
interval: 1
|
|
- frequency: 'day'
|
|
interval: 1
|
|
bymonth: '4'
|
|
bymonthday: 30
|
|
include: False
|
|
|
|
- assert:
|
|
that:
|
|
- results is success
|
|
- "'DTSTART;TZID=UTC:20230428T170000 RRULE:FREQ=DAILY;INTERVAL=1 EXRULE:FREQ=DAILY;BYMONTH=4;BYMONTHDAY=30;INTERVAL=1' == complex_rule"
|
|
|
|
|
|
- name: Every 5 minutes but not on Mondays from 5-7pm
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules, timezone='UTC' ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'minute'
|
|
interval: 5
|
|
- frequency: 'minute'
|
|
interval: 5
|
|
byweekday: 'monday'
|
|
byhour:
|
|
- 17
|
|
- 18
|
|
include: False
|
|
|
|
- assert:
|
|
that:
|
|
- results is success
|
|
- "'DTSTART;TZID=UTC:20220430T103045 RRULE:FREQ=MINUTELY;INTERVAL=5 EXRULE:FREQ=MINUTELY;INTERVAL=5;BYDAY=MO;BYHOUR=17,18' == complex_rule"
|
|
|
|
|
|
- name: Every 15 minutes Monday to Friday from 10:01am to 6:02pm (inclusive)
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules, timezone='UTC' ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'minute'
|
|
byweekday:
|
|
- monday
|
|
- tuesday
|
|
- wednesday
|
|
- thursday
|
|
- friday
|
|
interval: 15
|
|
byhour: [10, 11, 12, 13, 14, 15, 16, 17, 18]
|
|
- frequency: 'minute'
|
|
interval: 1
|
|
byweekday: "monday,tuesday,wednesday, thursday,friday"
|
|
byhour: 18
|
|
byminute: "{{ range(3, 60) | list }}"
|
|
include: False
|
|
|
|
- assert:
|
|
that:
|
|
- results is success
|
|
- "'DTSTART;TZID=UTC:20220430T103045 RRULE:FREQ=MINUTELY;INTERVAL=15;BYDAY=MO,TU,WE,TH,FR;BYHOUR=10,11,12,13,14,15,16,17,18 EXRULE:FREQ=MINUTELY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=18;BYMINUTE=3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59;INTERVAL=1' == complex_rule"
|
|
|
|
|
|
- name: Any Saturday whose month day is between 12 and 18
|
|
set_fact:
|
|
complex_rule: "{{ query(ruleset_plugin_name, '2022-04-30 10:30:45', rules=rrules, timezone='UTC' ) }}"
|
|
ignore_errors: True
|
|
register: results
|
|
vars:
|
|
rrules:
|
|
- frequency: 'month'
|
|
interval: 1
|
|
byweekday: 'saturday'
|
|
bymonthday: "{{ range(12,19) | list }}"
|
|
|
|
- assert:
|
|
that:
|
|
- results is success
|
|
- "'DTSTART;TZID=UTC:20220430T103045 RRULE:FREQ=MONTHLY;BYMONTHDAY=12,13,14,15,16,17,18;BYDAY=SA;INTERVAL=1' == complex_rule"
|