Contributions
The register of my upstream OpenStack changes, with their Gerrit number, their state, and a link to each review.
I contribute to OpenStack under the Gerrit account kallioli. This is
recent: most of what follows dates from August 2026. “Upstream contributor
to Horizon and openstacksdk” is accurate; nothing stronger would be, and
all of it is one click away from being checked.
Most of the work is on Horizon, the OpenStack dashboard: codebase modernisation (Python 3.14, Django 6.0) and a series of security fixes, mostly about escaping content and about how much the WebSSO flow trusts the Referer header.
Where each one stands is in the table below rather than in this sentence. It moves at the pace of review, and prose that copies it is prose that ends up lying.
Merged (12)
| Project | Change | Subject | Status | Submitted |
|---|---|---|---|---|
| openstack/horizon | 1008568 | Scroll sidebar links into view before clicking them | Merged | |
| openstack/horizon | 1005130 | Send only the blob when updating a user credential | Merged | |
| openstack/horizon | 1004551 | Remove dead usages_json from the resize workflow | Merged | |
| openstack/horizon | 1004343 | Stop using deprecated SDK attribute names in tests | Merged | |
| openstack/horizon | 1002951 | Build Content-Disposition with Django's helper | Merged | |
| openstack/horizon | 1002893 | Build flavor test data with openstacksdk | Merged | |
| openstack/horizon | 1002891 | Add WEBSSO_ALLOWED_REFERER_HOSTS | Merged | |
| openstack/horizon | 1002889 | doc: warn about the WebSSO Referer setting | Merged | |
| openstack/horizon | 1002877 | Escape JSON embedded in inline script blocks | Merged | |
| openstack/horizon | 1002871 | Add non-voting job to test Django 6.0 | Merged | |
| openstack/horizon | 1002869 | Add Python 3.14 support | Merged | |
| openstack/openstacksdk | 984963 | Add project_cleanup support for load_balancer and key_manager | Merged |
In review (8)
| Project | Change | Subject | Status | Submitted |
|---|---|---|---|---|
| openstack/horizon | 1008567 | Read provider network attributes under their SDK names | In review | |
| openstack/horizon | 1008545 | Return Neutron quotas under the names Horizon uses | In review | |
| openstack/horizon | 1006122 | Flush the session on WebSSO logout | In review | |
| openstack/horizon | 1004550 | Stop leaking SESSION_ENGINE between tests | In review | |
| openstack/horizon | 1004269 | Allow setting the DNS name of a port | In review | |
| openstack/keystone | 1003960 | Survive samltest.id being unreachable | In review | |
| openstack/horizon | 1003879 | Sort the Action Log by time, not by its text | In review | |
| openstack/horizon | 931759 | Add backward compatibility for port forwarding | In review |
Abandoned (2)
Reviews given (15)
| Project | Change | Subject |
|---|---|---|
| openstack/barbican-ui | 972298 | Drop payload content types Barbican rejects |
| openstack/barbican-ui | 996843 | Fix for certificate payload content type |
| openstack/barbican-ui | 1004802 | Fix broken footer button on secret reveal modal |
| openstack/barbican-ui | 1005588 | Remove the entry-points declaration and the comment about it |
| openstack/horizon | 829901 | Add parameter validation for namespaces request |
| openstack/horizon | 991554 | Fix server-side boolean filtering for project networks |
| openstack/horizon | 992403 | Fix build_attrs signature for modern Django |
| openstack/horizon | 995169 | Show "Delete with Instance" option for attached volumes |
| openstack/horizon | 995333 | Silence a django 6.0 warning about https scheme |
| openstack/horizon | 997654 | Find unnamed volumes by their displayed name |
| openstack/horizon | 997655 | Find unnamed volumes by their displayed name |
| openstack/horizon | 997656 | Find unnamed volumes by their displayed name |
| openstack/horizon | 1003616 | SDK for Nova hypervisors |
| openstack/horizon | 1007644 | Fix ValueError when no metadata namespaces exist for a resource type |
| openstack/keystone | 985969 | Fix: TOTP authentication lockout risk in Keystone |
This register is regenerated from the OpenDev Gerrit API by a script in the repository. It lists everything: merged changes, changes in review, and abandoned ones. An abandoned patch usually means the problem was framed wrong, or that a better fix already existed. That is information, not a stain.