Explorar o código

HUE-3667 [libsentry] Workaround in API for THRIFT-3388 hash error

Romain Rigaux %!s(int64=9) %!d(string=hai) anos
pai
achega
0a67b5c

+ 2 - 2
desktop/libs/libsentry/gen-py/sentry_generic_policy_service/ttypes.py

@@ -261,7 +261,7 @@ class TSentryPrivilege(object):
     value = 17
     value = (value * 31) ^ hash(self.component)
     value = (value * 31) ^ hash(self.serviceName)
-    value = (value * 31) ^ hash(self.authorizables)
+    value = (value * 31) ^ hash(frozenset(self.authorizables))
     value = (value * 31) ^ hash(self.action)
     value = (value * 31) ^ hash(self.createTime)
     value = (value * 31) ^ hash(self.grantorPrincipal)
@@ -1623,7 +1623,7 @@ class TSentryRole(object):
   def __hash__(self):
     value = 17
     value = (value * 31) ^ hash(self.roleName)
-    value = (value * 31) ^ hash(self.groups)
+    value = (value * 31) ^ hash(frozenset(self.groups))
     return value
 
   def __repr__(self):

+ 8 - 11
desktop/libs/libsentry/src/libsentry/client2.py

@@ -23,7 +23,8 @@ from sentry_generic_policy_service import SentryGenericPolicyService
 from sentry_generic_policy_service.ttypes import TListSentryRolesRequest, TListSentryPrivilegesRequest, TAuthorizable, TCreateSentryRoleRequest, \
     TDropSentryRoleRequest, TAlterSentryRoleGrantPrivilegeRequest, TSentryPrivilege, TAlterSentryRoleGrantPrivilegeResponse, \
     TAlterSentryRoleRevokePrivilegeRequest, TAlterSentryRoleAddGroupsRequest, TAlterSentryRoleDeleteGroupsRequest, \
-    TListSentryPrivilegesForProviderRequest, TSentryActiveRoleSet, TDropPrivilegesRequest, TRenamePrivilegesRequest
+    TListSentryPrivilegesForProviderRequest, TSentryActiveRoleSet, TDropPrivilegesRequest, TRenamePrivilegesRequest, \
+    TListSentryPrivilegesByAuthRequest
 
 from libsentry.sentry_site import get_sentry_server_authentication,\
   get_sentry_server_principal
@@ -175,13 +176,9 @@ class SentryClient(object):
 
 
   def list_sentry_privileges_by_authorizable(self, authorizableSet, groups=None, roleSet=None):
-#     authorizableSet = [TAuthorizable(**authorizable) for authorizable in authorizableSet]
-#     if roleSet is not None:
-#       roleSet = TSentryActiveRoleSet(**roleSet)
-#
-#     request = TListSentryPrivilegesByAuthRequest(requestorUserName=self.username, component=self.component, authorizableSet=authorizableSet, groups=groups, roleSet=roleSet)
-#     return self.client.list_sentry_privileges_by_authorizable(request)
-    return type('Response', (object,), {
-        'status': type('Status', (object,), {'value': 0}),
-        'privilegesMapByAuth': {}
-    })
+    authorizableSet = [TAuthorizable(**authorizable) for authorizable in authorizableSet]
+    if roleSet is not None:
+      roleSet = TSentryActiveRoleSet(**roleSet)
+
+    request = TListSentryPrivilegesByAuthRequest(requestorUserName=self.username, component=self.component, authorizableSet=authorizableSet, groups=groups, roleSet=roleSet)
+    return self.client.list_sentry_privileges_by_authorizable(request)