This is an automated email from the ASF dual-hosted git repository. cdmikechen pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/submarine.git
The following commit(s) were added to refs/heads/master by this push: new 18451408 SUBMARINE-1371. fix unsafe deserialization via SnakeYaml in YamlEntityProvider 18451408 is described below commit 1845140883b4bd3228385a556982cbadc19595b6 Author: cdmikechen <cdmikec...@apache.org> AuthorDate: Sat Mar 11 16:53:25 2023 +0800 SUBMARINE-1371. fix unsafe deserialization via SnakeYaml in YamlEntityProvider ### What is this PR for? Use SnakeYaml's SafeConstructor to replace default Yaml no arguments constructor to void unsafe deserialization. Link url: https://nvd.nist.gov/vuln/detail/CVE-2022-1471 ### What type of PR is it? Bug Fix ### Todos * [x] - Add SafeConstructor ### What is the Jira issue? https://issues.apache.org/jira/browse/SUBMARINE-1371 ### How should this be tested? NA ### Screenshots (if appropriate) ### Questions: * Do the license files need updating? Yes * Are there breaking changes for older versions? No * Does this need new documentation? No Author: cdmikechen <cdmikec...@apache.org> Signed-off-by: cdmikechen <cdmikec...@apache.org> Closes #1054 from cdmikechen/SUBMARINE-1371 and squashes the following commits: 5703a238 [cdmikechen] Update jackson version in LICENSE-binary ed5ad3b8 [cdmikechen] Replace snakyaml to jackson yaml 88e59027 [cdmikechen] fix unsafe deserialization via SnakeYaml in YamlEntityProvider --- LICENSE-binary | 13 ++++++++----- pom.xml | 10 +++++----- submarine-server/server-core/pom.xml | 7 ++++++- .../server/rest/provider/YamlEntityProvider.java | 18 +++++++++--------- .../org/apache/submarine/server/utils}/YamlUtils.java | 19 +++++++++++++++++-- .../server-submitter/submitter-k8s/pom.xml | 6 ------ .../server/submitter/k8s/model/AgentPod.java | 2 +- .../server/submitter/k8s/model/common/Configmap.java | 2 +- .../k8s/model/common/PersistentVolumeClaim.java | 2 +- .../k8s/model/istio/IstioVirtualService.java | 2 +- .../submitter/k8s/model/notebook/NotebookCR.java | 2 +- .../submitter/k8s/model/pytorchjob/PyTorchJob.java | 8 ++++---- .../model/seldon/SeldonDeploymentPytorchServing.java | 2 +- .../k8s/model/seldon/SeldonDeploymentTFServing.java | 2 +- .../server/submitter/k8s/model/tfjob/TFJob.java | 4 ++-- .../submitter/k8s/model/xgboostjob/XGBoostJob.java | 8 ++++---- .../k8s/seldon/SeldonDeploymentResourceTest.java | 2 +- 17 files changed, 63 insertions(+), 46 deletions(-) diff --git a/LICENSE-binary b/LICENSE-binary index 77585881..83c13a99 100644 --- a/LICENSE-binary +++ b/LICENSE-binary @@ -206,10 +206,13 @@ This project bundles some components that are also licensed under the Apache License Version 2.0: cglib:cglib:2.2.2 -com.fasterxml.jackson.core:jackson-annotations:2.13.4 -com.fasterxml.jackson.core:jackson-databind:2.13.4 -com.fasterxml.jackson.core:jackson-core:2.13.4 -com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 +com.fasterxml.jackson.core:jackson-annotations:2.14.1 +com.fasterxml.jackson.core:jackson-databind:2.14.1 +com.fasterxml.jackson.core:jackson-core:2.14.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.10.1 +com.fasterxml.jackson.datatype:jackson-datatype-joda:2.14.1 +com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.1 +com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.2 com.fasterxml.woodstox:woodstox-core:5.0.3 com.github.stephenc.jcip:jcip-annotations:1.0-1 com.google.code.findbugs:jsr305:3.0.0 @@ -301,7 +304,7 @@ org.mortbay.jetty:jetty:6.1.26 org.mybatis:mybatis:3.2.8 org.xerial.snappy:snappy-java:1.0.5 org.xerial.snappy:snappy-java:1.1.1.3 -org.yaml:snakeyaml:1.16 +org.yaml:snakeyaml:1.33 xerces:xercesImpl:2.9.1 xml-apis:xml-apis:1.3.04 diff --git a/pom.xml b/pom.xml index 63f3cadc..2624524e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,10 +74,10 @@ <pagehelper.version>5.1.10</pagehelper.version> <gson.version>2.8.9</gson.version> - <jackson-databind.version>2.13.4</jackson-databind.version> - <jackson-annotations.version>2.13.4</jackson-annotations.version> - <jackson-core.version>2.13.4</jackson-core.version> - <jackson-module-jaxb-annotations.version>2.13.4</jackson-module-jaxb-annotations.version> + <jackson-databind.version>2.14.1</jackson-databind.version> + <jackson-annotations.version>2.14.1</jackson-annotations.version> + <jackson-core.version>2.14.1</jackson-core.version> + <jackson-module-jaxb-annotations.version>2.14.1</jackson-module-jaxb-annotations.version> <commons-configuration.version>1.10</commons-configuration.version> <commons-httpclient.version>3.1</commons-httpclient.version> @@ -102,7 +102,7 @@ <log4j.version>1.2.17</log4j.version> <commons.logging.version>1.1.3</commons.logging.version> <commons.cli.version>1.2</commons.cli.version> - <snakeyaml.version>1.32</snakeyaml.version> + <snakeyaml.version>1.33</snakeyaml.version> <httpcore.version>4.4.4</httpcore.version> <httpclient.version>4.5.2</httpclient.version> <commons-lang.version>2.6</commons-lang.version> diff --git a/submarine-server/server-core/pom.xml b/submarine-server/server-core/pom.xml index ebe8cb44..4ef4a71e 100644 --- a/submarine-server/server-core/pom.xml +++ b/submarine-server/server-core/pom.xml @@ -293,6 +293,11 @@ <artifactId>jackson-core</artifactId> <version>${jackson-core.version}</version> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-joda</artifactId> + <version>${jackson-databind.version}</version> + </dependency> <dependency> <groupId>com.google.code.gson</groupId> @@ -391,7 +396,7 @@ <dependency> <groupId>com.github.wnameless.json</groupId> <artifactId>json-flattener</artifactId> - <version>0.9.0</version> + <version>0.16.1</version> <exclusions> <exclusion> <groupId>org.apache.commons</groupId> diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/provider/YamlEntityProvider.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/provider/YamlEntityProvider.java index bce9b7b9..c6bde30d 100644 --- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/provider/YamlEntityProvider.java +++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/provider/YamlEntityProvider.java @@ -19,7 +19,7 @@ package org.apache.submarine.server.rest.provider; -import org.yaml.snakeyaml.Yaml; +import org.apache.submarine.server.utils.YamlUtils; import javax.ws.rs.Consumes; import javax.ws.rs.Produces; @@ -35,6 +35,7 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.lang.annotation.Annotation; import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; import java.util.Scanner; @Provider @@ -54,14 +55,14 @@ public class YamlEntityProvider<T> implements MessageBodyWriter<T>, MessageBodyR MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws WebApplicationException { - Yaml yaml = new Yaml(); - T t = yaml.loadAs(toString(entityStream), type); + T t = YamlUtils.readValue(toString(entityStream), type); return t; } public static String toString(InputStream inputStream) { - return new Scanner(inputStream, "UTF-8") - .useDelimiter("\\A").next(); + try (Scanner scanner = new Scanner(inputStream, StandardCharsets.UTF_8)) { + return scanner.useDelimiter("\\A").next(); + } } @Override @@ -83,9 +84,8 @@ public class YamlEntityProvider<T> implements MessageBodyWriter<T>, MessageBodyR Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { - Yaml yaml = new Yaml(); - OutputStreamWriter writer = new OutputStreamWriter(entityStream); - yaml.dump(t, writer); - writer.close(); + try (OutputStreamWriter writer = new OutputStreamWriter(entityStream)) { + YamlUtils.writeValue(writer, t); + } } } diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/util/YamlUtils.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/utils/YamlUtils.java similarity index 84% rename from submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/util/YamlUtils.java rename to submarine-server/server-core/src/main/java/org/apache/submarine/server/utils/YamlUtils.java index 06d0ea1c..a31debf0 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/util/YamlUtils.java +++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/utils/YamlUtils.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.submarine.server.submitter.k8s.util; +package org.apache.submarine.server.utils; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; @@ -29,9 +29,13 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLMapper; import com.fasterxml.jackson.datatype.joda.JodaModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import java.io.IOException; +import java.io.Writer; + /** * Support the conversion of objects to yaml format, - * so that the resource information can be displayed on the log in a more k8s declarative and readable manner + * so that the resource information can be displayed on the log in a more k8s declarative and readable manner, + * or used for {@link org.apache.submarine.server.rest.provider.YamlEntityProvider} */ public class YamlUtils { @@ -71,4 +75,15 @@ public class YamlUtils { throw new RuntimeException("Read yaml failed! " + tClass.getName(), ex); } } + + /** + * Write object to writer + */ + public static void writeValue(Writer writer, Object value) { + try { + YAML_MAPPER.writeValue(writer, value); + } catch (IOException ex) { + throw new RuntimeException("Write yaml failed! " + value.getClass().getName(), ex); + } + } } diff --git a/submarine-server/server-submitter/submitter-k8s/pom.xml b/submarine-server/server-submitter/submitter-k8s/pom.xml index d04b3096..77218fe7 100644 --- a/submarine-server/server-submitter/submitter-k8s/pom.xml +++ b/submarine-server/server-submitter/submitter-k8s/pom.xml @@ -115,12 +115,6 @@ <scope>test</scope> </dependency> - <dependency> - <groupId>com.fasterxml.jackson.datatype</groupId> - <artifactId>jackson-datatype-joda</artifactId> - <version>${jackson-databind.version}</version> - </dependency> - <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/AgentPod.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/AgentPod.java index 9f4937bd..65d5ba17 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/AgentPod.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/AgentPod.java @@ -33,7 +33,7 @@ import io.kubernetes.client.openapi.models.V1ObjectMetaBuilder; import io.kubernetes.client.openapi.models.V1Pod; import io.kubernetes.client.openapi.models.V1PodSpec; import org.apache.submarine.server.submitter.k8s.client.K8sClient; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/common/Configmap.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/common/Configmap.java index b5a703eb..35676b41 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/common/Configmap.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/common/Configmap.java @@ -31,7 +31,7 @@ import org.apache.submarine.server.submitter.k8s.K8sSubmitter; import org.apache.submarine.server.submitter.k8s.model.K8sResource; import org.apache.submarine.server.submitter.k8s.util.JsonUtils; import org.apache.submarine.server.submitter.k8s.util.OwnerReferenceUtils; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/common/PersistentVolumeClaim.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/common/PersistentVolumeClaim.java index 7770075c..b0771643 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/common/PersistentVolumeClaim.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/common/PersistentVolumeClaim.java @@ -33,7 +33,7 @@ import org.apache.submarine.server.submitter.k8s.K8sSubmitter; import org.apache.submarine.server.submitter.k8s.model.K8sResource; import org.apache.submarine.server.submitter.k8s.util.NotebookUtils; import org.apache.submarine.server.submitter.k8s.util.OwnerReferenceUtils; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/istio/IstioVirtualService.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/istio/IstioVirtualService.java index 6a35cffd..ddcd6b3b 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/istio/IstioVirtualService.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/istio/IstioVirtualService.java @@ -29,7 +29,7 @@ import org.apache.submarine.serve.utils.IstioConstants; import org.apache.submarine.server.submitter.k8s.client.K8sClient; import org.apache.submarine.server.submitter.k8s.K8sSubmitter; import org.apache.submarine.server.submitter.k8s.model.K8sResource; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/notebook/NotebookCR.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/notebook/NotebookCR.java index 6dcd0a75..fe08419f 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/notebook/NotebookCR.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/notebook/NotebookCR.java @@ -34,7 +34,7 @@ import org.apache.submarine.server.submitter.k8s.model.K8sResource; import org.apache.submarine.server.submitter.k8s.parser.NotebookSpecParser; import org.apache.submarine.server.submitter.k8s.util.NotebookUtils; import org.apache.submarine.server.submitter.k8s.util.OwnerReferenceUtils; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import org.joda.time.DateTime; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/pytorchjob/PyTorchJob.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/pytorchjob/PyTorchJob.java index 7d38ed59..c279e542 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/pytorchjob/PyTorchJob.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/pytorchjob/PyTorchJob.java @@ -39,7 +39,7 @@ import org.apache.submarine.server.submitter.k8s.model.mljob.MLJobReplicaSpec; import org.apache.submarine.server.submitter.k8s.parser.ExperimentSpecParser; import org.apache.submarine.server.submitter.k8s.util.JsonUtils; import org.apache.submarine.server.submitter.k8s.util.MLJobConverter; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import java.util.HashMap; import java.util.Map; @@ -88,11 +88,11 @@ public class PyTorchJob extends MLJob { MLJobReplicaSpec replicaSpec = new MLJobReplicaSpec(); replicaSpec.setReplicas(taskSpec.getReplicas()); V1PodTemplateSpec podTemplateSpec = ExperimentSpecParser.parseTemplateSpec(taskSpec, experimentSpec); - + if (initContainer != null && replicaType.equals("Master")) { - podTemplateSpec.getSpec().addInitContainersItem(initContainer); + podTemplateSpec.getSpec().addInitContainersItem(initContainer); } - + replicaSpec.setTemplate(podTemplateSpec); replicaSpecMap.put(PyTorchJobReplicaType.valueOf(replicaType), replicaSpec); } else { diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentPytorchServing.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentPytorchServing.java index 4082cc3c..328f1c23 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentPytorchServing.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentPytorchServing.java @@ -27,7 +27,7 @@ import org.apache.submarine.serve.seldon.SeldonDeployment; import org.apache.submarine.server.submitter.k8s.client.K8sClient; import org.apache.submarine.server.submitter.k8s.model.istio.IstioVirtualService; import org.apache.submarine.server.submitter.k8s.util.OwnerReferenceUtils; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentTFServing.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentTFServing.java index 44518f25..fe4c01e0 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentTFServing.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentTFServing.java @@ -26,7 +26,7 @@ import org.apache.submarine.serve.seldon.tensorflow.SeldonTFServing; import org.apache.submarine.server.submitter.k8s.client.K8sClient; import org.apache.submarine.server.submitter.k8s.model.istio.IstioVirtualService; import org.apache.submarine.server.submitter.k8s.util.OwnerReferenceUtils; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/tfjob/TFJob.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/tfjob/TFJob.java index 1b9fe5a3..1eb96669 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/tfjob/TFJob.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/tfjob/TFJob.java @@ -40,7 +40,7 @@ import org.apache.submarine.server.submitter.k8s.model.mljob.MLJobReplicaSpec; import org.apache.submarine.server.submitter.k8s.parser.ExperimentSpecParser; import org.apache.submarine.server.submitter.k8s.util.JsonUtils; import org.apache.submarine.server.submitter.k8s.util.MLJobConverter; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import java.util.HashMap; import java.util.Map; @@ -69,7 +69,7 @@ public class TFJob extends MLJob { setGroup(CRD_TF_GROUP_V1); // set spec setSpec(parseTFJobSpec(experimentSpec)); - + V1Container initContainer = this.getExperimentHandlerContainer(experimentSpec); if (initContainer != null) { Map<TFJobReplicaType, MLJobReplicaSpec> replicaSet = this.getSpec().getReplicaSpecs(); diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/xgboostjob/XGBoostJob.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/xgboostjob/XGBoostJob.java index 740b868c..f46060ad 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/xgboostjob/XGBoostJob.java +++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/xgboostjob/XGBoostJob.java @@ -39,7 +39,7 @@ import org.apache.submarine.server.submitter.k8s.model.mljob.MLJobReplicaSpec; import org.apache.submarine.server.submitter.k8s.parser.ExperimentSpecParser; import org.apache.submarine.server.submitter.k8s.util.JsonUtils; import org.apache.submarine.server.submitter.k8s.util.MLJobConverter; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import java.util.HashMap; import java.util.Map; @@ -81,11 +81,11 @@ public class XGBoostJob extends MLJob { MLJobReplicaSpec replicaSpec = new MLJobReplicaSpec(); replicaSpec.setReplicas(taskSpec.getReplicas()); V1PodTemplateSpec podTemplateSpec = ExperimentSpecParser.parseTemplateSpec(taskSpec, experimentSpec); - + if (initContainer != null && replicaType.equals("Master")) { - podTemplateSpec.getSpec().addInitContainersItem(initContainer); + podTemplateSpec.getSpec().addInitContainersItem(initContainer); } - + replicaSpec.setTemplate(podTemplateSpec); replicaSpecMap.put(XGBoostJobReplicaType.valueOf(replicaType), replicaSpec); } else { diff --git a/submarine-server/server-submitter/submitter-k8s/src/test/java/org/apache/submarine/server/submitter/k8s/seldon/SeldonDeploymentResourceTest.java b/submarine-server/server-submitter/submitter-k8s/src/test/java/org/apache/submarine/server/submitter/k8s/seldon/SeldonDeploymentResourceTest.java index a18697ae..91d53b0b 100644 --- a/submarine-server/server-submitter/submitter-k8s/src/test/java/org/apache/submarine/server/submitter/k8s/seldon/SeldonDeploymentResourceTest.java +++ b/submarine-server/server-submitter/submitter-k8s/src/test/java/org/apache/submarine/server/submitter/k8s/seldon/SeldonDeploymentResourceTest.java @@ -24,7 +24,7 @@ import org.apache.submarine.server.submitter.k8s.model.seldon.SeldonDeploymentFa import org.apache.submarine.server.submitter.k8s.model.seldon.SeldonDeploymentPytorchServing; import org.apache.submarine.server.submitter.k8s.model.seldon.SeldonDeploymentTFServing; import org.apache.submarine.server.submitter.k8s.model.seldon.SeldonResource; -import org.apache.submarine.server.submitter.k8s.util.YamlUtils; +import org.apache.submarine.server.utils.YamlUtils; import org.junit.Assert; import org.junit.Test; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@submarine.apache.org For additional commands, e-mail: dev-h...@submarine.apache.org