aboutsummaryrefslogtreecommitdiffstats
path: root/keystone-moon/keystone/contrib/moon/backends/sql.py
diff options
context:
space:
mode:
Diffstat (limited to 'keystone-moon/keystone/contrib/moon/backends/sql.py')
-rw-r--r--keystone-moon/keystone/contrib/moon/backends/sql.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/keystone-moon/keystone/contrib/moon/backends/sql.py b/keystone-moon/keystone/contrib/moon/backends/sql.py
index 9f4beb6b..43bd3078 100644
--- a/keystone-moon/keystone/contrib/moon/backends/sql.py
+++ b/keystone-moon/keystone/contrib/moon/backends/sql.py
@@ -323,8 +323,21 @@ __all_objects__ = (
Rule,
)
+
class TenantConnector(TenantDriver):
+ @staticmethod
+ def __update_dict(base, update):
+ """Update a dict only if values are not None
+
+ :param base: dict to update
+ :param update: updates for the base dict
+ :return: None
+ """
+ for key in update:
+ if type(update[key]) is not None:
+ base[key] = update[key]
+
def get_tenants_dict(self):
with sql.transaction() as session:
query = session.query(Tenant)
@@ -354,13 +367,10 @@ class TenantConnector(TenantDriver):
query = session.query(Tenant)
query = query.filter_by(id=tenant_id)
ref = query.first()
- tenant_ref = ref.to_dict()
- tenant_ref.update(tenant_dict)
- new_tenant = Tenant(id=tenant_id, tenant=tenant_ref)
- for attr in Tenant.attributes:
- if attr != 'id':
- setattr(ref, attr, getattr(new_tenant, attr))
- return {ref.id: ref.tenant}
+ tenant_dict_orig = dict(ref.tenant)
+ self.__update_dict(tenant_dict_orig, tenant_dict)
+ setattr(ref, "tenant", tenant_dict_orig)
+ return {ref.id: tenant_dict_orig}
class IntraExtensionConnector(IntraExtensionDriver):