Skip to content

Commit

Permalink
Add Ansible syntax checks to tox
Browse files Browse the repository at this point in the history
  • Loading branch information
mtnbikenc committed Apr 19, 2017
1 parent 9ace041 commit b1898ac
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
48 changes: 48 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import fnmatch
import re
import sys
import subprocess
import yaml

# Always prefer setuptools over distutils
Expand Down Expand Up @@ -199,6 +200,52 @@ def run(self):
print('\nAll generate scripts passed.\n')


class OpenShiftAnsibleSyntaxCheck(Command):
''' Command to run Ansible syntax check'''
description = "Run Ansible syntax check"
user_options = []

# Colors
FAIL = '\033[91m' # Red
ENDC = '\033[0m' # Reset

def initialize_options(self):
''' initialize_options '''
pass

def finalize_options(self):
''' finalize_options '''
pass

def run(self):
''' run command '''

has_errors = False

for yaml_file in find_files(
os.path.join(os.getcwd(), 'playbooks', 'byo'),
None, None, r'\.ya?ml$'):
with open(yaml_file, 'r') as contents:
for line in contents:
# initialize_groups.yml is used to identify entry point playbooks
if re.search(r'initialize_groups\.yml', line):
print('-' * 60)
print('Syntax checking playbook: %s' % yaml_file)
try:
subprocess.check_output(
['ansible-playbook', '-i localhost,',
'--syntax-check', yaml_file]
)
except subprocess.CalledProcessError as cpe:
print('{}Execution failed: {}{}'.format(
self.FAIL, cpe, self.ENDC))
has_errors = True
# Break for loop, no need to continue looping lines
break
if has_errors:
raise SystemExit(1)


class UnsupportedCommand(Command):
''' Basic Command to override unsupported commands '''
user_options = []
Expand Down Expand Up @@ -242,6 +289,7 @@ def run(self):
'lint': OpenShiftAnsiblePylint,
'yamllint': OpenShiftAnsibleYamlLint,
'generate_validation': OpenShiftAnsibleGenerateValidation,
'ansible_syntax': OpenShiftAnsibleSyntaxCheck,
},
packages=[],
)
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ commands =
yamllint: python setup.py yamllint
generate_validation: python setup.py generate_validation
# TODO(rhcarvalho): check syntax of other important entrypoint playbooks
ansible_syntax: ansible-playbook --syntax-check playbooks/byo/config.yml
ansible_syntax: python setup.py ansible_syntax

0 comments on commit b1898ac

Please sign in to comment.