~qajenkinsbot/qa-dashboard/ci-production

« back to all changes in this revision

Viewing changes to util/jenkins_job.py

  • Committer: Canonical QA Jenkins Bot
  • Date: 2013-09-23 16:08:21 UTC
  • mfrom: (20.2.25 ci)
  • Revision ID: chris.johnston@canonical.com-20130923160821-wqko7d950q5ictxv
[Jenkins-12]

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
class CiException(Exception):
29
29
    pass
30
30
 
31
 
logger = logging.getLogger('qa_dashboard')
32
31
 
33
32
BLACKLIST_JOBS = [
34
33
    'generic-dput',
60
59
    :rtype: Django JenkinsJob
61
60
    """
62
61
 
63
 
    logger.info("JenkinsJob create_from_url: %s" % (url))
 
62
    logging.info("JenkinsJob create_from_url: %s" % (url))
64
63
    for name in BLACKLIST_JOBS:
65
64
        if name in url:
66
 
            logger.info("Skipping blacklisted job {}.".format(name))
 
65
            logging.info("Skipping blacklisted job {}.".format(name))
67
66
            return None
68
67
    try:
69
68
        extractor_job = extractor.JenkinsJob(url)
76
75
        # No job found on the server: this can happen when a project is
77
76
        # defined in a stack but the jobs have not yet been deployed.
78
77
        transaction.rollback()
79
 
        logger.debug(e)
 
78
        logging.debug(e)
80
79
        return None
81
80
    if not created:
82
81
        # The job already exists in the database: this is normal even during
83
82
        # a fresh import due to the multiple build/job discovery paths.
84
83
        if update:
85
 
            logger.debug("Updating job from {}".format(url))
 
84
            logging.debug("Updating job from {}".format(url))
86
85
            jenkins_job.update(**params)
87
86
    if create_downstream_jobs:
88
87
        try:
90
89
                # TODO: protect against circular refs, just sayin'
91
90
                downstream_jenkins_job = create_jenkins_job_from_url(
92
91
                    downstream_extractor_job.url)
93
 
                logger.info("downstream job created: {}".format(downstream_jenkins_job))
 
92
                logging.info("downstream job created: {}".format(downstream_jenkins_job))
94
93
                if downstream_jenkins_job:
95
94
                    downstream_jenkins_job.upstream_job = jenkins_job
96
95
                    downstream_jenkins_job.project = jenkins_job.project
97
96
                    downstream_jenkins_job.save()
98
97
        except EnvironmentError, e:
99
 
            logger.info("EnvironmentError: {}".format(e))
 
98
            logging.info("EnvironmentError: {}".format(e))
100
99
    if create_builds:
101
100
        for build in extractor_job.builds:
102
101
            try:
105
104
                # DEBUGGING: Hack, only return 1 build to speed things up
106
105
                #break
107
106
            except EnvironmentError, e:
108
 
                logger.info("EnvironmentError: {}".format(e))
 
107
                logging.info("EnvironmentError: {}".format(e))
109
108
    return jenkins_job
110
109
 
111
110
 
112
111
def create_jenkins_job_from_name(server, name):
113
 
    logger.debug("Creating JenkinsJob from name {}.".format(name))
 
112
    logging.debug("Creating JenkinsJob from name {}.".format(name))
114
113
    return create_jenkins_job_from_url(extractor.get_job_url(server, name))
115
114
 
116
115
 
139
138
            build = util_jenkins_build.create_jenkins_build_from_url(
140
139
                jenkinsapi_build.baseurl, jenkins_job)
141
140
            if not build:
142
 
                logger.error("Failed to create build for {}.".format(jenkins_job))
 
141
                logging.error("Failed to create build for {}.".format(jenkins_job))
143
142
    except CiException:
144
143
        # This happens when a job that was published in the past is not
145
144
        # found. This can happen due to multiconfiguration jobs that have
148
147
        # It's also possible that an old, unused job is archived and deleted
149
148
        # from jenkins.
150
149
        # The dashboard should handle this gracefully.
151
 
        logger.info("Jenkins job {} not known on Jenkins server {}.".format(
 
150
        logging.info("Jenkins job {} not known on Jenkins server {}.".format(
152
151
                jenkins_job.name, settings.JENKINS_URL))