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>