Эх сурвалжийг харах

HUE-6325 [oozie] Add list of worklow variables and their links

Romain Rigaux 8 жил өмнө
parent
commit
fc652fa

+ 17 - 2
apps/jobbrowser/src/jobbrowser/apis/workflow_api.py

@@ -20,7 +20,7 @@ import json
 
 from django.utils.translation import ugettext as _
 
-from jobbrowser.apis.base_api import Api, MockDjangoRequest, _extract_query_params
+from jobbrowser.apis.base_api import Api, MockDjangoRequest, _extract_query_params, is_linkable, hdfs_link_js
 from liboozie.oozie_api import get_oozie
 
 
@@ -28,6 +28,7 @@ LOG = logging.getLogger(__name__)
 
 
 try:
+  from oozie.forms import ParameterForm
   from oozie.conf import OOZIE_JOBS_COUNT, ENABLE_OOZIE_BACKEND_FILTERING
   from oozie.views.dashboard import get_oozie_job_log, list_oozie_workflow, manage_oozie_jobs, bulk_manage_oozie_jobs, has_dashboard_jobs_access, massaged_oozie_jobs_for_json
 except Exception, e:
@@ -108,7 +109,7 @@ class WorkflowApi(Api):
     common['properties']['properties'] = ''
     common['properties']['coordinator_id'] = workflow.get_parent_job_id()
     common['properties']['bundle_id'] = workflow.conf_dict.get('oozie.bundle.id')
-
+    common['properties']['parameters'] = self._get_variables(workflow)
     common['doc_url'] = common['properties'].get('doc_url')
 
     return common
@@ -157,6 +158,20 @@ class WorkflowApi(Api):
     else:
       return 'FAILED' # KILLED and FAILED
 
+  def _get_variables(self, workflow):
+    parameters = []
+
+    for var, val in workflow.conf_dict.iteritems():
+      if var not in ParameterForm.NON_PARAMETERS and var != 'oozie.use.system.libpath' or var == 'oozie.wf.application.path':
+        link = ''
+        if is_linkable(var, val):
+          link = hdfs_link_js(val)
+        if var == 'oozie.wf.application.path':
+          var = _('Workspace')
+        parameters.append({'name': var, 'value': val, 'link': link})
+
+    return parameters
+
 
 class WorkflowActionApi(Api):
 

+ 12 - 3
apps/jobbrowser/src/jobbrowser/templates/job_browser.mako

@@ -819,8 +819,6 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
           <li class="nav-header">${ _('Name') }</li>
           <li><span data-bind="text: name"></span></li>
           <!-- /ko -->
-          <li class="nav-header">${ _('Workspace') }</li>
-          <li><span data-bind="text: type"></span></li>
           <li class="nav-header">${ _('Status') }</li>
           <li><span data-bind="text: status"></span></li>
           <li class="nav-header">${ _('User') }</li>
@@ -835,7 +833,18 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
           <li class="nav-header">${ _('Id') }</li>
           <li><span data-bind="text: id"></span></li>
           <li class="nav-header">${ _('Variables') }</li>
-          <li><span data-bind="text: type"></span></li>
+          <li>
+            <ul class="nav nav-list" data-bind="foreach: properties['parameters']">
+              <!-- ko if: link -->
+              <a data-bind="hueLink: link" href="javascript: void(0);">
+                <span data-bind="text: name, attr: { title: value }"></span>
+              </a>
+              <!-- /ko -->
+              <!-- ko ifnot: link -->
+                <span data-bind="text: name, attr: { title: value }"></span>
+              <!-- /ko -->
+            </ul>
+          </li>
         </ul>
       </div>
     </div>