Sfoglia il codice sorgente

HUE-5965 [sentry] First port to Hue 4

Enrico Berti 8 anni fa
parent
commit
7f41ae83fd

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

@@ -23,7 +23,9 @@ from django.utils.translation import ugettext as _
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="tree" file="common_tree.mako" />
 
+%if not is_embeddable:
 ${ commonheader(_('Hadoop Security'), "security", user, request) | n,unicode }
+%endif
 ${ layout.menubar(section='hdfs') }
 
 
@@ -79,7 +81,7 @@ ${ layout.menubar(section='hdfs') }
   </div>
 </script>
 
-<div class="container-fluid">
+<div id="securityHdfsComponents" class="container-fluid">
   <div class="row-fluid">
     <div class="span12">
       <div class="card card-small">
@@ -294,7 +296,7 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
 <script type="text/javascript">
 
   var viewModel = new HdfsViewModel(${ initial | n,unicode });
-  ko.applyBindings(viewModel);
+  ko.applyBindings(viewModel, $('#securityHdfsComponents')[0]);
 
   $(document).ready(function () {
 
@@ -378,5 +380,6 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
   });
 </script>
 
-
+%if not is_embeddable:
 ${ commonfooter(request, messages) | n,unicode }
+%endif

+ 6 - 3
apps/security/src/security/templates/hive.mako

@@ -23,10 +23,11 @@ from django.utils.translation import ugettext as _
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="tree" file="common_tree.mako" />
 
+%if not is_embeddable:
 ${ commonheader(_('Hadoop Security'), "security", user, request) | n,unicode }
+%endif
 ${ layout.menubar(section='hive1') }
 
-
 <script type="text/html" id="role">
   <div class="acl-block-title">
     <i class="fa fa-cube muted"></i> <a class="pointer" data-bind="click: function(){  $root.showRole($data); }"><span data-bind="text: name"></span></a>
@@ -123,7 +124,7 @@ ${ layout.menubar(section='hive1') }
 </div>
 </script>
 
-<div class="container-fluid">
+<div id="securityHiveComponents" class="container-fluid">
   <div class="row-fluid">
     <div class="span2">
       <div class="sidebar-nav">
@@ -583,7 +584,7 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
     }
 
     var viewModel = new HiveViewModel(${ initial | n,unicode });
-    ko.applyBindings(viewModel);
+    ko.applyBindings(viewModel, $('#securityHiveComponents')[0]);
 
     $(document).ready(function () {
       var _initialPath = viewModel.getPathHash();
@@ -795,4 +796,6 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
     });
 </script>
 
+%if not is_embeddable:
 ${ commonfooter(request, messages) | n,unicode }
+%endif

+ 4 - 4
apps/security/src/security/templates/layout.mako

@@ -66,15 +66,15 @@ def is_selected(section, matcher):
                 </a>
               </li>
               % if HIVE_V1.get():
-              <li class="${is_selected(section, 'hive1')}"><a href="${ url('security:hive') }">${_('Hive Tables')}</a></li>
+              <li class="${is_selected(section, 'hive1')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('security:hive') + "')" or url('security:hive') }">${_('Hive Tables')}</a></li>
               % endif
               % if HIVE_V2.get():
-              <li class="${is_selected(section, 'hive')}"><a href="${ url('security:hive2') }">${_('Hive Tables v2')}</a></li>
+              <li class="${is_selected(section, 'hive')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('security:hive2') + "')" or url('security:hive2') }">${_('Hive Tables v2')}</a></li>
               % endif
               % if SOLR_V2.get():
-              <li class="${is_selected(section, 'solr')}"><a href="${ url('security:solr') }">${_('Solr Collections')}</a></li>
+              <li class="${is_selected(section, 'solr')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('security:solr') + "')" or url('security:solr') }">${_('Solr Collections')}</a></li>
               % endif
-              <li class="${is_selected(section, 'hdfs')}"><a href="${ url('security:hdfs') }">${_('File ACLs')}</a></li>
+              <li class="${is_selected(section, 'hdfs')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('security:hdfs') + "')" or url('security:hdfs') }">${_('File ACLs')}</a></li>
             </ul>
           </div>
         </div>

+ 6 - 2
apps/security/src/security/templates/sentry.mako

@@ -23,7 +23,9 @@ from django.utils.translation import ugettext as _
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="tree" file="common_tree.mako" />
 
+%if not is_embeddable:
 ${ commonheader(_('Hadoop Security'), "security", user, request) | n,unicode }
+%endif
 ${ layout.menubar(section=component) }
 
 
@@ -164,7 +166,7 @@ ${ layout.menubar(section=component) }
 </div>
 </script>
 
-<div class="container-fluid">
+<div id="securityComponents" class="container-fluid">
   <div class="row-fluid">
     <div class="span2">
       <div class="sidebar-nav">
@@ -637,7 +639,7 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
     }
 
     var viewModel = new SentryViewModel(${ initial | n,unicode });
-    ko.applyBindings(viewModel);
+    ko.applyBindings(viewModel, $('#securityComponents')[0]);
 
     $(document).ready(function () {
       var _initialPath = viewModel.getPathHash();
@@ -851,4 +853,6 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
     });
 </script>
 
+%if not is_embeddable:
 ${ commonfooter(request, messages) | n,unicode }
+%endif

+ 3 - 0
apps/security/src/security/views.py

@@ -30,6 +30,7 @@ def hive(request):
           'sentry_provider': get_hive_sentry_provider(),
           'is_sentry_admin': request.user.groups.filter(name__in=get_sentry_server_admin_groups()).exists()
       }),
+      'is_embeddable': request.GET.get('is_embeddable', False),
       'has_impersonation_perm': _has_impersonation_perm(request.user),
   })
 
@@ -50,6 +51,7 @@ def _sentry(request, component):
           'sentry_provider': get_solr_sentry_provider() if component == 'solr' else get_hive_sentry_provider(),
           'is_sentry_admin': request.user.groups.filter(name__in=get_sentry_server_admin_groups()).exists()
       }),
+      'is_embeddable': request.GET.get('is_embeddable', False),
       'has_impersonation_perm': _has_impersonation_perm(request.user) and component == 'hive',
       'component': component
   })
@@ -59,6 +61,7 @@ def hdfs(request):
 
   return render("hdfs.mako", request, {
       'initial': json.dumps({'user': request.user.username}),
+      'is_embeddable': request.GET.get('is_embeddable', False),
       'has_impersonation_perm': _has_impersonation_perm(request.user)
   })
 

+ 17 - 1
desktop/core/src/desktop/templates/hue.mako

@@ -262,7 +262,7 @@ ${ hueIcons.symbols() }
         <li data-bind="click: function () { onePageViewModel.currentApp('hbase') }"><a href="javascript: void(0);">HBase</a></li>
         % endif
         % if 'security' in apps:
-        <li><a href="javascript: void(0);">Security</a></li>
+          <li data-bind="click: function () { onePageViewModel.currentApp('security_hive') }"><a href="javascript: void(0);">Security</a></li>
         % endif
         % if 'sqoop' in apps:
         <li><a href="/${apps['sqoop'].display_name}">${_('Sqoop')}</a></li>
@@ -343,6 +343,10 @@ ${ hueIcons.symbols() }
       <div id="embeddable_useradmin_configurations" class="embeddable"></div>
       <div id="embeddable_useradmin_newuser" class="embeddable"></div>
       <div id="embeddable_hbase" class="embeddable"></div>
+      <div id="embeddable_security_hive" class="embeddable"></div>
+      <div id="embeddable_security_hdfs" class="embeddable"></div>
+      <div id="embeddable_security_hive2" class="embeddable"></div>
+      <div id="embeddable_security_solr" class="embeddable"></div>
     </div>
 
     <div id="rightResizer" class="resizer" data-bind="visible: rightAssistVisible() && rightAssistAvailable(), splitFlexDraggable : {
@@ -525,6 +529,10 @@ ${ assist.assistPanel() }
         useradmin_configurations: '/useradmin/configurations?is_embeddable=true',
         useradmin_newuser: '/useradmin/users/new?is_embeddable=true',
         hbase: '/hbase/?is_embeddable=true',
+        security_hive: '/security/hive?is_embeddable=true',
+        security_hdfs: '/security/hdfs?is_embeddable=true',
+        security_hive2: '/security/hive2?is_embeddable=true',
+        security_solr: '/security/solr?is_embeddable=true',
       };
 
       var SKIP_CACHE = ['fileviewer', 'useradmin_users', 'useradmin_groups', 'useradmin_permissions', 'useradmin_configurations', 'useradmin_newuser'];
@@ -661,6 +669,14 @@ ${ assist.assistPanel() }
             self.currentApp('useradmin_permissions');
           } else if (href.startsWith('/useradmin/configurations')) {
             self.currentApp('useradmin_configurations');
+          } else if (href.startsWith('/security/hive2')) {
+            self.currentApp('security_hive2');
+          } else if (href.startsWith('/security/hive')) {
+            self.currentApp('security_hive');
+          } else if (href.startsWith('/security/solr')) {
+            self.currentApp('security_solr');
+          } else if (href.startsWith('/security/hdfs')) {
+            self.currentApp('security_hdfs');
           }
         });