Revert a8cc61ef
so horizon will build
Revert a8cc61efcf
as Horizon has
landed the bugfix upstraem and its now available in RDO. From source
is not pulling master, so this isn't an issue there.
Change-Id: I4acd76698102e2203ce3b70d9988ad3cb2c1c8c5
Closes-Bug: #1482894
This commit is contained in:
parent
0b63b64d05
commit
608527debc
@ -5,18 +5,13 @@ RUN yum -y install \
|
||||
openstack-dashboard \
|
||||
httpd \
|
||||
mod_wsgi \
|
||||
patch \
|
||||
&& yum clean all \
|
||||
&& chown -R apache:apache /usr/share/openstack-dashboard/static
|
||||
|
||||
# The chown is required because of this packaging bug:
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1219006
|
||||
|
||||
COPY config-internal.sh config-external.sh horizon-bug-1469284.patch /opt/kolla/
|
||||
# TODO(mduggan): Need to remove this patch once a fix for
|
||||
# https://bugs.launchpad.net/kolla/+bug/1469284 becomes available upstream.
|
||||
# Review for this bug is at https://review.openstack.org/#/c/167981/
|
||||
RUN patch /usr/lib/python2.7/site-packages/openstack_auth/user.py < /opt/kolla/horizon-bug-1469284.patch
|
||||
COPY config-internal.sh config-external.sh /opt/kolla/
|
||||
COPY ./start.sh /start.sh
|
||||
|
||||
CMD ["/start.sh"]
|
||||
|
@ -1 +0,0 @@
|
||||
../../../common/horizon/horizon-bug-1469284.patch
|
@ -1 +0,0 @@
|
||||
../../../common/horizon/horizon-bug-1469284.patch
|
@ -1,88 +0,0 @@
|
||||
--- /usr/lib/python2.7/site-packages/openstack_auth/user.py
|
||||
+++ /usr/lib/python2.7/site-packages/openstack_auth/user.py
|
||||
@@ -16,6 +16,7 @@ import logging
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import models
|
||||
+from django.db import models as dbmodels
|
||||
from keystoneclient.common import cms as keystone_cms
|
||||
from keystoneclient import exceptions as keystone_exceptions
|
||||
|
||||
@@ -117,7 +118,7 @@ class Token(object):
|
||||
self.serviceCatalog = auth_ref.service_catalog.get_data()
|
||||
|
||||
|
||||
-class User(models.AnonymousUser):
|
||||
+class User(models.AbstractBaseUser, models.PermissionsMixin):
|
||||
"""A User class with some extra special sauce for Keystone.
|
||||
|
||||
In addition to the standard Django user attributes, this class also has
|
||||
@@ -185,13 +186,17 @@ class User(models.AnonymousUser):
|
||||
Unscoped Keystone token.
|
||||
|
||||
"""
|
||||
+
|
||||
+ USERNAME_FIELD = 'id'
|
||||
+ id = dbmodels.CharField(max_length=240, primary_key=True)
|
||||
+
|
||||
def __init__(self, id=None, token=None, user=None, tenant_id=None,
|
||||
service_catalog=None, tenant_name=None, roles=None,
|
||||
authorized_tenants=None, endpoint=None, enabled=False,
|
||||
services_region=None, user_domain_id=None,
|
||||
user_domain_name=None, domain_id=None, domain_name=None,
|
||||
project_id=None, project_name=None,
|
||||
- is_federated=False, unscoped_token=None):
|
||||
+ is_federated=False, unscoped_token=None, password=None):
|
||||
self.id = id
|
||||
self.pk = id
|
||||
self.token = token
|
||||
@@ -216,11 +221,14 @@ class User(models.AnonymousUser):
|
||||
# Unscoped token is used for listing user's project that works
|
||||
# for both federated and keystone user.
|
||||
self.unscoped_token = unscoped_token
|
||||
+ self.password = None
|
||||
|
||||
# List of variables to be deprecated.
|
||||
self.tenant_id = self.project_id
|
||||
self.tenant_name = self.project_name
|
||||
|
||||
+ self.USERNAME_FIELD = self.username
|
||||
+
|
||||
def __unicode__(self):
|
||||
return self.username
|
||||
|
||||
@@ -382,6 +390,23 @@ class User(models.AnonymousUser):
|
||||
the user has a permissions matching one of the elements of
|
||||
that tuple
|
||||
"""
|
||||
+
|
||||
+ def check_service_enabled(perm):
|
||||
+ """Permission check for enabled services.
|
||||
+
|
||||
+ Check should return false, if service disabled
|
||||
+ """
|
||||
+ enabled_service = perm.split("openstack.services.")[1:]
|
||||
+ if enabled_service:
|
||||
+ if isinstance(enabled_service, list):
|
||||
+ enabled_service = enabled_service[0]
|
||||
+ for service in self.service_catalog:
|
||||
+ service_type = service.get('type', '')
|
||||
+ if service_type == enabled_service:
|
||||
+ return True
|
||||
+ return False
|
||||
+ return True
|
||||
+
|
||||
# If there are no permissions to check, just return true
|
||||
if not perm_list:
|
||||
return True
|
||||
@@ -394,4 +419,10 @@ class User(models.AnonymousUser):
|
||||
# check that a permission in the tuple matches
|
||||
if not self.has_a_matching_perm(perm, obj):
|
||||
return False
|
||||
+ # check if service disabled
|
||||
+ if isinstance(perm, basestring):
|
||||
+ return check_service_enabled(perm)
|
||||
+ else:
|
||||
+ for p in perm:
|
||||
+ return check_service_enabled(p)
|
||||
return True
|
Loading…
Reference in New Issue
Block a user