From 3c660d675eb9f214f56096c9709b5885cdcae628 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Thu, 24 May 2012 16:42:34 +0000 Subject: [PATCH] Support dependent changes in gerrit-git-prep. Also added full hostname support to gerrit-git-prep -- 'review.openstack.org' instead of 'openstack'. This means it can be used with 'review-dev.openstack.org' for instance. Updated the jenkins job filler to use a 'review_site' parameter to facilitate that. Updated the jenknis jobs filler to use slightly different variables review_site github_org publisher_site which are more explicit about their purpose than 'site' and 'host'. Make the docs/tarball publishers require a site param. Change-Id: If24be8f7a74c09b215f94d371d5f09a695e2c098 --- modules/jenkins_jobs/files/jenkins_jobs.py | 34 +++++++--- .../jenkins_jobs/files/modules/builders.py | 6 +- .../jenkins_jobs/files/modules/properties.py | 2 +- .../files/modules/publisher_docs.py | 6 +- .../files/modules/publisher_tarball.py | 17 ++--- modules/jenkins_jobs/files/modules/scm.py | 2 +- .../files/projects/openstack/cinder.yml | 4 +- .../openstack/python-cinderclient.yml | 4 +- .../openstack/python-glanceclient.yml | 4 +- .../openstack/python-keystoneclient.yml | 4 +- .../projects/openstack/python-novaclient.yml | 4 +- .../openstack/python-openstackclient.yml | 4 +- .../openstack/python-quantumclient.yml | 4 +- .../projects/openstack/python-swiftclient.yml | 4 +- .../files/projects/stackforge/ceilometer.yml | 6 +- .../files/projects/stackforge/heat.yml | 48 +++++++------- .../files/projects/stackforge/reddwarf.yml | 5 +- .../files/templates/python_jobs.yml | 62 ++++++++++++------- .../files/slave_scripts/gerrit-git-prep.sh | 56 +++++++++++++++-- 19 files changed, 187 insertions(+), 89 deletions(-) diff --git a/modules/jenkins_jobs/files/jenkins_jobs.py b/modules/jenkins_jobs/files/jenkins_jobs.py index 26ec754150..0e8e0a749c 100644 --- a/modules/jenkins_jobs/files/jenkins_jobs.py +++ b/modules/jenkins_jobs/files/jenkins_jobs.py @@ -21,28 +21,33 @@ import hashlib import yaml import sys import xml.etree.ElementTree as XML +from xml.dom import minidom import pycurl import jenkins import ConfigParser from StringIO import StringIO +import re parser = argparse.ArgumentParser() -subparser = parser.add_subparsers(help='update or delete job', dest='command') +subparser = parser.add_subparsers(help='update, test or delete job', dest='command') parser_update = subparser.add_parser('update') parser_update.add_argument('file', help='YAML file for update', type=file) +parser_update = subparser.add_parser('test') +parser_update.add_argument('file', help='YAML file for test', type=file) parser_delete = subparser.add_parser('delete') parser_delete.add_argument('name', help='name of job') parser.add_argument('--conf', dest='conf', help='Configuration file') options = parser.parse_args() if options.conf: - conf = options.conf + conf = options.conf else: - conf = 'jenkins_jobs.ini' + conf = 'jenkins_jobs.ini' -conffp = open(conf, 'r') -config = ConfigParser.ConfigParser() -config.readfp(conffp) +if not options.command == 'test': + conffp = open(conf, 'r') + config = ConfigParser.ConfigParser() + config.readfp(conffp) class YamlParser(object): def __init__(self, yfile): @@ -115,8 +120,13 @@ In modules/jenkins_jobs" def md5(self): return hashlib.md5(self.output()).hexdigest() + # Pretty printing ideas from http://stackoverflow.com/questions/749796/pretty-printing-xml-in-python + pretty_text_re = re.compile('>\n\s+([^<>\s].*?)\n\s+\g<1>