Nutanix OpenStack Servieice VM(OVM)2015.1.0 で、Horizon ダッシュボードのログイン時に、どこかがおかしくなることがあります。
今回の OVM はこれです。
[root@ovm02 ~]# ovmctl --show | tail -n 6 Version: -------- Version : 2015.1.0 Release : 1 Summary : Acropolis drivers for Openstack Kilo.
ちなみに、Horizon Dashboard の RPM はこれです。
[root@ovm02 ~]# rpm -q python-django-horizon python-django-horizon-2015.1.1-1.el7.noarch
「どこかがおかしくなりました!」の様子
ダッシュボードログイン直後にこの画面になり、Web ブラウザのクッキーを削除(+ ブラウザ再起動)しないと再ログインできるようになりません。
「どこかがおかしくなりました!」では、下記のようなエラーが発生します。
/var/log/horizon/horizon.log
2016-04-13 20:03:43,745 6015 INFO openstack_auth.forms Login successful for user "admin". 2016-04-13 20:03:43,747 6015 ERROR django.request Internal Server Error: /dashboard/auth/login/ Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.7/site-packages/django/views/decorators/debug.py", line 76, in sensitive_post_parameters_wrapper return view(request, *args, **kwargs) File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 110, in _wrapped_view response = view_func(request, *args, **kwargs) File "/usr/lib/python2.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "/usr/lib/python2.7/site-packages/openstack_auth/views.py", line 111, in login **kwargs) File "/usr/lib/python2.7/site-packages/django/views/decorators/debug.py", line 76, in sensitive_post_parameters_wrapper return view(request, *args, **kwargs) File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 110, in _wrapped_view response = view_func(request, *args, **kwargs) File "/usr/lib/python2.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "/usr/lib/python2.7/site-packages/django/contrib/auth/views.py", line 51, in login auth_login(request, form.get_user()) File "/usr/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 102, in login if _get_user_session_key(request) != user.pk or ( File "/usr/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 59, in _get_user_session_key return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY]) File "/usr/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 969, in to_python params={'value': value}, ValidationError: [u"'05d43262036849f1918b57de4802b823' \u306f\u6574\u6570\u5024\u306b\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"]
対処方法
これは、もともと Horizon Dashboard が持っている、タイムアウト後に発生する不具合のようです。
Bug 1221117 – Horizon: Re login failed after timeout
そして、下記のような感じで修正すればよいようです。
/usr/share/openstack-dashboard/openstack_dashboard/settings.py に、「AUTH_USER_MODEL = 'openstack_auth.User'」を追記します。
デフォルトのファイルです。
[root@ovm02 ~]# grep AUTHENTICATION_URLS -n -C2 /usr/share/openstack-dashboard/openstack_dashboard/settings.py 168-TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' 169-AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',) 170:AUTHENTICATION_URLS = ['openstack_auth.urls'] 171-MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' 172-
171行目に追記します。
[root@ovm02 ~]# sed -i -e "171i AUTH_USER_MODEL = 'openstack_auth.User'" /usr/share/openstack-dashboard/openstack_dashboard/settings.py
追記されました。
[root@ovm02 ~]# grep AUTHENTICATION_URLS -n -C2 /usr/share/openstack-dashboard/openstack_dashboard/settings.py 168-TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' 169-AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',) 170:AUTHENTICATION_URLS = ['openstack_auth.urls'] 171-AUTH_USER_MODEL = 'openstack_auth.User' 172-MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
そして httpd を再起動するとログインできるようになります。
[root@ovm02 ~]# systemctl restart httpd
以上。