Skip to content

Commit dbd62c7

Browse files
committed
fix: add additional sanity checks
* Add additional guard rails around preferred_models * Add additional sanity checks around num_hosts
1 parent 5a75cb6 commit dbd62c7

1 file changed

Lines changed: 55 additions & 1 deletion

File tree

quads_self_schedule.yml

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,58 @@
2121
(See examples)
2222
changed_when: false
2323

24+
- name: Validate 'num_hosts' if provided
25+
when: num_hosts is defined
26+
ansible.builtin.assert:
27+
that:
28+
- num_hosts | int > 0
29+
fail_msg: >-
30+
'num_hosts' must be a positive integer greater than 0.
31+
Got: {{ num_hosts }}
32+
changed_when: false
33+
34+
- name: Validate 'preferred_models' type if provided
35+
when:
36+
- preferred_models is defined
37+
- preferred_models is not string
38+
ansible.builtin.assert:
39+
that:
40+
- preferred_models is iterable
41+
- preferred_models is not mapping
42+
fail_msg: >-
43+
'preferred_models' must be either a list of model names or the string "all".
44+
Got type: {{ preferred_models | type_debug }}
45+
changed_when: false
46+
47+
- name: Validate 'preferred_models' is not empty if provided as a list
48+
when:
49+
- preferred_models is defined
50+
- preferred_models is not string
51+
- preferred_models is iterable
52+
- preferred_models is not mapping
53+
ansible.builtin.assert:
54+
that:
55+
- preferred_models | length > 0
56+
fail_msg: >-
57+
'preferred_models' is defined as an empty list.
58+
Either provide model names in the list or set to "all" for any model.
59+
changed_when: false
60+
61+
- name: Warn about duplicate models in preferred_models
62+
when:
63+
- preferred_models is defined
64+
- preferred_models is not string
65+
- preferred_models is iterable
66+
- preferred_models is not mapping
67+
- preferred_models | length > 0
68+
- preferred_models | unique | length < (preferred_models | length)
69+
ansible.builtin.debug:
70+
msg: >-
71+
WARNING: Duplicate models detected in preferred_models list.
72+
This will cause redundant API calls.
73+
Duplicates: {{ preferred_models | difference(preferred_models | unique) | unique | join(', ') }}
74+
changed_when: false
75+
2476
- name: Get current time for timestamping output file
2577
ansible.builtin.setup:
2678
filter: ansible_date_time
@@ -130,14 +182,16 @@
130182
- not list_active_only | default(false)
131183
- preferred_models is defined
132184
- preferred_models is not string
185+
- preferred_models is iterable
186+
- preferred_models is not mapping
133187
ansible.builtin.uri:
134188
url: "{{ base_api_url }}/available?can_self_schedule=true&model={{ item | upper }}"
135189
method: GET
136190
headers:
137191
Authorization: "Bearer {{ quads_token }}"
138192
validate_certs: false
139193
status_code: 200
140-
loop: "{{ preferred_models if preferred_models is not string else [] }}"
194+
loop: "{{ preferred_models if (preferred_models is iterable and preferred_models is not string and preferred_models is not mapping) else [] }}"
141195
loop_control:
142196
label: "{{ item }}"
143197
register: available_by_model

0 commit comments

Comments
 (0)