← Back to team overview

python-jenkins-developers team mailing list archive

[Merge] lp:~gandelman-a/python-jenkins/rename_and_output into lp:python-jenkins

 

Adam Gandelman has proposed merging lp:~gandelman-a/python-jenkins/rename_and_output into lp:python-jenkins.

Requested reviews:
  Python Jenkins Developers (python-jenkins-developers)

For more details, see:
https://code.launchpad.net/~gandelman-a/python-jenkins/rename_and_output/+merge/163414

Two new methods:

get_build_console_output() + rename_job()
-- 
https://code.launchpad.net/~gandelman-a/python-jenkins/rename_and_output/+merge/163414
Your team Python Jenkins Developers is requested to review the proposed merge of lp:~gandelman-a/python-jenkins/rename_and_output into lp:python-jenkins.
=== modified file 'jenkins/__init__.py'
--- jenkins/__init__.py	2013-04-13 21:59:59 +0000
+++ jenkins/__init__.py	2013-05-12 03:55:29 +0000
@@ -67,11 +67,12 @@
 ENABLE_JOB = 'job/%(name)s/enable'
 DISABLE_JOB = 'job/%(name)s/disable'
 COPY_JOB = 'createItem?name=%(to_name)s&mode=copy&from=%(from_name)s'
+RENAME_JOB   = 'job/%(name)s/doRename?newName=%(new_name)s'
 BUILD_JOB = 'job/%(name)s/build'
 STOP_BUILD = 'job/%(name)s/%(number)s/stop'
 BUILD_WITH_PARAMS_JOB = 'job/%(name)s/buildWithParameters'
 BUILD_INFO = 'job/%(name)s/%(number)d/api/json?depth=0'
-
+BUILD_CONSOLE_OUTPUT = 'job/%(name)s/%(number)d/consoleText'
 
 CREATE_NODE = 'computer/doCreateItem?%s'
 DELETE_NODE = 'computer/%(name)s/doDelete'
@@ -308,6 +309,19 @@
         if not self.job_exists(to_name):
             raise JenkinsException('create[%s] failed' % (to_name))
 
+    def rename_job(self, name, new_name):
+        '''
+        Rename an existing Jenkins job
+
+        :param name: Name of Jenkins job to rename, ``str``
+        :param new_name: New Jenkins job name, ``str``
+        '''
+        self.get_job_info(name)
+        self.jenkins_open(urllib2.Request(
+            self.server + RENAME_JOB % locals(), ''))
+        if not self.job_exists(new_name):
+            raise JenkinsException('rename[%s] failed'%(new_name))
+
     def delete_job(self, name):
         '''
         Delete Jenkins job permanently.
@@ -551,3 +565,28 @@
 
         if not self.node_exists(name):
             raise JenkinsException('create[%s] failed' % (name))
+
+    def get_build_console_output(self, name, number):
+        '''
+        Get build console text.
+
+        :param name: Job name, ``str``
+        :param name: Build number, ``int``
+        :returns: Build console output,  ``str``
+        '''
+        try:
+            response = self.jenkins_open(urllib2.Request(
+                self.server + BUILD_CONSOLE_OUTPUT % locals()))
+            if response:
+                return response
+            else:
+                raise JenkinsException('job[%s] number[%d] does not exist'
+                                       % (name, number))
+        except urllib2.HTTPError:
+            raise JenkinsException('job[%s] number[%d] does not exist'
+                                   % (name, number))
+        except ValueError:
+            raise JenkinsException(
+                'Could not parse JSON info for job[%s] number[%d]'
+                % (name, number)
+            )


Follow ups