197 Commits

Author SHA1 Message Date
Darragh Bailey
cd237fbcad Pass form data as body instead of in the url
Switch create node to pass form data via request body, removing the
need for special handling in the _build_url method. Consequently remove
the string placeholder in the endpoint format string.

Remove unnecessary parameters of name and type from inclusion in the
json form data item, confirming they are ignored and required to be set
in the main form data.

Tested against jenkins 2.19.4.

Change-Id: I5f8f870a2ee3539505e984abccb0c87c632c1b9a
2018-01-05 16:36:30 +00:00
Andrew Mellen
16007e0185 Sanitize url in get_info() function
Change-Id: I540f6d636e277d0ad230f844d2db6220edfb672f
Closes-Bug: #1698815
2017-09-15 18:49:20 -04:00
Ken Dreyer
828eb92c48 doc: add get_job_config() example
Change-Id: I0d1ad26fc9b3c3343f25e3f34786a4891ac60c78
0.4.15
2017-05-03 10:55:40 -06:00
Ken Dreyer
04c153cc0b create_node: avoid double-encoding
Prior to this change, create_node() would double-encode certain url
params: once when quote()'ing in _get_encoded_params(), and again in
urlencode().

This would cause HTTP 400 errors when creating a node with a name that
contains a url-encodable character, like "my+test+node".

Reviewed-by: Alfredo Deza <adeza@redhat.com>

Change-Id: I237e2988e168af81e623d3f065753f2e9b617696
2017-05-01 10:30:35 -06:00
ZhangHongtao
2b69951603 Add py35 to tox envlist
Change-Id: I53751e49290a9bda0670015a2d5a6f975e375483
2017-03-10 17:52:14 +08:00
Jenkins
331bfa36df Merge "Fix error thrown in presence of placeholder tasks" 2017-03-02 14:54:45 +00:00
Jerry Zhao
96b5c92a08 remove cap on pbr
pbr has updated to 2.0.0 so the cap here will break other packages
like jjb

Change-Id: Ic2d76863d587ecf041c1c8bba32a856e8c12eba0
0.4.14
2017-03-01 14:55:02 -08:00
grahamlyons
106048dd87 Fix error thrown in presence of placeholder tasks
When there are placeholder tasks in an executor for a node then there is no
build number yet assigned and attempting to access that key in the dictionary
will fail.

This fix filters out any tasks which are instances of that class before
proceeding.

Change-Id: Ie5b237c3e6023c1822f91e5982ec84f1a363130c
Closes-Bug: #1659787
2017-02-09 16:30:52 +00:00
Sam Clotfelter
0843ae7850 Changes get_job_info to get_build_info
Changes incorrect get_job_info call to correct get_build_info in docs.

Closes-bug: #1660089
Change-Id: I0a0ada795c4b0385a7ba6b23d0654b9faf077869
2017-01-28 19:13:04 -05:00
Guido Günther
0f6739103b Allow to wait for jenkins to enter normal operation
During Jenkins deployment via e.g. puppet jenkins might be started but
not yet serving requests. Allow to wait for jenkins to enter normal
operation mode and fail if it doesn't show up after N seconds.

Allow for 0 seconds to just test and return success or failure without
any waiting.

This will allow us to avoid open coding "is jenkins ready?" for
different provisioners like puppet, chef, salt, ansible, ... when this
gets jused by jjb.

Change-Id: I7fd8aed43f571528f27dac681cc1e1f77a0e0ad7
Co-Authored-By: Darragh Bailey <dbailey@hp.com>
2017-01-21 06:41:45 -08:00
Andreas Jaeger
1b08573a94 Use standard cover setup
Replace coverage testing with the normal way coverage is tested in
OpenStack.

Change-Id: Ic171e33a876029727b473481e56fdd94fce5ec6e
2016-12-20 22:17:24 +01:00
mhuin
cf4f3d17ed url-proof scripts passed to run_script
Groovy scripts may contain characters that need to be escaped prior
to being passed to Jenkins' REST API; for example "&&" in condition
testing. Not doing so will result in a script execution failure on
the server.

Change-Id: Ied6c2a48392cadbadb84865dad47ceed99e694a1
2016-12-16 16:39:45 +00:00
Jenkins
234aa6550c Merge "get_running_builds failed when server has a path" 2016-11-14 16:10:56 +00:00
Jenkins
58ee77a633 Merge "Fix relative import in kerberos support for python3" 2016-11-14 08:40:34 +00:00
Ardar Martian
0d7b59f5d2 get_running_builds failed when server has a path
When the server has an URL path such as http://example.org/ci/, the
get_running_builds() would fail to extract the job name from the
executor informations.  It most probably fails when using CloudBees
folder as well.

Relax the regex used to detect the job name by changing match() with
search().

Update JenkinsListRunningBuildsTest so it craft the URLs based on the
test scenario (make_url) instead of hardcoding them.  That would have
caught the bug. See 2aa1a5f1 which introduced the scenarios.

Signed-off-by: Antoine Musso <hashar@free.fr>
Change-Id: I1b69adf121ee74e3336ac9bd1d4d55797fb72de5
2016-11-08 10:47:04 +01:00
Jan Hruban
2a1fe48c00 Fix relative import in kerberos support for python3
Change-Id: Ibf0bd24d9fcadf14ae26e380c4da9147545ad83f
2016-11-03 09:22:21 +01:00
Anh Tran
d7d0470cc4 Remove redundant 'the'
Change-Id: I48b0f125a70cda096e17bc4f65da463c176add0f
2016-10-21 14:32:20 +07:00
Andreas Jaeger
c54c98a9f0 Move other-requirements.txt to bindep.txt
The default filename for documenting binary dependencies has been
changed from "other-requirements.txt" to "bindep.txt" with the release
of bindep 2.1.0. While the previous name is still supported, it will
be deprecated.

Move the file around to follow this change.

Note that this change is self-testing, the OpenStack CI infrastructure
will use a "bindep.txt" file to setup nodes for testing.

For more information about bindep, see also:
http://docs.openstack.org/infra/manual/drivers.html#package-requirements
http://docs.openstack.org/infra/bindep/

As well as this announcement:
http://lists.openstack.org/pipermail/openstack-dev/2016-August/101590.html

Change-Id: I378707f8dab18749ef1a279026a28f1b5f605c8b
2016-08-21 10:38:27 +02:00
Swapnil Kulkarni (coolsvap)
ac0ca9fbf4 Remove discover from test-requirements
It's only needed for python < 2.7 which is not supported

Change-Id: I8364eaa7b8b6189f8c0545d30697d40823e1b050
2016-07-22 04:02:12 +00:00
Jenkins
2e389ce44b Merge "Do not force DeprecationWarning to be displayed" 2016-07-14 17:19:07 +00:00
Jenkins
d149d0aed0 Merge "Fixed a minor typo in example of Python-jenkins" 2016-07-14 16:30:37 +00:00
Khai Do
5e99b853bc Setup required packages with bindep
python-jenkins fails to build without the kerberose packages and those
packages are not included in our xenial images.  Use bindep to
configure the required minimum set of required packages.

build error:
  building 'kerberos' extension
  creating build
  creating build/temp.linux-x86_64-2.7
  creating build/temp.linux-x86_64-2.7/src
  x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes
   -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong
   -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c src/base64.c
   -o build/temp.linux-x86_64-2.7/src/base64.o sh: 1: krb5-config: not found
  x86_64-linux-gnu-gcc: error: sh:: No such file or directory
  x86_64-linux-gnu-gcc: error: 1:: No such file or directory
  x86_64-linux-gnu-gcc: error: krb5-config:: No such file or directory
  x86_64-linux-gnu-gcc: error: not: No such file or directory
  x86_64-linux-gnu-gcc: error: found: No such file or directory
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

  ----------------------------------------
  Failed building wheel for kerberos

Change-Id: Iad6e10ef6ef05e0b5c6db08dbb97b2c3a3e42a30
2016-07-13 10:14:35 -07:00
Jonathan Perret
5cbdccfb81 Do not force DeprecationWarning to be displayed
This change removes a `warnings.simplefilter` call that forced
`DeprecationWarning` occurrences (whether they are generated by this
library or any other code) to be displayed to the user. This call caused
Jenkins Job Builder, for example, to display several developer-targeted
warnings that are not helpful to the final user.

According to the Python documentation:

> Warnings that are only of interest to the developer are ignored by
> default. […] Having certain warnings ignored by default is done to
> prevent a user from seeing warnings that are only of interest to the
> developer. […] While you as a developer want to be notified that your
> code is using a deprecated module, to a user this information is
> essentially noise and provides no benefit to them.

(https://docs.python.org/2/library/warnings.html#updating-code-for-new-versions-of-python)

Change-Id: I31d4c6bd494361aa153fd59e2ceb6bedccd280bc
2016-07-13 12:21:51 +02:00
Abhijeet Kasurde
fc0600c035 Fixed a minor typo in example of Python-jenkins
Change-Id: Id99b7bc1f68f98da23c7b62227cbf673915cd991
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2016-07-04 18:10:30 +05:30
Jenkins
4d495afe74 Merge "Fetch all builds from a job" 0.4.13 2016-05-19 05:26:40 +00:00
Jenkins
e39c4dcbd1 Merge "Make the kerberos support python3 ready" 2016-04-29 19:06:12 +00:00
Jan Hruban
d2cfca68d0 Make the kerberos support python3 ready
urllib.request.Request.get_host() is removed in python >=3.4 in favor of
urllib.request.Request.host. It works in python 2.7 too.

Update the test to use Mock with spec where applicable, to ensure that
only available attributes are accessed.

Change-Id: I0e6a4e1539f9db329b6f113207d52f171cc600a7
2016-04-29 19:30:24 +02:00
Chris St. Pierre
0881b20cbf Fetch all builds from a job
Jenkins only provides 100 builds of a job with the job info. This
makes python-jenkins fetch all builds when there are more than 100.

Change-Id: I326efa11c975e036b65a159414062966239c9749
2016-04-29 16:22:34 +00:00
Ken Dreyer
fd8c8151b9 add get_whoami()
This function is useful for simply testing that a user's authentication
credentials are correct.

Change-Id: I07841eccd9cd2015ac432c9c22fb8e451a638c0c
2016-04-21 07:45:19 -06:00
Aliaksandr Buhayeu
f6f26ec481 Adds possibility to retrieve all jobs from the view specified
This patch adds the new `view_name` argument
to the `get_jobs` method that limits the list of jobs
returned to only those configured in the view specified.

Change-Id: I78266ed13cd6c183a2f4858458817455b79d9a23
2016-02-22 18:03:48 +03:00
Jenkins
6728d36463 Merge "Add optional kerberos support" 2016-01-27 23:38:09 +00:00
Lukas Vacek
4152a0138b Add optional kerberos support
Check if "kerberos" package can be imported at runtime
(in __init__.py).  If not, everything works as before.
If "kerberos" package can be imported register a new
urllib handler (defined in urllib_kerb.py) which adds
support for kerberos auth.

This urllib handler (urllib_kerb.py) is only triggered
on 401 (Unauthorized) response, and we try to auth
with kerberos. If unsuccessful, next 401 handler (if any)
is triggered.

Change-Id: I1a47e455aa14535a124df950994718a11d7e4f57
2016-01-27 23:08:04 +01:00
Guido Günther
0c503b724c Add support for handling promotions
Promotions can be attached to jobs via the REST API described at:

https://issues.jenkins-ci.org/browse/JENKINS-8963

Co-Authored-By: Guido Günther <agx@sigxcpu.org>
Co-Authored-By: Joao Vale <jpvale@gmail.com>

Change-Id: I756a35f53f96ba6e46e71f36ea99f62d32b604d2
2016-01-13 18:14:39 +01:00
shu-mutou
dccae5fd10 Drop py33 support
"Python 3.3 support is being dropped since OpenStack Liberty."
written in following URL.
https://wiki.openstack.org/wiki/Python3

And already the infra team and the oslo team are dropping py33
support from their projects.

Since we rely on oslo for a lot of our work, and depend on infra
for our CI, we should drop py33 support too.

Change-Id: Id129b5c418ad49ea805888309d031ff8a9960be9
Closes-Bug: #1526170
0.4.12
2015-12-15 17:58:03 +09:00
Jenkins
4cace9dadf Merge "Deprecated tox -downloadcache option removed" 2015-12-14 19:59:09 +00:00
Dong Ma
302eb5dad6 Fixed create_node() Error
Fixed create_node() raises HTTP Error 400 Bad Request

This issue caused by:
    self.jenkins_open(Request(
        self._build_url(CREATE_NODE, params), b''))
The "params" dictionary of options isn't parsed correctly
during _build_url funciton that Jenkins is expecting

Fixed it use urlencode to parse the params and construct
the URL

Change-Id: I85fa43bc0b4ff1530133b862734e94aede9b44a5
Closes-Bug: #1500898
2015-12-12 18:35:03 +08:00
Ondřej Nový
83c53c4e71 Deprecated tox -downloadcache option removed
Caching is enabled by default from pip version 6.0

More info:
https://testrun.org/tox/latest/config.html#confval-downloadcache=path
https://pip.pypa.io/en/stable/reference/pip_install/#caching

Change-Id: Ib6b624be80e9e562d5204333b291a2b2ea3d8958
2015-12-11 21:25:03 +01:00
Jenkins
4c0536b428 Merge "Use TestWithScenarios to add additional url tests" 2015-12-02 19:50:08 +00:00
Darragh Bailey
2aa1a5f1b8 Use TestWithScenarios to add additional url tests
It's important to check that we correctly handle the server url for all
API calls, so ensure that the test code uses test scenarios to cover.

Fix get_info() api call creation of url.

Change-Id: Idb0becc4c0c56df81bc5545919e530b7a77dadc9
2015-12-02 11:35:59 -08:00
venkatamahesh
46a2f0a039 Change repositories from stackforge to openstack
Change-Id: I6ee5446f2e99da14edadf43491a970c7d91f788f
2015-11-03 06:39:27 +05:30
Jeremy Stanley
3b2dc286c9 Update .gitreview for new namespace
Change-Id: I55daf7c070f7a0a619e7a4376c6534cdf0cf483f
2015-10-17 22:37:18 +00:00
Clark Boylan
ce69828653 Handle depth errors in get_running_builds
There are cases where asking for depth>0 node_info will 500. This breaks
listing jobs because we raise and stop looking for running jobs. Handle
this by checking if it is a 500 error at depth=2 and if so check
depth=0. If that returns successfully treat it as a broken slave that
isn't running any jobs.

If depth=0 returns an error things are probably much more broken and
should be looked into.

Change-Id: Ieac15a0fe2a47ec3dae51db96ad2fe40992c353a
0.4.11
2015-10-07 17:01:55 -07:00
Darragh Bailey
87a892a232 Use str as base class for PluginVersion
To allow PluginVersion class to be passed to builtin functions expecting
a string type, need to use 'str' as the base class. This ensures
the change to support version comparison is completely transparent to
the calling code, but permits changes to benefit from the new behaviour
without breaking existing usage.

Change-Id: I7d434294fa45171e47ea4876d01398cb75f5d962
0.4.9.1 0.4.10
2015-09-29 18:08:21 +01:00
Jenkins
344b5f3ffa Merge "Provider helper classes for plugin data management" 0.4.9 2015-09-28 17:34:05 +00:00
Khai Do
0167b7f8f9 Support ability to install plugins
Add the ability to install the latest version of a Jenkins plugin.
Thanks to Fatih Degirmenci for providing the groovy script[1]

[1] http://pastebin.com/9qWeVYSP

Change-Id: I67a0b02710a9f5007a6529d87222e5777e744337
2015-09-28 10:21:21 -07:00
Darragh Bailey
8b3023dc18 Provider helper classes for plugin data management
Add some common management and version comparison capabilities via
dedicated classes to simplify how calling libraries can perform version
checks on the installed plugins.

Update the comments on the existing methods to note that they return the
raw plugin data in JSON format instead of the parsed local objects.

Change-Id: If43bb945f55c6fb9f8a6595091eace12e4630ffa
2015-09-28 18:15:57 +01:00
Kevin L. Mitchell
244b4fed30 Allow setting the next build number
We can discover the next build number Jenkins will use for a particular
job using get_job_info(), but there's currently no way through
python-jenkins to set the next build number.  This change introduces
the set_next_build_number() method which, given a job name and a
desired number, sets the next build number of the named job to the
given number.

Limitations: Jenkins enforces that build numbers must be monotonically
increasing, but gives no indication of an error; it simply ignores the
offending value.

Change-Id: I23b5a84b7ea37d66bf778a89343e3c81ffa9ceb6
2015-09-24 10:06:05 -05:00
Jerome Hourquebie
7267eec454 Adds Cloudbees folder plugin support
This patch adds cloudbees folder plugin support. Folder should be
specified in job name : <folder>/<job>

This update also extend job_builder
(http://ci.openstack.org/jenkins-job-builder/) tool without any
modification.

Change-Id: I6d3957c217e1253e53152d90d5fcce5e69c77674
Co-Authored-By: Darragh Bailey <daragh.bailey@gmail.com>
2015-09-21 18:25:35 +01:00
Clark Boylan
f80e54b4bc Add function to get running builds
It can be useful to get a list of running builds from jenkins. This is
particularly useful when you need to take an action on a specific built
or if you need to know when the jenkins master has finished running all
builds (say after quieting down). Add a function to return this list.

Change-Id: I5c7dac8076250f94cd2b358c5b153d9410f53aee
2015-09-15 15:54:20 -07:00
Clark Boylan
f763f5c703 Change order of tox envs for testr
If we run python3 tests before python2 tests the testrepository DB works
fine. If we run python2 first the python3 tests cannot read the
testrepository DB. The simple fix here is to change the order of the tox
env list so that python3 always runs first.

Change-Id: I5118c65f07c0f761e211cd2f186ab11d2f8a3393
2015-09-15 10:24:36 -07:00