Added support for user/pass auth to invoker
authorRamon van Alteren <ramon@vanalteren.nl>
Thu, 5 Jan 2012 12:56:30 +0000 (13:56 +0100)
committerRamon van Alteren <ramon@vanalteren.nl>
Thu, 5 Jan 2012 12:56:30 +0000 (13:56 +0100)
pyjenkinsci/command_line/jenkins_invoke.py

index e2b812c..54ad596 100644 (file)
@@ -14,15 +14,15 @@ class jenkins_invoke(object):
         parser.help_text = "Execute a number of jenkins jobs on the server of your choice. Optionally block until the jobs are complete."
         parser.add_option("-J", "--jenkinsbase", dest="baseurl",
                           help="Base URL for the Jenkins server, default is %s" % DEFAULT_BASEURL,
-                          type="str",
-                          default=DEFAULT_BASEURL, )
-        parser.add_option("-b", "--block", dest="block",
-                          help="Block until each of the jobs is complete." ,
-                          action="store_true",
-                          default=False )
-        parser.add_option("-t", "--token", dest="token",
-                          help="Optional security token." ,
-                          default=None )
+                          type="str", default=DEFAULT_BASEURL)
+        parser.add_option('--username', '-u', dest='username',
+                        help="Username for jenkins authentification", type='str', default=None)
+        parser.add_option('--password', '-p', dest='password',
+                        help="password for jenkins user auth", type='str', default=None)
+        parser.add_option("-b", "--block", dest="block", action="store_true", default=False,
+                          help="Block until each of the jobs is complete.")
+        parser.add_option("-t", "--token", dest="token",help="Optional security token.",
+                          default=None)
         return parser
 
     @classmethod
@@ -41,18 +41,20 @@ class jenkins_invoke(object):
     def __init__(self, options, jobs):
         self.options = options
         self.jobs = jobs
+        self.api = self._get_api(baseurl=options.baseurl, username=options.username, password=options.password)
+
+    def _get_api(self, baseurl, username, password):
+        return jenkins.Jenkins(baseurl, username, password)
 
     def __call__(self):
         for job in self.jobs:
-            self.invokejob(job, block=self.options.block, baseurl=self.options.baseurl, token=self.options.token)
+            self.invokejob(job, block=self.options.block, token=self.options.token)
 
-    def invokejob(self, jobname, block, baseurl, token ):
+    def invokejob(self, jobname, block, token):
         assert type(block) == bool
-        assert type(baseurl) == str
         assert type(jobname) == str
         assert token is None or isinstance(token, str)
-        jenkinsserver = jenkins.Jenkins( baseurl )
-        job = jenkinsserver[jobname]
+        job = self.api.get_job(jobname)
         job.invoke(securitytoken=token, block=block)