Files
awx/awx_collection/tests/integration/targets/lookup_rruleset/tasks/main.yml
John Westcott IV c67f50831b Modifying schedules API to allow for rrulesets #5733 (#12043)
* Added schedule_rruleset lookup plugin for awx.awx
* Added DB migration for rrule size
* Updated schedule docs
* The schedule API endpoint will now return an array of errors on rule validation to try and inform the user of all errors instead of just the first
2022-04-28 15:38:20 -04:00

343 lines
8.9 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: 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"