Explorar o código

PR1009 [oozie] Added the ability to filter workflows against id: and name: parameters (#1009)

* id is also a valid filter

* Added ability to filter workflows against id and name attributes
sbaudoin %!s(int64=6) %!d(string=hai) anos
pai
achega
5a5431893b

+ 12 - 1
apps/jobbrowser/src/jobbrowser/apis/base_api.py

@@ -113,10 +113,21 @@ def _extract_query_params(filters):
   for name, value in filters.items():
     if name == 'text':
       filter_params['text'] = value
-      user_filter = re.search('((user):([^ ]+))', value)
+
+      user_filter = re.search('((user):([^ ]+))', filter_params['text'])
       if user_filter:
         filter_params['username'] = user_filter.group(3)
         filter_params['text'] = filter_params['text'].replace(user_filter.group(1), '').strip()
+
+      id_filter = re.search('((id):([^ ]+))', filter_params['text'])
+      if id_filter:
+        filter_params['id'] = id_filter.group(3)
+        filter_params['text'] = filter_params['text'].replace(id_filter.group(1), '').strip()
+
+      name_filter = re.search('((name):([^ ]+))', filter_params['text'])
+      if name_filter:
+        filter_params['name'] = name_filter.group(3)
+        filter_params['text'] = filter_params['text'].replace(name_filter.group(1), '').strip()
     else:
       filter_params[name] = value
 

+ 6 - 0
apps/jobbrowser/src/jobbrowser/apis/workflow_api.py

@@ -207,6 +207,12 @@ def _filter_oozie_jobs(user, filters, kwargs):
     elif 'username' in text_filters:
       kwargs['filters'].append(('user', text_filters['username']))
 
+    if 'id' in text_filters:
+      kwargs['filters'].append(('id', text_filters['id']))
+
+    if 'name' in text_filters:
+      kwargs['filters'].append(('name', text_filters['name']))
+
     if 'time' in filters:
       kwargs['filters'].extend([('startcreatedtime', '-%s%s' % (filters['time']['time_value'], filters['time']['time_unit'][:1]))])
 

+ 1 - 1
desktop/libs/liboozie/src/liboozie/oozie_api.py

@@ -90,7 +90,7 @@ class OozieApi(object):
 
     return defaults
 
-  VALID_JOB_FILTERS = ('name', 'user', 'group', 'status', 'startcreatedtime', 'text')
+  VALID_JOB_FILTERS = ('name', 'user', 'group', 'status', 'startcreatedtime', 'text', 'id')
   VALID_LOG_FILTERS = set(('recent', 'limit', 'loglevel', 'text'))
 
   def get_jobs(self, jobtype, offset=None, cnt=None, filters=None):