|
21 | 21 | (See examples) |
22 | 22 | changed_when: false |
23 | 23 |
|
| 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 | + |
24 | 76 | - name: Get current time for timestamping output file |
25 | 77 | ansible.builtin.setup: |
26 | 78 | filter: ansible_date_time |
|
130 | 182 | - not list_active_only | default(false) |
131 | 183 | - preferred_models is defined |
132 | 184 | - preferred_models is not string |
| 185 | + - preferred_models is iterable |
| 186 | + - preferred_models is not mapping |
133 | 187 | ansible.builtin.uri: |
134 | 188 | url: "{{ base_api_url }}/available?can_self_schedule=true&model={{ item | upper }}" |
135 | 189 | method: GET |
136 | 190 | headers: |
137 | 191 | Authorization: "Bearer {{ quads_token }}" |
138 | 192 | validate_certs: false |
139 | 193 | 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 [] }}" |
141 | 195 | loop_control: |
142 | 196 | label: "{{ item }}" |
143 | 197 | register: available_by_model |
|
0 commit comments