Beispiel #1
0
def task_listener_jenkins_invoke_job(worker, job):

    rev = "happy!!"

    jenkins_data = simplejson.loads(job.data)
    try:
        myj = Jenkins(jenkins_data['url'])
        job = myj.get_job(jenkins_data['job_id'])
        #job.invoke(securitytoken=token, block=block)
        job.invoke(invoke_pre_check_delay=0)
    except:
        rev = "Not Happy!!!"

    return rev
def task_listener_jenkins_invoke_job(worker, job):
    
    rev = "happy!!"
    
    jenkins_data = simplejson.loads(job.data)
    try:
        myj = Jenkins(jenkins_data['url'])
        job = myj.get_job(jenkins_data['job_id'])
        #job.invoke(securitytoken=token, block=block)
        job.invoke(invoke_pre_check_delay=0)
    except:
        rev="Not Happy!!!" 
    
    return rev
def getServerInstance(jenkins_url, jenkins_usr, jenkins_psw):
    try:
        server = Jenkins(jenkins_url, username=jenkins_usr, password=jenkins_psw)
        return server
    except:
        # TODO using logger with filter for error messages
        print("Server unavailable or credentials errors")
        return None
Beispiel #4
0
	def __init__(self, jenkinsurl):
		self.jenkinsurl = jenkinsurl
		self.jenkins = Jenkins(self.jenkinsurl)
Beispiel #5
0
class JenkinsClient():
	def __init__(self, jenkinsurl):
		self.jenkinsurl = jenkinsurl
		self.jenkins = Jenkins(self.jenkinsurl)


	def get_user_list(self):
		userList = []
		urlJSON = self.jenkins.get_data(self.jenkins.base_server_url() + '/asynchPeople/api/python')
		userListJSON = urlJSON['users']
		for userJSON in userListJSON:
			user = userJSON['user']
			userName = user['fullName']
			userDict = {'name': userName}
			userList.append(userDict)
		return userList


	def get_last_failure(self):
		last_failed_build_date = None
		culprits = []
		broken_jobs = []
		for item in self.jenkins.get_jobs():
			job = self.jenkins.get_job(item[0])

			if (job._data['color'] == "disabled"):
				continue

			last_build = job.get_last_build_or_none()
			build = None
			if job._data.has_key("lastFailedBuild"):
				last_failure = job._data["lastFailedBuild"]
				if last_failure.has_key("number"):
					build_number = last_failure["number"]
					build = job.get_build(build_number)

			if (( build is not None ) and ( last_build is not None ) and (
				last_build.get_number() == build.get_number() ) ):
				broken_jobs.append(job.name)
				for culprit in build.get_culprits():
					culprits.append(culprit['fullName'])
				continue
			if ( build is not None ):
				if ( last_failed_build_date is None ):
					last_failed_build_date = build.get_timestamp()
				else:
					if ( last_failed_build_date < build.get_timestamp() ):
						last_failed_build_date = build.get_timestamp()

		result = {'culprits': culprits, 'broken_jobs': broken_jobs}
		if ( not broken_jobs ):
			result.update({'last_failed': last_failed_build_date})
		return result


	def get_jobs_status(self):
		jobs = []
		for item in self.jenkins.get_jobs():
			job = self.jenkins.get_job(item[0])
			project = {'project': item[0]}
			build = job.get_last_build_or_none()
			if ( build ):
				project.update({'last_build': build.get_number()})
				project.update({'status': build.get_status()})
				if ( build.is_running() ):
					project.update({'status': 'BUILDING'})
				# who broke the build
				if ( build.get_actions()["causes"][0].has_key("userId") ):
					project.update({'user': build.get_actions()["causes"][0]["userId"]})
			else:
				project.update({'last_build': None})
			jobs.append(project)

		return jobs


	def get_view_status(self, view_name):
		views = Views(self.jenkins)
		view = views.__getitem__(view_name)
		jobs = []
		for item in view._get_jobs():
			job = self.jenkins.get_job(item[0])
			project = {'project': item[0]}
			build = job.get_last_build_or_none()
			if ( build ):
				project.update({'last_build': build.get_number()})
				project.update({'status': build.get_status()})

				previousBuild = job.get_build(build.get_number() - 1)
				project.update({'previousBuildStatus': previousBuild.get_status()})

				if ( build.is_running() ):
					project.update({'status': 'BUILDING'})

					estimated = build._data['estimatedDuration']
					completed = (time.time() * 1000) - build._data['timestamp']
					completeRate = (completed * 100) / estimated
					if (completeRate > 99):
						completeRate = 99
					project.update({'completeRate': completeRate})

				# who broke the build
				if ( build.get_actions()["causes"][0].has_key("userId") ):
					project.update({'user': build.get_actions()["causes"][0]["userId"]})
			else:
				project.update({'last_build': None})
			jobs.append(project)

		return jobs


	def get_job(self, job_name):
		return self.jenkins.get_job(job_name)

	def get_culprits(self, build):
		return build._data["culprits"]

	def get_bonus_per_build(self, job):
		return len(job.get_downstream_jobs())
Beispiel #6
0
'''
Created on Dec 7, 2012

@author: khaido
'''
from jenkinsapi.api import Jenkins

myj = Jenkins('http://localhost:8080')
jobs_str = myj.get_jobs()
jobs_list = myj.get_jobs_list()
for job in jobs_list:
    # what labels are jobs associated with?
    print job

node_dict = myj.get_node_dict()
for k, v in sorted(node_dict.items()):
    print k + '=' + v

myn = myj.get_node('poppy')
node_data = myn.get_node_data()
node_bla = myn.get_data()

#job.invoke(securitytoken=token, block=block)
myjob = myj.get_job('pep')
myjob.invoke(invoke_pre_check_delay=0)

#print j.get_jobs()
#j.create_job('empty', jenkins.EMPTY_CONFIG_XML)
#j.disable_job('empty')
#j.copy_job('empty', 'empty_copy')
#j.enable_job('empty_copy')
'''
Created on Dec 7, 2012

example of controlling jenkins using the python jenkinsapi.  

@author: khaido
'''

from jenkinsapi.api import Jenkins


myj = Jenkins('http://localhost:8080')
jobs_str =  myj.get_jobs()
jobs_list = myj.get_jobs_list()
for job in jobs_list:
    # what labels are jobs associated with?
    print job 
    
node_dict = myj.get_node_dict()
for k, v in sorted(node_dict.items()):
    print k+'='+v

myn = myj.get_node('poppy')
node_data = myn.get_node_data()
node_bla = myn.get_data()
             

#job.invoke(securitytoken=token, block=block)
myjob = myj.get_job('pep')
myjob.invoke(invoke_pre_check_delay=0)
Beispiel #8
0
 def __init__(self, jenkinsurl):
     self.jenkinsurl = jenkinsurl
     self.jenkins = Jenkins(self.jenkinsurl)
Beispiel #9
0
class JenkinsClient():
    def __init__(self, jenkinsurl):
        self.jenkinsurl = jenkinsurl
        self.jenkins = Jenkins(self.jenkinsurl)

    def get_user_list(self):
        userList = []
        urlJSON = self.jenkins.get_data(self.jenkins.base_server_url() +
                                        '/asynchPeople/api/python')
        userListJSON = urlJSON['users']
        for userJSON in userListJSON:
            user = userJSON['user']
            userName = user['fullName']
            userDict = {'name': userName}
            userList.append(userDict)
        return userList

    def get_last_failure(self):
        last_failed_build_date = None
        culprits = []
        broken_jobs = []
        for item in self.jenkins.get_jobs():
            job = self.jenkins.get_job(item[0])

            if (job._data['color'] == "disabled"):
                continue

            last_build = job.get_last_build_or_none()
            build = None
            if job._data.has_key("lastFailedBuild"):
                last_failure = job._data["lastFailedBuild"]
                if last_failure.has_key("number"):
                    build_number = last_failure["number"]
                    build = job.get_build(build_number)

            if ((build is not None) and (last_build is not None)
                    and (last_build.get_number() == build.get_number())):
                broken_jobs.append(job.name)
                for culprit in build.get_culprits():
                    culprits.append(culprit['fullName'])
                continue
            if (build is not None):
                if (last_failed_build_date is None):
                    last_failed_build_date = build.get_timestamp()
                else:
                    if (last_failed_build_date < build.get_timestamp()):
                        last_failed_build_date = build.get_timestamp()

        result = {'culprits': culprits, 'broken_jobs': broken_jobs}
        if (not broken_jobs):
            result.update({'last_failed': last_failed_build_date})
        return result

    def get_jobs_status(self):
        jobs = []
        for item in self.jenkins.get_jobs():
            job = self.jenkins.get_job(item[0])
            project = {'project': item[0]}
            build = job.get_last_build_or_none()
            if (build):
                project.update({'last_build': build.get_number()})
                project.update({'status': build.get_status()})
                if (build.is_running()):
                    project.update({'status': 'BUILDING'})
                # who broke the build
                if (build.get_actions()["causes"][0].has_key("userId")):
                    project.update(
                        {'user': build.get_actions()["causes"][0]["userId"]})
            else:
                project.update({'last_build': None})
            jobs.append(project)

        return jobs

    def get_view_status(self, view_name):
        views = Views(self.jenkins)
        view = views.__getitem__(view_name)
        jobs = []
        for item in view._get_jobs():
            job = self.jenkins.get_job(item[0])
            project = {'project': item[0]}
            build = job.get_last_build_or_none()
            if (build):
                project.update({'last_build': build.get_number()})
                project.update({'status': build.get_status()})

                previousBuild = job.get_build(build.get_number() - 1)
                project.update(
                    {'previousBuildStatus': previousBuild.get_status()})

                if (build.is_running()):
                    project.update({'status': 'BUILDING'})

                    estimated = build._data['estimatedDuration']
                    completed = (time.time() * 1000) - build._data['timestamp']
                    completeRate = (completed * 100) / estimated
                    if (completeRate > 99):
                        completeRate = 99
                    project.update({'completeRate': completeRate})

                # who broke the build
                if (build.get_actions()["causes"][0].has_key("userId")):
                    project.update(
                        {'user': build.get_actions()["causes"][0]["userId"]})
            else:
                project.update({'last_build': None})
            jobs.append(project)

        return jobs

    def get_job(self, job_name):
        return self.jenkins.get_job(job_name)

    def get_culprits(self, build):
        return build._data["culprits"]

    def get_bonus_per_build(self, job):
        return len(job.get_downstream_jobs())