浏览代码

HUE-1176 [jb] Add kill to schedules and bundles

Romain Rigaux 8 年之前
父节点
当前提交
261109474a

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

@@ -23,6 +23,7 @@ from django.utils.translation import ugettext as _
 from liboozie.oozie_api import get_oozie
 
 from jobbrowser.apis.base_api import Api, MockDjangoRequest
+from jobbrowser.apis.workflow_api import _manage_oozie_job
 from liboozie.utils import format_time
 
 
@@ -79,6 +80,11 @@ class BundleApi(Api):
 
     return common
 
+
+  def action(self, app_ids, action):
+    return _manage_oozie_job(self.user, action, app_ids)
+
+
   def logs(self, appid, app_type, log_name=None):
     request = MockDjangoRequest(self.user)
     data = get_oozie_job_log(request, job_id=appid)

+ 5 - 0
apps/jobbrowser/src/jobbrowser/apis/schedule_api.py

@@ -23,6 +23,7 @@ from django.utils.translation import ugettext as _
 from liboozie.oozie_api import get_oozie
 
 from jobbrowser.apis.base_api import Api, MockDjangoRequest
+from jobbrowser.apis.workflow_api import _manage_oozie_job
 from liboozie.utils import format_time
 
 
@@ -84,6 +85,10 @@ class ScheduleApi(Api):
     return common
 
 
+  def action(self, app_ids, action):
+    return _manage_oozie_job(self.user, action, app_ids)
+
+
   def logs(self, appid, app_type, log_name=None):
     request = MockDjangoRequest(self.user)
     data = get_oozie_job_log(request, job_id=appid)

+ 15 - 11
apps/jobbrowser/src/jobbrowser/apis/workflow_api.py

@@ -110,17 +110,7 @@ class WorkflowApi(Api):
 
 
   def action(self, app_ids, action):
-    if action == 'change' or action == 'ignore' or len(app_ids) == 1:
-      request = MockDjangoRequest(self.user)
-      response = manage_oozie_jobs(request, app_ids[0], action['action'])
-    else:
-      request = MockDjangoRequest(self.user, post={'job_ids': ' '.join(app_ids), 'action': action['action']})
-      response = bulk_manage_oozie_jobs(request)
-
-    result = json.loads(response.content)
-    result['status'] = result.get('totalErrors', 0)
-    result['message'] = _('%s action sent to %s jobs') % (action['action'], result.get('totalRequests', 1))
-    return result
+    return _manage_oozie_job(self.user, action, app_ids)
 
 
   def logs(self, appid, app_type, log_name=None):
@@ -183,3 +173,17 @@ class WorkflowActionApi(Api):
 
   def logs(self, appid, app_type, log_name=None):
     return {'progress': 0, 'logs': ''}
+
+
+def _manage_oozie_job(user, action, app_ids):
+  if action == 'change' or action == 'ignore' or len(app_ids) == 1:
+    request = MockDjangoRequest(user)
+    response = manage_oozie_jobs(request, app_ids[0], action['action'])
+  else:
+    request = MockDjangoRequest(user, post={'job_ids': ' '.join(app_ids), 'action': action['action']})
+    response = bulk_manage_oozie_jobs(request)
+
+  result = json.loads(response.content)
+  result['status'] = result.get('totalErrors', 0)
+  result['message'] = _('%s action sent to %s jobs') % (action['action'], result.get('totalRequests', 1))
+  return result