Passed
Branch master (2b673d)
by Matěj
03:01
created

ssg.ansible   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 37
ccs 0
cts 13
cp 0
rs 10
c 0
b 0
f 0
wmc 4

1 Function

Rating   Name   Duplication   Size   Complexity  
A add_minimum_version() 0 25 4
1
"""
2
Common functions for processing Ansible in SSG
3
"""
4
5
from __future__ import absolute_import
6
from __future__ import print_function
7
8
from .constants import ansible_version_requirement_pre_task_name
9
from .constants import min_ansible_version
10
11
12
def add_minimum_version(ansible_src):
13
    """
14
    Adds minimum ansible version to an Ansible script
15
    """
16
    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
    if ' - hosts: all' not in ansible_src:
27
        return ansible_src
28
29
    if 'pre_task' in ansible_src:
30
        if 'ansible_version.full is version_compare' in ansible_src:
31
            return ansible_src
32
33
        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