Selaa lähdekoodia

Updated the generate.py scripts for tox and virtualenv.

Kenny Woodson 8 vuotta sitten
vanhempi
commit
b6576d28ec
5 muutettua tiedostoa jossa 62 lisäystä ja 30 poistoa
  1. 19 11
      roles/lib_openshift/src/generate.py
  2. 6 0
      roles/lib_utils/library/yedit.py
  3. 20 12
      roles/lib_utils/src/generate.py
  4. 16 6
      setup.py
  5. 1 1
      tox.ini

+ 19 - 11
roles/lib_openshift/src/generate.py

@@ -10,6 +10,7 @@ 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):
@@ -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())

+ 6 - 0
roles/lib_utils/library/yedit.py

@@ -134,6 +134,12 @@ options:
     required: false
     default: true
     aliases: []
+  separator:
+    description:
+    - The separator being used when parsing strings.
+    required: false
+    default: '.'
+    aliases: []
 author:
 - "Kenny Woodson <kwoodson@redhat.com>"
 extends_documentation_fragment: []

+ 20 - 12
roles/lib_utils/src/generate.py

@@ -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):
@@ -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())

+ 16 - 6
setup.py

@@ -6,7 +6,7 @@ from __future__ import print_function
 import os
 import fnmatch
 import re
-import subprocess
+import sys
 import yaml
 
 # Always prefer setuptools over distutils
@@ -170,22 +170,32 @@ class OpenShiftAnsibleGenerateValidation(Command):
                                      '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 '''

+ 1 - 1
tox.ini

@@ -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