SUBMARINE-656. Fix the wrong message when creating k8s object fail

### What is this PR for?
It always shows "Internal Server Error" when creating k8s object fails.
Now it can show the correct k8s error message.

### What type of PR is it?
[Bug Fix]

### Todos
* [ ] - Task

### What is the Jira issue?
https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-656

### How should this be tested?
https://travis-ci.org/github/aeioulisa/submarine/builds/734180722
* First time? Setup Travis CI as described on https://submarine.apache.org/contribution/contributions.html#continuous-integration
* Strongly recommended: add automated unit tests for any new or changed behavior
* Outline any manual steps to test the PR here.

### Screenshots (if appropriate)

### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this need documentation? No

Author: Lisa <aeioulisa@gmail.com>

Closes #433 from aeioulisa/SUBMARINE-656 and squashes the following commits:

e97c96b [Lisa] Fix the wrong message when creating k8s object fail
1e4e75c [Lisa] Fix the wrong message when creating k8s object fail
0268e49 [Lisa] update
91471e8 [Lisa] Fix the wrong message when creating k8s object fail
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/response/JsonResponse.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/response/JsonResponse.java
index 11bd02a..b03cc26 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/response/JsonResponse.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/response/JsonResponse.java
@@ -52,7 +52,7 @@
 public class JsonResponse<T> {
   private static final Logger LOG = LoggerFactory.getLogger(JsonResponse.class);
 
-  private final javax.ws.rs.core.Response.Status status;
+  private javax.ws.rs.core.Response.Status status;
   private final int code;
   private final Boolean success;
   private final String message;
@@ -76,6 +76,7 @@
       this.status = builder.status;
     } else {
       status = Response.Status.fromStatusCode(this.code);
+      if (status == null) status = Response.Status.fromStatusCode(400);
     }
   }
 
diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
index 99402a9..5eea96c 100644
--- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
+++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
@@ -22,13 +22,13 @@
 import java.io.FileReader;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.List;
+import java.util.ArrayList;
 
 import com.google.gson.Gson;
 import com.google.gson.JsonSyntaxException;
@@ -47,27 +47,28 @@
 import io.kubernetes.client.util.KubeConfig;
 import org.apache.submarine.commons.utils.SubmarineConfiguration;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
-import org.apache.submarine.server.api.exception.InvalidSpecException;
 import org.apache.submarine.server.api.Submitter;
+import org.apache.submarine.server.api.exception.InvalidSpecException;
 import org.apache.submarine.server.api.experiment.Experiment;
 import org.apache.submarine.server.api.experiment.ExperimentLog;
 import org.apache.submarine.server.api.notebook.Notebook;
 import org.apache.submarine.server.api.spec.ExperimentMeta;
 import org.apache.submarine.server.api.spec.ExperimentSpec;
 import org.apache.submarine.server.api.spec.NotebookSpec;
+import org.apache.submarine.server.submitter.k8s.model.MLJob;
+import org.apache.submarine.server.submitter.k8s.model.NotebookCR;
 import org.apache.submarine.server.submitter.k8s.model.NotebookCRList;
 import org.apache.submarine.server.submitter.k8s.model.ingressroute.IngressRoute;
 import org.apache.submarine.server.submitter.k8s.model.ingressroute.IngressRouteSpec;
-import org.apache.submarine.server.submitter.k8s.model.NotebookCR;
 import org.apache.submarine.server.submitter.k8s.model.ingressroute.SpecRoute;
+import org.apache.submarine.server.submitter.k8s.parser.ExperimentSpecParser;
 import org.apache.submarine.server.submitter.k8s.parser.NotebookSpecParser;
 import org.apache.submarine.server.submitter.k8s.util.MLJobConverter;
-import org.apache.submarine.server.submitter.k8s.model.MLJob;
-import org.apache.submarine.server.submitter.k8s.parser.ExperimentSpecParser;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+
 /**
  * JobSubmitter for Kubernetes Cluster.
  */
@@ -126,7 +127,8 @@
       throw new SubmarineRuntimeException(400, e.getMessage());
     } catch (ApiException e) {
       LOG.error("K8s submitter: parse Job object failed by " + e.getMessage(), e);
-      throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
+      throw new SubmarineRuntimeException(e.getCode(), "K8s submitter: parse Job object failed by " +
+          e.getMessage());
     }
     return experiment;
   }
@@ -267,7 +269,8 @@
       throw new SubmarineRuntimeException(500, "K8s Submitter parse upstream response failed.");
     } catch (ApiException e) {
       LOG.error("K8s submitter: parse Notebook object failed by " + e.getMessage(), e);
-      throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
+      throw new SubmarineRuntimeException(e.getCode(), "K8s submitter: parse Job object failed by " +
+          e.getMessage());
     }
     return notebook;
   }
diff --git a/submarine-workbench/workbench-web/node/node b/submarine-workbench/workbench-web/node/node
new file mode 100755
index 0000000..6232b2c
--- /dev/null
+++ b/submarine-workbench/workbench-web/node/node
Binary files differ