diff --git a/core/src/main/java/io/fabric8/maven/core/access/ClusterAccess.java b/core/src/main/java/io/fabric8/maven/core/access/ClusterAccess.java index fe4231e13d..4267dab743 100644 --- a/core/src/main/java/io/fabric8/maven/core/access/ClusterAccess.java +++ b/core/src/main/java/io/fabric8/maven/core/access/ClusterAccess.java @@ -20,6 +20,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.util.kubernetes.OpenshiftHelper; import io.fabric8.maven.docker.util.Logger; import io.fabric8.openshift.client.DefaultOpenShiftClient; @@ -122,13 +123,13 @@ public boolean isOpenShift(Logger log) { return false; } - public PlatformMode resolvePlatformMode(PlatformMode mode, Logger log) { - PlatformMode resolvedMode; + public RuntimeMode resolveRuntimeMode(RuntimeMode mode, Logger log) { + RuntimeMode resolvedMode; if (mode == null) { - mode = PlatformMode.DEFAULT; + mode = RuntimeMode.DEFAULT; } if (mode.isAuto()) { - resolvedMode = isOpenShiftImageStream(log) ? PlatformMode.openshift : PlatformMode.kubernetes; + resolvedMode = isOpenShiftImageStream(log) ? RuntimeMode.openshift : RuntimeMode.kubernetes; } else { resolvedMode = mode; } diff --git a/core/src/main/java/io/fabric8/maven/core/config/PlatformMode.java b/core/src/main/java/io/fabric8/maven/core/config/PlatformMode.java index 89a1d1619a..2404093a8f 100644 --- a/core/src/main/java/io/fabric8/maven/core/config/PlatformMode.java +++ b/core/src/main/java/io/fabric8/maven/core/config/PlatformMode.java @@ -20,7 +20,7 @@ import com.google.common.base.Objects; /** - * Mode how to create resouce descriptors + * Mode how to create resource descriptors * * @author roland * @since 25/05/16 diff --git a/core/src/main/java/io/fabric8/maven/core/config/RuntimeMode.java b/core/src/main/java/io/fabric8/maven/core/config/RuntimeMode.java new file mode 100644 index 0000000000..bd7746f1e5 --- /dev/null +++ b/core/src/main/java/io/fabric8/maven/core/config/RuntimeMode.java @@ -0,0 +1,71 @@ +/** + * Copyright 2016 Red Hat, Inc. + * + * Red Hat licenses this file to you under the Apache License, version + * 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package io.fabric8.maven.core.config; + +import com.google.common.base.Objects; + +import java.util.Properties; + +/** + * Mode how to interact with Kubernetes/Openshift cluster. + * + * @author roland + * @since 25/05/16 + */ +public enum RuntimeMode { + + /** + * Create resources descriptors for vanilla Kubernetes + */ + kubernetes(false, "Kubernetes"), + + /** + * Use special OpenShift features like BuildConfigs + */ + openshift(false, "OpenShift"), + + /** + * Detect automatically whether running on OpenShift or Kuberentes. + * This is done by contacting an API server + */ + auto(true, "Auto"); + + public static final RuntimeMode DEFAULT = RuntimeMode.auto; + public static final String FABRIC8_EFFECTIVE_PLATFORM_MODE = "fabric8.internal.effective.platform.mode"; + + private boolean autoFlag; + private String label; + + RuntimeMode(boolean autoFlag, String label) { + this.autoFlag = autoFlag; + this.label = label; + } + + public boolean isAuto() { + return autoFlag; + } + + public String getLabel() { + return label; + } + + /** + * Returns true if the given maven properties indicate running in OpenShift platform mode + */ + public static boolean isOpenShiftMode(Properties properties) { + return properties == null ? false : Objects.equal(openshift.toString(), properties.getProperty(FABRIC8_EFFECTIVE_PLATFORM_MODE, "")); + } +} diff --git a/core/src/main/java/io/fabric8/maven/core/service/Fabric8ServiceHub.java b/core/src/main/java/io/fabric8/maven/core/service/Fabric8ServiceHub.java index 4eee85a004..14c6ed2ae6 100644 --- a/core/src/main/java/io/fabric8/maven/core/service/Fabric8ServiceHub.java +++ b/core/src/main/java/io/fabric8/maven/core/service/Fabric8ServiceHub.java @@ -20,7 +20,8 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.maven.core.access.ClusterAccess; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.service.kubernetes.DockerBuildService; import io.fabric8.maven.core.service.openshift.OpenshiftBuildService; import io.fabric8.maven.core.util.LazyBuilder; @@ -41,7 +42,7 @@ public class Fabric8ServiceHub { */ private ClusterAccess clusterAccess; - private PlatformMode platformMode; + private RuntimeMode platformMode; private Logger log; @@ -58,7 +59,7 @@ public class Fabric8ServiceHub { * Computed resources */ - private PlatformMode resolvedMode; + private RuntimeMode resolvedMode; private KubernetesClient client; @@ -71,8 +72,8 @@ private void init() { Objects.requireNonNull(clusterAccess, "clusterAccess"); Objects.requireNonNull(log, "log"); - this.resolvedMode = clusterAccess.resolvePlatformMode(platformMode, log); - if (resolvedMode != PlatformMode.kubernetes && resolvedMode != PlatformMode.openshift) { + this.resolvedMode = clusterAccess.resolveRuntimeMode(platformMode, log); + if (resolvedMode != RuntimeMode.kubernetes && resolvedMode != RuntimeMode.openshift) { throw new IllegalArgumentException("Unknown platform mode " + platformMode + " resolved as "+ resolvedMode); } this.client = clusterAccess.createDefaultClient(log); @@ -90,7 +91,7 @@ protected ApplyService build() { protected BuildService build() { BuildService buildService; // Creating platform-dependent services - if (resolvedMode == PlatformMode.openshift) { + if (resolvedMode == RuntimeMode.openshift) { if (!(client instanceof OpenShiftClient)) { throw new IllegalStateException("Openshift platform has been specified but Openshift has not been detected!"); } @@ -135,7 +136,7 @@ public Builder clusterAccess(ClusterAccess clusterAccess) { return this; } - public Builder platformMode(PlatformMode platformMode) { + public Builder platformMode(RuntimeMode platformMode) { hub.platformMode = platformMode; return this; } diff --git a/core/src/main/java/io/fabric8/maven/core/util/ResourceVersioning.java b/core/src/main/java/io/fabric8/maven/core/util/ResourceVersioning.java index a5ab6f4a82..ba98deba09 100644 --- a/core/src/main/java/io/fabric8/maven/core/util/ResourceVersioning.java +++ b/core/src/main/java/io/fabric8/maven/core/util/ResourceVersioning.java @@ -29,14 +29,17 @@ public class ResourceVersioning { private String jobVersion; + private String openshiftV1version; + public ResourceVersioning() { } - public ResourceVersioning(String coreVersion, String extensionsVersion, String appsVersion, String jobVersion) { + public ResourceVersioning(String coreVersion, String extensionsVersion, String appsVersion, String jobVersion, String openshiftV1version) { this.coreVersion = coreVersion; this.extensionsVersion = extensionsVersion; this.appsVersion = appsVersion; this.jobVersion = jobVersion; + this.openshiftV1version = openshiftV1version; } public String getCoreVersion() { @@ -63,6 +66,14 @@ public void setAppsVersion(String appsVersion) { this.appsVersion = appsVersion; } + public void setOpenshiftV1Version(String openshiftV1Version) { + this.openshiftV1version = openshiftV1Version; + } + + public String getOpenshiftV1version() { + return openshiftV1version; + } + public String getJobVersion() { return jobVersion; } @@ -89,6 +100,12 @@ public ResourceVersioning withAppsVersion(String appsVersion) { return c; } + public ResourceVersioning withOpenshiftV1Version(String version) { + ResourceVersioning c = copy(); + c.setOpenshiftV1Version(version); + return c; + } + public ResourceVersioning withJobVersion(String jobVersion) { ResourceVersioning c = copy(); c.setJobVersion(jobVersion); @@ -102,11 +119,12 @@ public String toString() { sb.append(", extensionsVersion='").append(extensionsVersion).append('\''); sb.append(", appsVersion='").append(appsVersion).append('\''); sb.append(", jobVersion='").append(jobVersion).append('\''); + sb.append(", openshiftV1Version='").append(openshiftV1version).append('\''); sb.append('}'); return sb.toString(); } protected ResourceVersioning copy() { - return new ResourceVersioning(coreVersion, extensionsVersion, appsVersion, jobVersion); + return new ResourceVersioning(coreVersion, extensionsVersion, appsVersion, jobVersion, openshiftV1version); } } diff --git a/core/src/main/java/io/fabric8/maven/core/util/kubernetes/KubernetesResourceUtil.java b/core/src/main/java/io/fabric8/maven/core/util/kubernetes/KubernetesResourceUtil.java index 5bf07d7635..72b4e5d665 100644 --- a/core/src/main/java/io/fabric8/maven/core/util/kubernetes/KubernetesResourceUtil.java +++ b/core/src/main/java/io/fabric8/maven/core/util/kubernetes/KubernetesResourceUtil.java @@ -15,6 +15,7 @@ */ package io.fabric8.maven.core.util.kubernetes; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.GroupArtifactVersion; import java.io.File; import java.io.FilenameFilter; @@ -106,10 +107,12 @@ public class KubernetesResourceUtil { public static final String API_EXTENSIONS_VERSION = "extensions/v1beta1"; public static final String API_APPS_VERSION = "apps/v1beta1"; public static final String JOB_VERSION = "batch/v1"; + public static final String OPENSHIFT_V1_VERSION = "apps.openshift.io/v1"; public static final ResourceVersioning DEFAULT_RESOURCE_VERSIONING = new ResourceVersioning() .withCoreVersion(API_VERSION) .withExtensionsVersion(API_EXTENSIONS_VERSION) .withAppsVersion(API_APPS_VERSION) + .withOpenshiftV1Version(OPENSHIFT_V1_VERSION) .withJobVersion(JOB_VERSION); public static final HashSet> SIMPLE_FIELD_TYPES = new HashSet<>(); @@ -129,13 +132,13 @@ public class KubernetesResourceUtil { * @return the list builder * @throws IOException */ - public static KubernetesListBuilder readResourceFragmentsFrom(ResourceVersioning apiVersions, + public static KubernetesListBuilder readResourceFragmentsFrom(PlatformMode platformMode, ResourceVersioning apiVersions, String defaultName, File[] resourceFiles) throws IOException { KubernetesListBuilder builder = new KubernetesListBuilder(); if (resourceFiles != null) { for (File file : resourceFiles) { - HasMetadata resource = getResource(apiVersions, file, defaultName); + HasMetadata resource = getResource(platformMode, apiVersions, file, defaultName); builder.addToItems(resource); } } @@ -157,9 +160,9 @@ public static KubernetesListBuilder readResourceFragmentsFrom(ResourceVersioning * @param file file to read, whose name must match {@link #FILENAME_PATTERN}. @return map holding the fragment * @param appName resource name specifying resources belonging to this application */ - public static HasMetadata getResource(ResourceVersioning apiVersions, + public static HasMetadata getResource(PlatformMode platformMode, ResourceVersioning apiVersions, File file, String appName) throws IOException { - Map fragment = readAndEnrichFragment(apiVersions, file, appName); + Map fragment = readAndEnrichFragment(platformMode, apiVersions, file, appName); ObjectMapper mapper = new ObjectMapper(); try { return mapper.convertValue(fragment, HasMetadata.class); @@ -171,12 +174,7 @@ public static HasMetadata getResource(ResourceVersioning apiVersions, public static File[] listResourceFragments(File resourceDir) { final Pattern filenamePattern = Pattern.compile(FILENAME_PATTERN); final Pattern exludePattern = Pattern.compile(PROFILES_PATTERN); - return resourceDir.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - return filenamePattern.matcher(name).matches() && !exludePattern.matcher(name).matches(); - } - }); + return resourceDir.listFiles((File dir, String name) -> filenamePattern.matcher(name).matches() && !exludePattern.matcher(name).matches()); } @@ -222,7 +220,7 @@ public final static void updateKindFilenameMapper(final Map private static final String PROFILES_PATTERN = "^profiles?\\.ya?ml$"; // Read fragment and add default values - private static Map readAndEnrichFragment(ResourceVersioning apiVersions, + private static Map readAndEnrichFragment(PlatformMode platformMode, ResourceVersioning apiVersions, File file, String appName) throws IOException { Pattern pattern = Pattern.compile(FILENAME_PATTERN, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(file.getName()); @@ -239,6 +237,7 @@ private static Map readAndEnrichFragment(ResourceVersioning apiV if (type != null) { kind = getAndValidateKindFromType(file, type); + } else { // Try name as type kind = FILENAME_TO_KIND_MAPPER.get(name.toLowerCase()); @@ -248,6 +247,9 @@ private static Map readAndEnrichFragment(ResourceVersioning apiV } } + if(kind != null && kind.equals("Deployment") && platformMode.equals(PlatformMode.openshift)) { + kind = "DeploymentConfig"; + } addKind(fragment, kind, file.getName()); String apiVersion = apiVersions.getCoreVersion(); @@ -257,6 +259,8 @@ private static Map readAndEnrichFragment(ResourceVersioning apiV apiVersion = apiVersions.getAppsVersion(); } else if (Objects.equals(kind, "Job")) { apiVersion = apiVersions.getJobVersion(); + } else if(Objects.equals(kind, "DeploymentConfig") && platformMode == PlatformMode.openshift) { + apiVersion = apiVersions.getOpenshiftV1version(); } addIfNotExistent(fragment, "apiVersion", apiVersion); diff --git a/core/src/test/java/io/fabric8/maven/core/access/ClusterAccessTest.java b/core/src/test/java/io/fabric8/maven/core/access/ClusterAccessTest.java index a386702068..c607115bea 100644 --- a/core/src/test/java/io/fabric8/maven/core/access/ClusterAccessTest.java +++ b/core/src/test/java/io/fabric8/maven/core/access/ClusterAccessTest.java @@ -21,7 +21,7 @@ import io.fabric8.kubernetes.api.model.RootPaths; import io.fabric8.kubernetes.client.Client; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.docker.util.Logger; import io.fabric8.openshift.client.OpenShiftClient; import io.fabric8.openshift.client.server.mock.OpenShiftMockServer; @@ -38,7 +38,7 @@ public class ClusterAccessTest { @Mocked private Logger logger; - private PlatformMode mode; + private RuntimeMode mode; private List paths = new ArrayList() ; @@ -46,7 +46,7 @@ public class ClusterAccessTest { OpenShiftClient client = mockServer.createOpenShiftClient(); @Test - public void openshiftPlatformModeTest() throws Exception { + public void openshiftRuntimeModeTest() throws Exception { paths.add("/oapi"); paths.add("/oapi/v1"); @@ -59,18 +59,18 @@ public void openshiftPlatformModeTest() throws Exception { ClusterAccess clusterAccess = new ClusterAccess(null, client); - mode = clusterAccess.resolvePlatformMode(PlatformMode.openshift, logger); - assertEquals(PlatformMode.openshift, mode); + mode = clusterAccess.resolveRuntimeMode(RuntimeMode.openshift, logger); + assertEquals(RuntimeMode.openshift, mode); - mode = clusterAccess.resolvePlatformMode(PlatformMode.DEFAULT, logger); - assertEquals(PlatformMode.openshift, mode); + mode = clusterAccess.resolveRuntimeMode(RuntimeMode.DEFAULT, logger); + assertEquals(RuntimeMode.openshift, mode); - mode = clusterAccess.resolvePlatformMode(null, logger); - assertEquals(PlatformMode.openshift, mode); + mode = clusterAccess.resolveRuntimeMode(null, logger); + assertEquals(RuntimeMode.openshift, mode); } @Test - public void kubernetesPlatformModeTest() throws Exception { + public void kubernetesRuntimeModeTest() throws Exception { RootPaths rootpaths = new RootPaths(); @@ -80,14 +80,14 @@ public void kubernetesPlatformModeTest() throws Exception { ClusterAccess clusterAccess = new ClusterAccess(null, client); - mode = clusterAccess.resolvePlatformMode(PlatformMode.kubernetes, logger); - assertEquals(PlatformMode.kubernetes, mode); + mode = clusterAccess.resolveRuntimeMode(RuntimeMode.kubernetes, logger); + assertEquals(RuntimeMode.kubernetes, mode); - mode = clusterAccess.resolvePlatformMode(PlatformMode.DEFAULT, logger); - assertEquals(PlatformMode.kubernetes, mode); + mode = clusterAccess.resolveRuntimeMode(RuntimeMode.DEFAULT, logger); + assertEquals(RuntimeMode.kubernetes, mode); - mode = clusterAccess.resolvePlatformMode(null, logger); - assertEquals(PlatformMode.kubernetes, mode); + mode = clusterAccess.resolveRuntimeMode(null, logger); + assertEquals(RuntimeMode.kubernetes, mode); } @Test diff --git a/core/src/test/java/io/fabric8/maven/core/service/Fabric8ServiceHubTest.java b/core/src/test/java/io/fabric8/maven/core/service/Fabric8ServiceHubTest.java index 642b2df877..9e5d1bd217 100644 --- a/core/src/test/java/io/fabric8/maven/core/service/Fabric8ServiceHubTest.java +++ b/core/src/test/java/io/fabric8/maven/core/service/Fabric8ServiceHubTest.java @@ -16,7 +16,7 @@ package io.fabric8.maven.core.service; import io.fabric8.maven.core.access.ClusterAccess; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.service.kubernetes.DockerBuildService; import io.fabric8.maven.core.service.openshift.OpenshiftBuildService; import io.fabric8.maven.docker.service.ServiceHub; @@ -58,16 +58,16 @@ public class Fabric8ServiceHubTest { @Before public void init() throws Exception { new Expectations() {{ - clusterAccess.resolvePlatformMode(PlatformMode.kubernetes, withInstanceOf(Logger.class)); - result = PlatformMode.kubernetes; + clusterAccess.resolveRuntimeMode(RuntimeMode.kubernetes, withInstanceOf(Logger.class)); + result = RuntimeMode.kubernetes; minTimes = 0; - clusterAccess.resolvePlatformMode(PlatformMode.openshift, withInstanceOf(Logger.class)); - result = PlatformMode.openshift; + clusterAccess.resolveRuntimeMode(RuntimeMode.openshift, withInstanceOf(Logger.class)); + result = RuntimeMode.openshift; minTimes = 0; - clusterAccess.resolvePlatformMode(PlatformMode.auto, withInstanceOf(Logger.class)); - result = PlatformMode.kubernetes; + clusterAccess.resolveRuntimeMode(RuntimeMode.auto, withInstanceOf(Logger.class)); + result = RuntimeMode.kubernetes; minTimes = 0; clusterAccess.createKubernetesClient(); @@ -95,7 +95,7 @@ public void testBasicInit() { new Fabric8ServiceHub.Builder() .clusterAccess(clusterAccess) .log(logger) - .platformMode(PlatformMode.auto) + .platformMode(RuntimeMode.auto) .build(); } @@ -104,7 +104,7 @@ public void testObtainBuildService() { Fabric8ServiceHub hub = new Fabric8ServiceHub.Builder() .clusterAccess(clusterAccess) .log(logger) - .platformMode(PlatformMode.kubernetes) + .platformMode(RuntimeMode.kubernetes) .dockerServiceHub(dockerServiceHub) .buildServiceConfig(buildServiceConfig) .build(); @@ -120,7 +120,7 @@ public void testObtainOpenshiftBuildService() { Fabric8ServiceHub hub = new Fabric8ServiceHub.Builder() .clusterAccess(clusterAccess) .log(logger) - .platformMode(PlatformMode.openshift) + .platformMode(RuntimeMode.openshift) .dockerServiceHub(dockerServiceHub) .buildServiceConfig(buildServiceConfig) .build(); @@ -136,7 +136,7 @@ public void testObtainArtifactResolverService() { Fabric8ServiceHub hub = new Fabric8ServiceHub.Builder() .clusterAccess(clusterAccess) .log(logger) - .platformMode(PlatformMode.kubernetes) + .platformMode(RuntimeMode.kubernetes) .mavenProject(mavenProject) .repositorySystem(repositorySystem) .build(); diff --git a/core/src/test/java/io/fabric8/maven/core/util/KubernetesResourceUtilTest.java b/core/src/test/java/io/fabric8/maven/core/util/KubernetesResourceUtilTest.java index b20ab93ab3..edf313f6bf 100644 --- a/core/src/test/java/io/fabric8/maven/core/util/KubernetesResourceUtilTest.java +++ b/core/src/test/java/io/fabric8/maven/core/util/KubernetesResourceUtilTest.java @@ -15,6 +15,7 @@ */ package io.fabric8.maven.core.util; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.GroupArtifactVersion; import java.io.File; import java.io.FileNotFoundException; @@ -61,7 +62,7 @@ public static void initPath() throws UnsupportedEncodingException { @Test public void simple() throws IOException { for (String ext : new String[] { "yaml", "json" }) { - HasMetadata ret = getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "simple-rc." + ext), "app"); + HasMetadata ret = getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "simple-rc." + ext), "app"); assertEquals(API_VERSION, ret.getApiVersion()); assertEquals("ReplicationController", ret.getKind()); assertEquals("simple", ret.getMetadata().getName()); @@ -70,7 +71,7 @@ public void simple() throws IOException { @Test public void withValue() throws IOException { - HasMetadata ret = getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "named-svc.yaml"), "app"); + HasMetadata ret = getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "named-svc.yaml"), "app"); assertEquals(API_VERSION, ret.getApiVersion()); assertEquals("Service", ret.getKind()); assertEquals("pong", ret.getMetadata().getName()); @@ -79,7 +80,7 @@ public void withValue() throws IOException { @Test public void invalidType() throws IOException { try { - getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "simple-bla.yaml"), "app"); + getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "simple-bla.yaml"), "app"); fail(); } catch (IllegalArgumentException exp) { assertTrue(exp.getMessage().contains("bla")); @@ -89,14 +90,14 @@ public void invalidType() throws IOException { @Test public void containsKind() throws Exception { - HasMetadata ret = getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "contains_kind.yml"), "app"); + HasMetadata ret = getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "contains_kind.yml"), "app"); assertEquals("ReplicationController", ret.getKind()); } @Test public void job() throws Exception { - HasMetadata ret = getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "job.yml"), "app"); + HasMetadata ret = getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "job.yml"), "app"); assertEquals("Job", ret.getKind()); assertEquals(KubernetesResourceUtil.JOB_VERSION, ret.getApiVersion()); } @@ -104,7 +105,7 @@ public void job() throws Exception { @Test public void containsNoKindAndNoTypeInFilename() throws Exception { try { - getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "contains_no_kind.yml"), "app"); + getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "contains_no_kind.yml"), "app"); fail(); } catch (IllegalArgumentException exp) { assertTrue(exp.getMessage().contains("type")); @@ -117,7 +118,7 @@ public void containsNoKindAndNoTypeInFilename() throws Exception { @Test public void invalidPattern() throws IOException { try { - getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "blubber.yaml"), "app"); + getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "blubber.yaml"), "app"); fail(); } catch (FileNotFoundException exp) { assertTrue(exp.getMessage().contains("blubber")); @@ -126,13 +127,13 @@ public void invalidPattern() throws IOException { @Test public void noNameInFile() throws IOException { - HasMetadata ret = getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "rc.yml"), "app"); + HasMetadata ret = getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "rc.yml"), "app"); assertEquals("flipper",ret.getMetadata().getName()); } @Test public void noNameInFileAndNotInMetadata() throws IOException { - HasMetadata ret = getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "svc.yml"), "app"); + HasMetadata ret = getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "svc.yml"), "app"); assertEquals("Service",ret.getKind()); assertEquals("app", ret.getMetadata().getName()); } @@ -140,7 +141,7 @@ public void noNameInFileAndNotInMetadata() throws IOException { @Test public void invalidExtension() throws IOException { try { - getResource(DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "simple-rc.txt"), "app"); + getResource(PlatformMode.kubernetes, DEFAULT_RESOURCE_VERSIONING, new File(fabric8Dir, "simple-rc.txt"), "app"); fail(); } catch (IllegalArgumentException exp) { assertTrue(exp.getMessage().contains("txt")); @@ -168,7 +169,7 @@ public void readWholeDir() throws IOException { .withExtensionsVersion("extensions/v2"); KubernetesListBuilder builder = - KubernetesResourceUtil.readResourceFragmentsFrom(v, "pong", new File(fabric8Dir, "read-dir").listFiles()); + KubernetesResourceUtil.readResourceFragmentsFrom(PlatformMode.kubernetes, v, "pong", new File(fabric8Dir, "read-dir").listFiles()); KubernetesList list = builder.build(); assertEquals(2,list.getItems().size()); for (HasMetadata item : list.getItems() ) { diff --git a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/BaseEnricher.java b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/BaseEnricher.java index c2110652ee..0373f72422 100644 --- a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/BaseEnricher.java +++ b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/BaseEnricher.java @@ -61,13 +61,13 @@ public String getName() { public Map getAnnotations(Kind kind) { return null; } @Override - public void adapt(KubernetesListBuilder builder) { } + public void adapt(PlatformMode platformMode, KubernetesListBuilder builder) { } @Override - public void addMetadata(KubernetesListBuilder builder, List enrichers) { } + public void addMetadata(PlatformMode platformMode, KubernetesListBuilder builder, List enrichers) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { } + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { } @Override public Map getSelector(Kind kind) { return null; } diff --git a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/Enricher.java b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/Enricher.java index 4a4334075f..9cb5c4e6e2 100644 --- a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/Enricher.java +++ b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/Enricher.java @@ -17,6 +17,7 @@ import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.maven.core.config.Named; +import io.fabric8.maven.core.config.PlatformMode; import java.util.List; import java.util.Map; @@ -63,14 +64,14 @@ public interface Enricher extends Named { * * @param builder the build to examine and add to */ - void addMissingResources(KubernetesListBuilder builder); + void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder); /** * Final customization of the overall resource descriptor. Fine tuning happens here. * * @param builder list to customer used to customize */ - void adapt(KubernetesListBuilder builder); + void adapt(PlatformMode platformMode, KubernetesListBuilder builder); - void addMetadata(KubernetesListBuilder builder, List enrichers); + void addMetadata(PlatformMode platformMode, KubernetesListBuilder builder, List enrichers); } diff --git a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/MavenEnricherContext.java b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/MavenEnricherContext.java index 8c7f47ef74..000e264e9c 100644 --- a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/MavenEnricherContext.java +++ b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/MavenEnricherContext.java @@ -20,12 +20,14 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Properties; import java.util.Set; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.config.ResourceConfig; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.model.Dependency; import io.fabric8.maven.core.model.GroupArtifactVersion; @@ -63,6 +65,10 @@ public class MavenEnricherContext implements EnricherContext { private OpenShiftDependencyResources openshiftDependencyResources; private MavenSession session; + private RuntimeMode runtimeMode; + + private Properties properties; + private MavenEnricherContext() {} @Override @@ -135,6 +141,13 @@ public ProjectClassLoaders getProjectClassLoaders() { } + public RuntimeMode getRuntimeMode() { return runtimeMode; } + + public Object getProperty(String key) { + return properties.getProperty(key); + } + + public Properties getProperties() { return properties; } // ======================================================================== // Maven specific methods, only available after casting public MavenProject getProject() { @@ -232,6 +245,16 @@ public Builder settings(Settings settings) { return this; } + public Builder runtimeMode(RuntimeMode mode) { + ctx.runtimeMode = mode; + return this; + } + + public Builder properties(Properties properties) { + ctx.properties = properties; + return this; + } + public MavenEnricherContext build() { ctx.configuration = new Configuration.Builder() diff --git a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/visitor/MetadataVisitor.java b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/visitor/MetadataVisitor.java index 42fde04d8c..dcdcf53423 100644 --- a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/visitor/MetadataVisitor.java +++ b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/visitor/MetadataVisitor.java @@ -34,6 +34,7 @@ import io.fabric8.maven.enricher.api.Kind; import io.fabric8.openshift.api.model.BuildBuilder; import io.fabric8.openshift.api.model.BuildConfigBuilder; +import io.fabric8.openshift.api.model.DeploymentConfigBuilder; import io.fabric8.openshift.api.model.ImageStreamBuilder; import static io.fabric8.maven.enricher.api.util.ExtractorUtil.extractAnnotations; @@ -233,6 +234,22 @@ protected ObjectMeta getOrCreateMetadata(DeploymentBuilder item) { } } + public static class DeploymentConfigBuilderVisitor extends MetadataVisitor { + public DeploymentConfigBuilderVisitor(ResourceConfig resourceConfig, List enrichers) { + super(resourceConfig, enrichers); + } + + @Override + protected Kind getKind() { + return Kind.DEPLOYMENT; + } + + @Override + protected ObjectMeta getOrCreateMetadata(DeploymentConfigBuilder item) { + return item.hasMetadata() ? item.buildMetadata() : item.withNewMetadata().endMetadata().buildMetadata(); + } + } + public static class DaemonSetBuilderVisitor extends MetadataVisitor { public DaemonSetBuilderVisitor(ResourceConfig resourceConfig, List enrichers) { super(resourceConfig, enrichers); diff --git a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/visitor/SelectorVisitor.java b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/visitor/SelectorVisitor.java index e318180d83..10ec8db559 100644 --- a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/visitor/SelectorVisitor.java +++ b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/visitor/SelectorVisitor.java @@ -29,6 +29,7 @@ import io.fabric8.maven.core.util.MapUtil; import io.fabric8.maven.enricher.api.Enricher; import io.fabric8.maven.enricher.api.Kind; +import io.fabric8.openshift.api.model.DeploymentConfigSpecBuilder; import static io.fabric8.maven.enricher.api.util.ExtractorUtil.extractSelector; @@ -105,6 +106,26 @@ public void visit(DeploymentSpecBuilder item) { } } + public static class DeploymentConfigSpecBuilderVisitor extends SelectorVisitor { + + public DeploymentConfigSpecBuilderVisitor(List enrichers) { + super(enrichers); + } + + @Override + public void visit(DeploymentConfigSpecBuilder item) { + Map selectorMatchLabels = extractSelector(getConfig(), Kind.DEPLOYMENT, enrichers); + if(!selectorMatchLabels.isEmpty()) { + Map selector = item.getSelector(); + if (selector == null) { + item.withSelector(selectorMatchLabels); + } else { + MapUtil.mergeIfAbsent(selector, selectorMatchLabels); + } + } + } + } + public static class StatefulSetSpecBuilderVisitor extends SelectorVisitor { public StatefulSetSpecBuilderVisitor(List enrichers) { diff --git a/enricher/fabric8/src/main/java/io/fabric8/maven/enricher/fabric8/AbstractHealthCheckEnricher.java b/enricher/fabric8/src/main/java/io/fabric8/maven/enricher/fabric8/AbstractHealthCheckEnricher.java index 291f6aab37..80bba29251 100644 --- a/enricher/fabric8/src/main/java/io/fabric8/maven/enricher/fabric8/AbstractHealthCheckEnricher.java +++ b/enricher/fabric8/src/main/java/io/fabric8/maven/enricher/fabric8/AbstractHealthCheckEnricher.java @@ -20,6 +20,7 @@ import io.fabric8.kubernetes.api.model.ContainerBuilder; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.Probe; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -33,7 +34,7 @@ public AbstractHealthCheckEnricher(MavenEnricherContext buildContext, String nam } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { builder.accept(new TypedVisitor() { @Override diff --git a/enricher/fabric8/src/test/java/io/fabric8/maven/enricher/fabric8/DockerHealthCheckEnricherTest.java b/enricher/fabric8/src/test/java/io/fabric8/maven/enricher/fabric8/DockerHealthCheckEnricherTest.java index 937a36e216..ae4b72ba11 100644 --- a/enricher/fabric8/src/test/java/io/fabric8/maven/enricher/fabric8/DockerHealthCheckEnricherTest.java +++ b/enricher/fabric8/src/test/java/io/fabric8/maven/enricher/fabric8/DockerHealthCheckEnricherTest.java @@ -23,6 +23,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.util.ResourceUtil; import io.fabric8.maven.docker.config.Arguments; @@ -83,7 +84,7 @@ public void testEnrichFromSingleImage() throws Exception { KubernetesListBuilder builder = createDeployment("myImage"); DockerHealthCheckEnricher enricher = new DockerHealthCheckEnricher(context); - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); KubernetesList list = builder.build(); assertEquals(1, list.getItems().size()); @@ -126,7 +127,7 @@ public void testEnrichFromDoubleImage() throws Exception { KubernetesListBuilder builder = addDeployment(createDeployment("myImage"), "myImage2"); DockerHealthCheckEnricher enricher = new DockerHealthCheckEnricher(context); - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); KubernetesList list = builder.build(); assertEquals(2, list.getItems().size()); @@ -155,7 +156,7 @@ public void testInvalidHealthCheck() throws Exception { KubernetesListBuilder builder = createDeployment("myImage"); DockerHealthCheckEnricher enricher = new DockerHealthCheckEnricher(context); - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); KubernetesList list = builder.build(); assertEquals(1, list.getItems().size()); @@ -185,7 +186,7 @@ public void testUnmatchingHealthCheck() throws Exception { KubernetesListBuilder builder = createDeployment("myUnmatchingImage"); DockerHealthCheckEnricher enricher = new DockerHealthCheckEnricher(context); - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); KubernetesList list = builder.build(); assertEquals(1, list.getItems().size()); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ConfigMapEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ConfigMapEnricher.java index 5671583eb9..df55b0803e 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ConfigMapEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ConfigMapEnricher.java @@ -20,6 +20,7 @@ import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.maven.core.config.ConfigMapEntry; import io.fabric8.maven.core.config.ResourceConfig; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; import java.io.IOException; @@ -39,7 +40,7 @@ public ConfigMapEnricher(MavenEnricherContext enricherContext) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { addAnnotations(builder); addConfigMapFromXmlConfigurations(builder); } diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ControllerViaPluginConfigurationEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ControllerViaPluginConfigurationEnricher.java index d4b7fc86e4..3ac90ef687 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ControllerViaPluginConfigurationEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ControllerViaPluginConfigurationEnricher.java @@ -25,6 +25,7 @@ import io.fabric8.kubernetes.api.model.apps.StatefulSetBuilder; import io.fabric8.kubernetes.api.model.apps.StatefulSetFluent; import io.fabric8.kubernetes.api.model.apps.StatefulSetSpec; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.handler.DeploymentHandler; import io.fabric8.maven.core.handler.HandlerHub; @@ -65,7 +66,7 @@ public ControllerViaPluginConfigurationEnricher(MavenEnricherContext context) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { final String name = getConfig(Config.name, MavenUtil.createDefaultResourceName(getContext().getGav().getSanitizedArtifactId())); final ResourceConfig config = new ResourceConfig.Builder() .controllerName(name) diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DebugEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DebugEnricher.java index 70d77a528d..71ab2cd822 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DebugEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DebugEnricher.java @@ -28,6 +28,7 @@ import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; import io.fabric8.kubernetes.api.model.apps.ReplicaSet; import io.fabric8.kubernetes.api.model.apps.ReplicaSetSpec; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.kubernetes.KubernetesHelper; import io.fabric8.maven.core.util.kubernetes.KubernetesResourceUtil; import io.fabric8.maven.enricher.api.BaseEnricher; @@ -54,7 +55,7 @@ public DebugEnricher(MavenEnricherContext buildContext) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { if (debugEnabled()) { int count = 0; List items = builder.getItems(); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java index c00eaa16ff..35943b5e41 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java @@ -17,15 +17,10 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; -import io.fabric8.kubernetes.api.model.PodSpec; -import io.fabric8.kubernetes.api.model.PodSpecBuilder; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; -import io.fabric8.kubernetes.api.model.apps.DeploymentFluent; -import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; -import io.fabric8.kubernetes.api.model.apps.StatefulSetBuilder; -import io.fabric8.kubernetes.api.model.apps.StatefulSetFluent; -import io.fabric8.kubernetes.api.model.apps.StatefulSetSpec; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ResourceConfig; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.handler.DaemonSetHandler; import io.fabric8.maven.core.handler.DeploymentHandler; import io.fabric8.maven.core.handler.HandlerHub; @@ -39,6 +34,7 @@ import io.fabric8.maven.docker.config.ImageConfiguration; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; +import io.fabric8.openshift.api.model.DeploymentConfigBuilder; import java.util.Collections; import java.util.List; @@ -64,6 +60,8 @@ public class DefaultControllerEnricher extends BaseEnricher { protected static final String[] POD_CONTROLLER_KINDS = { "ReplicationController", "ReplicaSet", "Deployment", "DeploymentConfig", "StatefulSet", "DaemonSet", "Job" }; + private final RuntimeMode runtimeMode; + private final DeploymentHandler deployHandler; private final ReplicationControllerHandler rcHandler; private final ReplicaSetHandler rsHandler; @@ -74,9 +72,9 @@ public class DefaultControllerEnricher extends BaseEnricher { // Available configuration keys private enum Config implements Configs.Key { name, - pullPolicy {{ d = "IfNotPresent"; }}, - type {{ d = "deployment"; }}, - replicaCount {{ d = "1"; }}; + pullPolicy {{ d = "IfNotPresent"; }}, + type {{ d = "deployment"; }}, + replicaCount {{ d = "1"; }}; public String def() { return d; } protected String d; } @@ -86,6 +84,7 @@ public DefaultControllerEnricher(MavenEnricherContext buildContext) { HandlerHub handlers = new HandlerHub( getContext().getGav(), getContext().getConfiguration().getProperties()); + runtimeMode = buildContext.getRuntimeMode(); rcHandler = handlers.getReplicationControllerHandler(); rsHandler = handlers.getReplicaSetHandler(); deployHandler = handlers.getDeploymentHandler(); @@ -95,7 +94,7 @@ public DefaultControllerEnricher(MavenEnricherContext buildContext) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { final String name = getConfig(Config.name, MavenUtil.createDefaultResourceName(getContext().getGav().getSanitizedArtifactId())); ResourceConfig xmlResourceConfig = getConfiguration().getResource().orElse(null); ResourceConfig config = new ResourceConfig.Builder(xmlResourceConfig) @@ -134,6 +133,29 @@ public void addMissingResources(KubernetesListBuilder builder) { } } + @Override + public void adapt(PlatformMode platformMode, KubernetesListBuilder builder) { + if(platformMode == PlatformMode.kubernetes) { + builder.accept(new TypedVisitor() { + @Override + public void visit(DeploymentBuilder deploymentBuilder) { + deploymentBuilder.editSpec().withReplicas(Integer.parseInt(getConfig(Config.replicaCount))).endSpec(); + } + }); + } else { + builder.accept(new TypedVisitor() { + @Override + public void visit(DeploymentConfigBuilder deploymentConfigBuilder) { + deploymentConfigBuilder.editSpec().withReplicas(Integer.parseInt(getConfig(Config.replicaCount))).endSpec(); + + if(isAutomaticTriggerEnabled(true)) { + deploymentConfigBuilder.editSpec().addNewTrigger().withType("ConfigChange").endTrigger().endSpec(); + } + } + }); + } + } + static { KubernetesResourceUtil.SIMPLE_FIELD_TYPES.add(String.class); KubernetesResourceUtil.SIMPLE_FIELD_TYPES.add(Double.class); @@ -181,4 +203,12 @@ private String getImagePullPolicy(ResourceConfig xmlResourceConfig, String defau } return defaultValue; } + + private Boolean isAutomaticTriggerEnabled(Boolean defaultValue) { + if(((MavenEnricherContext)getContext()).getProperty("fabric8.openshift.enableAutomaticTrigger") != null) { + return Boolean.parseBoolean(((MavenEnricherContext) getContext()).getProperty("fabric8.openshift.enableAutomaticTrigger").toString()); + } else { + return defaultValue; + } + } } diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultMetadataEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultMetadataEnricher.java index cdb5305312..7946bf56fc 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultMetadataEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultMetadataEnricher.java @@ -16,10 +16,13 @@ package io.fabric8.maven.enricher.standard; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.kubernetes.api.model.ObjectMeta; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.Enricher; +import io.fabric8.maven.enricher.api.Kind; import io.fabric8.maven.enricher.api.MavenEnricherContext; import java.util.List; import io.fabric8.maven.enricher.api.visitor.SelectorVisitor; @@ -50,6 +53,7 @@ private void init() { this.metaDataVisitors = new MetadataVisitor[] { new MetadataVisitor.DeploymentBuilderVisitor(resourceConfig, enrichers), + new MetadataVisitor.DeploymentConfigBuilderVisitor(resourceConfig, enrichers), new MetadataVisitor.ReplicaSet(resourceConfig, enrichers), new MetadataVisitor.ReplicationControllerBuilderVisitor(resourceConfig, enrichers), new MetadataVisitor.ServiceBuilderVisitor(resourceConfig, enrichers), @@ -65,6 +69,7 @@ private void init() { this.selectorVisitorCreators = new SelectorVisitor[] { new SelectorVisitor.DeploymentSpecBuilderVisitor(enrichers), + new SelectorVisitor.DeploymentConfigSpecBuilderVisitor(enrichers), new SelectorVisitor.ReplicaSetSpecBuilderVisitor(enrichers), new SelectorVisitor.ReplicationControllerSpecBuilderVisitor(enrichers), new SelectorVisitor.ServiceSpecBuilderVisitor(enrichers), @@ -75,7 +80,7 @@ private void init() { } @Override - public void addMetadata(KubernetesListBuilder builder, List enrichers) { + public void addMetadata(PlatformMode platformMode, KubernetesListBuilder builder, List enrichers) { this.enrichers = enrichers; init(); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricher.java index e03ce41e2d..6eefc92c26 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricher.java @@ -29,6 +29,7 @@ import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.config.ServiceConfig; import io.fabric8.maven.core.handler.ServiceHandler; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.MavenUtil; import io.fabric8.maven.core.util.kubernetes.KubernetesHelper; @@ -99,7 +100,7 @@ public DefaultServiceEnricher(MavenEnricherContext buildContext) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { final Service defaultService = getDefaultService(); if (hasServices(builder)) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DependencyEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DependencyEnricher.java index ca1a6eedf9..546987be23 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DependencyEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DependencyEnricher.java @@ -36,6 +36,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.Dependency; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.KindAndName; @@ -118,7 +119,7 @@ private void addArtifactsWithYaml(Set artifactSet, String dependencyYaml) { } @Override - public void adapt(final KubernetesListBuilder builder) { + public void adapt(PlatformMode platformMode, final KubernetesListBuilder builder) { final List kubernetesItems = new ArrayList<>(); processArtifactSetResources(this.kubernetesDependencyArtifacts, items -> { kubernetesItems.addAll(Arrays.asList(items.toArray(new HasMetadata[items.size()]))); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/FileDataSecretEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/FileDataSecretEnricher.java index d594b64979..2f9b099657 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/FileDataSecretEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/FileDataSecretEnricher.java @@ -18,6 +18,7 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.SecretBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Base64Util; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -39,7 +40,7 @@ public FileDataSecretEnricher(MavenEnricherContext buildContext) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { addAnnotations(builder); } diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ImageEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ImageEnricher.java index fbf45c4092..82c2b4ede8 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ImageEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ImageEnricher.java @@ -42,6 +42,7 @@ import io.fabric8.kubernetes.api.model.apps.StatefulSetBuilder; import io.fabric8.kubernetes.api.model.apps.StatefulSetFluent; import io.fabric8.kubernetes.api.model.apps.StatefulSetSpecFluent; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.docker.config.ImageConfiguration; @@ -85,7 +86,7 @@ private enum Config implements Configs.Key { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { if (!hasImageConfiguration()) { log.verbose("No images resolved. Skipping ..."); return; diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/NameEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/NameEnricher.java index 68f39dfdbe..a3d275b788 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/NameEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/NameEnricher.java @@ -25,6 +25,7 @@ import io.fabric8.kubernetes.api.model.apps.DeploymentFluent; import io.fabric8.kubernetes.api.model.apps.ReplicaSetBuilder; import io.fabric8.kubernetes.api.model.apps.ReplicaSetFluent; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.MavenUtil; import io.fabric8.maven.enricher.api.BaseEnricher; @@ -52,7 +53,7 @@ private enum Config implements Configs.Key { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { final String defaultName = getConfig(Config.name, MavenUtil.createDefaultResourceName(getContext().getGav().getSanitizedArtifactId())); builder.accept(new TypedVisitor() { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PodAnnotationEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PodAnnotationEnricher.java index 76f35e9f63..18e951b22c 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PodAnnotationEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PodAnnotationEnricher.java @@ -23,9 +23,12 @@ import io.fabric8.kubernetes.api.model.PodTemplateSpec; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.MapUtil; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; +import io.fabric8.openshift.api.model.DeploymentConfig; +import io.fabric8.openshift.api.model.DeploymentConfigSpec; /** * Enricher which copies the annotation from a Deployment to the annotations of @@ -37,12 +40,12 @@ public PodAnnotationEnricher(MavenEnricherContext buildContext) { } @Override - public void adapt(KubernetesListBuilder builder) { - super.adapt(builder); + public void adapt(PlatformMode platformMode, KubernetesListBuilder builder) { + super.adapt(platformMode, builder); List items = builder.getItems(); for (HasMetadata item : items) { - if (item instanceof Deployment) { + if (platformMode == PlatformMode.kubernetes && item instanceof Deployment) { Deployment deployment = (Deployment) item; ObjectMeta metadata = deployment.getMetadata(); DeploymentSpec spec = deployment.getSpec(); @@ -57,6 +60,21 @@ public void adapt(KubernetesListBuilder builder) { templateMetadata.setAnnotations(MapUtil.mergeMaps(templateMetadata.getAnnotations(), metadata.getAnnotations())); } } + } else if(platformMode == PlatformMode.openshift && item instanceof DeploymentConfig) { + DeploymentConfig deploymentConfig = (DeploymentConfig)item; + ObjectMeta metadata = deploymentConfig.getMetadata(); + DeploymentConfigSpec spec = deploymentConfig.getSpec(); + if(metadata != null && spec != null) { + PodTemplateSpec templateSpec = spec.getTemplate(); + if(templateSpec != null) { + ObjectMeta templateMetadata = templateSpec.getMetadata(); + if(templateMetadata == null) { + templateMetadata = new ObjectMeta(); + templateSpec.setMetadata(templateMetadata); + } + templateMetadata.setAnnotations(MapUtil.mergeMaps(templateMetadata.getAnnotations(), metadata.getAnnotations())); + } + } } } builder.withItems(items); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PortNameEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PortNameEnricher.java index 11f4ebf48e..721d3c62d5 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PortNameEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PortNameEnricher.java @@ -25,6 +25,7 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.ContainerPortBuilder; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; import org.apache.commons.lang3.StringUtils; @@ -51,7 +52,7 @@ public PortNameEnricher(MavenEnricherContext buildContext) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { builder.accept(new TypedVisitor() { @Override public void visit(ContainerPortBuilder portBuilder) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ProjectEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ProjectEnricher.java index 3fde628959..9202503bd0 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ProjectEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ProjectEnricher.java @@ -18,6 +18,7 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.MapUtil; import io.fabric8.maven.core.model.GroupArtifactVersion; @@ -68,7 +69,7 @@ public Map getSelector(Kind kind) { } @Override - public void adapt(KubernetesListBuilder builder) { + public void adapt(PlatformMode platformMode, KubernetesListBuilder builder) { // Add to all objects in the builder builder.accept(new TypedVisitor() { @Override diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RemoveBuildAnnotationsEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RemoveBuildAnnotationsEnricher.java index 612be3cb29..e4fa2c5825 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RemoveBuildAnnotationsEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RemoveBuildAnnotationsEnricher.java @@ -21,6 +21,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.ObjectMeta; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -36,7 +37,7 @@ public RemoveBuildAnnotationsEnricher(MavenEnricherContext buildContext) { } @Override - public void adapt(KubernetesListBuilder builder) { + public void adapt(PlatformMode platformMode, KubernetesListBuilder builder) { List items = builder.buildItems(); for (HasMetadata item : items) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricher.java index 17e92460d2..16ecdfec53 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricher.java @@ -18,9 +18,11 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; +import io.fabric8.openshift.api.model.DeploymentConfigBuilder; /** * This enricher adds the 'revisionHistoryLimit' property to deployment spec of RCs / RSs for KuberNetes/OpenShift resource descriptors. @@ -45,18 +47,29 @@ public RevisionHistoryEnricher(MavenEnricherContext buildContext) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { final Integer maxRevisionHistories = Configs.asInt(getConfig(Config.limit)); log.info("Adding revision history limit to %s", maxRevisionHistories); - builder.accept(new TypedVisitor() { - @Override - public void visit(DeploymentBuilder item) { - item.editOrNewSpec() - .withRevisionHistoryLimit(maxRevisionHistories) - .endSpec(); - } - }); + if(platformMode == PlatformMode.kubernetes) { + builder.accept(new TypedVisitor() { + @Override + public void visit(DeploymentBuilder item) { + item.editOrNewSpec() + .withRevisionHistoryLimit(maxRevisionHistories) + .endSpec(); + } + }); + } else { + builder.accept(new TypedVisitor() { + @Override + public void visit(DeploymentConfigBuilder item) { + item.editOrNewSpec() + .withRevisionHistoryLimit(maxRevisionHistories) + .endSpec(); + } + }); + } } } \ No newline at end of file diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/SecretEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/SecretEnricher.java index ebfd5c43a9..56a767f949 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/SecretEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/SecretEnricher.java @@ -27,6 +27,7 @@ import io.fabric8.kubernetes.api.model.SecretBuilder; import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.config.SecretConfig; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Base64Util; import io.fabric8.maven.core.util.SecretConstants; import io.fabric8.maven.enricher.api.BaseEnricher; @@ -44,7 +45,7 @@ protected String encode(String raw) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { // update builder // use a selector to choose all secret builder in kubernetes list builders. // try to find the target annotations diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricher.java index b176bbd80c..89d010e0a6 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricher.java @@ -31,6 +31,7 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.api.model.apps.*; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.ResourceUtil; import io.fabric8.maven.docker.util.ImageName; @@ -68,7 +69,7 @@ public TriggersAnnotationEnricher(MavenEnricherContext buildContext) { } @Override - public void adapt(KubernetesListBuilder builder) { + public void adapt(PlatformMode platformMode, KubernetesListBuilder builder) { builder.accept(new TypedVisitor() { @Override diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricher.java index 2000189ea3..25ca7d51c5 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricher.java @@ -25,6 +25,7 @@ import com.google.gson.JsonPrimitive; import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.*; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -57,7 +58,7 @@ public VolumePermissionEnricher(MavenEnricherContext buildContext) { } @Override - public void adapt(KubernetesListBuilder builder) { + public void adapt(PlatformMode platformMode, KubernetesListBuilder builder) { builder.accept(new TypedVisitor() { @Override diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricher.java index 77a1d833c9..963053a94c 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricher.java @@ -21,6 +21,7 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.*; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -84,7 +85,7 @@ public Map getAnnotations(Kind kind) { } @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { if (!isOpenShiftMode()) { return; } @@ -142,7 +143,7 @@ private boolean isVolumeMountAlreadyExists(List volumes, String vol } @Override - public void adapt(KubernetesListBuilder builder) { + public void adapt(PlatformMode platformMode, KubernetesListBuilder builder) { if (!isOpenShiftMode()) { return; } diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/DeploymentConfigEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/DeploymentConfigEnricher.java new file mode 100644 index 0000000000..891b71d82f --- /dev/null +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/DeploymentConfigEnricher.java @@ -0,0 +1,191 @@ +/** + * Copyright 2016 Red Hat, Inc. + * + * Red Hat licenses this file to you under the Apache License, version + * 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package io.fabric8.maven.enricher.standard.openshift; + +import io.fabric8.kubernetes.api.model.Container; +import io.fabric8.kubernetes.api.model.HasMetadata; +import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.kubernetes.api.model.LabelSelector; +import io.fabric8.kubernetes.api.model.PodSpec; +import io.fabric8.kubernetes.api.model.PodTemplateSpec; +import io.fabric8.kubernetes.api.model.apps.Deployment; +import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; +import io.fabric8.kubernetes.api.model.apps.DeploymentStrategy; +import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; +import io.fabric8.maven.docker.util.ImageName; +import io.fabric8.maven.enricher.api.BaseEnricher; +import io.fabric8.maven.enricher.api.MavenEnricherContext; +import io.fabric8.openshift.api.model.DeploymentConfig; +import io.fabric8.openshift.api.model.DeploymentConfigBuilder; +import io.fabric8.openshift.api.model.DeploymentConfigFluent; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +public class DeploymentConfigEnricher extends BaseEnricher { + static final String ENRICHER_NAME = "fmp-openshift-deploymentconfig"; + private RuntimeMode runtimeMode; + private Boolean enableAutomaticTrigger; + private Long openshiftDeployTimeoutSeconds; + + public DeploymentConfigEnricher(MavenEnricherContext context) { + super(context, ENRICHER_NAME); + this.runtimeMode = context.getRuntimeMode(); + this.enableAutomaticTrigger = isAutomaticTriggerEnabled(context, true); + this.openshiftDeployTimeoutSeconds = getOpenshiftDeployTimeoutInSeconds(context, 3600L); + } + + @Override + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { + if(platformMode == PlatformMode.openshift) { + for(HasMetadata item : builder.buildItems()) { + if(item instanceof Deployment) { + DeploymentConfig deploymentConfig = convert(item); + removeItemFromBuilder(builder, item); + builder.addToDeploymentConfigItems(deploymentConfig); + } + } + } + } + + private void removeItemFromBuilder(KubernetesListBuilder builder, HasMetadata item) { + List items = builder.buildItems(); + List newListItems = new ArrayList<>(); + for(HasMetadata listItem : items) { + if(!listItem.equals(item)) { + newListItems.add(listItem); + } + } + builder.withItems(newListItems); + } + + private DeploymentConfig convert(HasMetadata item) { + Deployment resource = (Deployment) item; + DeploymentConfigBuilder builder = new DeploymentConfigBuilder(); + builder.withMetadata(resource.getMetadata()); + DeploymentSpec spec = resource.getSpec(); + if (spec != null) { + DeploymentConfigFluent.SpecNested specBuilder = builder.withNewSpec(); + Integer replicas = spec.getReplicas(); + if (replicas != null) { + specBuilder.withReplicas(replicas); + } + Integer revisionHistoryLimit = spec.getRevisionHistoryLimit(); + if (revisionHistoryLimit != null) { + specBuilder.withRevisionHistoryLimit(revisionHistoryLimit); + } + + LabelSelector selector = spec.getSelector(); + if (selector != null) { + Map matchLabels = selector.getMatchLabels(); + if (matchLabels != null && !matchLabels.isEmpty()) { + specBuilder.withSelector(matchLabels); + } + } + Map containerToImageMap = new HashMap<>(); + PodTemplateSpec template = spec.getTemplate(); + if (template != null) { + specBuilder.withTemplate(template); + PodSpec podSpec = template.getSpec(); + Objects.requireNonNull(podSpec, "No PodSpec for PodTemplate:" + template); + List containers = podSpec.getContainers(); + Objects.requireNonNull(podSpec, "No containers for PodTemplate.spec: " + template); + for (Container container : containers) { + validateContainer(container); + containerToImageMap.put(container.getName(), container.getImage()); + } + } + DeploymentStrategy strategy = spec.getStrategy(); + String strategyType = null; + if (strategy != null) { + strategyType = strategy.getType(); + } + if (openshiftDeployTimeoutSeconds != null && openshiftDeployTimeoutSeconds > 0) { + if (StringUtils.isBlank(strategyType) || "Rolling".equals(strategyType)) { + specBuilder.withNewStrategy().withType("Rolling"). + withNewRollingParams().withTimeoutSeconds(openshiftDeployTimeoutSeconds).endRollingParams().endStrategy(); + } else if ("Recreate".equals(strategyType)) { + specBuilder.withNewStrategy().withType("Recreate"). + withNewRecreateParams().withTimeoutSeconds(openshiftDeployTimeoutSeconds).endRecreateParams().endStrategy(); + } else { + specBuilder.withNewStrategy().withType(strategyType).endStrategy(); + } + } else if (StringUtils.isNotBlank(strategyType)) { + // TODO is there any values we can copy across? + specBuilder.withNewStrategy().withType(strategyType).endStrategy(); + } + + if(enableAutomaticTrigger) { + specBuilder.addNewTrigger().withType("ConfigChange").endTrigger(); + } + + // add a new image change trigger for the build stream + if (containerToImageMap.size() != 0) { + if(runtimeMode.equals(RuntimeMode.openshift)) { + for (Map.Entry entry : containerToImageMap.entrySet()) { + String containerName = entry.getKey(); + ImageName image = new ImageName(entry.getValue()); + String tag = image.getTag() != null ? image.getTag() : "latest"; + specBuilder.addNewTrigger() + .withType("ImageChange") + .withNewImageChangeParams() + .withAutomatic(true) + .withNewFrom() + .withKind("ImageStreamTag") + .withName(image.getSimpleName() + ":" + tag) + .withNamespace(image.getUser()) + .endFrom() + .withContainerNames(containerName) + .endImageChangeParams() + .endTrigger(); + } + } + } + + specBuilder.endSpec(); + } + return builder.build(); + } + + private Boolean isAutomaticTriggerEnabled(MavenEnricherContext enricherContext, Boolean defaultValue) { + if(enricherContext.getProperty("fabric8.openshift.enableAutomaticTrigger") != null) { + return Boolean.parseBoolean(enricherContext.getProperty("fabric8.openshift.enableAutomaticTrigger").toString()); + } else { + return defaultValue; + } + } + + private Long getOpenshiftDeployTimeoutInSeconds(MavenEnricherContext enricherContext, Long defaultValue) { + if (enricherContext.getProperty("fabric8.openshift.deployTimeoutSeconds") != null) { + return Long.parseLong(enricherContext.getProperty("fabric8.openshift.deployTimeoutSeconds").toString()); + } else { + return defaultValue; + } + } + + private void validateContainer(Container container) { + if (container.getImage() == null) { + throw new IllegalArgumentException("Container " + container.getName() + " has no Docker image configured. " + + "Please check your Docker image configuration (including the generators which are supposed to run)"); + } + } +} diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/ExposeEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/ExposeEnricher.java index bd25c95702..1fd7115aa0 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/ExposeEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/ExposeEnricher.java @@ -28,6 +28,7 @@ import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServiceSpec; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.kubernetes.KubernetesHelper; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -46,7 +47,7 @@ public ExposeEnricher(MavenEnricherContext buildContext) { public static final String EXPOSE_LABEL = "expose"; @Override - public void addMissingResources(KubernetesListBuilder builder) { + public void addMissingResources(PlatformMode platformMode, KubernetesListBuilder builder) { List items = builder.getItems(); if (items != null) { for (HasMetadata item : items) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/RouteEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/RouteEnricher.java index 6f3aa14918..7b065159a8 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/RouteEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/RouteEnricher.java @@ -29,6 +29,7 @@ import io.fabric8.kubernetes.api.model.ServiceBuilder; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServiceSpec; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.util.kubernetes.Fabric8Annotations; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -46,20 +47,22 @@ public RouteEnricher(MavenEnricherContext buildContext) { } @Override - public void addMissingResources(final KubernetesListBuilder listBuilder) { - final List routes = new ArrayList<>(); - listBuilder.accept(new TypedVisitor() { + public void addMissingResources(PlatformMode platformMode, final KubernetesListBuilder listBuilder) { + if(platformMode == PlatformMode.openshift) { + final List routes = new ArrayList<>(); + listBuilder.accept(new TypedVisitor() { - @Override - public void visit(ServiceBuilder serviceBuilder) { - addRoute(listBuilder, serviceBuilder, routes); - } - }); + @Override + public void visit(ServiceBuilder serviceBuilder) { + addRoute(listBuilder, serviceBuilder, routes); + } + }); - if (!routes.isEmpty()) { - Route[] routeArray = new Route[routes.size()]; - routes.toArray(routeArray); - listBuilder.addToRouteItems(routeArray); + if (!routes.isEmpty()) { + Route[] routeArray = new Route[routes.size()]; + routes.toArray(routeArray); + listBuilder.addToRouteItems(routeArray); + } } } diff --git a/enricher/standard/src/main/resources/META-INF/fabric8/enricher-default b/enricher/standard/src/main/resources/META-INF/fabric8/enricher-default index 1c909b43e0..c33e626c07 100644 --- a/enricher/standard/src/main/resources/META-INF/fabric8/enricher-default +++ b/enricher/standard/src/main/resources/META-INF/fabric8/enricher-default @@ -74,6 +74,9 @@ io.fabric8.maven.enricher.standard.openshift.AutoTLSEnricher # Add a route on demand when on OpenShift io.fabric8.maven.enricher.standard.openshift.RouteEnricher +# Add a deploymentconfig from deployment when on OpenShift +io.fabric8.maven.enricher.standard.openshift.DeploymentConfigEnricher + # Add an "expose" label to every service (TODO: Combine this with a Route/Ingress enricher) io.fabric8.maven.enricher.standard.openshift.ExposeEnricher diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/ConfigMapEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/ConfigMapEnricherTest.java index 9e3c3660ac..7ee927d275 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/ConfigMapEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/ConfigMapEnricherTest.java @@ -19,6 +19,7 @@ import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -56,7 +57,7 @@ public void should_materialize_file_content_from_annotation() { builder.addToConfigMapItems(createBaseConfigMap()); // When - configMapEnricher.addMissingResources(builder); + configMapEnricher.addMissingResources(PlatformMode.kubernetes, builder); // Then final ConfigMap configMap = (ConfigMap) builder.buildFirstItem(); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricherTest.java index 973764d556..29ffa2541f 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricherTest.java @@ -15,10 +15,10 @@ */ package io.fabric8.maven.enricher.standard; -import com.google.common.io.Files; import com.jayway.jsonpath.matchers.JsonPathMatchers; import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.model.GroupArtifactVersion; @@ -26,8 +26,6 @@ import io.fabric8.maven.docker.config.BuildImageConfiguration; import io.fabric8.maven.docker.config.ImageConfiguration; import io.fabric8.maven.enricher.api.MavenEnricherContext; -import io.fabric8.maven.enricher.api.util.ProjectClassLoaders; -import java.net.URLClassLoader; import java.util.Arrays; import java.util.Collections; import java.util.TreeMap; @@ -79,7 +77,7 @@ protected void enrichAndAssert(int sizeOfObjects, int replicaCount) throws com.f // Enrich DefaultControllerEnricher controllerEnricher = new DefaultControllerEnricher(context); KubernetesListBuilder builder = new KubernetesListBuilder(); - controllerEnricher.addMissingResources(builder); + controllerEnricher.addMissingResources(PlatformMode.kubernetes, builder); // Validate that the generated resource contains KubernetesList list = builder.build(); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricherTest.java index cf128d21a3..af0eef35a5 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricherTest.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.model.GroupArtifactVersion; @@ -155,7 +156,7 @@ public void headlessServiceNegative() throws Exception { setupExpectations(false, "headless", "false"); DefaultServiceEnricher serviceEnricher = new DefaultServiceEnricher(context); KubernetesListBuilder builder = new KubernetesListBuilder(); - serviceEnricher.addMissingResources(builder); + serviceEnricher.addMissingResources(PlatformMode.kubernetes, builder); // Validate that the generated resource contains KubernetesList list = builder.build(); @@ -211,7 +212,7 @@ private String enrich() throws com.fasterxml.jackson.core.JsonProcessingExceptio // Enrich DefaultServiceEnricher serviceEnricher = new DefaultServiceEnricher(context); KubernetesListBuilder builder = new KubernetesListBuilder(); - serviceEnricher.addMissingResources(builder); + serviceEnricher.addMissingResources(PlatformMode.kubernetes, builder); // Validate that the generated resource contains KubernetesList list = builder.build(); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DependencyEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DependencyEnricherTest.java index 5699e33716..1defcbd1fa 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DependencyEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DependencyEnricherTest.java @@ -23,6 +23,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.GroupArtifactVersion; import io.fabric8.maven.core.util.KindAndName; import io.fabric8.maven.core.util.kubernetes.KubernetesResourceUtil; @@ -73,8 +74,8 @@ public void checkDuplicatesInResource() throws Exception { private KubernetesList enrichResources(KubernetesListBuilder aBuilder) { DependencyEnricher enricher = new DependencyEnricher(context); - enricher.addMissingResources(aBuilder); - enricher.adapt(aBuilder); + enricher.addMissingResources(PlatformMode.kubernetes, aBuilder); + enricher.adapt(PlatformMode.kubernetes, aBuilder); return aBuilder.build(); } @@ -91,6 +92,7 @@ private KubernetesListBuilder createResourcesForTest() throws IOException, URISy * loading Kubernetes resources. */ KubernetesListBuilder builder = KubernetesResourceUtil.readResourceFragmentsFrom( + PlatformMode.kubernetes, KubernetesResourceUtil.DEFAULT_RESOURCE_VERSIONING, project.getName(), resourceList.toArray(new File[resourceList.size()])); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DockerRegistrySecretEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DockerRegistrySecretEnricherTest.java index c40933f4fa..4da0d7ba89 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DockerRegistrySecretEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DockerRegistrySecretEnricherTest.java @@ -17,6 +17,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.Configuration; import java.util.HashMap; @@ -74,7 +75,7 @@ public void testDockerRegistry() { KubernetesListBuilder builder = new KubernetesListBuilder(); Secret secretEnriched = createBaseSecret(true); builder.addToSecretItems(secretEnriched); - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); secretEnriched = (Secret) builder.buildItem(0); Map enrichedData = secretEnriched.getData(); @@ -100,7 +101,7 @@ public void testDockerRegistryWithBadKind() { builder.addToSecretItems(createBaseSecret(true)); KubernetesList expected = builder.build(); - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); assertEquals(expected, builder.build()); } @@ -115,7 +116,7 @@ public void testDockerRegistryWithBadAnnotation() { KubernetesList expected = builder.build(); - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); assertEquals(expected, builder.build()); } diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/FileDataSecretEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/FileDataSecretEnricherTest.java index 99d3c8031c..bbc014f29c 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/FileDataSecretEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/FileDataSecretEnricherTest.java @@ -19,6 +19,7 @@ import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.SecretBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.util.Base64Util; @@ -63,7 +64,7 @@ public void shouldMaterializeFileContentFromAnnotation() throws IOException { builder.addToSecretItems(createBaseSecret()); // When - fileDataSecretEnricher.addMissingResources(builder); + fileDataSecretEnricher.addMissingResources(PlatformMode.kubernetes,builder); // Then final Secret secret = (Secret) builder.buildFirstItem(); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/ImageEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/ImageEnricherTest.java index 4a4a804ea1..f5cdc9481e 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/ImageEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/ImageEnricherTest.java @@ -22,6 +22,7 @@ import com.jayway.jsonpath.matchers.JsonPathMatchers; import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.util.ResourceUtil; @@ -76,7 +77,7 @@ public void checkEnrichDeployment() throws Exception { .addNewDeploymentItem() .endDeploymentItem(); - imageEnricher.addMissingResources(builder); + imageEnricher.addMissingResources(PlatformMode.kubernetes, builder); assertCorrectlyGeneratedResources(builder.build(), "Deployment"); } @@ -86,7 +87,7 @@ public void checkEnrichReplicaSet() throws Exception { .addNewReplicaSetItem() .endReplicaSetItem(); - imageEnricher.addMissingResources(builder); + imageEnricher.addMissingResources(PlatformMode.kubernetes, builder); assertCorrectlyGeneratedResources(builder.build(), "ReplicaSet"); } @@ -96,7 +97,7 @@ public void checkEnrichReplicationController() throws Exception { .addNewReplicationControllerItem() .endReplicationControllerItem(); - imageEnricher.addMissingResources(builder); + imageEnricher.addMissingResources(PlatformMode.kubernetes, builder); assertCorrectlyGeneratedResources(builder.build(), "ReplicationController"); } @@ -106,7 +107,7 @@ public void checkEnrichDaemonSet() throws Exception { .addNewDaemonSetItem() .endDaemonSetItem(); - imageEnricher.addMissingResources(builder); + imageEnricher.addMissingResources(PlatformMode.kubernetes, builder); assertCorrectlyGeneratedResources(builder.build(), "DaemonSet"); } @@ -116,7 +117,7 @@ public void checkEnrichStatefulSet() throws Exception { .addNewStatefulSetItem() .endStatefulSetItem(); - imageEnricher.addMissingResources(builder); + imageEnricher.addMissingResources(PlatformMode.kubernetes, builder); assertCorrectlyGeneratedResources(builder.build(), "StatefulSet"); } @@ -126,7 +127,7 @@ public void checkEnrichDeploymentConfig() throws Exception { .addNewDeploymentConfigItem() .endDeploymentConfigItem(); - imageEnricher.addMissingResources(builder); + imageEnricher.addMissingResources(PlatformMode.kubernetes, builder); assertCorrectlyGeneratedResources(builder.build(), "DeploymentConfig"); } diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/MavenProjectEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/MavenProjectEnricherTest.java index b2d42e0c14..17da433d90 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/MavenProjectEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/MavenProjectEnricherTest.java @@ -15,6 +15,7 @@ */ package io.fabric8.maven.enricher.standard; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.model.GroupArtifactVersion; import java.util.Map; @@ -60,7 +61,7 @@ public void testGeneratedResources() { ProjectEnricher projectEnricher = new ProjectEnricher(context); KubernetesListBuilder builder = createListWithDeploymentConfig(); - projectEnricher.adapt(builder); + projectEnricher.adapt(PlatformMode.kubernetes, builder); KubernetesList list = builder.build(); Map labels = list.getItems().get(0).getMetadata().getLabels(); @@ -91,7 +92,7 @@ public void testOldStyleGeneratedResources() { ProjectEnricher projectEnricher = new ProjectEnricher(context); KubernetesListBuilder builder = createListWithDeploymentConfig(); - projectEnricher.adapt(builder); + projectEnricher.adapt(PlatformMode.kubernetes, builder); KubernetesList list = builder.build(); Map labels = list.getItems().get(0).getMetadata().getLabels(); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/PortNameEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/PortNameEnricherTest.java index de6dceeb69..ad9948d207 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/PortNameEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/PortNameEnricherTest.java @@ -21,6 +21,7 @@ import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.PodTemplateBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.util.ResourceUtil; @@ -70,7 +71,7 @@ private KubernetesList enrich() throws com.fasterxml.jackson.core.JsonProcessing // Enrich PortNameEnricher portNameEnricher = new PortNameEnricher(context); KubernetesListBuilder builder = getPodTemplateList(); - portNameEnricher.addMissingResources(builder); + portNameEnricher.addMissingResources(PlatformMode.kubernetes,builder); // Validate that the generated resource contains KubernetesList list = builder.build(); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricherTest.java index 192570436b..fc9154dd29 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricherTest.java @@ -22,6 +22,7 @@ import com.jayway.jsonpath.matchers.JsonPathMatchers; import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.core.util.Configs; @@ -50,7 +51,7 @@ public void testDefaultRevisionHistoryLimit() throws JsonProcessingException { RevisionHistoryEnricher enricher = new RevisionHistoryEnricher(context); // When - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); // Then assertRevisionHistory(builder.build(), Configs.asInt(RevisionHistoryEnricher.Config.limit.def())); @@ -74,7 +75,7 @@ public void testCustomRevisionHistoryLimit() throws JsonProcessingException { RevisionHistoryEnricher enricher = new RevisionHistoryEnricher(context); // When - enricher.addMissingResources(builder); + enricher.addMissingResources(PlatformMode.kubernetes, builder); // Then assertRevisionHistory(builder.build(), Integer.parseInt(revisionNumber)); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricherTest.java index 01a28a615d..2b59c5333d 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricherTest.java @@ -23,6 +23,7 @@ import io.fabric8.kubernetes.api.model.apps.ReplicaSet; import io.fabric8.kubernetes.api.model.apps.StatefulSet; import io.fabric8.kubernetes.api.model.batch.Job; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.enricher.api.MavenEnricherContext; import io.fabric8.openshift.api.model.ImageChangeTrigger; @@ -65,7 +66,7 @@ public void testStatefulSetEnrichment() throws IOException { TriggersAnnotationEnricher enricher = new TriggersAnnotationEnricher(context); - enricher.adapt(builder); + enricher.adapt(PlatformMode.kubernetes, builder); StatefulSet res = (StatefulSet) builder.build().getItems().get(0); @@ -101,7 +102,7 @@ public void testReplicaSetEnrichment() throws IOException { TriggersAnnotationEnricher enricher = new TriggersAnnotationEnricher(context); - enricher.adapt(builder); + enricher.adapt(PlatformMode.kubernetes, builder); ReplicaSet res = (ReplicaSet) builder.build().getItems().get(0); @@ -139,7 +140,7 @@ public void testDaemonSetEnrichment() throws IOException { TriggersAnnotationEnricher enricher = new TriggersAnnotationEnricher(context); - enricher.adapt(builder); + enricher.adapt(PlatformMode.kubernetes, builder); DaemonSet res = (DaemonSet) builder.build().getItems().get(0); @@ -183,7 +184,7 @@ public void testConditionalStatefulSetEnrichment() throws IOException { TriggersAnnotationEnricher enricher = new TriggersAnnotationEnricher(context); - enricher.adapt(builder); + enricher.adapt(PlatformMode.kubernetes, builder); StatefulSet res = (StatefulSet) builder.build().getItems().get(0); @@ -226,7 +227,7 @@ public void testNoEnrichment() { TriggersAnnotationEnricher enricher = new TriggersAnnotationEnricher(context); - enricher.adapt(builder); + enricher.adapt(PlatformMode.kubernetes, builder); Job res = (Job) builder.build().getItems().get(0); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricherTest.java index 20deb3c2cc..42eb9037f9 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricherTest.java @@ -31,6 +31,7 @@ import io.fabric8.kubernetes.api.model.PodTemplate; import io.fabric8.kubernetes.api.model.PodTemplateBuilder; import io.fabric8.kubernetes.api.model.VolumeMountBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.enricher.api.MavenEnricherContext; @@ -80,7 +81,7 @@ public void alreadyExistingInitContainer(@Mocked final ProcessorConfig config) t KubernetesListBuilder klb = new KubernetesListBuilder().addToPodTemplateItems(ptb.build()); VolumePermissionEnricher enricher = new VolumePermissionEnricher(context); - enricher.adapt(klb); + enricher.adapt(PlatformMode.kubernetes,klb); List initS = ((PodTemplate) klb.build().getItems().get(0)).getTemplate().getSpec().getInitContainers(); assertNotNull(initS); @@ -117,7 +118,7 @@ public void testAdapt() throws Exception { KubernetesListBuilder klb = new KubernetesListBuilder().addToPodTemplateItems(ptb.build()); - enricher.adapt(klb); + enricher.adapt(PlatformMode.kubernetes,klb); PodTemplate pt = (PodTemplate) klb.buildItem(0); diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricherTest.java index 51e8e1d742..215ff69243 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricherTest.java @@ -187,7 +187,7 @@ public void testAdapt() throws Exception { AutoTLSEnricher enricher = new AutoTLSEnricher(context); KubernetesListBuilder klb = new KubernetesListBuilder().addNewPodTemplateItem().withNewMetadata().and() .withNewTemplate().withNewMetadata().and().withNewSpec().and().and().and(); - enricher.adapt(klb); + enricher.adapt(PlatformMode.kubernetes, klb); PodTemplate pt = (PodTemplate) klb.getItems().get(0); List initContainers = pt.getTemplate().getSpec().getInitContainers(); diff --git a/generator/api/src/main/java/io/fabric8/maven/generator/api/FromSelector.java b/generator/api/src/main/java/io/fabric8/maven/generator/api/FromSelector.java index 7bd99ee593..e056a08ad5 100644 --- a/generator/api/src/main/java/io/fabric8/maven/generator/api/FromSelector.java +++ b/generator/api/src/main/java/io/fabric8/maven/generator/api/FromSelector.java @@ -20,7 +20,7 @@ import java.util.regex.Pattern; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import org.apache.maven.model.Plugin; import org.apache.maven.project.MavenProject; @@ -45,9 +45,9 @@ public FromSelector(GeneratorContext context) { } public String getFrom() { - PlatformMode mode = context.getPlatformMode(); + RuntimeMode mode = context.getPlatformMode(); OpenShiftBuildStrategy strategy = context.getStrategy(); - if (mode == PlatformMode.openshift && strategy == OpenShiftBuildStrategy.s2i) { + if (mode == RuntimeMode.openshift && strategy == OpenShiftBuildStrategy.s2i) { return getS2iBuildFrom(); } else { return getDockerBuildFrom(); diff --git a/generator/api/src/main/java/io/fabric8/maven/generator/api/GeneratorContext.java b/generator/api/src/main/java/io/fabric8/maven/generator/api/GeneratorContext.java index c6d23def80..e4bf6165c9 100644 --- a/generator/api/src/main/java/io/fabric8/maven/generator/api/GeneratorContext.java +++ b/generator/api/src/main/java/io/fabric8/maven/generator/api/GeneratorContext.java @@ -18,6 +18,7 @@ import io.fabric8.maven.core.config.OpenShiftBuildStrategy; import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.service.ArtifactResolverService; import io.fabric8.maven.docker.util.Logger; import org.apache.maven.project.MavenProject; @@ -30,7 +31,7 @@ public class GeneratorContext { private MavenProject project; private ProcessorConfig config; private Logger logger; - private PlatformMode platformMode; + private RuntimeMode platformMode; private OpenShiftBuildStrategy strategy; private boolean useProjectClasspath; @@ -54,7 +55,7 @@ public Logger getLogger() { return logger; } - public PlatformMode getPlatformMode() { + public RuntimeMode getPlatformMode() { return platformMode; } @@ -105,7 +106,7 @@ public Builder logger(Logger logger) { return this; } - public Builder platformMode(PlatformMode mode) { + public Builder platformMode(RuntimeMode mode) { ctx.platformMode = mode; return this; } diff --git a/generator/api/src/main/java/io/fabric8/maven/generator/api/support/BaseGenerator.java b/generator/api/src/main/java/io/fabric8/maven/generator/api/support/BaseGenerator.java index 729a6c801f..9c683556bb 100644 --- a/generator/api/src/main/java/io/fabric8/maven/generator/api/support/BaseGenerator.java +++ b/generator/api/src/main/java/io/fabric8/maven/generator/api/support/BaseGenerator.java @@ -21,7 +21,8 @@ import java.util.Map; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.PrefixedLogger; import io.fabric8.maven.docker.config.BuildImageConfiguration; @@ -154,8 +155,8 @@ protected void addFrom(BuildImageConfiguration.Builder builder) { } // Use "istag" as default for "redhat" versions of this plugin - private String getFromModeDefault(PlatformMode mode) { - if (mode == PlatformMode.openshift && fromSelector != null && fromSelector.isRedHat()) { + private String getFromModeDefault(RuntimeMode mode) { + if (mode == RuntimeMode.openshift && fromSelector != null && fromSelector.isRedHat()) { return "istag"; } else { return "docker"; @@ -168,7 +169,7 @@ private String getFromModeDefault(PlatformMode mode) { * @return Docker image name which is never null */ protected String getImageName() { - if (PlatformMode.isOpenShiftMode(getProject().getProperties())) { + if (RuntimeMode.isOpenShiftMode(getProject().getProperties())) { return getConfigWithSystemFallbackAndDefault(Config.name, "fabric8.generator.name", "%a:%l"); } else { return getConfigWithSystemFallbackAndDefault(Config.name, "fabric8.generator.name", "%g/%a:%l"); @@ -182,7 +183,7 @@ protected String getImageName() { * @return The docker registry if configured */ protected String getRegistry() { - if (!PlatformMode.isOpenShiftMode(getProject().getProperties())) { + if (!RuntimeMode.isOpenShiftMode(getProject().getProperties())) { return getConfigWithSystemFallbackAndDefault(Config.registry, "fabric8.generator.registry", null); } diff --git a/generator/api/src/test/java/io/fabric8/maven/generator/api/FromSelectorTest.java b/generator/api/src/test/java/io/fabric8/maven/generator/api/FromSelectorTest.java index d769f8d01a..5cd5d08e37 100644 --- a/generator/api/src/test/java/io/fabric8/maven/generator/api/FromSelectorTest.java +++ b/generator/api/src/test/java/io/fabric8/maven/generator/api/FromSelectorTest.java @@ -18,7 +18,7 @@ import java.util.Map; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.docker.util.Logger; import mockit.Expectations; @@ -30,7 +30,7 @@ import static io.fabric8.maven.core.config.OpenShiftBuildStrategy.SourceStrategy; import static io.fabric8.maven.core.config.OpenShiftBuildStrategy.docker; import static io.fabric8.maven.core.config.OpenShiftBuildStrategy.s2i; -import static io.fabric8.maven.core.config.PlatformMode.openshift; +import static io.fabric8.maven.core.config.RuntimeMode.openshift; import static org.junit.Assert.assertEquals; /** @@ -78,7 +78,7 @@ public void simple() { .project(project) .config(new ProcessorConfig()) .logger(logger) - .platformMode((PlatformMode) data[i]) + .platformMode((RuntimeMode) data[i]) .strategy((OpenShiftBuildStrategy) data[i + 1]) .build(); diff --git a/generator/api/src/test/java/io/fabric8/maven/generator/api/support/BaseGeneratorTest.java b/generator/api/src/test/java/io/fabric8/maven/generator/api/support/BaseGeneratorTest.java index 7178e69262..fb92f48fcf 100644 --- a/generator/api/src/test/java/io/fabric8/maven/generator/api/support/BaseGeneratorTest.java +++ b/generator/api/src/test/java/io/fabric8/maven/generator/api/support/BaseGeneratorTest.java @@ -22,7 +22,7 @@ import java.util.Properties; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.docker.config.BuildImageConfiguration; import io.fabric8.maven.docker.config.ImageConfiguration; @@ -261,7 +261,7 @@ public void getRegistry() { public void getRegistryInOpenshift() { Properties props = new Properties(); props.put("fabric8.generator.registry", "fabric8.io"); - props.put(PlatformMode.FABRIC8_EFFECTIVE_PLATFORM_MODE, "openshift"); + props.put(RuntimeMode.FABRIC8_EFFECTIVE_PLATFORM_MODE, "openshift"); setupContextOpenShift(props, null, null); BaseGenerator generator = createGenerator(null); @@ -296,10 +296,11 @@ public void setupContextKubernetes(final Properties projectProps, final String c ctx.getConfig(); result = config; config.getConfig("test-generator", "from"); result = configFrom; minTimes = 0; config.getConfig("test-generator", "fromMode"); result = configFromMode; minTimes = 0; - ctx.getPlatformMode();result = PlatformMode.kubernetes;minTimes = 0; + ctx.getPlatformMode();result = RuntimeMode.kubernetes;minTimes = 0; ctx.getStrategy(); result = null; minTimes = 0; }}; } + public void setupContextOpenShift(final Properties projectProps, final String configFrom, final String configFromMode) { new Expectations() {{ ctx.getProject(); result = project; @@ -307,7 +308,7 @@ public void setupContextOpenShift(final Properties projectProps, final String co ctx.getConfig(); result = config; config.getConfig("test-generator", "from"); result = configFrom; minTimes = 0; config.getConfig("test-generator", "fromMode"); result = configFromMode; minTimes = 0; - ctx.getPlatformMode();result = PlatformMode.openshift;minTimes = 0; + ctx.getPlatformMode();result = RuntimeMode.openshift;minTimes = 0; ctx.getStrategy(); result = OpenShiftBuildStrategy.s2i; minTimes = 0; }}; } diff --git a/generator/java-exec/src/test/java/io/fabric8/maven/generator/javaexec/JavaRunGeneratorTest.java b/generator/java-exec/src/test/java/io/fabric8/maven/generator/javaexec/JavaRunGeneratorTest.java index c7d3c4e4fe..128d63c9dd 100644 --- a/generator/java-exec/src/test/java/io/fabric8/maven/generator/javaexec/JavaRunGeneratorTest.java +++ b/generator/java-exec/src/test/java/io/fabric8/maven/generator/javaexec/JavaRunGeneratorTest.java @@ -21,7 +21,7 @@ import java.util.Properties; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.generator.api.FromSelector; import io.fabric8.maven.generator.api.GeneratorContext; import mockit.Expectations; @@ -50,18 +50,18 @@ public class JavaRunGeneratorTest { @Test public void fromSelector() throws IOException { Object[] data = { - "3.1.123", PlatformMode.kubernetes, null, "java.upstream.docker", - "3.1.redhat-101", PlatformMode.kubernetes, null, "java.redhat.docker", - "3.1.123", PlatformMode.openshift, OpenShiftBuildStrategy.docker, "java.upstream.docker", - "3.1.redhat-101", PlatformMode.openshift, OpenShiftBuildStrategy.docker, "java.redhat.docker", - "3.1.123", PlatformMode.openshift, OpenShiftBuildStrategy.s2i, "java.upstream.s2i", - "3.1.redhat-101", PlatformMode.openshift, OpenShiftBuildStrategy.s2i, "java.redhat.s2i", + "3.1.123", RuntimeMode.kubernetes, null, "java.upstream.docker", + "3.1.redhat-101", RuntimeMode.kubernetes, null, "java.redhat.docker", + "3.1.123", RuntimeMode.openshift, OpenShiftBuildStrategy.docker, "java.upstream.docker", + "3.1.redhat-101", RuntimeMode.openshift, OpenShiftBuildStrategy.docker, "java.redhat.docker", + "3.1.123", RuntimeMode.openshift, OpenShiftBuildStrategy.s2i, "java.upstream.s2i", + "3.1.redhat-101", RuntimeMode.openshift, OpenShiftBuildStrategy.s2i, "java.redhat.s2i", }; Properties imageProps = getDefaultImageProps(); for (int i = 0; i < data.length; i += 4) { - prepareExpectation((String) data[i], (PlatformMode) data[i+1], (OpenShiftBuildStrategy) data[i+2]); + prepareExpectation((String) data[i], (RuntimeMode) data[i+1], (OpenShiftBuildStrategy) data[i+2]); final GeneratorContext context = ctx; FromSelector selector = new FromSelector.Default(context, "java"); String from = selector.getFrom(); @@ -69,7 +69,7 @@ public void fromSelector() throws IOException { } } - private Expectations prepareExpectation(final String version, final PlatformMode mode, final OpenShiftBuildStrategy strategy) { + private Expectations prepareExpectation(final String version, final RuntimeMode mode, final OpenShiftBuildStrategy strategy) { return new Expectations() {{ ctx.getProject(); result = project; project.getPlugin("io.fabric8:fabric8-maven-plugin"); result = plugin; diff --git a/generator/webapp/src/main/java/io/fabric8/maven/generator/webapp/WebAppGenerator.java b/generator/webapp/src/main/java/io/fabric8/maven/generator/webapp/WebAppGenerator.java index 2b3e48af19..8e29d9c37a 100644 --- a/generator/webapp/src/main/java/io/fabric8/maven/generator/webapp/WebAppGenerator.java +++ b/generator/webapp/src/main/java/io/fabric8/maven/generator/webapp/WebAppGenerator.java @@ -21,7 +21,7 @@ import java.util.Map; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.MavenUtil; import io.fabric8.maven.docker.config.Arguments; @@ -75,7 +75,7 @@ public boolean isApplicable(List configs) { @Override public List customize(List configs, boolean prePackagePhase) { - if (getContext().getPlatformMode() == PlatformMode.openshift && + if (getContext().getPlatformMode() == RuntimeMode.openshift && getContext().getStrategy() == OpenShiftBuildStrategy.s2i && !prePackagePhase) { throw new IllegalArgumentException("S2I not yet supported for the webapp-generator. Use -Dfabric8.mode=kubernetes or " + diff --git a/it/src/it/secret-config/pom.xml b/it/src/it/secret-config/pom.xml index 0d7171cfc1..1809d01080 100644 --- a/it/src/it/secret-config/pom.xml +++ b/it/src/it/secret-config/pom.xml @@ -49,7 +49,7 @@ io.fabric8 fabric8-maven-plugin - @fmp.version@ + 4.0-SNAPSHOT diff --git a/it/src/it/simple-with-route-flag-false/expected/kubernetes.yml b/it/src/it/simple-with-route-flag-false/expected/kubernetes.yml index 1dac7dea55..9953e09296 100644 --- a/it/src/it/simple-with-route-flag-false/expected/kubernetes.yml +++ b/it/src/it/simple-with-route-flag-false/expected/kubernetes.yml @@ -86,7 +86,7 @@ items: valueFrom: fieldRef: fieldPath: metadata.namespace - image: fabric8-maven-sample-zero-config:latest + image: fabric8/fabric8-maven-sample-zero-config:latest imagePullPolicy: IfNotPresent name: spring-boot ports: diff --git a/it/src/it/simple-with-route-flag-false/expected/openshift.yml b/it/src/it/simple-with-route-flag-false/expected/openshift.yml index 1f4da0da35..4d19299f9e 100644 --- a/it/src/it/simple-with-route-flag-false/expected/openshift.yml +++ b/it/src/it/simple-with-route-flag-false/expected/openshift.yml @@ -89,7 +89,7 @@ items: valueFrom: fieldRef: fieldPath: metadata.namespace - image: fabric8-maven-sample-zero-config:latest + image: fabric8/fabric8-maven-sample-zero-config:latest imagePullPolicy: IfNotPresent name: spring-boot ports: @@ -113,4 +113,4 @@ items: from: kind: ImageStreamTag name: fabric8-maven-sample-zero-config:latest - type: ImageChange \ No newline at end of file + type: ImageChange diff --git a/it/src/it/simple-with-route-flag-true/expected/kubernetes.yml b/it/src/it/simple-with-route-flag-true/expected/kubernetes.yml index 1dac7dea55..9953e09296 100644 --- a/it/src/it/simple-with-route-flag-true/expected/kubernetes.yml +++ b/it/src/it/simple-with-route-flag-true/expected/kubernetes.yml @@ -86,7 +86,7 @@ items: valueFrom: fieldRef: fieldPath: metadata.namespace - image: fabric8-maven-sample-zero-config:latest + image: fabric8/fabric8-maven-sample-zero-config:latest imagePullPolicy: IfNotPresent name: spring-boot ports: diff --git a/it/src/it/simple-with-route-flag-true/expected/openshift.yml b/it/src/it/simple-with-route-flag-true/expected/openshift.yml index ee80feb1fe..248e1006ab 100644 --- a/it/src/it/simple-with-route-flag-true/expected/openshift.yml +++ b/it/src/it/simple-with-route-flag-true/expected/openshift.yml @@ -89,7 +89,7 @@ items: valueFrom: fieldRef: fieldPath: metadata.namespace - image: fabric8-maven-sample-zero-config:latest + image: fabric8/fabric8-maven-sample-zero-config:latest imagePullPolicy: IfNotPresent name: spring-boot ports: @@ -129,4 +129,4 @@ items: targetPort: 8080 to: kind: Service - name: fabric8-maven-sample-zero-config \ No newline at end of file + name: fabric8-maven-sample-zero-config 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 b81df4e5af..78c5000783 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 @@ -25,11 +25,10 @@ import io.fabric8.kubernetes.api.model.LabelSelector; import io.fabric8.kubernetes.api.model.PodSpec; import io.fabric8.kubernetes.api.model.PodTemplateSpec; -import io.fabric8.kubernetes.api.model.LabelSelector; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; import io.fabric8.kubernetes.api.model.apps.DeploymentStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.docker.util.ImageName; import io.fabric8.openshift.api.model.DeploymentConfigBuilder; import io.fabric8.openshift.api.model.DeploymentConfigFluent; @@ -42,10 +41,10 @@ * @since 01/08/16 */ public class DeploymentOpenShiftConverter implements KubernetesToOpenShiftConverter { - private final PlatformMode mode; + private final RuntimeMode mode; private final Long openshiftDeployTimeoutSeconds; - public DeploymentOpenShiftConverter(PlatformMode mode, Long openshiftDeployTimeoutSeconds) { + public DeploymentOpenShiftConverter(RuntimeMode mode, Long openshiftDeployTimeoutSeconds) { this.mode = mode; this.openshiftDeployTimeoutSeconds = openshiftDeployTimeoutSeconds; } @@ -114,7 +113,7 @@ public HasMetadata convert(HasMetadata item, boolean trimImageInContainerSpec, b // add a new image change trigger for the build stream if (containerToImageMap.size() != 0) { - if (mode.equals(PlatformMode.openshift)) { + if (mode.equals(RuntimeMode.openshift)) { for (Map.Entry entry : containerToImageMap.entrySet()) { String containerName = entry.getKey(); ImageName image = new ImageName(entry.getValue()); diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/enricher/EnricherManager.java b/plugin/src/main/java/io/fabric8/maven/plugin/enricher/EnricherManager.java index 301cb95ba5..ef9c56e650 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/enricher/EnricherManager.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/enricher/EnricherManager.java @@ -20,6 +20,7 @@ import com.google.common.base.Function; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.util.ClassUtil; @@ -62,28 +63,28 @@ public EnricherManager(ResourceConfig resourceConfig, EnricherContext enricherCo } - public void createDefaultResources(final KubernetesListBuilder builder) { - createDefaultResources(defaultEnricherConfig, builder); + public void createDefaultResources(PlatformMode platformMode, final KubernetesListBuilder builder) { + createDefaultResources(platformMode, defaultEnricherConfig, builder); } - public void createDefaultResources(ProcessorConfig enricherConfig, final KubernetesListBuilder builder) { + public void createDefaultResources(PlatformMode platformMode, ProcessorConfig enricherConfig, final KubernetesListBuilder builder) { // Add default resources loop(enricherConfig, enricher -> { - enricher.addMissingResources(builder); + enricher.addMissingResources(platformMode, builder); return null; }); } - public void enrich(KubernetesListBuilder builder) { - enrich(defaultEnricherConfig, builder); + public void enrich(PlatformMode platformMode, KubernetesListBuilder builder) { + enrich(platformMode, defaultEnricherConfig, builder); } - public void enrich(ProcessorConfig config, KubernetesListBuilder builder) { + public void enrich(PlatformMode platformMode, ProcessorConfig config, KubernetesListBuilder builder) { // Add Metadata labels ( - addMetadata(config, builder, enrichers); + addMetadata(platformMode, config, builder, enrichers); // Final customization step - adapt(config, builder); + adapt(platformMode, config, builder); } /** @@ -92,14 +93,11 @@ public void enrich(ProcessorConfig config, KubernetesListBuilder builder) { * @param builder builder to customize * @param enricherList list of enrichers */ - private void addMetadata(final ProcessorConfig enricherConfig, final KubernetesListBuilder builder, final List enricherList) { - loop(enricherConfig, new Function() { - @Override - public Void apply(Enricher enricher) { - enricher.addMetadata(builder, enricherList); + private void addMetadata(PlatformMode platformMode, final ProcessorConfig enricherConfig, final KubernetesListBuilder builder, final List enricherList) { + loop(enricherConfig, (Enricher enricher) -> { + enricher.addMetadata(PlatformMode.kubernetes, builder, enricherList); return null; - } - }); + }); } /** @@ -107,14 +105,11 @@ public Void apply(Enricher enricher) { * * @param builder builder to customize */ - private void adapt(final ProcessorConfig enricherConfig, final KubernetesListBuilder builder) { - loop(enricherConfig, new Function() { - @Override - public Void apply(Enricher enricher) { - enricher.adapt(builder); + private void adapt(PlatformMode platformMode, final ProcessorConfig enricherConfig, final KubernetesListBuilder builder) { + loop(enricherConfig, (Enricher enricher) -> { + enricher.adapt(platformMode, builder); return null; - } - }); + }); } private void logEnrichers(List enrichers) { diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/BuildMojo.java b/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/BuildMojo.java index 7b59507330..17b7c95df4 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/BuildMojo.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/BuildMojo.java @@ -16,6 +16,7 @@ package io.fabric8.maven.plugin.mojo.build; import io.fabric8.maven.core.access.ClusterConfiguration; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.util.MavenUtil; import io.fabric8.maven.enricher.api.EnricherContext; import io.fabric8.maven.plugin.mojo.ResourceDirCreator; @@ -115,7 +116,7 @@ public class BuildMojo extends io.fabric8.maven.docker.BuildMojo { * an OpenShift build (with a Docker build against the OpenShift API server. */ @Parameter(property = "fabric8.mode") - private PlatformMode mode = PlatformMode.DEFAULT; + private RuntimeMode mode = RuntimeMode.DEFAULT; /** * OpenShift build mode when an OpenShift build is performed. @@ -201,7 +202,7 @@ public class BuildMojo extends io.fabric8.maven.docker.BuildMojo { Fabric8ServiceHub fabric8ServiceHub; // Mode which is resolved, also when 'auto' is set - private PlatformMode platformMode; + private RuntimeMode platformMode; @Override @@ -223,7 +224,7 @@ protected ClusterConfiguration getClusterConfiguration() { @Override protected boolean isDockerAccessRequired() { - return platformMode == PlatformMode.kubernetes; + return platformMode == RuntimeMode.kubernetes; } @Override @@ -314,7 +315,7 @@ protected io.fabric8.maven.core.service.BuildService.BuildServiceConfig getBuild .enricherTask(builder -> new EnricherManager(resources, getEnricherContext(), MavenUtil.getCompileClasspathElementsIfRequested(project, useProjectClasspath)) - .enrich(builder)) + .enrich(PlatformMode.openshift, builder)) .build(); } @@ -327,8 +328,8 @@ protected io.fabric8.maven.core.service.BuildService.BuildServiceConfig getBuild */ @Override public List customizeConfig(List configs) { - platformMode = clusterAccess.resolvePlatformMode(mode, log); - if (platformMode == PlatformMode.openshift) { + platformMode = clusterAccess.resolveRuntimeMode(mode, log); + if (platformMode == RuntimeMode.openshift) { log.info("Using [[B]]OpenShift[[B]] build with strategy [[B]]%s[[B]]", buildStrategy.getLabel()); } else { log.info("Building Docker image in [[B]]Kubernetes[[B]] mode"); @@ -391,6 +392,7 @@ private ProcessorConfig extractGeneratorConfig() { public EnricherContext getEnricherContext() { return new MavenEnricherContext.Builder() .project(project) + .runtimeMode(mode) .session(session) .config(extractEnricherConfig()) .images(getResolvedImages()) diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/PushMojo.java b/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/PushMojo.java index c1b263b43d..14c552f5e0 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/PushMojo.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/mojo/build/PushMojo.java @@ -21,7 +21,7 @@ import java.util.List; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.util.ProfileUtil; import io.fabric8.maven.docker.config.ImageConfiguration; @@ -82,7 +82,7 @@ public class PushMojo extends io.fabric8.maven.docker.PushMojo { * an OpenShift build (with a Docker build against the OpenShift API server. */ @Parameter(property = "fabric8.mode") - private PlatformMode mode = PlatformMode.auto; + private RuntimeMode mode = RuntimeMode.auto; /** * OpenShift build mode when an OpenShift build is performed. 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 c9ca16323b..434ade710f 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 @@ -30,6 +30,7 @@ import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.config.Profile; import io.fabric8.maven.core.config.ResourceConfig; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.handler.HandlerHub; import io.fabric8.maven.core.model.GroupArtifactVersion; import io.fabric8.maven.core.util.FileUtil; @@ -69,7 +70,6 @@ import io.fabric8.openshift.api.model.DeploymentConfig; import io.fabric8.openshift.api.model.Template; import java.io.File; -import java.io.FileFilter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -181,7 +181,7 @@ public class ResourceMojo extends AbstractFabric8Mojo { * an OpenShift build (with a Docker build against the OpenShift API server. */ @Parameter(property = "fabric8.mode") - private PlatformMode mode = PlatformMode.DEFAULT; + private RuntimeMode mode = RuntimeMode.DEFAULT; /** * OpenShift build mode when an OpenShift build is performed. @@ -293,7 +293,7 @@ public class ResourceMojo extends AbstractFabric8Mojo { // Access for creating OpenShift binary builds private ClusterAccess clusterAccess; - private PlatformMode platformMode; + private RuntimeMode platformMode; private OpenShiftDependencyResources openshiftDependencyResources; private OpenShiftOverrideResources openShiftOverrideResources; @@ -416,18 +416,24 @@ public void executeInternal() throws MojoExecutionException, MojoFailureExceptio resolvedImages = getResolvedImages(images, log); if (!skip && (!isPomProject() || hasFabric8Dir())) { // Extract and generate resources which can be a mix of Kubernetes and OpenShift resources - KubernetesList resources = generateResources(resolvedImages, remoteResources); - // Adapt list to use OpenShift specific resource objects - KubernetesList openShiftResources = convertToOpenShiftResources(resources); - writeResources(openShiftResources, ResourceClassifier.OPENSHIFT, generateRoute); - File openShiftResourceDir = new File(this.targetDir, ResourceClassifier.OPENSHIFT.getValue()); - validateIfRequired(openShiftResourceDir, ResourceClassifier.OPENSHIFT); - - // Remove OpenShift specific stuff provided by fragments - KubernetesList kubernetesResources = convertToKubernetesResources(resources, openShiftResources); - writeResources(kubernetesResources, ResourceClassifier.KUBERNETES, generateRoute); - File kubernetesResourceDir = new File(this.targetDir, ResourceClassifier.KUBERNETES.getValue()); - validateIfRequired(kubernetesResourceDir, ResourceClassifier.KUBERNETES); + + KubernetesList resources = new KubernetesList(); + for(PlatformMode platformMode : new PlatformMode[] { PlatformMode.kubernetes, PlatformMode.openshift }) { + ResourceClassifier resourceClassifier = platformMode == PlatformMode.kubernetes ? ResourceClassifier.KUBERNETES + : ResourceClassifier.OPENSHIFT; + + // Adapt list to use OpenShift specific resource objects + resources = generateResources(platformMode, resolvedImages, remoteResources); + writeResources(resources, resourceClassifier, generateRoute); + File resourceDir = new File(this.targetDir, resourceClassifier.getValue()); + validateIfRequired(resourceDir, resourceClassifier); + } +// KubernetesList openShiftResources = convertToOpenShiftResources(resources); +// // Remove OpenShift specific stuff provided by fragments +// KubernetesList kubernetesResources = convertToKubernetesResources(resources, openShiftResources); +// writeResources(kubernetesResources, ResourceClassifier.KUBERNETES, generateRoute); +// File kubernetesResourceDir = new File(this.targetDir, ResourceClassifier.KUBERNETES.getValue()); +// validateIfRequired(kubernetesResourceDir, ResourceClassifier.KUBERNETES); } } catch (IOException e) { throw new MojoExecutionException("Failed to generate fabric8 descriptor", e); @@ -486,7 +492,7 @@ private void validateIfRequired(File resourceDir, ResourceClassifier classifier) } private void lateInit() { - platformMode = clusterAccess.resolvePlatformMode(mode, log); + platformMode = clusterAccess.resolveRuntimeMode(mode, log); log.info("Running in [[B]]%s[[B]] mode", platformMode.getLabel()); if (isOpenShiftMode()) { @@ -615,37 +621,39 @@ private boolean isTargetPlatformKubernetes(HasMetadata item) { return targetPlatform != null && "kubernetes".equalsIgnoreCase(targetPlatform); } - private KubernetesList generateResources(List images, File remoteResources) + private KubernetesList generateResources(PlatformMode platformMode, List images, File remoteResources) throws IOException, MojoExecutionException { // Manager for calling enrichers. openshiftDependencyResources = new OpenShiftDependencyResources(log); - loadOpenShiftOverrideResources(); + loadOpenShiftOverrideResources(platformMode); MavenEnricherContext.Builder ctxBuilder = new MavenEnricherContext.Builder() - .project(project) - .session(session) - .config(extractEnricherConfig()) - .settings(settings) - .resources(resources) - .images(resolvedImages) - .log(log) - .openshiftDependencyResources(openshiftDependencyResources); + .runtimeMode(mode) + .project(project) + .session(session) + .config(extractEnricherConfig()) + .settings(settings) + .properties(project.getProperties()) + .resources(resources) + .images(resolvedImages) + .log(log) + .openshiftDependencyResources(openshiftDependencyResources); EnricherManager enricherManager = new EnricherManager(resources, ctxBuilder.build(), MavenUtil.getCompileClasspathElementsIfRequested(project, useProjectClasspath)); // Generate all resources from the main resource directory, configuration and enrich them accordingly - KubernetesListBuilder builder = generateAppResources(images, enricherManager, remoteResources); + KubernetesListBuilder builder = generateAppResources(platformMode, images, enricherManager, remoteResources); // Add resources found in subdirectories of resourceDir, with a certain profile // applied - addProfiledResourcesFromSubirectories(builder, realResourceDir, enricherManager); + addProfiledResourcesFromSubirectories(platformMode, builder, realResourceDir, enricherManager); return builder.build(); } - private void loadOpenShiftOverrideResources() throws MojoExecutionException, IOException { + private void loadOpenShiftOverrideResources(PlatformMode platformMode) throws MojoExecutionException, IOException { openShiftOverrideResources = new OpenShiftOverrideResources(log); if (realResourceDirOpenShiftOverride.isDirectory() && realResourceDirOpenShiftOverride.exists()) { @@ -653,9 +661,10 @@ private void loadOpenShiftOverrideResources() throws MojoExecutionException, IOE if (resourceFiles.length > 0) { String defaultName = MavenUtil.createDefaultResourceName(project.getGroupId(), project.getArtifactId()); KubernetesListBuilder builder = KubernetesResourceUtil.readResourceFragmentsFrom( - KubernetesResourceUtil.DEFAULT_RESOURCE_VERSIONING, - defaultName, - mavenFilterFiles(resourceFiles, this.workDirOpenShiftOverride)); + platformMode, + KubernetesResourceUtil.DEFAULT_RESOURCE_VERSIONING, + defaultName, + mavenFilterFiles(resourceFiles, this.workDirOpenShiftOverride)); KubernetesList list = builder.build(); for (HasMetadata item : list.getItems()) { openShiftOverrideResources.addOpenShiftOverride(item); @@ -664,14 +673,9 @@ private void loadOpenShiftOverrideResources() throws MojoExecutionException, IOE } } - private void addProfiledResourcesFromSubirectories(KubernetesListBuilder builder, File resourceDir, + private void addProfiledResourcesFromSubirectories(PlatformMode platformMode, KubernetesListBuilder builder, File resourceDir, EnricherManager enricherManager) throws IOException, MojoExecutionException { - File[] profileDirs = resourceDir.listFiles(new FileFilter() { - @Override - public boolean accept(File pathname) { - return pathname.isDirectory(); - } - }); + File[] profileDirs = resourceDir.listFiles((File pathname) -> pathname.isDirectory()); if (profileDirs != null) { for (File profileDir : profileDirs) { Profile profile = ProfileUtil.findProfile(profileDir.getName(), resourceDir); @@ -684,9 +688,9 @@ public boolean accept(File pathname) { ProcessorConfig enricherConfig = profile.getEnricherConfig(); File[] resourceFiles = KubernetesResourceUtil.listResourceFragments(profileDir); if (resourceFiles.length > 0) { - KubernetesListBuilder profileBuilder = readResourceFragments(resourceFiles); - enricherManager.createDefaultResources(enricherConfig, profileBuilder); - enricherManager.enrich(enricherConfig, profileBuilder); + KubernetesListBuilder profileBuilder = readResourceFragments(platformMode, resourceFiles); + enricherManager.createDefaultResources(platformMode, enricherConfig, profileBuilder); + enricherManager.enrich(platformMode, enricherConfig, profileBuilder); KubernetesList profileItems = profileBuilder.build(); for (HasMetadata item : profileItems.getItems()) { builder.addToItems(item); @@ -696,34 +700,17 @@ public boolean accept(File pathname) { } } - private KubernetesListBuilder generateAppResources(List images, EnricherManager enricherManager, + private KubernetesListBuilder generateAppResources(PlatformMode platformMode, List images, EnricherManager enricherManager, File remoteResources) throws IOException, MojoExecutionException { try { - - File[] resourceFiles = KubernetesResourceUtil.listResourceFragments(realResourceDir); - if (remoteResources != null && remoteResources.isDirectory()) { - final File[] remoteFragments = remoteResources.listFiles(); - resourceFiles = ArrayUtils.addAll(resourceFiles, remoteFragments); - } - KubernetesListBuilder builder; - - // Add resource files found in the fabric8 directory - if (resourceFiles != null && resourceFiles.length > 0) { - if (resourceFiles != null && resourceFiles.length > 0) { - log.info("using resource templates from %s", realResourceDir); - } - - builder = readResourceFragments(resourceFiles); - } else { - builder = new KubernetesListBuilder(); - } + KubernetesListBuilder builder = processResourceFragments(platformMode, remoteResources); // Create default resources for app resources only - enricherManager.createDefaultResources(builder); + enricherManager.createDefaultResources(platformMode, builder); // Enrich descriptors - enricherManager.enrich(builder); + enricherManager.enrich(platformMode, builder); return builder; } catch (ConstraintViolationException e) { @@ -733,10 +720,32 @@ private KubernetesListBuilder generateAppResources(List imag } } - private KubernetesListBuilder readResourceFragments(File[] resourceFiles) throws IOException, MojoExecutionException { + private KubernetesListBuilder processResourceFragments(PlatformMode platformMode, File remoteResources) throws IOException, MojoExecutionException { + File[] resourceFiles = KubernetesResourceUtil.listResourceFragments(realResourceDir); + if (remoteResources != null && remoteResources.isDirectory()) { + final File[] remoteFragments = remoteResources.listFiles(); + resourceFiles = ArrayUtils.addAll(resourceFiles, remoteFragments); + } + KubernetesListBuilder builder; + + // Add resource files found in the fabric8 directory + if (resourceFiles != null && resourceFiles.length > 0) { + if (resourceFiles != null && resourceFiles.length > 0) { + log.info("using resource templates from %s", realResourceDir); + } + + builder = readResourceFragments(platformMode, resourceFiles); + } else { + builder = new KubernetesListBuilder(); + } + return builder; + } + + private KubernetesListBuilder readResourceFragments(PlatformMode platformMode, File[] resourceFiles) throws IOException, MojoExecutionException { KubernetesListBuilder builder; String defaultName = MavenUtil.createDefaultResourceName(project.getArtifactId()); builder = KubernetesResourceUtil.readResourceFragmentsFrom( + platformMode, KubernetesResourceUtil.DEFAULT_RESOURCE_VERSIONING, defaultName, mavenFilterFiles(resourceFiles, this.workDir)); diff --git a/plugin/src/main/java/io/fabric8/maven/plugin/mojo/develop/WatchMojo.java b/plugin/src/main/java/io/fabric8/maven/plugin/mojo/develop/WatchMojo.java index 0ca892a6f1..2f40cd4bfc 100644 --- a/plugin/src/main/java/io/fabric8/maven/plugin/mojo/develop/WatchMojo.java +++ b/plugin/src/main/java/io/fabric8/maven/plugin/mojo/develop/WatchMojo.java @@ -21,7 +21,7 @@ import io.fabric8.maven.core.access.ClusterAccess; import io.fabric8.maven.core.access.ClusterConfiguration; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.service.Fabric8ServiceHub; import io.fabric8.maven.core.util.ProfileUtil; @@ -92,7 +92,7 @@ public class WatchMojo extends io.fabric8.maven.docker.WatchMojo { * an OpenShift build (with a Docker build against the OpenShift API server. */ @Parameter(property = "fabric8.mode") - private PlatformMode mode = PlatformMode.auto; + private RuntimeMode mode = RuntimeMode.auto; /** * OpenShift build mode when an OpenShift build is performed. * Can be either "s2i" for an s2i binary build mode or "docker" for a binary diff --git a/plugin/src/main/resources/META-INF/fabric8/profiles-default.yml b/plugin/src/main/resources/META-INF/fabric8/profiles-default.yml index b8203e56f0..dbd69a5777 100644 --- a/plugin/src/main/resources/META-INF/fabric8/profiles-default.yml +++ b/plugin/src/main/resources/META-INF/fabric8/profiles-default.yml @@ -45,6 +45,7 @@ # Route exposure - fmp-openshift-service-expose - fmp-openshift-route + - fmp-openshift-deploymentconfig # ----------------------------------------- # TODO: Document and verify enrichers below diff --git a/plugin/src/test/java/io/fabric8/maven/plugin/enricher/EnricherManagerTest.java b/plugin/src/test/java/io/fabric8/maven/plugin/enricher/EnricherManagerTest.java index 07e5faf7ec..8700ff33b3 100644 --- a/plugin/src/test/java/io/fabric8/maven/plugin/enricher/EnricherManagerTest.java +++ b/plugin/src/test/java/io/fabric8/maven/plugin/enricher/EnricherManagerTest.java @@ -19,6 +19,7 @@ import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.apps.ReplicaSet; +import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.model.Configuration; import io.fabric8.maven.docker.config.ImageConfiguration; @@ -59,7 +60,7 @@ public void createDefaultResources() { EnricherManager manager = new EnricherManager(null, context, Optional.empty()); KubernetesListBuilder builder = new KubernetesListBuilder(); - manager.createDefaultResources(builder); + manager.createDefaultResources(PlatformMode.kubernetes, builder); assertTrue(builder.build().getItems().size() > 0); } @@ -74,7 +75,7 @@ public void enrichEmpty() { EnricherManager manager = new EnricherManager(null, context, Optional.empty()); KubernetesListBuilder builder = new KubernetesListBuilder(); - manager.enrich(builder); + manager.enrich(PlatformMode.kubernetes, builder); assertEquals(0,builder.build().getItems().size(),1); } @@ -101,7 +102,7 @@ public void enrichSimple() { .endTemplate() .endSpec() .endReplicaSetItem(); - manager.enrich(builder); + manager.enrich(PlatformMode.kubernetes, builder); KubernetesList list = builder.build(); assertEquals(1, list.getItems().size()); ReplicaSet pod = (ReplicaSet) list.getItems().get(0); diff --git a/samples/external-resources/pom.xml b/samples/external-resources/pom.xml index bf0e61cb93..fda45c21c3 100644 --- a/samples/external-resources/pom.xml +++ b/samples/external-resources/pom.xml @@ -83,12 +83,11 @@ io.fabric8 fabric8-maven-plugin - 3.2-SNAPSHOT + 4.0-SNAPSHOT resource - build diff --git a/samples/external-resources/src/main/fabric8/profiles.yaml b/samples/external-resources/src/main/fabric8/profiles.yaml deleted file mode 100644 index 11666e50d7..0000000000 --- a/samples/external-resources/src/main/fabric8/profiles.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# -# Copyright 2016 Red Hat, Inc. -# -# Red Hat licenses this file to you under the Apache License, version -# 2.0 (the "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. See the License for the specific language governing -# permissions and limitations under the License. -# - -- name: simple - generator: - includes: - - spring.boot - enricher: - excludes: - - build - - icon - config: - dependency.includeTransitive: "false" \ No newline at end of file diff --git a/watcher/api/src/main/java/io/fabric8/maven/watcher/api/WatcherContext.java b/watcher/api/src/main/java/io/fabric8/maven/watcher/api/WatcherContext.java index b5ee15a07b..11c4924951 100644 --- a/watcher/api/src/main/java/io/fabric8/maven/watcher/api/WatcherContext.java +++ b/watcher/api/src/main/java/io/fabric8/maven/watcher/api/WatcherContext.java @@ -18,7 +18,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.maven.core.access.ClusterConfiguration; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; -import io.fabric8.maven.core.config.PlatformMode; +import io.fabric8.maven.core.config.RuntimeMode; import io.fabric8.maven.core.config.ProcessorConfig; import io.fabric8.maven.core.service.Fabric8ServiceHub; import io.fabric8.maven.docker.service.BuildService; @@ -39,7 +39,7 @@ public class WatcherContext { private Logger logger; private Logger newPodLogger; private Logger oldPodLogger; - private PlatformMode mode; + private RuntimeMode mode; private boolean useProjectClasspath; private ServiceHub serviceHub; private WatchService.WatchContext watchContext; @@ -63,7 +63,7 @@ public Logger getLogger() { return logger; } - public PlatformMode getMode() { + public RuntimeMode getMode() { return mode; } @@ -134,7 +134,7 @@ public Builder oldPodLogger(Logger oldPodLogger) { return this; } - public Builder mode(PlatformMode mode) { + public Builder mode(RuntimeMode mode) { ctx.mode = mode; return this; }