Skip to content

Commit

Permalink
Updated the generate.py scripts for tox and virtualenv.
Browse files Browse the repository at this point in the history
  • Loading branch information
Kenny Woodson committed Jan 18, 2017
1 parent 11a6465 commit b6576d2
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 30 deletions.
30 changes: 19 additions & 11 deletions roles/lib_openshift/src/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

OPENSHIFT_ANSIBLE_PATH = os.path.dirname(os.path.realpath(__file__))
OPENSHIFT_ANSIBLE_SOURCES_PATH = os.path.join(OPENSHIFT_ANSIBLE_PATH, 'sources.yml') # noqa: E501
LIBRARY = os.path.join(OPENSHIFT_ANSIBLE_PATH, '..', 'library/')


class GenerateAnsibleException(Exception):
Expand Down Expand Up @@ -42,22 +43,29 @@ def generate(parts):
return data


def main():
''' combine the necessary files to create the ansible module '''
args = parse_args()
def get_sources():
'''return the path to the generate sources'''
return yaml.load(open(OPENSHIFT_ANSIBLE_SOURCES_PATH).read())

library = os.path.join(OPENSHIFT_ANSIBLE_PATH, '..', 'library/')
sources = yaml.load(open(OPENSHIFT_ANSIBLE_SOURCES_PATH).read())

for fname, parts in sources.items():
def verify():
'''verify if the generated code matches the library code'''
for fname, parts in get_sources().items():
data = generate(parts)
fname = os.path.join(library, fname)
if args.verify:
if not open(fname).read() == data.getvalue():
raise GenerateAnsibleException('Generated content does not match for %s' % fname)
fname = os.path.join(LIBRARY, fname)
if not open(fname).read() == data.getvalue():
raise GenerateAnsibleException('Generated content does not match for %s' % fname)


continue
def main():
''' combine the necessary files to create the ansible module '''
args = parse_args()
if args.verify:
verify()

for fname, parts in get_sources().items():
data = generate(parts)
fname = os.path.join(LIBRARY, fname)
with open(fname, 'w') as afd:
afd.seek(0)
afd.write(data.getvalue())
Expand Down
6 changes: 6 additions & 0 deletions roles/lib_utils/library/yedit.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,12 @@
required: false
default: true
aliases: []
separator:
description:
- The separator being used when parsing strings.
required: false
default: '.'
aliases: []
author:
- "Kenny Woodson <[email protected]>"
extends_documentation_fragment: []
Expand Down
32 changes: 20 additions & 12 deletions roles/lib_utils/src/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@

import argparse
import os
import six
import yaml
import six

OPENSHIFT_ANSIBLE_PATH = os.path.dirname(os.path.realpath(__file__))
OPENSHIFT_ANSIBLE_SOURCES_PATH = os.path.join(OPENSHIFT_ANSIBLE_PATH, 'sources.yml') # noqa: E501
LIBRARY = os.path.join(OPENSHIFT_ANSIBLE_PATH, '..', 'library/')


class GenerateAnsibleException(Exception):
Expand Down Expand Up @@ -42,22 +43,29 @@ def generate(parts):
return data


def main():
''' combine the necessary files to create the ansible module '''
args = parse_args()
def get_sources():
'''return the path to the generate sources'''
return yaml.load(open(OPENSHIFT_ANSIBLE_SOURCES_PATH).read())

library = os.path.join(OPENSHIFT_ANSIBLE_PATH, '..', 'library/')
sources = yaml.load(open(OPENSHIFT_ANSIBLE_SOURCES_PATH).read())

for fname, parts in sources.items():
def verify():
'''verify if the generated code matches the library code'''
for fname, parts in get_sources().items():
data = generate(parts)
fname = os.path.join(library, fname)
if args.verify:
if not open(fname).read() == data.getvalue():
raise GenerateAnsibleException('Generated content does not match for %s' % fname)
fname = os.path.join(LIBRARY, fname)
if not open(fname).read() == data.getvalue():
raise GenerateAnsibleException('Generated content does not match for %s' % fname)

continue

def main():
''' combine the necessary files to create the ansible module '''
args = parse_args()
if args.verify:
verify()

for fname, parts in get_sources().items():
data = generate(parts)
fname = os.path.join(LIBRARY, fname)
with open(fname, 'w') as afd:
afd.seek(0)
afd.write(data.getvalue())
Expand Down
22 changes: 16 additions & 6 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import os
import fnmatch
import re
import subprocess
import sys
import yaml

# Always prefer setuptools over distutils
Expand Down Expand Up @@ -170,22 +170,32 @@ def run(self):
'playbooks',
'utils'],
None,
'generate.py')
'generate.py$')

if len(generate_files) < 1:
print('Did not find any code generation. Please verify module code generation.') # noqa: E501
raise SystemExit(1)

# call them with --verify
errors = False
for gen in generate_files:
print('Checking generated module code: {0}'.format(gen))
try:
subprocess.call([gen, '--verify'])
except subprocess.CalledProcessError as cpe:
print(cpe)
sys.path.insert(0, os.path.dirname(gen))
# we are importing dynamically. This isn't in
# the python path.
# pylint: disable=import-error
import generate
generate.verify()
except generate.GenerateAnsibleException as gae:
print(gae.args)
errors = True

if errors:
print('Found errors while generating module code.')
raise SystemExit(1)

print('\nAll generate scripts passed.\n')


class UnsupportedCommand(Command):
''' Basic Command to override unsupported commands '''
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[tox]
minversion=2.3.1
envlist =
py{27,35}-ansible22-{pylint,unit,flake8,yamllint}
py{27,35}-ansible22-{pylint,unit,flake8,yamllint,generate_validation}
skipsdist=True
skip_missing_interpreters=True

Expand Down

0 comments on commit b6576d2

Please sign in to comment.