From 5eb12871330db57f0ce2c6115bf5e52cb5399cd9 Mon Sep 17 00:00:00 2001 From: Jeff Cantrill Date: Wed, 10 Jun 2015 09:28:27 -0400 Subject: [PATCH] [OSJC-174] Add source build strategy --- .../restclient/model/BuildConfig.java | 18 ++++++---- .../model/build/STIBuildStrategy.java | 1 + .../model/build/SourceBuildStrategy.java | 34 +++++++++++++++++++ .../OpenShiftApiModelProperties.java | 8 ++--- .../model/build/BuildStrategyType.java | 2 ++ .../model/build/ISTIBuildStrategy.java | 1 + .../model/build/ISourceBuildStrategy.java | 20 +++++++++++ .../model/v1beta3/BuildConfigTest.java | 10 +++--- .../openshift3/v1beta3_build_config.json | 31 ++++++++--------- 9 files changed, 93 insertions(+), 32 deletions(-) create mode 100644 src/main/java/com/openshift/internal/restclient/model/build/SourceBuildStrategy.java create mode 100644 src/main/java/com/openshift/restclient/model/build/ISourceBuildStrategy.java diff --git a/src/main/java/com/openshift/internal/restclient/model/BuildConfig.java b/src/main/java/com/openshift/internal/restclient/model/BuildConfig.java index 1295a1e6..15fdf039 100644 --- a/src/main/java/com/openshift/internal/restclient/model/BuildConfig.java +++ b/src/main/java/com/openshift/internal/restclient/model/BuildConfig.java @@ -21,6 +21,7 @@ import com.openshift.internal.restclient.model.build.GitBuildSource; import com.openshift.internal.restclient.model.build.ImageChangeTrigger; import com.openshift.internal.restclient.model.build.STIBuildStrategy; +import com.openshift.internal.restclient.model.build.SourceBuildStrategy; import com.openshift.internal.restclient.model.build.WebhookTrigger; import com.openshift.restclient.IClient; import com.openshift.restclient.images.DockerImageURI; @@ -166,6 +167,7 @@ public void setBuildStrategy(IBuildStrategy strategy) { } break; case STI: + case Source: if ( !(strategy instanceof ISTIBuildStrategy)) { throw new IllegalArgumentException("IBuildStrategy of type Custom does not implement ISTIBuildStrategy"); } @@ -221,18 +223,20 @@ public T getBuildStrategy() { getEnvMap(BUILDCONFIG_CUSTOM_ENV) ); case STI: - boolean incremental = false; + case Source: if(OpenShiftAPIVersion.v1beta1.name().equals(getApiVersion())) { - incremental = !asBoolean(BUILDCONFIG_STI_CLEAN); - } else if(OpenShiftAPIVersion.v1beta3.name().equals(getApiVersion())) { - incremental = asBoolean(BUILDCONFIG_STI_INCREMENTAL); + return (T) new STIBuildStrategy(asString(BUILDCONFIG_STI_IMAGE), + asString(BUILDCONFIG_STI_SCRIPTS), + !asBoolean(BUILDCONFIG_STI_CLEAN), + getEnvMap(BUILDCONFIG_STI_ENV) + ); } - - return (T) new STIBuildStrategy(asString(BUILDCONFIG_STI_IMAGE), + return (T) new SourceBuildStrategy(asString(BUILDCONFIG_STI_IMAGE), asString(BUILDCONFIG_STI_SCRIPTS), - incremental, + asBoolean(BUILDCONFIG_STI_INCREMENTAL), getEnvMap(BUILDCONFIG_STI_ENV) ); + case Docker: return (T) new DockerBuildStrategy( asString(BUILDCONFIG_DOCKER_CONTEXTDIR), diff --git a/src/main/java/com/openshift/internal/restclient/model/build/STIBuildStrategy.java b/src/main/java/com/openshift/internal/restclient/model/build/STIBuildStrategy.java index 623e9cb0..4e650622 100644 --- a/src/main/java/com/openshift/internal/restclient/model/build/STIBuildStrategy.java +++ b/src/main/java/com/openshift/internal/restclient/model/build/STIBuildStrategy.java @@ -17,6 +17,7 @@ /** * @author Jeff Cantrill */ +@Deprecated public class STIBuildStrategy implements ISTIBuildStrategy{ private DockerImageURI image; diff --git a/src/main/java/com/openshift/internal/restclient/model/build/SourceBuildStrategy.java b/src/main/java/com/openshift/internal/restclient/model/build/SourceBuildStrategy.java new file mode 100644 index 00000000..2d778033 --- /dev/null +++ b/src/main/java/com/openshift/internal/restclient/model/build/SourceBuildStrategy.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2015 Red Hat, Inc. + * Distributed under license by Red Hat, Inc. All rights reserved. + * This program is made available under the terms of the + * Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + ******************************************************************************/ +package com.openshift.internal.restclient.model.build; + +import java.util.Map; + +import com.openshift.restclient.model.build.BuildStrategyType; + +/** + * + * @author jeff.cantrill + * + */ +public class SourceBuildStrategy extends STIBuildStrategy { + + public SourceBuildStrategy(String image, String scriptsLocation, boolean incremental, Map envVars) { + super(image, scriptsLocation, incremental, envVars); + } + + @Override + public BuildStrategyType getType() { + return BuildStrategyType.Source; + } + + +} diff --git a/src/main/java/com/openshift/internal/restclient/model/properties/OpenShiftApiModelProperties.java b/src/main/java/com/openshift/internal/restclient/model/properties/OpenShiftApiModelProperties.java index 16a032d5..3f412364 100644 --- a/src/main/java/com/openshift/internal/restclient/model/properties/OpenShiftApiModelProperties.java +++ b/src/main/java/com/openshift/internal/restclient/model/properties/OpenShiftApiModelProperties.java @@ -110,10 +110,10 @@ public interface OpenShiftApiModelProperties extends ResourcePropertyKeys{ put(BUILDCONFIG_DOCKER_NOCACHE, new String[]{"spec","strategy", "dockerStrategy", "noCache"}); put(BUILDCONFIG_DOCKER_BASEIMAGE, new String[]{"spec","strategy", "dockerStrategy","baseImage"}); put(BUILDCONFIG_OUTPUT_REPO, new String[]{"spec","output", "to","name"}); - put(BUILDCONFIG_STI_IMAGE, new String[]{"spec","strategy", "stiStrategy", "from","name"}); - put(BUILDCONFIG_STI_SCRIPTS, new String[]{"spec","strategy", "stiStrategy", "scripts"}); - put(BUILDCONFIG_STI_INCREMENTAL, new String[]{"spec","strategy", "stiStrategy", "incremental"}); - put(BUILDCONFIG_STI_ENV, new String[]{"spec","strategy", "stiStrategy", "env"}); + put(BUILDCONFIG_STI_IMAGE, new String[]{"spec","strategy", "sourceStrategy", "from","name"}); + put(BUILDCONFIG_STI_SCRIPTS, new String[]{"spec","strategy", "sourceStrategy", "scripts"}); + put(BUILDCONFIG_STI_INCREMENTAL, new String[]{"spec","strategy", "sourceStrategy", "incremental"}); + put(BUILDCONFIG_STI_ENV, new String[]{"spec","strategy", "sourceStrategy", "env"}); put(BUILDCONFIG_TRIGGERS, new String[]{"spec","triggers"}); put(BUILD_CONFIG_WEBHOOK_GITHUB_SECRET, new String[]{"github","secret"}); put(BUILD_CONFIG_WEBHOOK_GENERIC_SECRET, new String[]{"generic","secret"}); diff --git a/src/main/java/com/openshift/restclient/model/build/BuildStrategyType.java b/src/main/java/com/openshift/restclient/model/build/BuildStrategyType.java index b84e8eba..52c7083f 100644 --- a/src/main/java/com/openshift/restclient/model/build/BuildStrategyType.java +++ b/src/main/java/com/openshift/restclient/model/build/BuildStrategyType.java @@ -16,6 +16,8 @@ // TODO: evalute switching to a class/constants since enums are not extendable public enum BuildStrategyType { Docker, + @Deprecated STI, + Source, Custom } diff --git a/src/main/java/com/openshift/restclient/model/build/ISTIBuildStrategy.java b/src/main/java/com/openshift/restclient/model/build/ISTIBuildStrategy.java index c6499ab2..2ac2f001 100644 --- a/src/main/java/com/openshift/restclient/model/build/ISTIBuildStrategy.java +++ b/src/main/java/com/openshift/restclient/model/build/ISTIBuildStrategy.java @@ -15,6 +15,7 @@ /** * @author Jeff Cantrill */ +@Deprecated public interface ISTIBuildStrategy extends IBuildStrategy { /** diff --git a/src/main/java/com/openshift/restclient/model/build/ISourceBuildStrategy.java b/src/main/java/com/openshift/restclient/model/build/ISourceBuildStrategy.java new file mode 100644 index 00000000..06c1a28d --- /dev/null +++ b/src/main/java/com/openshift/restclient/model/build/ISourceBuildStrategy.java @@ -0,0 +1,20 @@ +/******************************************************************************* + * Copyright (c) 2015 Red Hat, Inc. + * Distributed under license by Red Hat, Inc. All rights reserved. + * This program is made available under the terms of the + * Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + ******************************************************************************/ +package com.openshift.restclient.model.build; + +/** + * + * @author jeff.cantrill + * + */ +public interface ISourceBuildStrategy extends ISTIBuildStrategy{ + +} diff --git a/src/test/java/com/openshift/internal/restclient/model/v1beta3/BuildConfigTest.java b/src/test/java/com/openshift/internal/restclient/model/v1beta3/BuildConfigTest.java index bdbf9bf4..5bc1e3e0 100644 --- a/src/test/java/com/openshift/internal/restclient/model/v1beta3/BuildConfigTest.java +++ b/src/test/java/com/openshift/internal/restclient/model/v1beta3/BuildConfigTest.java @@ -83,7 +83,7 @@ public void addBuildTriggers() { @Test public void getOutputRespositoryName(){ - assertEquals("origin-ruby-sample", config.getOutputRepositoryName()); + assertEquals("origin-ruby-sample:latest", config.getOutputRepositoryName()); } @Test @@ -111,7 +111,7 @@ public void setGitBuildSource() { @Test public void getSTIBuildStrategy() { IBuildStrategy strategy = config.getBuildStrategy(); - assertSTIBuildStrategy(strategy); + assertSourceBuildStrategy(strategy); } @Test @@ -122,7 +122,7 @@ public void setSTIBuildStrategy() { env.put("foo", "bar"); writeConfig.setBuildStrategy(new STIBuildStrategy("ruby-20-centos7:latest", "alocation", true, env)); - assertSTIBuildStrategy(reCreateBuildConfig(writeConfig).getBuildStrategy()); + assertSourceBuildStrategy(reCreateBuildConfig(writeConfig).getBuildStrategy()); } private void assertBuildTriggers(IBuildTrigger[] triggers) { @@ -143,8 +143,8 @@ private void assertGitBuildSource(IBuildSource source) { assertEquals("Exp. to get the source ref","", git.getRef()); } - private void assertSTIBuildStrategy(IBuildStrategy strategy) { - assertEquals(BuildStrategyType.STI, strategy.getType()); + private void assertSourceBuildStrategy(IBuildStrategy strategy) { + assertEquals(BuildStrategyType.Source, strategy.getType()); assertTrue(strategy instanceof ISTIBuildStrategy); ISTIBuildStrategy sti = (ISTIBuildStrategy)strategy; diff --git a/src/test/resources/samples/openshift3/v1beta3_build_config.json b/src/test/resources/samples/openshift3/v1beta3_build_config.json index e21490f8..f01c34a1 100644 --- a/src/test/resources/samples/openshift3/v1beta3_build_config.json +++ b/src/test/resources/samples/openshift3/v1beta3_build_config.json @@ -4,11 +4,12 @@ "metadata": { "name": "ruby-sample-build", "namespace": "test", - "selfLink": "/osapi/v1beta1/buildConfigs/ruby-sample-build?namespace=test", - "uid": "87bc17dc-f41a-11e4-bc91-080027893417", - "resourceVersion": "58372", - "creationTimestamp": "2015-05-06T18:05:51Z", + "selfLink": "/osapi/v1beta3/namespaces/test/buildconfigs/ruby-sample-build", + "uid": "a87b6692-00a5-11e5-8ebb-080027893417", + "resourceVersion": "259", + "creationTimestamp": "2015-05-22T17:12:00Z", "labels": { + "mylabel": "abe", "name": "ruby-sample-build", "template": "application-template-stibuild" } @@ -41,26 +42,24 @@ } }, "strategy": { - "type": "STI", - "stiStrategy": { + "type": "Source", + "sourceStrategy": { "from": { "kind": "ImageStreamTag", "name": "ruby-20-centos7:latest" }, - "incremental": true, "scripts" : "alocation", - "env" : [ - { - "name" : "foo", - "value" : "bar" - } - ] + "env" : [{ + "name" : "foo", + "value" : "bar" + }], + "incremental": true } }, "output": { "to": { - "kind": "ImageStream", - "name": "origin-ruby-sample" + "kind": "ImageStreamTag", + "name": "origin-ruby-sample:latest" } }, "resources": {} @@ -68,4 +67,4 @@ "status": { "lastVersion": 1 } -} \ No newline at end of file +}