Passed
Push — master ( dfe4f2...9c85cc )
by Matěj
02:22
created

ssg.ansible.add_minimum_version()   A

Complexity

Conditions 4

Size

Total Lines 25
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 4

Importance

Changes 0
Metric Value
cc 4
eloc 12
nop 1
dl 0
loc 25
ccs 9
cts 9
cp 1
crap 4
rs 9.8
c 0
b 0
f 0
1
"""
2
Common functions for processing Ansible in SSG
3
"""
4
5 1
from __future__ import absolute_import
6 1
from __future__ import print_function
7
8 1
from .constants import ansible_version_requirement_pre_task_name
9 1
from .constants import min_ansible_version
10
11
12 1
def add_minimum_version(ansible_src):
13
    """
14
    Adds minimum ansible version to an Ansible script
15
    """
16 1
    pre_task = (""" - hosts: all
17
   pre_tasks:
18
     - name: %s
19
       assert:
20
         that: "ansible_version.full is version_compare('%s', '>=')"
21
         msg: >
22
           "You must update Ansible to at least version %s to use this role."
23
          """ % (ansible_version_requirement_pre_task_name,
24
                 min_ansible_version, min_ansible_version))
25
26 1
    if ' - hosts: all' not in ansible_src:
27 1
        return ansible_src
28
29 1
    if 'pre_task' in ansible_src:
30 1
        if 'ansible_version.full is version_compare' in ansible_src:
31 1
            return ansible_src
32
33 1
        raise ValueError("A pre_task already exists in ansible_src; failing to process: %s" %
34
                         ansible_src)
35
36
    return ansible_src.replace(" - hosts: all", pre_task, 1)
37