[horizon] Horizon's openstack_auth is completely broken with Django 2.2, breaking all the dashboad stack in Debian Sid/Bullseye
Hi, Django 2.2 was uploaded to Debian Sid/Bullseye a few days after Buster was released, removing at the same time any support for Python 2. This broke lots of packages, but I managed to upload more than 40 times to fix the situation. Though Horizon is still completely broken. There's a bunch of issues related to Django 2.2 for Horizon. I managed to patch Horizon for a few of them, but there's one bigger issue which I can't solve myself, because I'm not skilled enough in Django, and don't know enough about Horizon's internal. Let me explain. In Django 1.11, the login() function in openstack_auth/views.py was deprecated in the favor of a LoginView class. In Django 2.2, the login() function is now not supported anymore. This means that, if openstack_auth/views.py doesn't get rewritten completely, Horizon will continue to be completely broken in Debian Sid/Bullseye. Unfortunately, the Horizon team is understaffed, and the PTL told me that they don't plan anything before Train+1. As a consequence, Horizon is completely broken in Debian Sid/Bullseye, and will stay as it is if nobody steps up for the work. After a month and a half with this situation not being solved by anyone, I'm hereby calling for help. I could attempt to work on this, though I need help and pointers at some example implementation of this. It'd be nicer if someone more skilled than me in Django was working on this anyways. Cheers, Thomas Goirand (zigo)
Hey Thomas, I'm not really a Horizon core dev, but have assisted in Django version migrations in the past, plus have a little experience with the openstack_auth code (and need to do some openstack_auth changes soon anyway). I'll see how my workload is, and maybe try and work on some fixes for this, but at the very least would be happy to review or help with this work. I think the rush to upgrade to Django 2.2 has been put off until the next release since 1.11 is still an active LTS, but in truth it looks like it will stop being the LTS before the next cycle... which makes 2.2 kind of urgent. Let's see about getting this sorted! Cheers, Adrian On 25/08/19 9:55 AM, Thomas Goirand wrote:
Hi,
Django 2.2 was uploaded to Debian Sid/Bullseye a few days after Buster was released, removing at the same time any support for Python 2. This broke lots of packages, but I managed to upload more than 40 times to fix the situation. Though Horizon is still completely broken.
There's a bunch of issues related to Django 2.2 for Horizon. I managed to patch Horizon for a few of them, but there's one bigger issue which I can't solve myself, because I'm not skilled enough in Django, and don't know enough about Horizon's internal. Let me explain.
In Django 1.11, the login() function in openstack_auth/views.py was deprecated in the favor of a LoginView class. In Django 2.2, the login() function is now not supported anymore. This means that, if openstack_auth/views.py doesn't get rewritten completely, Horizon will continue to be completely broken in Debian Sid/Bullseye.
Unfortunately, the Horizon team is understaffed, and the PTL told me that they don't plan anything before Train+1.
As a consequence, Horizon is completely broken in Debian Sid/Bullseye, and will stay as it is if nobody steps up for the work.
After a month and a half with this situation not being solved by anyone, I'm hereby calling for help.
I could attempt to work on this, though I need help and pointers at some example implementation of this. It'd be nicer if someone more skilled than me in Django was working on this anyways.
Cheers,
Thomas Goirand (zigo)
On 8/26/19 4:46 AM, Adrian Turjak wrote:
Hey Thomas,
I'm not really a Horizon core dev, but have assisted in Django version migrations in the past, plus have a little experience with the openstack_auth code (and need to do some openstack_auth changes soon anyway).
I'll see how my workload is, and maybe try and work on some fixes for this, but at the very least would be happy to review or help with this work.
I think the rush to upgrade to Django 2.2 has been put off until the next release since 1.11 is still an active LTS, but in truth it looks like it will stop being the LTS before the next cycle... which makes 2.2 kind of urgent.
Let's see about getting this sorted!
Cheers, Adrian
Hi Adrian, Thanks if you can commit a bit of time on this. FYI, even in Django 1.11, the login() function was deprecated, and Django 2.2 was in Debian Experimental since last January. So this is really an overdue issue. Feel free to ping me on IRC if you want to work on this with me (I'm zigo on both OFTC and freenode). Thomas Goirand (zigo)
On Sat, 2019-08-24 at 23:55 +0200, Thomas Goirand wrote:
Hi,
Django 2.2 was uploaded to Debian Sid/Bullseye a few days after Buster was released, removing at the same time any support for Python 2. This broke lots of packages, but I managed to upload more than 40 times to fix the situation. Though Horizon is still completely broken.
There's a bunch of issues related to Django 2.2 for Horizon. I managed to patch Horizon for a few of them, but there's one bigger issue which I can't solve myself, because I'm not skilled enough in Django, and don't know enough about Horizon's internal. Let me explain.
In Django 1.11, the login() function in openstack_auth/views.py was deprecated in the favor of a LoginView class. In Django 2.2, the login() function is now not supported anymore. This means that, if openstack_auth/views.py doesn't get rewritten completely, Horizon will continue to be completely broken in Debian Sid/Bullseye.
Unfortunately, the Horizon team is understaffed, and the PTL told me that they don't plan anything before Train+1.
As a consequence, Horizon is completely broken in Debian Sid/Bullseye, and will stay as it is if nobody steps up for the work.
After a month and a half with this situation not being solved by anyone, I'm hereby calling for help.
I could attempt to work on this, though I need help and pointers at some example implementation of this. It'd be nicer if someone more skilled than me in Django was working on this anyways.
Fortunately, I do know Django, so I've gone and tackled this series here. https://review.opendev.org/#/q/topic:django22+status:open+project:openstack/... All the unit tests are passing now, so I assume that's all that's needed. I didn't test anything manually. Probably a longer conversation to be had here regarding the long term viability of Horizon if issues like this are going to become more common (probably similar to what we're having in docs, oslo, etc.) but that's one for someone else to lead. Cheers, Stephen
Awesome work! I've started reviewing the patches and they mostly look good and easy to merge. Just gotta get the core devs looking through them and merging them. I think this is urgent since if we fail to add 2.2 support this cycle, then Horizon will be out of LTS support for Django before the next release cycle ends. On 27/08/19 8:46 AM, Stephen Finucane wrote:
On Sat, 2019-08-24 at 23:55 +0200, Thomas Goirand wrote:
Hi,
Django 2.2 was uploaded to Debian Sid/Bullseye a few days after Buster was released, removing at the same time any support for Python 2. This broke lots of packages, but I managed to upload more than 40 times to fix the situation. Though Horizon is still completely broken.
There's a bunch of issues related to Django 2.2 for Horizon. I managed to patch Horizon for a few of them, but there's one bigger issue which I can't solve myself, because I'm not skilled enough in Django, and don't know enough about Horizon's internal. Let me explain.
In Django 1.11, the login() function in openstack_auth/views.py was deprecated in the favor of a LoginView class. In Django 2.2, the login() function is now not supported anymore. This means that, if openstack_auth/views.py doesn't get rewritten completely, Horizon will continue to be completely broken in Debian Sid/Bullseye.
Unfortunately, the Horizon team is understaffed, and the PTL told me that they don't plan anything before Train+1.
As a consequence, Horizon is completely broken in Debian Sid/Bullseye, and will stay as it is if nobody steps up for the work.
After a month and a half with this situation not being solved by anyone, I'm hereby calling for help.
I could attempt to work on this, though I need help and pointers at some example implementation of this. It'd be nicer if someone more skilled than me in Django was working on this anyways. Fortunately, I do know Django, so I've gone and tackled this series here.
https://review.opendev.org/#/q/topic:django22+status:open+project:openstack/...
All the unit tests are passing now, so I assume that's all that's needed. I didn't test anything manually.
Probably a longer conversation to be had here regarding the long term viability of Horizon if issues like this are going to become more common (probably similar to what we're having in docs, oslo, etc.) but that's one for someone else to lead.
Cheers, Stephen
participants (3)
-
Adrian Turjak
-
Stephen Finucane
-
Thomas Goirand