** Also affects: python-jenkins (Ubuntu Noble)
Importance: Undecided
Status: New
** Changed in: python-jenkins (Ubuntu)
Status: New => Invalid
** Changed in: python-jenkins (Ubuntu Noble)
Assignee: (unassigned) => Skia (skia)
** Changed in: python-jenkins (Ubuntu Noble)
Importance: Undecided => Medium
** Description changed:
[ Impact ]
Current python-jenkins crashes almost immediatly. I don't know if there is a
usage that does not crash, but a simple invokation of `jenkins-jobs` crashes
almost immediately when starting to talk to the Jenkins controller:
$ jenkins-jobs update --delete-old -r
/jenkins/servers/platformqa/workspace/deploy-qa-jobs/qa-jenkins-jobs/jobs
INFO:jenkins_jobs.cli.subcommand.update:Updating jobs in [...] ([])
[...]
INFO:jenkins_jobs.builder:Number of views generated: 0
INFO:jenkins_jobs.cli.subcommand.update:Number of views updated: 0
Traceback (most recent call last):
- File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 775, in
get_info
- return json.loads(self.jenkins_open(
- ^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 564, in
jenkins_open
- return self.jenkins_request(req, add_crumb, resolve_auth).text
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 583, in
jenkins_request
- self._request(req))
- ^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 557, in
_request
- return self._session.send(r, **_settings)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/requests/sessions.py", line 703, in
send
- r = adapter.send(request, **kwargs)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/requests/adapters.py", line 483, in
send
- timeout = TimeoutSauce(connect=timeout, read=timeout)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/urllib3/util/timeout.py", line 119, in
__init__
- self._connect = self._validate_timeout(connect, "connect")
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/urllib3/util/timeout.py", line 156, in
_validate_timeout
- raise ValueError(
+ File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 775, in
get_info
+ return json.loads(self.jenkins_open(
+ ^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 564, in
jenkins_open
+ return self.jenkins_request(req, add_crumb, resolve_auth).text
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 583, in
jenkins_request
+ self._request(req))
+ ^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 557, in
_request
+ return self._session.send(r, **_settings)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 703, in
send
+ r = adapter.send(request, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 483, in
send
+ timeout = TimeoutSauce(connect=timeout, read=timeout)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/urllib3/util/timeout.py", line 119, in
__init__
+ self._connect = self._validate_timeout(connect, "connect")
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/urllib3/util/timeout.py", line 156, in
_validate_timeout
+ raise ValueError(
ValueError: Timeout value connect was <object object at 0x7edcaa178a20>, but
it must be an int, float or None.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
- File "/usr/bin/jenkins-jobs", line 10, in <module>
- sys.exit(main())
- ^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins_jobs/cli/entry.py", line 174,
in main
- jjb.execute()
- File "/usr/lib/python3/dist-packages/jenkins_jobs/cli/entry.py", line 154,
in execute
- ext.obj.execute(self.options, self.jjb_config)
- File
"/usr/lib/python3/dist-packages/jenkins_jobs/cli/subcommand/update.py", line
166, in execute
- n = builder.delete_old_managed(keep=keep_jobs)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins_jobs/builder.py", line 203, in
delete_old_managed
- jobs = self.get_jobs()
- ^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins_jobs/builder.py", line 184, in
get_jobs
- return self.jobs
- ^^^^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins_jobs/builder.py", line 94, in
jobs
- self._jobs = self.jenkins.get_all_jobs()
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 1027, in
get_all_jobs
- jobs = [(0, [], self.get_info(query=jobs_query)['jobs'])]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 782, in
get_info
- raise JenkinsException("Could not parse JSON info for server[%s]"
+ File "/usr/bin/jenkins-jobs", line 10, in <module>
+ sys.exit(main())
+ ^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins_jobs/cli/entry.py", line 174,
in main
+ jjb.execute()
+ File "/usr/lib/python3/dist-packages/jenkins_jobs/cli/entry.py", line 154,
in execute
+ ext.obj.execute(self.options, self.jjb_config)
+ File
"/usr/lib/python3/dist-packages/jenkins_jobs/cli/subcommand/update.py", line
166, in execute
+ n = builder.delete_old_managed(keep=keep_jobs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins_jobs/builder.py", line 203, in
delete_old_managed
+ jobs = self.get_jobs()
+ ^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins_jobs/builder.py", line 184, in
get_jobs
+ return self.jobs
+ ^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins_jobs/builder.py", line 94, in
jobs
+ self._jobs = self.jenkins.get_all_jobs()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 1027, in
get_all_jobs
+ jobs = [(0, [], self.get_info(query=jobs_query)['jobs'])]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 782, in
get_info
+ raise JenkinsException("Could not parse JSON info for server[%s]"
jenkins.JenkinsException: Could not parse JSON info for server[<REDACTED>]
[ Test Plan ]
On a Jenkins agent, running `jenkins-jobs` should work normally without
crashing
with the afformentionned traceback.
Specifically, in the platform-qa-jenkins.ps5 environment, SSH-ing to an agent
and running the following should not crash:
$ jenkins-jobs update --delete-old -r
/jenkins/servers/platformqa/workspace/deploy-qa-jobs/qa-jenkins-jobs/jobs
-
[ Where problems could occur ]
- * The patch was grabbed directly from upstream, and applies cleanly, but
- upstream applied it on version just before 1.8.1 (first release of the
- patch), while this SRU applies it on 1.4.0. Such version difference could
- have unintended side-effect, but fortunately, the code base seems to have
had
- little changes, and the patch is faily small and simple.
- * This is an Architecture: all pure Python package, so we should at least not
- expect the whole class of issues that come with rebuilding C libraries.
+ * The patch was grabbed directly from upstream, and applies cleanly, but
+ upstream applied it on version just before 1.8.1 (first release of the
+ patch), while this SRU applies it on 1.4.0. Such version difference could
+ have unintended side-effect, but fortunately, the code base seems to have
had
+ little changes, and the patch is faily small and simple.
+ * This is an Architecture: all pure Python package, so we should at least not
+ expect the whole class of issues that come with rebuilding C libraries.
[ Other Info ]
The bug seems to have been there since the release of Noble. It's only being
fixed now because our Jenkins agents that essentially run the test plan have
only recently been upgraded.
+ Subsequent series have `python-jenkins/1.8.2-2` or higher, so already
+ have the patch applied from upstream.
[ Original description ]
It looks like current version is incompatible with python3-urllib3
Presumably we need this patch from upstream
https://opendev.org/jjb/python-
jenkins/commit/ba9f06e0c2381f6506a92e9c0553b2f475975a18
>>> import jenkins
>>> server = jenkins.Jenkins('http://localhost:8080', username='username',
password='password')
>>> user = server.get_whoami()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 800, in
get_whoami
response = self.jenkins_open(requests.Request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 564, in
jenkins_open
return self.jenkins_request(req, add_crumb, resolve_auth).text
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 580, in
jenkins_request
self.maybe_add_crumb(req)
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 369, in
maybe_add_crumb
response = self.jenkins_open(requests.Request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 564, in
jenkins_open
return self.jenkins_request(req, add_crumb, resolve_auth).text
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 583, in
jenkins_request
self._request(req))
^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 557, in
_request
return self._session.send(r, **_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 703, in
send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 483, in
send
timeout = TimeoutSauce(connect=timeout, read=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urllib3/util/timeout.py", line 119, in
__init__
self._connect = self._validate_timeout(connect, "connect")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urllib3/util/timeout.py", line 156, in
_validate_timeout
raise ValueError(
ValueError: Timeout value connect was <object object at 0x7dec12578860>, but
it must be an int, float or None.
** Summary changed:
- python-jenkins is broken on Ubuntu 24.04
+ [SRU]: python-jenkins is broken on Ubuntu 24.04
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2107468
Title:
[SRU]: python-jenkins is broken on Ubuntu 24.04
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python-jenkins/+bug/2107468/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs