Total Complexity | 6 |
Total Lines | 54 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | #!/usr/bin/python |
||
2 | |||
3 | ANSIBLE_METADATA = { |
||
4 | 'metadata_version': '1.0', |
||
5 | 'status': ['preview'], |
||
6 | 'supported_by': 'community' |
||
7 | } |
||
8 | |||
9 | from ansible.module_utils.basic import AnsibleModule |
||
10 | import os, glob |
||
11 | |||
12 | def main(): |
||
13 | module = AnsibleModule( |
||
14 | argument_spec=dict( |
||
15 | app=dict(type='dict', required=True), |
||
16 | directory=dict(type='str', required=True), |
||
17 | task=dict(type='str', required=True), |
||
18 | order=dict(type='str', required=False, default='asc') |
||
19 | ) |
||
20 | ) |
||
21 | |||
22 | result = dict( |
||
23 | changed=False, |
||
24 | tasks=[] |
||
25 | ) |
||
26 | |||
27 | tasks = [] |
||
28 | files = glob.glob(module.params['directory'] + '/' + module.params['task'] + '.yml') |
||
29 | |||
30 | for file in files: |
||
31 | variable = os.path.basename(file[:-(len(module.params['task']) + 5)]) |
||
32 | |||
33 | if not module.params['app'][variable]['enabled']: |
||
34 | continue |
||
35 | |||
36 | order = 0 |
||
37 | |||
38 | if 'order' in module.params['app'][variable]: |
||
39 | order = module.params['app'][variable]['order'] |
||
40 | |||
41 | tasks.append((file, order)) |
||
42 | |||
43 | tasks = sorted(tasks, key=lambda task: task[1], reverse=module.params['order'] != 'asc') |
||
44 | ordered = [] |
||
45 | |||
46 | for task in tasks: |
||
47 | ordered.append(task[0]) |
||
48 | |||
49 | result['tasks'] = ordered |
||
50 | module.exit_json(**result) |
||
51 | |||
52 | if __name__ == '__main__': |
||
53 | main() |
||
54 |