Make diff_branches.py work again

Changes to autohelp.py have broken the diff_branches.py script. This
patch fixes the script:

- add a ``dump`` subcommand and a ``-q`` (quiet) option to
  autohelp-wrapprt
- use these options in diff_branches.py
- remove the dependency on python-git as it is not needed anymore.

Change-Id: I5d5a7e7141e1a0df1c86d52daae35fe5f33f239b
This commit is contained in:
Gauvain Pocentek 2016-03-20 18:38:10 +01:00
parent eb02aab480
commit 87f23f539f
3 changed files with 35 additions and 34 deletions

View File

@ -27,6 +27,7 @@ PROJECTS="aodh ceilometer cinder glance heat ironic keystone manila \
MANUALS_PROJECTS="openstack-manuals" MANUALS_PROJECTS="openstack-manuals"
BRANCH=master BRANCH=master
FAST=0 FAST=0
QUIET=0
usage() { usage() {
echo "Wrapper for autohelp.py" echo "Wrapper for autohelp.py"
@ -100,7 +101,7 @@ setup_tools() {
pip install -rrequirements.txt pip install -rrequirements.txt
} }
while getopts :b:g:e:v:cf opt; do while getopts :b:g:e:v:cfq opt; do
case $opt in case $opt in
b) b)
BRANCH=$OPTARG BRANCH=$OPTARG
@ -117,6 +118,9 @@ while getopts :b:g:e:v:cf opt; do
f) f)
FAST=1 FAST=1
;; ;;
q)
QUIET=1
;;
v) v)
AUTOOPT="-v" AUTOOPT="-v"
if [ $OPTARG = 2 ]; then if [ $OPTARG = 2 ]; then
@ -139,8 +143,13 @@ fi
ACTION=$1 ACTION=$1
shift shift
if [ $QUIET -eq 1 ]; then
exec 3>&1 >/dev/null
exec 4>&2 2>/dev/null
fi
case $ACTION in case $ACTION in
update|docbook|rst|setup) ;; update|docbook|rst|dump|setup) ;;
*) *)
usage usage
exit 1 exit 1
@ -256,5 +265,17 @@ for project in $PROJECTS; do
$extra_flags $AUTOOPT $extra_flags $AUTOOPT
fi fi
;; ;;
dump)
if [ $QUIET -eq 1 ]; then
exec 1>&3
exec 2>&4
fi
if [ "$project" = "swift" ]; then
$EXTRACT_SWIFT dump -m $MANUALSREPO -s $SOURCESDIR/swift
else
$AUTOHELP dump $project -i $SOURCESDIR/$project/$project \
$extra_flags $AUTOOPT
fi
;;
esac esac
done done

View File

@ -22,14 +22,15 @@ import pickle
import subprocess import subprocess
import sys import sys
import git
import jinja2 import jinja2
PROJECTS = ['ceilometer', 'cinder', 'glance', 'heat', 'ironic', 'keystone', PROJECTS = ['aodh', 'ceilometer', 'cinder', 'glance', 'heat', 'ironic',
'manila', 'neutron', 'nova', 'sahara', 'swift', 'trove'] 'keystone', 'manila', 'neutron', 'nova', 'sahara', 'swift',
'trove']
MASTER_RELEASE = 'Mitaka' MASTER_RELEASE = 'Mitaka'
CODENAME_TITLE = {'ceilometer': 'Telemetry', CODENAME_TITLE = {'aodh': 'Alarming',
'ceilometer': 'Telemetry',
'cinder': 'Block Storage', 'cinder': 'Block Storage',
'glance': 'Image service', 'glance': 'Image service',
'heat': 'Orchestration', 'heat': 'Orchestration',
@ -69,43 +70,23 @@ def _get_packages(project, branch):
return packages return packages
def get_options(project, branch, args): def get_options(project, branch):
"""Get the list of known options for a project.""" """Get the list of known options for a project."""
print("Working on %(project)s (%(branch)s)" % {'project': project, print("Working on %(project)s (%(branch)s)" % {'project': project,
'branch': branch}) 'branch': branch})
# And run autohelp script to get a serialized dict of the discovered # And run autohelp script to get a serialized dict of the discovered
# options # options
dirname = os.path.abspath(os.path.join('venv', dirname = os.path.join('venv', branch.replace('/', '_'))
branch.replace('/', '_'), args = ["./autohelp-wrapper", "-q", "-b", branch, "-e", dirname,
project)) "dump", project]
if project == 'swift':
cmd = ("python extract_swift_flags.py dump "
"-s %(sources)s/swift -m %(sources)s/openstack-manuals" %
{'sources': args.sources})
if branch == 'stable/liberty':
cmd += " -f docbook"
repo_path = args.sources
else:
packages = _get_packages(project, branch)
autohelp_args = ""
for package in packages:
repo_path = os.path.join(args.sources, project)
repo = git.Repo(repo_path)
repo.heads[branch].checkout()
autohelp_args += (" -i %s/%s" %
(repo_path, package.replace('-', '_')))
cmd = ("python autohelp.py dump %(project)s %(args)s" %
{'project': project, 'args': autohelp_args})
path = os.environ.get("PATH") path = os.environ.get("PATH")
bin_path = os.path.abspath(os.path.join(dirname, "bin")) bin_path = os.path.abspath(os.path.join(dirname, "bin"))
path = "%s:%s" % (bin_path, path) path = "%s:%s" % (bin_path, path)
serialized = subprocess.check_output(cmd, shell=True, serialized = subprocess.check_output(args,
env={'VIRTUAL_ENV': dirname, env={'VIRTUAL_ENV': dirname,
'PATH': path}) 'PATH': path})
sys.path.insert(0, repo_path)
ret = pickle.loads(serialized) ret = pickle.loads(serialized)
sys.path.pop(0)
return ret return ret
@ -295,8 +276,8 @@ def main():
setup_venv(args.projects, args.new_branch, args.novenvupdate) setup_venv(args.projects, args.new_branch, args.novenvupdate)
for project in args.projects: for project in args.projects:
old_list = get_options(project, args.old_branch, args) old_list = get_options(project, args.old_branch)
new_list = get_options(project, args.new_branch, args) new_list = get_options(project, args.new_branch)
release = args.new_branch.replace('stable/', '') release = args.new_branch.replace('stable/', '')
env = get_env(project, release, old_list, new_list) env = get_env(project, release, old_list, new_list)

View File

@ -1,6 +1,5 @@
docutils docutils
jinja2 jinja2
GitPython>=0.3.2.RC1
lxml lxml
oslo.config oslo.config
oslo.i18n oslo.i18n