瀏覽代碼

HUE-1407 [sqoop2] When validating show the step where the error occurs

Abraham Elmahrek 12 年之前
父節點
當前提交
640c6c1

+ 4 - 2
apps/sqoop/src/sqoop/client/connection.py

@@ -104,10 +104,11 @@ class Connection(object):
   """
   SKIP = ('id', 'created', 'updated')
 
-  def __init__(self, name, connector_id, connector=None, framework=None, **kwargs):
+  def __init__(self, name, connector_id, connector=None, framework=None, enabled=True, **kwargs):
     self.id = kwargs.setdefault('id', -1)
     self.created = kwargs.setdefault('created', 0)
     self.updated = kwargs.setdefault('updated', 0)
+    self.enabled = enabled
     self.name = name
     self.connector_id = connector_id
     self.connector = connector
@@ -134,7 +135,8 @@ class Connection(object):
       'updated': self.updated,
       'connector-id': self.connector_id,
       'connector': [ connector.to_dict() for connector in self.connector ],
-      'framework': [ framework.to_dict() for framework in self.framework ]
+      'framework': [ framework.to_dict() for framework in self.framework ],
+      'enabled': self.enabled
     }
     return d
 

+ 4 - 2
apps/sqoop/src/sqoop/client/job.py

@@ -153,10 +153,11 @@ class Job(object):
   """
   SKIP = ('id', 'created', 'updated')
 
-  def __init__(self, type, name, connection_id, connector_id, connector=None, framework=None, **kwargs):
+  def __init__(self, type, name, connection_id, connector_id, connector=None, framework=None, enabled=True, **kwargs):
     self.id = kwargs.setdefault('id', -1)
     self.created = kwargs.setdefault('created', 0)
     self.updated = kwargs.setdefault('updated', 0)
+    self.enabled = enabled
     self.type = type
     self.name = name
     self.connection_id = connection_id
@@ -190,7 +191,8 @@ class Job(object):
       'connection-id': self.connection_id,
       'connector-id': self.connector_id,
       'connector': [ connector.to_dict() for connector in self.connector ],
-      'framework': [ framework.to_dict() for framework in self.framework ]
+      'framework': [ framework.to_dict() for framework in self.framework ],
+      'enabled': self.enabled
     }
     return d
 

+ 4 - 2
apps/sqoop/src/sqoop/client/submission.py

@@ -34,7 +34,7 @@ class Submission(object):
     "external-link": "http://solaris:50030/jobdetails.jsp?jobid=job_201306201740_0001"
   }
   """
-  def __init__(self, job_id, status, progress, created, updated, **kwargs):
+  def __init__(self, job_id, status, progress, created, updated, enabled=True, **kwargs):
     self.job_id = job_id
     self.status = status
     self.progress = progress
@@ -42,6 +42,7 @@ class Submission(object):
     self.updated = updated
     self.external_id = kwargs.get('external_id', None)
     self.external_link = kwargs.get('external_link', None)
+    self.enabled = enabled
 
   @staticmethod
   def from_dict(submission_dict):
@@ -58,7 +59,8 @@ class Submission(object):
       'status': self.status,
       'progress': self.progress,
       'creation-date': self.created,
-      'last-update-date': self.updated
+      'last-update-date': self.updated,
+      'enabled': self.enabled
     }
 
     if self.external_id:

+ 16 - 9
apps/sqoop/src/sqoop/templates/app.mako

@@ -596,6 +596,8 @@ function handle_form_errors(e, node, options, data) {
   var errors = data.errors;
   viewModel.errors({});
   viewModel.warnings({});
+  var first_error_component = null;
+
   switch(data.status) {
     case 1:
     $.each(errors, function(component, err) {
@@ -621,13 +623,24 @@ function handle_form_errors(e, node, options, data) {
           break;
         }
 
-        if (has_error && el.length > 0) {
-          ko.dataFor(el[0]).name.valueHasMutated();
+        if (has_error) {
+          if (!first_error_component) {
+            first_error_component = component;
+          }
+          if (el.length > 0) {
+            ko.dataFor(el[0]).name.valueHasMutated();
+          }
         }
       });
     });
     break;
   }
+
+  if (first_error_component == 'connector') {
+    routie('job/edit/wizard/job-editor-connector');
+  } else if (first_error_component == 'framework') {
+    routie('job/edit/wizard/job-editor-framework');
+  }
 }
 
 $(document).on('notloading', function(e) { // fixes problem with too fast rendering engines that display chunks of html before KO bindings
@@ -816,9 +829,6 @@ $(document).ready(function () {
       $(document).one('saved.job', function(){
         routie('jobs');
       });
-      $(document).one('save_fail.job', function(){
-        routie('job/edit');
-      });
     },
     "job/run": function() {
       if (viewModel.job()) {
@@ -836,7 +846,6 @@ $(document).ready(function () {
     "job/save-and-run": function() {
       $("#save-run-btn").attr("data-loading-text", $("#save-run-btn").text() + " ...");
       $("#save-run-btn").button("loading");
-      viewModel.saveJob();
       $(document).one('saved.job', function(e, node, options, data) {
         var options = $.extend(true, {}, node.options);
 
@@ -859,9 +868,7 @@ $(document).ready(function () {
         });
         node.load();
       });
-      $(document).one('save_fail.connection', function(){
-        routie('job/edit');
-      });
+      viewModel.saveJob();
     },
     "job/stop": function() {
       if (viewModel.job()) {