瀏覽代碼

[security] Add save and undo button to HDFS acls

Romain Rigaux 11 年之前
父節點
當前提交
3492128594

+ 2 - 3
apps/security/src/security/api/hive.py

@@ -152,10 +152,9 @@ def save_privileges(request):
     for privilege in deleted_privileges:
       _drop_sentry_privilege(request.user, role, privilege)
     
-    # todo
+    # Todo 
 #    modified_privileges = [privilege for privilege in role['privilegesChanged'] if privilege['status'] == 'modified']
-# delete modified_privileges "names"
-#    result['privileges'] += _hive_add_privileges(request.user, role, modified_privileges)
+#    get_api(request.user).rename_sentry_privilege(oldAuthorizable, newAuthorizable)
 
     result['message'] = ''
     result['status'] = 0

+ 13 - 7
apps/security/src/security/templates/hdfs.mako

@@ -124,12 +124,6 @@ ${ layout.menubar(section='hdfs') }
             <div class="span4">
               <div class="acl-panel" data-bind="visible: ! $root.assist.isLoadingAcls()">
 
-                  <div data-bind="visible: $root.assist.changedAcls().length" class="pull-right" style="margin-right: 6px; margin-top: 4px">
-                    <button type="button" data-bind="click: $root.assist.updateAcls" class="btn disable-feedback">
-                      <i class="fa fa-save"></i> ${ _('Save') }
-                    </button>
-                  </div>
-
                   <ul class="nav nav-tabs">
                     <li data-bind="css: {'active': ! $root.assist.showAclsAsText()}"><a href="javascript: void(0)" data-bind="click: function() { $root.assist.showAclsAsText(false); }"><i class="fa fa-pencil"></i> ${ _('Edit') }</a></li>
                     <li data-bind="css: {'active': $root.assist.showAclsAsText()}"><a href="javascript: void(0)" data-bind="click: function() { $root.assist.showAclsAsText(true); }"><i class="fa fa-header"></i> ${ _('View as text') }</a></li>
@@ -164,6 +158,12 @@ ${ layout.menubar(section='hdfs') }
                       <div class="acl-block pointer add-acl" data-bind="click: $root.assist.addAcl">
                         <i class="fa fa-plus"></i>
                       </div>
+                      <div class="acl-block pointer add-acl" data-bind="visible: $root.assist.changedRegularAcls().length, click: $root.assist.getAcls">
+                        <i class="fa fa-undo"></i>
+                      </div>
+                      <div class="acl-block pointer add-acl" data-bind="visible: $root.assist.changedRegularAcls().length, click: $root.assist.updateAcls">
+                        <i class="fa fa-save"></i>
+                      </div>
 
                       <h4>${ _('Default ACLs') }</h4>
                       <div data-bind="foreach: $root.assist.defaultAcls">
@@ -173,6 +173,12 @@ ${ layout.menubar(section='hdfs') }
                       <div class="acl-block pointer add-acl" data-bind="click: $root.assist.addDefaultAcl">
                         <i class="fa fa-plus"></i>
                       </div>
+                      <div class="acl-block pointer add-acl" data-bind="visible: $root.assist.defaultAcls().length, click: $root.assist.getAcls">
+                        <i class="fa fa-undo"></i>
+                      </div>
+                      <div class="acl-block pointer add-acl" data-bind="visible: $root.assist.defaultAcls().length, click: $root.assist.updateAcls">
+                        <i class="fa fa-save"></i>
+                      </div>
                     </span>
                   </div>
                 </div>
@@ -200,7 +206,7 @@ ${ layout.menubar(section='hdfs') }
     <span data-bind="text: rwx"></span>
   </div>
   <div class="pull-right">
-    <i class="fa fa-lock" data-bind="visible: aclBit()" style="color: #338bb8"></i>
+    <i class="fa fa-shield" data-bind="visible: aclBit()" style="color: #338bb8" title="${ _('Has some ACLs') }"></i>
   </div>
 </%def>
 

+ 1 - 1
apps/security/src/security/templates/hive.mako

@@ -274,7 +274,7 @@ ${ layout.menubar(section='hive') }
       </a>
       <br/>
       ${ _('Groups') }
-      <select data-bind="options: $root.selectableHadoopGroups, selectedOptions: groups, select2: { update: groups, type: 'group'}" size="5" multiple="true" style="width: 120px"></select>
+      <select data-bind="options: $root.selectableHadoopGroups, selectedOptions: groups, select2: { update: groups, type: 'group' }" size="5" multiple="true" style="width: 120px"></select>
     </p>
   </div>
   <div class="modal-footer">

+ 8 - 3
apps/security/static/js/hdfs.ko.js

@@ -130,12 +130,17 @@ var Assist = function (vm, assist) {
       return acl.isDefault();
     });
   });
-  self.changedAcls = ko.computed(function () {
-    return $.grep(self.acls(), function (acl) {
+  self.changedRegularAcls = ko.computed(function () {
+    return $.grep(self.regularAcls(), function (acl) {
       return ['new', 'deleted', 'modified'].indexOf(acl.status()) != -1;
     });
   });
-
+  self.changedDefaultAcls = ko.computed(function () {
+    return $.grep(self.defaultAcls(), function (acl) {
+      return ['new', 'deleted', 'modified'].indexOf(acl.status()) != -1;
+    });
+  });
+  
   self.owner = ko.observable('');
   self.group = ko.observable('');
 

+ 11 - 0
apps/security/static/js/hive.ko.js

@@ -15,6 +15,17 @@
 // limitations under the License.
 
 
+function s4() {
+  return Math.floor((1 + Math.random()) * 0x10000)
+      .toString(16)
+      .substring(1);
+}
+
+function UUID() {
+  return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
+}
+
+
 var Privilege = function (vm, privilege) {
   var self = this;