Ver Fonte

HUE-1176 [jb] Proper filtering of tasks of YARN jobs

Romain Rigaux há 8 anos atrás
pai
commit
b85f6cd424

+ 8 - 1
apps/jobbrowser/src/jobbrowser/apis/job_api.py

@@ -239,7 +239,14 @@ class YarnMapReduceTaskApi(Api):
       filter_params['task_text'] = filters['text']
 
     if filters.get('states'):
-      filter_params['task_states'] = filters['states']
+      task_states = []
+      if 'completed' in filters['states']:
+        task_states.append('succeeded')
+      if 'running' in filters['states']:
+        task_states.extend(['running', 'pending'])
+      if 'failed' in filters['states']:
+        task_states.extend(['running', 'killed'])
+      filter_params['task_states'] = task_states
 
     if filters.get('types') and len(filters.get('types')) == 1:
       filter_params['task_types'] = filters['types'][0]

+ 9 - 9
apps/jobbrowser/src/jobbrowser/templates/job_browser.mako

@@ -406,7 +406,7 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 
     <div class="tab-pane" id="job-mapreduce-page-tasks">
       ${_('Filter')}
-      <input data-bind="value: textFilter" type="text" class="input-xlarge search-query" placeholder="${_('Filter by name')}">
+      <input data-bind="textFilter: textFilter, clearable: {value: textFilter}" type="text" class="input-xlarge search-query" placeholder="${_('Filter by name')}">
 
       <span data-bind="foreach: statesValuesFilter">
         <label class="checkbox">
@@ -998,9 +998,9 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 
       self.textFilter = ko.observable('').extend({ rateLimit: { method: "notifyWhenChangesStop", timeout: 1000 } });
       self.statesValuesFilter = ko.observableArray([
-        ko.mapping.fromJS({'value': 'completed', 'name': '${_("Succeeded")}', 'checked': true, 'klass': 'green'}),
-        ko.mapping.fromJS({'value': 'running', 'name': '${_("Running")}', 'checked': true, 'klass': 'orange'}),
-        ko.mapping.fromJS({'value': 'failed', 'name': '${_("Failed")}', 'checked': true, 'klass': 'red'}),
+        ko.mapping.fromJS({'value': 'completed', 'name': '${_("Succeeded")}', 'checked': false, 'klass': 'green'}),
+        ko.mapping.fromJS({'value': 'running', 'name': '${_("Running")}', 'checked': false, 'klass': 'orange'}),
+        ko.mapping.fromJS({'value': 'failed', 'name': '${_("Failed")}', 'checked': false, 'klass': 'red'}),
       ]);
       self.statesFilter = ko.computed(function () {
         var checkedStates = ko.utils.arrayFilter(self.statesValuesFilter(), function (state) {
@@ -1011,8 +1011,8 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
         });
       });
       self.typesValuesFilter = ko.observableArray([
-        ko.mapping.fromJS({'value': 'map', 'name': '${_("Map")}', 'checked': true, 'klass': 'green'}),
-        ko.mapping.fromJS({'value': 'reduce', 'name': '${_("Reduce")}', 'checked': true, 'klass': 'orange'}),
+        ko.mapping.fromJS({'value': 'map', 'name': '${_("Map")}', 'checked': false, 'klass': 'green'}),
+        ko.mapping.fromJS({'value': 'reduce', 'name': '${_("Reduce")}', 'checked': false, 'klass': 'orange'}),
       ]);
       self.typesFilter = ko.computed(function () {
         var checkedTypes = ko.utils.arrayFilter(self.typesValuesFilter(), function (type) {
@@ -1323,9 +1323,9 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 
       self.textFilter = ko.observable('user:${ user.username } ').extend({ rateLimit: { method: "notifyWhenChangesStop", timeout: 1000 } });
       self.statesValuesFilter = ko.observableArray([
-        ko.mapping.fromJS({'value': 'completed', 'name': '${_("Succeeded")}', 'checked': true, 'klass': 'green'}),
-        ko.mapping.fromJS({'value': 'running', 'name': '${_("Running")}', 'checked': true, 'klass': 'orange'}),
-        ko.mapping.fromJS({'value': 'failed', 'name': '${_("Failed")}', 'checked': true, 'klass': 'red'}),
+        ko.mapping.fromJS({'value': 'completed', 'name': '${_("Succeeded")}', 'checked': false, 'klass': 'green'}),
+        ko.mapping.fromJS({'value': 'running', 'name': '${_("Running")}', 'checked': false, 'klass': 'orange'}),
+        ko.mapping.fromJS({'value': 'failed', 'name': '${_("Failed")}', 'checked': false, 'klass': 'red'}),
       ]);
       self.statesFilter = ko.computed(function () {
         var checkedStates = ko.utils.arrayFilter(self.statesValuesFilter(), function (state) {