فهرست منبع

[security] Replace drop_sentry_privilege by alter_sentry_role_revoke_privilege

Still not working apparently though
Romain Rigaux 11 سال پیش
والد
کامیت
788c272

+ 17 - 16
apps/security/src/security/api/hive.py

@@ -52,6 +52,17 @@ def list_sentry_privileges_by_role(request):
   return HttpResponse(json.dumps(result), mimetype="application/json")
 
 
+def _to_sentry_privilege(privilege):
+  return {
+      'privilegeScope': privilege['privilegeScope'],
+      'serverName': privilege['serverName'],
+      'dbName': privilege['dbName'],
+      'tableName': privilege['tableName'],
+      'URI': privilege['URI'],
+      'action': privilege['action']
+  }  
+
+
 def _hive_add_privileges(user, role, privileges):
     api = get_api(user)
 
@@ -59,14 +70,7 @@ def _hive_add_privileges(user, role, privileges):
 
     for privilege in privileges:
       if privilege['status'] not in ('deleted',):
-        api.alter_sentry_role_grant_privilege(role['name'], {
-            'privilegeScope': privilege['privilegeScope'],
-            'serverName': privilege['serverName'],
-            'dbName': privilege['dbName'],
-            'tableName': privilege['tableName'],
-            'URI': privilege['URI'],
-            'action': privilege['action']
-        })
+        api.alter_sentry_role_grant_privilege(role['name'], _to_sentry_privilege(privilege))
         # Mocked until Sentry API returns the info!
         _privileges.append({
             "name": "%s+%s+%s" % (privilege.get('serverName', ''), privilege.get('dbName', ''), privilege.get('tableName', '')),
@@ -79,8 +83,8 @@ def _hive_add_privileges(user, role, privileges):
     return _privileges
 
 
-def _drop_sentry_privilege(user, authorizable):
-  return get_api(user).drop_sentry_privilege(authorizable)
+def _drop_sentry_privilege(user, role, authorizable):
+  return get_api(user).alter_sentry_role_revoke_privilege(role['name'], _to_sentry_privilege(authorizable))
 
 
 def create_role(request):
@@ -116,12 +120,9 @@ def save_privileges(request):
     
     deleted_privileges = [privilege for privilege in role['privilegesChanged'] if privilege['status'] == 'deleted']
     for privilege in deleted_privileges:
-      _drop_sentry_privilege(request.user, {
-            'server': privilege['serverName'],
-            'uri': privilege['URI'] if privilege['URI'] else None,
-            'db': privilege['dbName'] if privilege['dbName'] else None,
-            'table': privilege['tableName'] if privilege['tableName'] else None,
-        })
+      print _drop_sentry_privilege(request.user, role, privilege)
+    
+    modified_privileges = [privilege for privilege in role['privilegesChanged'] if privilege['status'] == 'modified']
     
     result['message'] = ''
     result['status'] = 0

+ 23 - 1
apps/security/static/js/hive.ko.js

@@ -21,12 +21,34 @@ var Privilege = function (vm, privilege) {
   self.privilegeScope = ko.observable(typeof privilege.privilegeScope != "undefined" && privilege.privilegeScope != null ? privilege.privilegeScope : "");
   self.serverName = ko.observable(typeof privilege.serverName != "undefined" && privilege.serverName != null ? privilege.serverName : "");
   self.serverName.subscribe(function() {
-	  
+    if (self.status() == '') {
+      self.status('modified');
+    }
   });
   self.dbName = ko.observable(typeof privilege.dbName != "undefined" && privilege.dbName != null ? privilege.dbName : "");
+  self.dbName.subscribe(function() {
+	if (self.status() == '') {
+	  self.status('modified');
+	}
+  });
   self.tableName = ko.observable(typeof privilege.tableName != "undefined" && privilege.tableName != null ? privilege.tableName : "");
+  self.tableName.subscribe(function() {
+	if (self.status() == '') {
+	  self.status('modified');
+	}
+  });
   self.URI = ko.observable(typeof privilege.URI != "undefined" && privilege.URI != null ? privilege.URI : "");
+  self.URI.subscribe(function() {
+	if (self.status() == '') {
+	  self.status('modified');
+	}
+  });
   self.action = ko.observable(typeof privilege.action != "undefined" && privilege.action != null ? privilege.action : "");
+  self.action.subscribe(function() {
+	if (self.status() == '') {
+	  self.status('modified');
+	}
+  });
 
   self.status = ko.observable(typeof privilege.status != "undefined" && privilege.status != null ? privilege.status : "");
   self.edition = ko.observable(typeof privilege.edition != "undefined" && privilege.edition != null ? privilege.edition : false);

+ 1 - 0
desktop/libs/libsentry/src/libsentry/api.py

@@ -128,6 +128,7 @@ class SentryApi(object):
       raise SentryException(response)
 
 
+  # Use alter_sentry_role_revoke_privilege instead?
   def drop_sentry_privilege(self, authorizableHierarchy):
     response = self.client.drop_sentry_privilege(authorizableHierarchy)
 

+ 1 - 0
desktop/libs/libsentry/src/libsentry/client.py

@@ -84,6 +84,7 @@ class SentryClient(object):
   def alter_sentry_role_revoke_privilege(self, roleName, tSentryPrivilege):
     privilege = TSentryPrivilege(**tSentryPrivilege)
     request = TAlterSentryRoleRevokePrivilegeRequest(requestorUserName=self.username, roleName=roleName, privilege=privilege)
+    print request
     return self.client.alter_sentry_role_revoke_privilege(request)