diff --git a/.gitignore b/.gitignore index 1f222ba..b1909e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .*.swp *~ -repo_refs.yaml.variables +.Python +bin/ +include/ +lib/ diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..d34ebfd --- /dev/null +++ b/AUTHORS @@ -0,0 +1,5 @@ +Adam Gandelman +Ghe Rivero +James Polley +Robert Collins +rbtcollins diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst new file mode 100644 index 0000000..1497ce1 --- /dev/null +++ b/CONTRIBUTING.rst @@ -0,0 +1,17 @@ +If you would like to contribute to the development of OpenStack, +you must follow the steps in the "If you're a developer, start here" +section of this page: + + http://wiki.openstack.org/HowToContribute + +Once those steps have been completed, changes to OpenStack +should be submitted for review via the Gerrit tool, following +the workflow documented at: + + http://wiki.openstack.org/GerritWorkflow + +Pull requests submitted through GitHub will be ignored. + +Bugs should be filed on Launchpad, not GitHub: + + https://bugs.launchpad.net/prep-source-repos diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..f580e33 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,67 @@ +CHANGES +======= + +* Reformat README as RST +* Rename readme + +0.0.1 +----- + +* Add tox.ini +* Remove rack-testing - not relevant to prep_source_repos +* Basic packageization +* Add basic requirements +* Update .gitignore to ignore virtualenv cruft +* Enable use of local reference directories +* Add --clean to reset all repos to upstream master +* Enable use inside a virtualenv +* Show what we're merging +* Late bound references for the win +* Handle repos with wonky origin +* Fix cruft in refs +* Preserve uncommitted changes +* And now make it cool +* Ignore things we don't want checked in +* More README and move rack testing to a subdir +* Overhaul prep-source-repos +* Update devtestrc +* Update repo_refs +* Update repo_refs.yaml +* Update repo_refs.yaml +* Update repo_refs.yaml +* update repo_refs.yaml +* Update repo_refs with current minimum patch set +* Pull in eventlet fix +* Add dib-utils +* Add 104455 +* Bump to patchset 6 for 103227 +* Add 104407 +* Drop patch 97703 (merged) +* devtestrc: Allow SEED_* to be specified +* Bump 97703 to patchset #5 +* Drop PYPI_MIRROR_URL_1 +* Add LOCAL_DIB_ELEMENTS +* Bump 97703 to patchset 4 +* Update repo_refs /w patch for bug #1334905 +* Add tripleo-heat-templates review 97703 +* Clear repo_refs for new round of testing +* Bump patchset 10 for 96498 +* 93806 Merged, drop from repo_refs.yaml +* Bump patchset for 97626 +* Set default OVERCLOUD_FIXED_RANGE_CIDR in devtestrc +* Typo +* Adds t-o-i rev. 97626 +* Update repo_refs.yaml +* Update repo_refs.yaml +* Add tripleo-ci repo +* Update devtestrc +* repo_refs.yaml: Update context +* Cleanout repo refs, remove timeout, add 93731 as better iscsiadm workaround +* Add 96611, test workaround for bug 1324670 +* Update repo_refs: Adds 96498 +* Allow FLOATING_* to be set locally +* Set OVERCLOUD_{COMPUTE,CONTROL}_DIB_EXTRA_ARGS +* CONTROLSCALE=1 +* Set USE_IRONIC=1 +* Set seed vm specs +* INIT diff --git a/README.md b/README.md deleted file mode 100644 index 7d6f8a7..0000000 --- a/README.md +++ /dev/null @@ -1,50 +0,0 @@ -This repository contains scripts for managing multiple outstanding patches to -TripleO (or other gerrit based projects). - - - tooling to combine arbitrary unmerged gerrit patches (prep_source_repos) - which will also export an rc file with git refs based on the combined - branches - - a sample config file that we're using (repo_refs.yaml) - - some example inputs for doing rack testing of tripleo in the rack-testing - subdir - -## Usage - -* create a repo_refs.yaml in your TRIPLEO_ROOT (see the one in the root of this - repository for inspiration). - -* add the tripleo-end-to-end bin directory to your path (or symlink the - specific scripts into place, or $up to you). - -* run prep_source_repos $YOUR\_REFS\_FILE $TRIPLEO\_ROOT to checkout and update - the repositories specified by the refs file. Note that local edits are saved - via git stash whenever you refresh your source repos, and restored after the - update (which may, of course, fail). This provides a convenient way to use - local edits / work in progress for repositories that are used directly (vs - e.g. those that are cloned into images). - -* source YOUR_REFS_FILE.variables to configure TripleO scripts to use your - freshly integrated branches - -* proceed with any tripleo activies you might have (building images, deploying, - etc etc). - -## Advanced use - -Refs that don't match the xx/yy/zz form of gerrit refs are presumed to be local -work-in-progress branches. These are not fetched, but are merged into the -rollup branch along with all the other patches. With a little care this permits -working effectively with multiple patchsets in one project without them being -made into a stack in gerrit. - -Refs of the form xx/yy/0 are late-bound references to gerrit - they will use -the gerrit REST API to find out the latest version and will use that. - -When running prep-source-repos any additional arguments after the refs and -output dir are used to filter the repositories to fetch - so when working on -(say) two local orthogonal patches to nova, and you need to update your rollup -branch just do:: - - prep-source-repos foo bar nova - -and only nova will be updated. diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..4c4b6d6 --- /dev/null +++ b/README.rst @@ -0,0 +1,61 @@ +prep_source_repos +----------------- + +Introduction +============ + +This repository contains scripts for managing multiple outstanding patches +to a gerrit based project. It was initially developed for managing TripleO +deployments, and still makes certain TripleOish assumptions (patches welcome +if you find the tool more generally useful) + +The source repo includes: + +- tooling to combine arbitrary unmerged gerrit patches (prep_source_repos) + which will also export an rc file with git refs based on the combined + branches +- a sample config file that we're using for our TripleO deployments + (repo_refs.yaml) + +Usage +===== + +* create a repo_refs.yaml (see the one in the root of this repository + for inspiration). + +* run prep_source_repos $YOUR\_REFS\_FILE $DESTINATIION\_DIR to checkout and + update the repositories specified by the refs file (in a TripleO context, + $DESTINATION\_DIR will usually be "$TRIPLEO\_ROOT"). + + Note that local edits are saved via git stash whenever you refresh your + source repos, and restored after the update (which may, of course, + fail). This provides a convenient way to use local edits / work in + progress for repositories that are used directly (vs e.g. those that are + cloned into images). + +* (optional) source YOUR_REFS_FILE.variables to configure TripleO scripts to + use your freshly integrated branches + +* proceed with any tripleo activies you might have (building images, deploying, + etc etc). + +Advanced use +============ + +Refs that don't match the xx/yy/zz form of gerrit refs are presumed to be +local work-in-progress branches. These are not fetched, but are merged into +the rollup branch along with all the other patches. With a little care this +permits working effectively with multiple patchsets in one project without +them being made into a stack in gerrit. + +Refs of the form xx/yy/0 are late-bound references to gerrit - they will use +the gerrit REST API to find out the latest version and will use that. + +When running prep-source-repos any additional arguments after the refs and +output dir are used to filter the repositories to fetch - so when working on +(say) two local orthogonal patches to nova, and you need to update your +rollup branch just do:: + + prep-source-repos foo bar nova + +and only nova will be updated. diff --git a/doc/source/conf.py b/doc/source/conf.py new file mode 100755 index 0000000..72f8cdd --- /dev/null +++ b/doc/source/conf.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys + +sys.path.insert(0, os.path.abspath('../..')) +# -- General configuration ---------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = [ + 'sphinx.ext.autodoc', + #'sphinx.ext.intersphinx', + 'oslosphinx' +] + +# autodoc generation is a bit aggressive and a nuisance when doing heavy +# text edit cycles. +# execute "export SPHINX_DEBUG=1" in your terminal to disable + +# The suffix of source filenames. +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'prep-source-repos' +copyright = u'2014, OpenStack Foundation' + +# If true, '()' will be appended to :func: etc. cross-reference text. +add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +add_module_names = True + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# -- Options for HTML output -------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. Major themes that come with +# Sphinx are currently 'default' and 'sphinxdoc'. +# html_theme_path = ["."] +# html_theme = '_theme' +# html_static_path = ['static'] + +# Output file base name for HTML help builder. +htmlhelp_basename = '%sdoc' % project + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass +# [howto/manual]). +latex_documents = [ + ('index', + '%s.tex' % project, + u'%s Documentation' % project, + u'OpenStack Foundation', 'manual'), +] + +# Example configuration for intersphinx: refer to the Python standard library. +#intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/source/contributing.rst b/doc/source/contributing.rst new file mode 100644 index 0000000..9b1d0e0 --- /dev/null +++ b/doc/source/contributing.rst @@ -0,0 +1,4 @@ +Contributing to prep_source_repos +================================= + +.. include:: ../../CONTRIBUTING.rst diff --git a/doc/source/index.rst b/doc/source/index.rst new file mode 100644 index 0000000..ee966ab --- /dev/null +++ b/doc/source/index.rst @@ -0,0 +1,24 @@ +.. prep-source-repos documentation master file, created by + sphinx-quickstart on Tue Jul 9 22:26:36 2013. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to prep-source-repos's documentation! +======================================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + readme + installation + usage + contributing + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/doc/source/installation.rst b/doc/source/installation.rst new file mode 100644 index 0000000..6a3bdaf --- /dev/null +++ b/doc/source/installation.rst @@ -0,0 +1,12 @@ +============ +Installation +============ + +At the command line:: + + $ pip install prep-source-repos + +Or, if you have virtualenvwrapper installed:: + + $ mkvirtualenv prep-source-repos + $ pip install prep-source-repos diff --git a/doc/source/readme.rst b/doc/source/readme.rst new file mode 100644 index 0000000..a6210d3 --- /dev/null +++ b/doc/source/readme.rst @@ -0,0 +1 @@ +.. include:: ../../README.rst diff --git a/doc/source/usage.rst b/doc/source/usage.rst new file mode 100644 index 0000000..c0cf637 --- /dev/null +++ b/doc/source/usage.rst @@ -0,0 +1,5 @@ +======== +Usage +======== + +See README.rst diff --git a/prep_source_repos/__init__.py b/prep_source_repos/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bin/prep_source_repos b/prep_source_repos/cmd.py similarity index 87% rename from bin/prep_source_repos rename to prep_source_repos/cmd.py index 47bb82e..c1d1988 100755 --- a/bin/prep_source_repos +++ b/prep_source_repos/cmd.py @@ -1,19 +1,20 @@ -#!/usr/bin/python +#!/usr/bin/env python import argparse import json import os.path import re -from subprocess import check_call, check_output +from subprocess import check_call +from subprocess import check_output import sys -import yaml import requests +import yaml def normalise_conf(conf): """generate full paths etc for easy application later. - + The resulting structure is: basename -> (remotebase, gerrit_API_base). """ @@ -41,7 +42,8 @@ def normalise_conf(conf): def main(): parser = argparse.ArgumentParser() parser.add_argument("refs", help="the yaml config file") - parser.add_argument("output", help="where to put the downloaded repositories") + parser.add_argument("output", + help="where to put the downloaded repositories") parser.add_argument("repos", help="what repos to update", nargs="*") args = parser.parse_args() SRC_ROOT = os.path.abspath(args.output) @@ -76,7 +78,7 @@ def main(): if segments[2] == '0': # pull the latest edition gerrit_url = gerrit + ('/changes/?q=%s&o=CURRENT_REVISION' - % segments[1]) + % segments[1]) details = json.loads(session.get(gerrit_url).text[4:]) src = details[0]['revisions'].values()[0]['fetch'].values()[0] rref = src['ref'] @@ -87,7 +89,7 @@ def main(): git_refs.append( '+%(rref)s:%(rref)s' % dict(rref=rref)) - print 'fetching from %s %s' % (remote, git_refs) + print('fetching from %s %s' % (remote, git_refs)) check_call(['git', 'fetch', remote] + git_refs, cwd=rd) if not refs: @@ -106,11 +108,12 @@ def main(): check_call(['git', 'stash'], cwd=rd) branches = check_output(['git', 'branch', '-a'], cwd=rd) if ' ' + branch_name in branches: - print 'Resetting existing branch %s...' % branch_name + print('Resetting existing branch %s...' % branch_name) check_call(['git', 'checkout', branch_name], cwd=rd) check_call(['git', 'reset', '--hard', 'review/master'], cwd=rd) else: - check_call(['git', 'checkout', '-b', branch_name, 'review/master'], cwd=rd) + check_call(['git', 'checkout', '-b', branch_name, + 'review/master'], cwd=rd) for ref in refs: segments = ref.split('/') if len(segments) == 3: @@ -118,13 +121,13 @@ def main(): ref = resolved_refs[ref] else: ref = 'refs/changes/%s' % ref - print 'merging in %s' % ref + print('merging in %s' % ref) check_call(['git', 'merge', '--no-edit', ref], cwd=rd) if dirty: check_call(['git', 'stash', 'pop'], cwd=rd) normalised_repo = re.sub('[^A-Za-z0-9_]', '_', repo) if repo not in CONF['gerrit_refs']: - print 'no refs for %s' % repo + print('no refs for %s' % repo) variables.append((normalised_repo, rd, None)) else: variables.append((normalised_repo, rd, branch_name)) @@ -136,7 +139,7 @@ def main(): if ref: output.write('export DIB_REPOREF_%s=%s\n' % (name, ref)) else: - output.write('unset DIB_REPOREF_%s\n'% name) + output.write('unset DIB_REPOREF_%s\n' % name) return 0 diff --git a/rack-testing/README b/rack-testing/README deleted file mode 100644 index 29d7444..0000000 --- a/rack-testing/README +++ /dev/null @@ -1,16 +0,0 @@ -Here we find: - -* sample nodes.json and networks.json files - -* an example devtestrc which we use when testing in one of the HP test racks - -To use: - -* follow the main readme to get your source repos downloaded and variables - defined. - -* create appropriate customised nodes and network json files - -* run it:: - - devtest.sh --trash-my-machine --nodes $PATH_TO/nodes.json --bm-networks $PATH_TO/bm-network.json diff --git a/rack-testing/devtestrc b/rack-testing/devtestrc deleted file mode 100644 index eb0d29c..0000000 --- a/rack-testing/devtestrc +++ /dev/null @@ -1,108 +0,0 @@ -#PROXY="10.22.167.17"; # Using desktop squid -#PYPI_MIRROR="10.22.167.17"; - - -#### Set these specific to your environment! -#### - -# IP/Hostname of pypi mirror, or leave blank to not use -export PYPI_MIRROR=${PYPI_MIRROR:-''} - -# IP/Hostname:Port of HTTP/HTTPS Proxy, or leave blank to not use -export PROXY=${PROXY:-''} - -export TRIPLEO_ROOT=${TRIPLEO_ROOT:-"$PWD/tripleo"} -export TE_DATAFILE=${TE_DATAFILE:-"$TRIPLEO_ROOT/testenv.json"} - -export NeutronPublicInterface=eth2 - -# Scale for overcloud compute/control. -export OVERCLOUD_CONTROLSCALE=${OVERCLOUD_CONTROLSCALE:-"1"} -export OVERCLOUD_COMPUTESCALE=${OVERCLOUD_COMPUTESCALE:-"29"} - -# Specific to your network -export FLOATING_START=${FLOATING_START:-"10.22.157.225"} -export FLOATING_END=${FLOATING_END:-"10.22.157.254"} -export FLOATING_CIDR=${FLOATING_CIDR:-"10.22.157.244/27"} - -# Relies on https://review.openstack.org/97626 -export OVERCLOUD_FIXED_RANGE_CIDR=${OVERCLOUD_FIXED_RANGE_CIDR:-"192.168.10.0/24"} - -# Be sure to create a large seed vm -export SEED_CPU=${SEED_CPU:-24} -export SEED_MEM=${SEED_MEM:-24576} -##### end - -if [[ -n "$PROXY" ]] ; then - export http_proxy="http://$PROXY/" - export https_proxy="https://$PROXY/" - export no_proxy="${PYPI_MIRROR},localhost"; -fi - -if [[ -n "$PYPI_MIRROR" ]] ; then - export PYPI_MIRROR_URL="http://${PYPI_MIRROR}/pypi/latest"; # point this at the pypi mirror. - export DIB_NO_PYPI_PIP=1 -fi - -export DIB_COMMON_ELEMENTS="$LOCAL_DIB_ELEMENTS stackuser pypi -u use-ephemeral mellanox" -export DEVTEST_PERF_COMMENT="$(hostname): clean re-run, using USEast pypi mirror." - -# same arch as host machine, so the wheels in the mirror work -export NODE_ARCH=amd64 -export NODE_DIST=${NODE_DIST:-"ubuntu"} -export DIB_RELEASE=trusty -export USE_IRONIC=1 - -# NOTE (adam_g): Limit cloud-init data sources to Ec2 to workaround -# trusty cloud-init bug #1316475. -# Relies on https://review.openstack.org/#/c/95598/ -export DIB_CLOUD_INIT_DATASOURCES="Ec2" -export UNDERCLOUD_DIB_EXTRA_ARGS="rabbitmq-server cloud-init-datasources" -export OVERCLOUD_CONTROL_DIB_EXTRA_ARGS="rabbitmq-server cloud-init-datasources" -export OVERCLOUD_COMPUTE_DIB_EXTRA_ARGS="cloud-init-datasources" - -if [ -z "$NO_SOURCE_PREP" ]; then - cd $TRIPLE_ROOT/tripleo-end-to-end - bin/prep_source_repos - cd - -fi - - -# Clone our local git copies. Make devtest.sh prefer your local repositories. You'll still need to have stuff checked in to them! -for n in $TRIPLEO_ROOT/*; -do - [ -d "$n" -a -d "$n/.git" ] || continue - - nn=$(basename "$n") # work around older bash - bn=${nn//[^A-Za-z0-9_]/_} - - DIB_REPOTYPE="DIB_REPOTYPE_${bn}"; - DIB_REPOLOCATION="DIB_REPOLOCATION_${bn}"; - DIB_REPOREF="DIB_REPOREF_${bn}"; - - export "${DIB_REPOTYPE}"="git"; - export "${DIB_REPOLOCATION}"="${n}"; - - unset branch; - if branch=$(cd "${n}" && git symbolic-ref --short -q HEAD); - then - export "${DIB_REPOREF}"="${branch}"; - else - unset "${DIB_REPOREF}"; - fi - - printf "%-25s %-5s %-60s %s\n" "${bn}" "${!DIB_REPOTYPE}" "${!DIB_REPOLOCATION}" "${!DIB_REPOREF}"; - - pushd "${n}" >/dev/null; - if [[ "$(git rev-parse master)" != "$( git rev-parse HEAD)" ]]; - then - IFS=$'\n'; - for f in $(git log master.. --oneline); do - printf ' \e[1;31m%-60s \e[1;34m%s\e[m\n' "${f}" "$(git show $(echo $f | cut -d" " -f1) | awk '/Change-Id/ {print "http://review.openstack.org/r/" $2}')"; - done - fi - popd >/dev/null; - -done - -source $TRIPLEO_ROOT/tripleo-incubator/scripts/devtest_variables.sh diff --git a/rack-testing/example_networks.json b/rack-testing/example_networks.json deleted file mode 100644 index 2c84889..0000000 --- a/rack-testing/example_networks.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "cidr": "10.22.157.0/24", - "gateway-ip": "10.22.157.1", - "seed": { - "ip": "10.22.157.150", - "range-start": "10.22.157.151", - "range-end": "10.22.157.152" - }, - "undercloud": { - "range-start": "10.22.157.153", - "range-end": "10.22.157.190" - } -} diff --git a/rack-testing/example_nodes.json b/rack-testing/example_nodes.json deleted file mode 100644 index 09683bc..0000000 --- a/rack-testing/example_nodes.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "pm_password": "foo", - "mac": ["78:e7:d1:24:99:a5"], - "pm_addr": "10.22.51.66", - "pm_type": "pxe_ipmitool", - "memory": 98304, - "disk": 1600, - "arch": "amd64", - "cpu": 24, - "pm_user": "Administrator" -}, -{ - "pm_password": "AFDJHTVQ", - "mac": ["78:e7:d1:24:6f:c5"], - "pm_addr": "10.22.51.69", - "pm_type": "pxe_ipmitool", - "memory": 98304, - "disk": 1600, - "arch": "amd64", - "cpu": 24, - "pm_user": "Administrator" -}] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..10dbc41 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +PyYAML>=3.1.0 +requests>=2.2.0,!=2.4.0 diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..4c7f1fc --- /dev/null +++ b/setup.cfg @@ -0,0 +1,25 @@ +[metadata] +name = prep_source_repos +author = OpenStack Foundation +author-email = openstack-dev@lists.openstack.org +summary = Tool to manage a local checkout of a set of unlanded patches on a Gerrit repository +description-file = README.rst +license = Apache-2 +classifier = + Development Status :: 4 - Beta + Environment :: Console + Environment :: OpenStack + Intended Audience :: Developers + Intended Audience :: Information Technology + License :: OSI Approved :: Apache Software License + Operating System :: OS Independent + Programming Language :: Python +keywords = + gerrit +[files] +packages = + prep_source_repos + +[entry_points] +console_scripts = + prep_source_repos = prep_source_repos.cmd:main diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..aa2d8a0 --- /dev/null +++ b/setup.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python + +from setuptools import setup + +setup( + setup_requires=['pbr'], + pbr=True, +) diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000..4edb202 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,15 @@ +# The order of packages is significant, because pip processes them in the order +# of appearance. Changing the order has an impact on the overall integration +# process, which may cause wedges in the gate later. +hacking<0.11,>=0.10.0 + +coverage>=3.6 +discover +fixtures>=0.3.14 +mock>=1.0 +python-subunit>=0.0.18 +sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3 +oslosphinx>=2.2.0 # Apache-2.0 +testrepository>=0.0.18 +testscenarios>=0.4 +testtools>=0.9.36,!=1.2.0 diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..dace921 --- /dev/null +++ b/tox.ini @@ -0,0 +1,36 @@ +[tox] +minversion = 1.6 +envlist = pep8 +skipsdist = True + +[testenv] +usedevelop = True +install_command = pip install -U {opts} {packages} +setenv = + VIRTUAL_ENV={envdir} +deps = -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt +commands = python setup.py testr --slowest --testr-args='{posargs}' + +[testenv:pep8] +commands = flake8 + +[testenv:venv] +commands = {posargs} + +[testenv:docs] +commands = python setup.py build_sphinx + +[flake8] +# H302 skipped on purpose per IRC discussion involving other TripleO projects. +# H803 skipped on purpose per list discussion. +# E123, E125 skipped as they are invalid PEP-8. + +show-source = True +ignore = E123,E125,H302,H803 +builtins = _ +exclude=.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build +#Value chosen to allow current complexity, but no more. +#TODO(tchayo) decrease this to 14 +max-complexity=22 +