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