Adds support for deleting builds

Support for deleting individual builds for a Jenkins job.

Change-Id: I35c98855b0883986a85cbe7212ec52e6f67e5638
Signed-off-by: Sorin Sbarnea <ssbarnea@redhat.com>
This commit is contained in:
Teemu Patja 2016-03-07 12:29:44 +02:00 committed by Sorin Sbarnea
parent e15a54bdc3
commit 03ed39ba01
3 changed files with 34 additions and 0 deletions

@ -23,6 +23,7 @@ the things you can use it for:
* Create/delete/reconfig views
* Put server in shutdown mode (quiet down)
* List running builds
* Delete builds
* Create/delete/update folders [#f1]_
* Set the next build number [#f2]_
* Install plugins

@ -115,6 +115,7 @@ STOP_BUILD = '%(folder_url)sjob/%(short_name)s/%(number)s/stop'
BUILD_WITH_PARAMS_JOB = '%(folder_url)sjob/%(short_name)s/buildWithParameters'
BUILD_INFO = '%(folder_url)sjob/%(short_name)s/%(number)d/api/json?depth=%(depth)s'
BUILD_CONSOLE_OUTPUT = '%(folder_url)sjob/%(short_name)s/%(number)d/consoleText'
DELETE_BUILD = '%(folder_url)sjob/%(short_name)s/%(number)s/doDelete'
NODE_LIST = 'computer/api/json'
CREATE_NODE = 'computer/doCreateItem'
DELETE_NODE = 'computer/%(name)s/doDelete'
@ -1216,6 +1217,16 @@ class Jenkins(object):
'POST', self._build_url(STOP_BUILD, locals())
))
def delete_build(self, name, number):
"""Delete a Jenkins build.
:param name: Name of Jenkins job, ``str``
:param number: Jenkins build number for the job, ``int``
"""
folder_url, short_name = self._get_job_folder(name)
self.jenkins_open(requests.Request('POST',
self._build_url(DELETE_BUILD, locals()), b''))
def get_running_builds(self):
'''Return list of running builds.

@ -203,6 +203,28 @@ class JenkinsStopBuildTest(JenkinsTestBase):
self._check_requests(jenkins_mock.call_args_list)
class JenkinsDeleteBuildTest(JenkinsTestBase):
@patch.object(jenkins.Jenkins, 'jenkins_open')
def test_simple(self, jenkins_mock):
self.j.delete_build(u'Test Job', number=52)
self.assertEqual(
jenkins_mock.call_args[0][0].url,
self.make_url('job/Test%20Job/52/doDelete'))
self._check_requests(jenkins_mock.call_args_list)
@patch.object(jenkins.Jenkins, 'jenkins_open')
def test_in_folder(self, jenkins_mock):
self.j.delete_build(u'a Folder/Test Job', number=52)
self.assertEqual(
jenkins_mock.call_args[0][0].url,
self.make_url('job/a%20Folder/job/Test%20Job/52/doDelete'))
self._check_requests(jenkins_mock.call_args_list)
class JenkinsListRunningBuildsTest(JenkinsTestBase):
@patch.object(jenkins.Jenkins, 'get_node_info')
@patch.object(jenkins.Jenkins, 'get_nodes')