From 6a52b3e1aadfc262b4ebc452abfb04c8776e758c Mon Sep 17 00:00:00 2001 From: sasvaritoni Date: Fri, 17 May 2019 14:24:36 +0200 Subject: [PATCH 1/2] Fix PredictiveUnitState image name and version (#562) --- .../io/seldon/engine/predictors/PredictiveUnitState.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/engine/src/main/java/io/seldon/engine/predictors/PredictiveUnitState.java b/engine/src/main/java/io/seldon/engine/predictors/PredictiveUnitState.java index 7e9f054992..c545b06532 100644 --- a/engine/src/main/java/io/seldon/engine/predictors/PredictiveUnitState.java +++ b/engine/src/main/java/io/seldon/engine/predictors/PredictiveUnitState.java @@ -87,11 +87,11 @@ public PredictiveUnitState( if (containersMap.containsKey(name)){ this.image = containersMap.get(name).getImage(); - if (image.contains(":")) + int i = image.lastIndexOf(":"); + if (i >= 0) { - String[] parts = image.split(":"); - this.imageName = parts[0]; - this.imageVersion = parts[1]; + this.imageName = StringUtils.substring(image, 0, i); + this.imageVersion = StringUtils.substring(image, i+1); } else { From 94cbc6112a6f7896a86c0e1a4aa88593c25e7bcb Mon Sep 17 00:00:00 2001 From: Clive Cox Date: Sat, 18 May 2019 11:19:30 +0100 Subject: [PATCH 2/2] add test for image extraction --- .../predictors/PredictiveUnitStateTest.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 engine/src/test/java/io/seldon/engine/predictors/PredictiveUnitStateTest.java diff --git a/engine/src/test/java/io/seldon/engine/predictors/PredictiveUnitStateTest.java b/engine/src/test/java/io/seldon/engine/predictors/PredictiveUnitStateTest.java new file mode 100644 index 0000000000..04da6c4c98 --- /dev/null +++ b/engine/src/test/java/io/seldon/engine/predictors/PredictiveUnitStateTest.java @@ -0,0 +1,39 @@ +package io.seldon.engine.predictors; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Test; + +import io.kubernetes.client.proto.V1.Container; +import io.seldon.protos.DeploymentProtos.Endpoint; +import io.seldon.protos.DeploymentProtos.PredictiveUnit; + +public class PredictiveUnitStateTest { + + @Test + public void testImageExtractionBasic() + { + final String name = "test"; + PredictiveUnit pu = PredictiveUnit.newBuilder().setName(name).setEndpoint(Endpoint.newBuilder().setServiceHost("host")).build(); + Map containersMap = new HashMap(); + containersMap.put(name, Container.newBuilder().setImage("myimage:0.1").build()); + PredictiveUnitState pus = new PredictiveUnitState(pu, containersMap); + Assert.assertEquals("myimage", pus.imageName); + Assert.assertEquals("0.1", pus.imageVersion); + } + + @Test + public void testImageExtractionWithPort() + { + final String name = "test"; + PredictiveUnit pu = PredictiveUnit.newBuilder().setName(name).setEndpoint(Endpoint.newBuilder().setServiceHost("host")).build(); + Map containersMap = new HashMap(); + containersMap.put(name, Container.newBuilder().setImage("myrep:1234/someorg/myimage:0.1").build()); + PredictiveUnitState pus = new PredictiveUnitState(pu, containersMap); + Assert.assertEquals("myrep:1234/someorg/myimage", pus.imageName); + Assert.assertEquals("0.1", pus.imageVersion); + } + +}