From d03d3730e135bf5f4923d2b1d3cd8d9950a3b9d4 Mon Sep 17 00:00:00 2001 From: Rohan Kumar Date: Mon, 12 Feb 2018 15:18:34 +0530 Subject: [PATCH] Fixes #1177 Minor changes to ImageTrigger generation Added fabric8.openshift.setDeploymentTriggerAutomatic flag which would be able to enable/disable automatic deployments. --- CHANGELOG.md | 2 ++ .../main/asciidoc/inc/goals/build/_fabric8-resource.adoc | 5 +++++ .../converter/DeploymentConfigOpenShiftConverter.java | 2 +- .../plugin/converter/DeploymentOpenShiftConverter.java | 9 ++++++--- .../plugin/converter/KubernetesToOpenShiftConverter.java | 2 +- .../plugin/converter/NamespaceOpenShiftConverter.java | 2 +- .../plugin/converter/ReplicSetOpenShiftConverter.java | 2 +- .../io/fabric8/maven/plugin/mojo/build/ResourceMojo.java | 5 ++++- 8 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19f37400f2..0f0cf1333f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ After this we will switch probably to real [Semantic Versioning 2.0.0](http://se * Fix 1130: Added flag fabric8.openshift.trimImageInContainerSpec which would set the container image reference to "", this is done to handle weird behavior of Openshift 3.7 in which subsequent rollouts lead to ImagePullErr. * Feature 1174: ImageStreams use local lookup policy by default to simplify usage of Deployment or StatefulSet resources on Openshift +* Fix 1177: Added flag fabric8.openshift.enableAutomaticTrigger which would be able to enable/disable automatic deployments whenever there is new image + generated. ###3.5.34 * Feature 1003: Added suspend option to remote debugging diff --git a/doc/src/main/asciidoc/inc/goals/build/_fabric8-resource.adoc b/doc/src/main/asciidoc/inc/goals/build/_fabric8-resource.adoc index cf9eda3c00..a2cb3b5f7b 100644 --- a/doc/src/main/asciidoc/inc/goals/build/_fabric8-resource.adoc +++ b/doc/src/main/asciidoc/inc/goals/build/_fabric8-resource.adoc @@ -234,3 +234,8 @@ spec: ---- In case both the label in the resource fragment and also the flag is set then precedence will be given to flag. Like you have set the label to true and flag to false then it will not generate route.yml because flag is set to false. + +| *fabric8.openshift.enableAutomaticTrigger* +| If the value is set to `false` then automatic deployments would be disabled. +| true +|=== diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/converter/DeploymentConfigOpenShiftConverter.java b/plugin/src/main/java/io/fabric8/maven/plugin/converter/DeploymentConfigOpenShiftConverter.java index 342c926b32..f79018e7a1 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/converter/DeploymentConfigOpenShiftConverter.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/converter/DeploymentConfigOpenShiftConverter.java @@ -49,7 +49,7 @@ public DeploymentConfigOpenShiftConverter(Long openshiftDeployTimeoutSeconds) { } @Override - public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec) { + public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec, boolean enableAutomaticTrigger) { if (item instanceof DeploymentConfig) { DeploymentConfig resource = (DeploymentConfig) item; diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/converter/DeploymentOpenShiftConverter.java b/plugin/src/main/java/io/fabric8/maven/plugin/converter/DeploymentOpenShiftConverter.java index bab142b087..84d0cdb50d 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/converter/DeploymentOpenShiftConverter.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/converter/DeploymentOpenShiftConverter.java @@ -50,7 +50,7 @@ public DeploymentOpenShiftConverter(PlatformMode mode, Long openshiftDeployTimeo } @Override - public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec) { + public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec, boolean enableAutomaticTrigger) { Deployment resource = (Deployment) item; DeploymentConfigBuilder builder = new DeploymentConfigBuilder(); builder.withMetadata(resource.getMetadata()); @@ -107,7 +107,9 @@ public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec) { } // lets add a default trigger so that its triggered when we change its config - specBuilder.addNewTrigger().withType("ConfigChange").endTrigger(); + if(enableAutomaticTrigger) { + specBuilder.addNewTrigger().withType("ConfigChange").endTrigger(); + } // add a new image change trigger for the build stream if (containerToImageMap.size() != 0) { @@ -119,10 +121,11 @@ public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec) { specBuilder.addNewTrigger() .withType("ImageChange") .withNewImageChangeParams() - .withAutomatic(true) + .withAutomatic(enableAutomaticTrigger) .withNewFrom() .withKind("ImageStreamTag") .withName(image.getSimpleName() + ":" + tag) + .withNamespace(image.getUser()) .endFrom() .withContainerNames(containerName) .endImageChangeParams() diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/converter/KubernetesToOpenShiftConverter.java b/plugin/src/main/java/io/fabric8/maven/plugin/converter/KubernetesToOpenShiftConverter.java index 7a8fb4b33f..c40a7953de 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/converter/KubernetesToOpenShiftConverter.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/converter/KubernetesToOpenShiftConverter.java @@ -24,6 +24,6 @@ */ public interface KubernetesToOpenShiftConverter { - HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec); + HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec, boolean enableAutomaticTrigger); } diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/converter/NamespaceOpenShiftConverter.java b/plugin/src/main/java/io/fabric8/maven/plugin/converter/NamespaceOpenShiftConverter.java index 3359b5fa1c..5f55218b87 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/converter/NamespaceOpenShiftConverter.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/converter/NamespaceOpenShiftConverter.java @@ -24,7 +24,7 @@ */ public class NamespaceOpenShiftConverter implements KubernetesToOpenShiftConverter { @Override - public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec) { + public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec, boolean enableAutomaticTrigger) { return new ProjectRequestBuilder().withMetadata(item.getMetadata()).build(); } } diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/converter/ReplicSetOpenShiftConverter.java b/plugin/src/main/java/io/fabric8/maven/plugin/converter/ReplicSetOpenShiftConverter.java index 6cc534822c..2455024619 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/converter/ReplicSetOpenShiftConverter.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/converter/ReplicSetOpenShiftConverter.java @@ -32,7 +32,7 @@ */ public class ReplicSetOpenShiftConverter implements KubernetesToOpenShiftConverter { @Override - public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec) { + public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec, boolean enableAutomaticTrigger) { ReplicaSet resource = (ReplicaSet) item; ReplicationControllerBuilder builder = new ReplicationControllerBuilder(); builder.withMetadata(resource.getMetadata()); diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/ResourceMojo.java b/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/ResourceMojo.java index d6f1f28518..69be448b16 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/ResourceMojo.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/ResourceMojo.java @@ -257,6 +257,9 @@ public class ResourceMojo extends AbstractResourceMojo { @Parameter(property = "fabric8.openshift.generateRoute", defaultValue = "true") private Boolean generateRoute; + @Parameter(property = "fabric8.openshift.enableAutomaticTrigger", defaultValue = "true") + private Boolean enableAutomaticTrigger; + @Parameter(property = "kompose.dir", defaultValue = "${user.home}/.kompose/bin") private File komposeBinDir; @@ -758,7 +761,7 @@ private HasMetadata convertKubernetesItemToOpenShift(HasMetadata item) { } KubernetesToOpenShiftConverter converter = openShiftConverters.get(item.getKind()); - return converter != null ? converter.convert(item, trimImageInContainerSpec) : item; + return converter != null ? converter.convert(item, trimImageInContainerSpec, enableAutomaticTrigger) : item; } // ==================================================================================