|
@@ -25,9 +25,12 @@ LOG = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
class SentryException(Exception):
|
|
class SentryException(Exception):
|
|
|
- def __init__(self, e, message=''):
|
|
|
|
|
|
|
+ def __init__(self, e):
|
|
|
super(SentryException, self).__init__(e)
|
|
super(SentryException, self).__init__(e)
|
|
|
- self.message = message
|
|
|
|
|
|
|
+ self.message = e.status.message
|
|
|
|
|
+
|
|
|
|
|
+ def __str__(self):
|
|
|
|
|
+ return self.message
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_api(user):
|
|
def get_api(user):
|
|
@@ -113,7 +116,7 @@ class SentryApi(object):
|
|
|
response = self.client.list_sentry_privileges_by_role(roleName, authorizableHierarchy)
|
|
response = self.client.list_sentry_privileges_by_role(roleName, authorizableHierarchy)
|
|
|
|
|
|
|
|
if response.status.value == 0:
|
|
if response.status.value == 0:
|
|
|
- return [self._massage_priviledges(privilege) for privilege in response.privileges]
|
|
|
|
|
|
|
+ return [self._massage_priviledge(privilege) for privilege in response.privileges]
|
|
|
else:
|
|
else:
|
|
|
raise SentryException(response)
|
|
raise SentryException(response)
|
|
|
|
|
|
|
@@ -127,6 +130,25 @@ class SentryApi(object):
|
|
|
raise SentryException(response)
|
|
raise SentryException(response)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ def list_sentry_privileges_by_authorizable(self, authorizableSet, groups=None, roleSet=None):
|
|
|
|
|
+ response = self.client.list_sentry_privileges_by_authorizable(authorizableSet, groups, roleSet)
|
|
|
|
|
+
|
|
|
|
|
+ print response
|
|
|
|
|
+
|
|
|
|
|
+ _privileges = []
|
|
|
|
|
+
|
|
|
|
|
+ for authorizable, roles in response.privilegesMapByAuth.iteritems():
|
|
|
|
|
+ _roles = {}
|
|
|
|
|
+ for role, privileges in roles.privilegeMap.iteritems():
|
|
|
|
|
+ _roles[role] = [self._massage_priviledge(privilege) for privilege in privileges]
|
|
|
|
|
+ _privileges.append((self._massage_authorizable(authorizable), _roles))
|
|
|
|
|
+
|
|
|
|
|
+ if response.status.value == 0:
|
|
|
|
|
+ return _privileges
|
|
|
|
|
+ else:
|
|
|
|
|
+ raise SentryException(response)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def drop_sentry_privileges(self, authorizableHierarchy):
|
|
def drop_sentry_privileges(self, authorizableHierarchy):
|
|
|
response = self.client.drop_sentry_privilege(authorizableHierarchy)
|
|
response = self.client.drop_sentry_privilege(authorizableHierarchy)
|
|
|
|
|
|
|
@@ -145,7 +167,7 @@ class SentryApi(object):
|
|
|
raise SentryException(response)
|
|
raise SentryException(response)
|
|
|
|
|
|
|
|
|
|
|
|
|
- def _massage_priviledges(self, privilege):
|
|
|
|
|
|
|
+ def _massage_priviledge(self, privilege):
|
|
|
return {
|
|
return {
|
|
|
'scope': privilege.privilegeScope,
|
|
'scope': privilege.privilegeScope,
|
|
|
'server': privilege.serverName,
|
|
'server': privilege.serverName,
|
|
@@ -155,4 +177,13 @@ class SentryApi(object):
|
|
|
'action': privilege.action.upper(),
|
|
'action': privilege.action.upper(),
|
|
|
'timestamp': privilege.createTime,
|
|
'timestamp': privilege.createTime,
|
|
|
'grantOption': privilege.grantOption == 1,
|
|
'grantOption': privilege.grantOption == 1,
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ def _massage_authorizable(self, authorizable):
|
|
|
|
|
+ return {
|
|
|
|
|
+ 'server': authorizable.server,
|
|
|
|
|
+ 'database': authorizable.db,
|
|
|
|
|
+ 'table': authorizable.table,
|
|
|
|
|
+ 'URI': authorizable.uri,
|
|
|
|
|
+ }
|