Ver código fonte

HUE-6325 [jb] Add missing attributes to the new workflow page

Romain Rigaux 8 anos atrás
pai
commit
1bdce2f

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

@@ -96,6 +96,9 @@ class WorkflowApi(Api):
         'apiStatus': self._api_status(workflow.status),
         'progress': workflow.get_progress(),
         'type': 'workflow',
+        'user': workflow.user,
+        'duration': workflow.durationTime,
+        'submitted': workflow.submissionTime
     }
 
     request = MockDjangoRequest(self.user)

+ 5 - 12
apps/oozie/src/oozie/views/dashboard.py

@@ -21,8 +21,6 @@ import os
 import re
 import time
 
-from datetime import datetime
-
 from django.forms.formsets import formset_factory
 from django.http import HttpResponse
 from django.utils.functional import wraps
@@ -31,6 +29,7 @@ from django.core.urlresolvers import reverse
 from django.shortcuts import redirect
 
 from desktop.conf import TIME_ZONE
+from desktop.lib import django_mako
 from desktop.lib.django_util import JsonResponse, render
 from desktop.lib.json_utils import JSONEncoderForHTML
 from desktop.lib.exceptions_renderable import PopupException
@@ -41,9 +40,10 @@ from desktop.log.access import access_warn
 from desktop.models import Document, Document2
 
 from hadoop.fs.hadoopfs import Hdfs
-from liboozie.oozie_api import get_oozie
 from liboozie.credentials import Credentials
+from liboozie.oozie_api import get_oozie
 from liboozie.submission2 import Submission
+from liboozie.utils import catch_unicode_time
 
 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
@@ -51,7 +51,6 @@ from oozie.models import Workflow as OldWorkflow, Job, utc_datetime_format, Bund
 from oozie.models2 import History, Workflow, WORKFLOW_NODE_PROPERTIES
 from oozie.settings import DJANGO_APPS
 from oozie.utils import convert_to_server_timezone
-from desktop.lib import django_mako
 
 
 def get_history():
@@ -1077,12 +1076,6 @@ def format_time(st_time):
   else:
     return st_time
 
-def catch_unicode_time(u_time):
-  if type(u_time) == time.struct_time:
-    return u_time
-  else:
-    return datetime.timetuple(datetime.strptime(u_time, '%a, %d %b %Y %H:%M:%S %Z'))
-
 
 def massaged_oozie_jobs_for_json(oozie_jobs, user, just_sla=False):
   jobs = []
@@ -1090,7 +1083,7 @@ def massaged_oozie_jobs_for_json(oozie_jobs, user, just_sla=False):
   for job in oozie_jobs:
     if not just_sla or (just_sla and job.has_sla) and job.appName != 'pig-app-hue-script':
       last_modified_time_millis = hasattr(job, 'lastModTime') and job.lastModTime and (time.time() - time.mktime(job.lastModTime)) * 1000 or 0
-      duration_millis = job.endTime and job.startTime and ((time.mktime(job.endTime) - time.mktime(job.startTime)) * 1000) or 0
+      duration_millis = job.durationTime
       massaged_job = {
         'id': job.id,
         'lastModTime': hasattr(job, 'lastModTime') and job.lastModTime and format_time(job.lastModTime) or None,
@@ -1118,7 +1111,7 @@ def massaged_oozie_jobs_for_json(oozie_jobs, user, just_sla=False):
         'suspendUrl': reverse('oozie:manage_oozie_jobs', kwargs={'job_id':job.id, 'action':'suspend'}),
         'resumeUrl': reverse('oozie:manage_oozie_jobs', kwargs={'job_id':job.id, 'action':'resume'}),
         'created': hasattr(job, 'createdTime') and job.createdTime and format_time(job.createdTime) or '',
-        'createdInMillis': hasattr(job, 'createdTime') and job.createdTime and time.mktime(catch_unicode_time(job.createdTime)) or 0,
+        'createdInMillis': job.submissionTime,
         'startTime': hasattr(job, 'startTime') and format_time(job.startTime) or None,
         'startTimeInMillis': hasattr(job, 'startTime') and job.startTime and time.mktime(job.startTime) or 0,
         'run': hasattr(job, 'run') and job.run or 0,

+ 10 - 1
desktop/libs/liboozie/src/liboozie/types.py

@@ -24,6 +24,7 @@ http://incubator.apache.org/oozie/docs/3.2.0-incubating/docs/WebServicesAPI.html
 
 import logging
 import re
+import time
 
 from cStringIO import StringIO
 from time import mktime
@@ -33,7 +34,7 @@ from desktop.lib.exceptions_renderable import PopupException
 from desktop.log.access import access_warn
 
 import hadoop.confparse
-from liboozie.utils import parse_timestamp, format_time
+from liboozie.utils import parse_timestamp, format_time, catch_unicode_time
 
 from django.utils.translation import ugettext as _
 from django.core.urlresolvers import reverse
@@ -475,6 +476,14 @@ class Workflow(Job):
         total_actions = len(self.actions)
       return int(sum([action.is_finished() for action in self.actions]) / float(max(total_actions, 1)) * 100)
 
+  @property
+  def durationTime(self):
+    return self.endTime and self.startTime and ((time.mktime(self.endTime) - time.mktime(self.startTime)) * 1000) or 0
+
+  @property
+  def submissionTime(self):
+    return hasattr(self, 'createdTime') and self.createdTime and time.mktime(catch_unicode_time(self.createdTime)) or 0
+
 
 class Coordinator(Job):
   _ATTRS = [

+ 10 - 0
desktop/libs/liboozie/src/liboozie/utils.py

@@ -27,13 +27,23 @@ except ImportError:
 import logging
 import re
 import time
+
+from datetime import datetime
 from time import strftime
 from xml.sax.saxutils import escape
 
+
 LOG = logging.getLogger(__name__)
 _NAME_REGEX = re.compile('^[a-zA-Z][\-_a-zA-Z0-0]*$')
 
 
+def catch_unicode_time(u_time):
+  if type(u_time) == time.struct_time:
+    return u_time
+  else:
+    return datetime.timetuple(datetime.strptime(u_time, '%a, %d %b %Y %H:%M:%S %Z'))
+
+
 def parse_timestamp(timestamp, time_format=None):
   """
   parse_timestamp(timestamp, time_format=None) -> struct_time