Sfoglia il codice sorgente

[security] Bulk HDFS ACL sync support

Romain Rigaux 11 anni fa
parent
commit
003aa9e

+ 5 - 0
apps/security/src/security/api/hdfs.py

@@ -126,6 +126,11 @@ def bulk_add_acls(request):
   return HttpResponse(json.dumps({'status': 0}), mimetype="application/json")
 
 
+def bulk_sync_acls(request):
+  bulk_delete_acls(request)
+  return bulk_add_acls(request)
+
+
 def _modify_acl_entries(fs, path, acls):
   aclspec = ','.join([_get_acl(acl) for acl in acls])
   return fs.modify_acl_entries(path, aclspec)

+ 3 - 3
apps/security/src/security/templates/hdfs.mako

@@ -116,13 +116,13 @@ ${ layout.menubar(section='hdfs') }
                     <i class="fa fa-group" title="List of groups in popover for this user?"></i>
                   </div>                  
                   <div>
-                    <a href="javascript: void(0)" data-bind="click: $root.assist.bulkAddAcls" title="${ _('Add current ACL to selection') }">
+                    <a href="javascript: void(0)" data-bind="click: $root.assist.bulkAddAcls" title="${ _('Add current ACL to checkbox selection') }">
                       <i class="fa fa-plus"></i>
                     </a>
-                    <a href="javascript: void(0)" data-bind="click: $root.assist.bulkAddAcls" title="${ _('Sync current ACL to selection') }">
+                    <a href="javascript: void(0)" data-bind="click: $root.assist.bulkSyncAcls" title="${ _('Sync current ACL to checkbox selection') }">
                       <i class="fa fa-copy"></i>
                     </a>
-                    <a href="javascript: void(0)" data-bind="click: $root.assist.bulkDeleteAcls" title="${ _('Remove ACLs of selection') }">
+                    <a href="javascript: void(0)" data-bind="click: $root.assist.bulkDeleteAcls" title="${ _('Remove ACLs of checkbox selection') }">
                       <i class="fa fa-times"></i>
                     </a>
                     <input type="checkbox"></input> ${ _('Recursive') }

+ 1 - 0
apps/security/src/security/urls.py

@@ -31,6 +31,7 @@ urlpatterns += patterns('security.api.hdfs',
   url(r'^api/hdfs/update_acls', 'update_acls', name='update_acls'),
   url(r'^api/hdfs/bulk_delete_acls', 'bulk_delete_acls', name='bulk_delete_acls'),
   url(r'^api/hdfs/bulk_add_acls', 'bulk_add_acls', name='bulk_add_acls'),
+  url(r'^api/hdfs/bulk_sync_acls', 'bulk_sync_acls', name='bulk_sync_acls'),
 )
 
 

+ 19 - 0
apps/security/static/js/hdfs.ko.js

@@ -524,6 +524,25 @@ var Assist = function (vm, assist) {
       $(document).trigger("error", JSON.parse(xhr.responseText).message);
     });
   }
+
+  self.bulkSyncAcls = function() {
+	$(".jHueNotify").hide();
+	logGA('bulkSyncAcls');
+
+	var checkedPaths = self.getCheckedItems();
+	
+	$.post("/security/api/hdfs/bulk_sync_acls", {
+        'path': self.path(),
+        'acls': ko.mapping.toJSON(self.acls()),
+        'checkedPaths': ko.mapping.toJSON(checkedPaths),
+      }, function (data) {
+        self.refreshTree();
+        $(document).trigger("info", 'Done!');
+      }
+    ).fail(function (xhr, textStatus, errorThrown) {
+      $(document).trigger("error", JSON.parse(xhr.responseText).message);
+    });
+  }
 }