Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Remove Red Hat specific image support #220

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ Usage:
* Fix #210: WebAppGenerator\>JettyAppSeverHandler uses quay.io/jkube/jkube-jetty9-binary-s2i as base image
* Fix #211: pom.xml configured runtime mode `<mode>` is considered instead of `<configuredRuntimeMode>`
* Fix #209: WildFlySwarmGenerator includes required env variables + java options
* Fix #285: fix: KarafGenerator update (Created Karaf Quickstart #188, fix FileSet problems, upgraded base images)
* Fix #214: fix: KarafGenerator update (Created Karaf Quickstart #188, fix FileSet problems, upgraded base images)
* Fix #220: Remove Red Hat specific image support

### 1.0.0-alpha-3 (2020-05-06)
* Fix #167: Add CMD for wildfly based applications
Expand Down
8 changes: 0 additions & 8 deletions jkube-kit/generator/api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,6 @@

<name>JKube Kit :: Generator :: API</name>

<properties>
<!-- Default images used in Java based generators -->
<generator.java.docker.upstream>fabric8/java-jboss-openjdk8-jdk:${generator.java.docker.upstream.version}</generator.java.docker.upstream>
<generator.java.s2i.upstream>fabric8/s2i-java:${generator.java.s2i.upstream.version}</generator.java.s2i.upstream>
<generator.java.docker.redhat>jboss-fuse-6/fis-java-openshift:${generator.java.s2i.redhat.version}</generator.java.docker.redhat>
<generator.java.s2i.redhat>jboss-fuse-6/fis-java-openshift:${generator.java.s2i.redhat.version}</generator.java.s2i.redhat>
</properties>

<dependencies>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

import org.eclipse.jkube.kit.common.JavaProject;
import org.eclipse.jkube.kit.common.Plugin;
import org.eclipse.jkube.kit.common.util.JKubeProjectUtil;
import org.eclipse.jkube.kit.config.image.build.OpenShiftBuildStrategy;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;

Expand All @@ -37,8 +33,6 @@ public abstract class FromSelector {

private final GeneratorContext context;

private final Pattern REDHAT_VERSION_PATTERN = Pattern.compile("^.*\\.(redhat|fuse)-.*$");

public FromSelector(GeneratorContext context) {
this.context = context;
}
Expand All @@ -65,28 +59,10 @@ public Map<String, String> getImageStreamTagFromExt() {
protected abstract String getS2iBuildFrom();
protected abstract String getIstagFrom();

public boolean isRedHat() {
JavaProject project = context.getProject();
Plugin plugin = JKubeProjectUtil.getPlugin(project, "org.eclipse.jkube","openshift-maven-plugin");
if (plugin == null) {
// This plugin might be repackaged.
plugin = JKubeProjectUtil.getPlugin(project,"org.jboss.redhat-fuse", "openshift-maven-plugin");
}
if (plugin == null) {
// Can happen if not configured in a build section but only in a dependency management section
return false;
}
String version = plugin.getVersion();
return REDHAT_VERSION_PATTERN.matcher(version).matches();
}

public static class Default extends FromSelector {

private final String upstreamDocker;
private final String upstreamS2i;
private final String redhatDocker;
private final String redhatS2i;
private final String redhatIstag;
private final String upstreamIstag;

public Default(GeneratorContext context, String prefix) {
Expand All @@ -96,40 +72,6 @@ public Default(GeneratorContext context, String prefix) {
this.upstreamDocker = lookup.getImageName(prefix + ".upstream.docker");
this.upstreamS2i = lookup.getImageName(prefix + ".upstream.s2i");
this.upstreamIstag = lookup.getImageName(prefix + ".upstream.istag");

this.redhatDocker = lookup.getImageName(prefix + ".redhat.docker");
this.redhatS2i = lookup.getImageName(prefix + ".redhat.s2i");
this.redhatIstag = lookup.getImageName(prefix + ".redhat.istag");
}

@Override
protected String getDockerBuildFrom() {
return isRedHat() ? redhatDocker : upstreamDocker;
}

@Override
protected String getS2iBuildFrom() {
return isRedHat() ? redhatS2i : upstreamS2i;
}

protected String getIstagFrom() {
return isRedHat() ? redhatIstag : upstreamIstag;
}
}

public static final class NoRedHatSupportFromSelector extends FromSelector {

private final String upstreamDocker;
private final String upstreamS2i;
private final String upstreamIstag;

public NoRedHatSupportFromSelector(GeneratorContext context, String prefix) {
super(context);
DefaultImageLookup lookup = new DefaultImageLookup(NoRedHatSupportFromSelector.class);

this.upstreamDocker = lookup.getImageName(prefix + ".upstream.docker");
this.upstreamS2i = lookup.getImageName(prefix + ".upstream.s2i");
this.upstreamIstag = lookup.getImageName(prefix + ".upstream.istag");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ protected String getFromAsConfigured() {
* @param builder for the build image configuration to add the from to.
*/
protected void addFrom(BuildConfiguration.BuildConfigurationBuilder builder) {
String fromMode = getConfigWithFallback(Config.fromMode, "jkube.generator.fromMode", getFromModeDefault());
String fromMode = getConfigWithFallback(Config.fromMode, "jkube.generator.fromMode", "docker");
String from = getConfigWithFallback(Config.from, "jkube.generator.from", null);
if ("docker".equalsIgnoreCase(fromMode)) {
String fromImage = from;
Expand Down Expand Up @@ -159,15 +159,6 @@ protected void addFrom(BuildConfiguration.BuildConfigurationBuilder builder) {
}
}

// Use "istag" as default for "redhat" versions of this plugin
private String getFromModeDefault() {
if (context.getRuntimeMode() == RuntimeMode.openshift && fromSelector != null && fromSelector.isRedHat()) {
return "istag";
} else {
return "docker";
}
}

/**
* Get Image name with a standard default
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,4 @@
# The replacement values are defined in the parent pom.xml as properties
java.upstream.docker=${image.java.upstream.docker}
java.upstream.s2i=${image.java.upstream.s2i}
java.upstream.istag=${image.java.upstream.istag}
java.redhat.docker=${image.java.redhat.docker}
java.redhat.s2i=${image.java.redhat.s2i}
java.redhat.istag=${image.java.redhat.istag}
java.upstream.istag=${image.java.upstream.istag}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
*/
package org.eclipse.jkube.generator.api;

import java.util.Collections;
import java.util.Map;

import org.eclipse.jkube.kit.common.JavaProject;
Expand All @@ -22,7 +21,6 @@
import org.eclipse.jkube.kit.config.image.build.OpenShiftBuildStrategy;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;
import org.eclipse.jkube.kit.config.resource.ProcessorConfig;
import mockit.Expectations;
import mockit.Mocked;
import org.junit.Test;

Expand All @@ -31,71 +29,59 @@
import static org.eclipse.jkube.kit.config.resource.RuntimeMode.openshift;
import static org.junit.Assert.assertEquals;

/**
* @author roland
* @since 12/08/16
*/
public class FromSelectorTest {

@Mocked
JavaProject project;
@Mocked
JavaProject project;

@Mocked
Plugin plugin;
@Mocked
Plugin plugin;

@Mocked
KitLogger logger;
@Mocked
KitLogger logger;

@Test
public void simple() {
final Object[] data = new Object[] {
openshift, s2i, "1.2.3.redhat-00009", "redhat-s2i-prop", "redhat-istag-prop",
openshift, docker, "1.2.3.redhat-00009", "redhat-docker-prop", "redhat-istag-prop",
openshift, s2i, "1.2.3.fuse-00009", "redhat-s2i-prop", "redhat-istag-prop",
openshift, docker, "1.2.3.fuse-00009", "redhat-docker-prop", "redhat-istag-prop",
openshift, s2i, "1.2.3.foo-00009", "s2i-prop", "istag-prop",
openshift, docker, "1.2.3.foo-00009", "docker-prop", "istag-prop",
openshift, s2i, "1.2.3", "s2i-prop", "istag-prop",
openshift, docker, "1.2.3", "docker-prop", "istag-prop",
null, s2i, "1.2.3.redhat-00009", "redhat-docker-prop", "redhat-istag-prop",
null, docker, "1.2.3.redhat-00009", "redhat-docker-prop", "redhat-istag-prop",
null, s2i, "1.2.3.fuse-00009", "redhat-docker-prop", "redhat-istag-prop",
null, docker, "1.2.3.fuse-00009", "redhat-docker-prop", "redhat-istag-prop",
null, s2i, "1.2.3.foo-00009", "docker-prop", "istag-prop",
null, docker, "1.2.3.foo-00009", "docker-prop", "istag-prop",
null, s2i, "1.2.3", "docker-prop", "istag-prop",
null, docker, "1.2.3", "docker-prop", "istag-prop",
openshift, null, "1.2.3.redhat-00009", "redhat-docker-prop", "redhat-istag-prop",
openshift, null, "1.2.3.fuse-00009", "redhat-docker-prop", "redhat-istag-prop",
openshift, null, "1.2.3.foo-00009", "docker-prop", "istag-prop",
openshift, null, "1.2.3", "docker-prop", "istag-prop"
};
@Test
public void simple() {
final TestCase[] testCases = new TestCase[]{
new TestCase(openshift, s2i, "s2i-prop", "istag-prop"),
new TestCase(openshift, docker, "docker-prop", "istag-prop"),
new TestCase(null, s2i, "docker-prop", "istag-prop"),
new TestCase(null, docker, "docker-prop", "istag-prop"),
new TestCase(openshift, null, "docker-prop", "istag-prop"),
new TestCase(openshift, null, "docker-prop", "istag-prop"),
new TestCase(null, null, "docker-prop", "istag-prop"),
new TestCase(null, null, "docker-prop", "istag-prop"),
};
for (TestCase tc : testCases) {
GeneratorContext ctx = GeneratorContext.builder()
.project(project)
.config(new ProcessorConfig())
.logger(logger)
.runtimeMode(tc.runtimeMode)
.strategy(tc.strategy)
.build();

for (int i = 0; i < data.length; i += 5) {
GeneratorContext ctx = GeneratorContext.builder()
.project(project)
.config(new ProcessorConfig())
.logger(logger)
.runtimeMode((RuntimeMode) data[i])
.strategy((OpenShiftBuildStrategy) data[i + 1])
.build();
FromSelector selector = new FromSelector.Default(ctx, "test");
assertEquals(tc.expectedFrom, selector.getFrom());
Map<String, String> fromExt = selector.getImageStreamTagFromExt();
assertEquals(3, fromExt.size());
assertEquals("ImageStreamTag", fromExt.get(OpenShiftBuildStrategy.SourceStrategy.kind.key()));
assertEquals("openshift", fromExt.get(OpenShiftBuildStrategy.SourceStrategy.namespace.key()));
assertEquals(tc.expectedName, fromExt.get(OpenShiftBuildStrategy.SourceStrategy.name.key()));
}
}

final String version = (String) data[i + 2];
new Expectations() {{
project.getPlugins(); result = Collections.singletonList(plugin);
plugin.getGroupId(); result = "org.eclipse.jkube";
plugin.getArtifactId(); result = "openshift-maven-plugin";
plugin.getVersion(); result = version;
}};
private static final class TestCase {
private final RuntimeMode runtimeMode;
private final OpenShiftBuildStrategy strategy;
private final String expectedFrom;
private final String expectedName;

FromSelector selector = new FromSelector.Default(ctx, "test");
assertEquals(data[i + 3], selector.getFrom());
Map<String, String> fromExt = selector.getImageStreamTagFromExt();
assertEquals(fromExt.size(),3);
assertEquals(fromExt.get(OpenShiftBuildStrategy.SourceStrategy.kind.key()), "ImageStreamTag");
assertEquals(fromExt.get(OpenShiftBuildStrategy.SourceStrategy.namespace.key()), "openshift");
assertEquals(fromExt.get(OpenShiftBuildStrategy.SourceStrategy.name.key()), data[i + 4]);
}
public TestCase(RuntimeMode runtimeMode, OpenShiftBuildStrategy strategy, String expectedFrom, String expectedName) {
this.runtimeMode = runtimeMode;
this.strategy = strategy;
this.expectedFrom = expectedFrom;
this.expectedName = expectedName;
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@

/**
* @author roland
* @since 10/01/17
*/
public class BaseGeneratorTest {

Expand Down Expand Up @@ -81,38 +80,26 @@ public TestBaseGenerator createGenerator(FromSelector fromSelector) {
public void defaultAddFrom() {
Properties props = new Properties();
for (boolean isOpenShift : new Boolean[]{false, true}) {
for (boolean isRedHat : new Boolean[]{false, true}) {
for (TestFromSelector selector : new TestFromSelector[]{null, new TestFromSelector(ctx, isRedHat)}) {
for (String from : new String[]{null, "openshift/testfrom"}) {
setupContext(props, isOpenShift, from, null);

BuildConfiguration.BuildConfigurationBuilder builder = BuildConfiguration.builder();
BaseGenerator generator = createGenerator(selector);
generator.addFrom(builder);
BuildConfiguration config = builder.build();
if (isRedHat && isOpenShift && selector != null) {
if (from != null) {
assertEquals("testfrom:latest", config.getFrom());
assertFromExt(config.getFromExt(), "testfrom:latest", "openshift");
} else {
assertEquals("selectorIstagFromRedhat", config.getFrom());
assertFromExt(config.getFromExt(), selector.getIstagFrom(), "openshift");
}
} else {
if (from != null) {
assertEquals(config.getFrom(), from);
assertNull(config.getFromExt());
} else {
System.out.println(isRedHat + " " + isOpenShift);
assertNull(config.getFromExt());
assertEquals(config.getFrom(),
selector != null ?
(isOpenShift ?
selector.getS2iBuildFrom() :
selector.getDockerBuildFrom())
: null);
}
}
for (TestFromSelector selector : new TestFromSelector[]{null, new TestFromSelector(ctx)}) {
for (String from : new String[]{null, "openshift/testfrom"}) {
setupContext(props, isOpenShift, from, null);

BuildConfiguration.BuildConfigurationBuilder builder = BuildConfiguration.builder();
BaseGenerator generator = createGenerator(selector);
generator.addFrom(builder);
BuildConfiguration config = builder.build();
if (from != null) {
assertEquals(config.getFrom(), from);
assertNull(config.getFromExt());
} else {
System.out.println(isOpenShift);
assertNull(config.getFromExt());
assertEquals(config.getFrom(),
selector != null ?
(isOpenShift ?
selector.getS2iBuildFrom() :
selector.getDockerBuildFrom())
: null);
}
}
}
Expand All @@ -135,7 +122,7 @@ public void addFromIstagModeWithSelector() {
setupContext(props, false, from, null);

BuildConfiguration.BuildConfigurationBuilder builder = BuildConfiguration.builder();
BaseGenerator generator = createGenerator(new TestFromSelector(ctx, false));
BaseGenerator generator = createGenerator(new TestFromSelector(ctx));
generator.addFrom(builder);
BuildConfiguration config = builder.build();
assertEquals(from == null ? "selectorIstagFromUpstream" : "test_image:2.0", config.getFrom());
Expand Down Expand Up @@ -334,31 +321,24 @@ public List<ImageConfiguration> customize(List<ImageConfiguration> existingConfi

private class TestFromSelector extends FromSelector {

private boolean isRedHat;

public TestFromSelector(GeneratorContext context, boolean isRedHat) {
public TestFromSelector(GeneratorContext context) {
super(context);
this.isRedHat = isRedHat;
}

@Override
public boolean isRedHat() {
return isRedHat;
}

@Override
protected String getDockerBuildFrom() {
return !isRedHat ? "selectorDockerFromUpstream" : "selectorDockerFromRedhat";
return "selectorDockerFromUpstream";
}

@Override
protected String getS2iBuildFrom() {
return !isRedHat ? "selectorS2iFromUpstream" : "selectorS2iFromRedhat";
return "selectorS2iFromUpstream";
}

@Override
protected String getIstagFrom() {
return !isRedHat ? "selectorIstagFromUpstream" : "selectorIstagFromRedhat";
return "selectorIstagFromUpstream";
}
}
}
Loading