Kaynağa Gözat

HUE-5279 [oozie] Add ENABLE_OOZIE_BACKEND_FILTERING param to support previous oozie versions

krish 9 yıl önce
ebeveyn
işleme
fa71a94

+ 7 - 0
apps/oozie/src/oozie/conf.py

@@ -81,6 +81,13 @@ ENABLE_CRON_SCHEDULING = Config( # Until Hue 3.8
   help=_t('Use Cron format for defining the frequency of a Coordinator instead of the old frequency number/unit.')
 )
 
+ENABLE_OOZIE_BACKEND_FILTERING = Config(
+  key='enable_oozie_backend_filtering',
+  default=False,
+  type=coerce_bool,
+  help=_t('Flag to enable Oozie backend filtering instead of doing it at the page level in Javascript. Requires Oozie 4.3+.')
+)
+
 ENABLE_DOCUMENT_ACTION = Config(
   key="enable_document_action",
   help=_t("Flag to enable the saved Editor queries to be dragged and dropped into a workflow."),

+ 15 - 6
apps/oozie/src/oozie/templates/dashboard/list_oozie_bundles.mako

@@ -18,6 +18,7 @@
 <%!
   from desktop.views import commonheader, commonfooter
   from django.utils.translation import ugettext as _
+  from oozie.conf import ENABLE_OOZIE_BACKEND_FILTERING
 %>
 
 <%namespace name="layout" file="../navigation-bar.mako" />
@@ -32,7 +33,7 @@ ${layout.menubar(section='bundles', dashboard=True)}
   <div class="card-body" style="padding-bottom: 20px">
   <p>
   <form>
-    <input type="text" id="filterInput" class="input-xlarge search-query" placeholder="${ _('Search for username, name, etc...') }">
+    <input type="text" id="filterInput" class="input-xlarge search-query" placeholder="${ _('Search partial name, submitter or complete Id') }">
 
     <div class="btn-toolbar" style="display: inline; vertical-align: middle; margin-left: 10px; font-size: 12px">
       <span class="loader hide"><i class="fa fa-2x fa-spinner fa-spin muted"></i></span>
@@ -267,17 +268,22 @@ ${layout.menubar(section='bundles', dashboard=True)}
     });
 
     $("#filterInput").keyup(function () {
-      if (filterTimeout != null) {
-        clearTimeout(filterTimeout);
-      }
-      filterTimeout = setTimeout(refreshTables, 500);
+      % if ENABLE_OOZIE_BACKEND_FILTERING.get():
+        if (filterTimeout != null) {
+          clearTimeout(filterTimeout);
+        }
+        filterTimeout = setTimeout(refreshTables, 500);
+        refreshPagination();
+      % else:
+        runningTable.fnFilter($(this).val());
+        completedTable.fnFilter($(this).val());
+      % endif
 
       var hash = "#";
       if ($("a.btn-date.active").length > 0) {
         hash += "date=" + $("a.btn-date.active").text();
       }
       window.location.hash = hash;
-      refreshPagination();
     });
 
     $("a.btn-pagination").on("click", function () {
@@ -327,6 +333,9 @@ ${layout.menubar(section='bundles', dashboard=True)}
 
 
     function getTextFilter() {
+      % if not ENABLE_OOZIE_BACKEND_FILTERING.get():
+        return '';
+      % endif
       var filterBtn = $("#filterInput");
       var textFilter = '';
       if (filterBtn.val()) {

+ 15 - 6
apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinators.mako

@@ -18,6 +18,7 @@
 <%!
   from desktop.views import commonheader, commonfooter
   from django.utils.translation import ugettext as _
+  from oozie.conf import ENABLE_OOZIE_BACKEND_FILTERING
 %>
 
 <%namespace name="layout" file="../navigation-bar.mako" />
@@ -32,7 +33,7 @@ ${layout.menubar(section='coordinators', dashboard=True)}
   <div class="card-body" style="padding-bottom: 20px">
   <p>
   <form>
-    <input type="text" id="filterInput" class="input-xlarge search-query" placeholder="${ _('Search for username, name, etc...') }">
+    <input type="text" id="filterInput" class="input-xlarge search-query" placeholder="${ _('Search partial name, submitter or complete Id') }">
 
     <div class="btn-toolbar" style="display: inline; vertical-align: middle; margin-left: 10px; font-size: 12px">
       <span class="loader hide"><i class="fa fa-2x fa-spinner fa-spin muted"></i></span>
@@ -309,11 +310,16 @@ ${layout.menubar(section='coordinators', dashboard=True)}
       }
       window.location.hash = hash;
 
-      if (filterTimeout != null) {
-        clearTimeout(filterTimeout);
-      }
-      filterTimeout = setTimeout(refreshTables, 500);
-      refreshPagination();
+      % if ENABLE_OOZIE_BACKEND_FILTERING.get():
+        if (filterTimeout != null) {
+          clearTimeout(filterTimeout);
+        }
+        filterTimeout = setTimeout(refreshTables, 500);
+        refreshPagination();
+      % else:
+        runningTable.fnFilter($(this).val());
+        completedTable.fnFilter($(this).val());
+      % endif
     });
 
     $("a.btn-pagination").on("click", function () {
@@ -363,6 +369,9 @@ ${layout.menubar(section='coordinators', dashboard=True)}
 
 
     function getTextFilter() {
+      % if not ENABLE_OOZIE_BACKEND_FILTERING.get():
+        return '';
+      % endif
       var filterBtn = $("#filterInput");
       var textFilter = '';
       if (filterBtn.val()) {

+ 16 - 6
apps/oozie/src/oozie/templates/dashboard/list_oozie_workflows.mako

@@ -18,6 +18,7 @@
 <%!
   from desktop.views import commonheader, commonfooter
   from django.utils.translation import ugettext as _
+  from oozie.conf import ENABLE_OOZIE_BACKEND_FILTERING
 %>
 
 <%namespace name="layout" file="../navigation-bar.mako" />
@@ -33,7 +34,7 @@ ${ layout.menubar(section='workflows', dashboard=True) }
   <div class="card-body" style="padding-bottom: 20px">
   <p>
   <form>
-    <input type="text" id="filterInput" class="input-xlarge search-query" placeholder="${ _('Search for username, name, etc...') }">
+    <input type="text" id="filterInput" class="input-xlarge search-query" placeholder="${ _('Search partial name, submitter or complete Id') }">
 
     <div class="btn-toolbar" style="display: inline; vertical-align: middle; margin-left: 10px; font-size: 12px">
       <span class="loader hide"><i class="fa fa-2x fa-spinner fa-spin muted"></i></span>
@@ -303,11 +304,17 @@ ${ layout.menubar(section='workflows', dashboard=True) }
     });
 
     $("#filterInput").keyup(function () {
-      if (filterTimeout != null) {
-        clearTimeout(filterTimeout);
-      }
-      filterTimeout = setTimeout(refreshTables, 500);
-      refreshPagination();
+      % if ENABLE_OOZIE_BACKEND_FILTERING.get():
+        if (filterTimeout != null) {
+          clearTimeout(filterTimeout);
+        }
+        filterTimeout = setTimeout(refreshTables, 500);
+        refreshPagination();
+      % else:
+        runningTable.fnFilter($(this).val());
+        completedTable.fnFilter($(this).val());
+        drawTable();
+      % endif
     });
 
 
@@ -413,6 +420,9 @@ ${ layout.menubar(section='workflows', dashboard=True) }
     }
 
     function getTextFilter() {
+      % if not ENABLE_OOZIE_BACKEND_FILTERING.get():
+        return '';
+      % endif
       var filterBtn = $("#filterInput");
       var textFilter = '';
       if (filterBtn.val()) {

+ 4 - 4
apps/oozie/src/oozie/views/dashboard.py

@@ -45,7 +45,7 @@ from liboozie.oozie_api import get_oozie
 from liboozie.credentials import Credentials
 from liboozie.submission2 import Submission
 
-from oozie.conf import OOZIE_JOBS_COUNT, ENABLE_CRON_SCHEDULING, ENABLE_V2
+from oozie.conf import OOZIE_JOBS_COUNT, ENABLE_CRON_SCHEDULING, ENABLE_V2, ENABLE_OOZIE_BACKEND_FILTERING
 from oozie.forms import RerunForm, ParameterForm, RerunCoordForm, RerunBundleForm, UpdateCoordinatorForm
 from oozie.models import Workflow as OldWorkflow, Job, utc_datetime_format, Bundle, Coordinator, get_link, History as OldHistory
 from oozie.models2 import History, Workflow, WORKFLOW_NODE_PROPERTIES
@@ -194,7 +194,7 @@ def list_oozie_workflows(request):
     if request.GET.get('startcreatedtime'):
       kwargs['filters'].extend([('startcreatedtime', request.GET.get('startcreatedtime'))])
 
-    if request.GET.get('text'):
+    if request.GET.get('text') and ENABLE_OOZIE_BACKEND_FILTERING.get():
       kwargs['filters'].extend([('text', request.GET.get('text'))])
 
     if request.GET.get('offset'):
@@ -235,7 +235,7 @@ def list_oozie_coordinators(request):
     if request.GET.get('offset'):
       kwargs['offset'] = request.GET.get('offset')
 
-    if request.GET.get('text'):
+    if request.GET.get('text') and ENABLE_OOZIE_BACKEND_FILTERING.get():
       kwargs['filters'].extend([('text', request.GET.get('text'))])
 
     json_jobs = []
@@ -271,7 +271,7 @@ def list_oozie_bundles(request):
     if request.GET.get('offset'):
       kwargs['offset'] = request.GET.get('offset')
 
-    if request.GET.get('text'):
+    if request.GET.get('text') and ENABLE_OOZIE_BACKEND_FILTERING.get():
       kwargs['filters'].extend([('text', request.GET.get('text'))])
 
     json_jobs = []

+ 3 - 0
desktop/conf.dist/hue.ini

@@ -1016,6 +1016,9 @@
   ## Flag to enable the saved Editor queries to be dragged and dropped into a workflow.
   # enable_document_action=false
 
+  ## Flag to enable Oozie backend filtering instead of doing it at the page level in Javascript. Requires Oozie 4.3+.
+  # enable_oozie_backend_filtering=false
+
 
 ###########################################################################
 # Settings to configure the Filebrowser app

+ 3 - 0
desktop/conf/pseudo-distributed.ini.tmpl

@@ -1023,6 +1023,9 @@
   ## Flag to enable the saved Editor queries to be dragged and dropped into a workflow.
   # enable_document_action=false
 
+  ## Flag to enable Oozie backend filtering instead of doing it at the page level in Javascript. Requires Oozie 4.3+.
+  # enable_oozie_backend_filtering=false
+
 
 ###########################################################################
 # Settings to configure the Filebrowser app