Skip to content

Commit

Permalink
fix (jkube-kit/enricher) : GitEnricher should implement enrich inst…
Browse files Browse the repository at this point in the history
…ead of `create`

GitEnricher should be executed in `enrich` phase so that it's invoked
during OpenShift build.

Signed-off-by: Rohan Kumar <rohaan@redhat.com>
  • Loading branch information
rohanKanojia authored and manusa committed Jan 18, 2024
1 parent e101e93 commit 5799f89
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 80 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Usage:
* Fix #2472: Support for Helm Chart.yaml appVersion field defaulting to project version
* Fix #2474: Remove Docker-related classes providing unused functionality
* Fix #2477: Support for Spring Boot 3.2.0 (and newer) layered jar format
* Fix #2500: `oc:build` does not add git annotations in Openshift Build resource
* Fix #2503: Container Images Jolokia agent bumped to 2.0.0
* Fix #2532: Bump version.kubernetes-client from 6.9.2 to 6.10.0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,7 @@

import io.fabric8.kubernetes.api.builder.TypedVisitor;
import io.fabric8.kubernetes.api.model.KubernetesListBuilder;
import io.fabric8.kubernetes.api.model.ReplicationControllerBuilder;
import io.fabric8.kubernetes.api.model.ServiceBuilder;
import io.fabric8.kubernetes.api.model.apps.DaemonSetBuilder;
import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder;
import io.fabric8.kubernetes.api.model.apps.ReplicaSetBuilder;
import io.fabric8.kubernetes.api.model.apps.StatefulSetBuilder;
import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder;
import io.fabric8.openshift.api.model.DeploymentConfigBuilder;
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
import org.eclipse.jkube.kit.common.util.GitUtil;
import org.eclipse.jkube.kit.config.resource.JKubeAnnotations;
import org.eclipse.jkube.kit.config.resource.OpenShiftAnnotations;
Expand Down Expand Up @@ -78,60 +71,11 @@ private Map<String, String> getAnnotations(PlatformMode platformMode) {
}

@Override
public void create(PlatformMode platformMode, KubernetesListBuilder builder) {
builder.accept(new TypedVisitor<ServiceBuilder>() {
public void enrich(PlatformMode platformMode, KubernetesListBuilder builder) {
builder.accept(new TypedVisitor<ObjectMetaBuilder>() {
@Override
public void visit(ServiceBuilder serviceBuilder) {
serviceBuilder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata();
}
});

builder.accept(new TypedVisitor<DeploymentBuilder>() {
@Override
public void visit(DeploymentBuilder builder) {
builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata();
}
});

builder.accept(new TypedVisitor<DeploymentConfigBuilder>() {
@Override
public void visit(DeploymentConfigBuilder builder) {
builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata();
}
});

builder.accept(new TypedVisitor<ReplicaSetBuilder>() {
@Override
public void visit(ReplicaSetBuilder builder) {
builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata();
}
});

builder.accept(new TypedVisitor<ReplicationControllerBuilder>() {
@Override
public void visit(ReplicationControllerBuilder builder) {
builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata();
}
});

builder.accept(new TypedVisitor<DaemonSetBuilder>() {
@Override
public void visit(DaemonSetBuilder builder) {
builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata();
}
});

builder.accept(new TypedVisitor<StatefulSetBuilder>() {
@Override
public void visit(StatefulSetBuilder builder) {
builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata();
}
});

builder.accept(new TypedVisitor<JobBuilder>() {
@Override
public void visit(JobBuilder builder) {
builder.editMetadata().addToAnnotations(getAnnotations(platformMode)).endMetadata();
public void visit(ObjectMetaBuilder objectMetaBuilder) {
objectMetaBuilder.addToAnnotations(getAnnotations(platformMode));
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,16 @@
import io.fabric8.kubernetes.api.model.HasMetadata;
import io.fabric8.kubernetes.api.model.KubernetesListBuilder;
import io.fabric8.kubernetes.api.model.ReplicationControllerBuilder;
import io.fabric8.kubernetes.api.model.SecretBuilder;
import io.fabric8.kubernetes.api.model.ServiceBuilder;
import io.fabric8.kubernetes.api.model.apps.DaemonSetBuilder;
import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder;
import io.fabric8.kubernetes.api.model.apps.ReplicaSetBuilder;
import io.fabric8.kubernetes.api.model.apps.StatefulSetBuilder;
import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder;
import io.fabric8.openshift.api.model.BuildConfigBuilder;
import io.fabric8.openshift.api.model.DeploymentConfigBuilder;
import io.fabric8.openshift.api.model.ImageStreamBuilder;
import org.assertj.core.api.InstanceOfAssertFactories;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.revwalk.RevCommit;
Expand Down Expand Up @@ -70,7 +73,7 @@ class GitEnricherTest {

@BeforeEach
void setUp() throws Exception {
klb = new KubernetesListBuilder().withItems(new ServiceBuilder().build());
klb = new KubernetesListBuilder().withItems(new ServiceBuilder().withNewMetadata().endMetadata().build());
properties = new Properties();
context = JKubeEnricherContext.builder()
.project(JavaProject.builder()
Expand Down Expand Up @@ -138,9 +141,9 @@ void getAnnotations_addedWithNullCommitValues() {

@Test
@DisplayName("no .git repository found, then no git annotations added")
void create_whenNoGitRepositoryFound_thenNoAnnotationsAdded() {
void enrich_whenNoGitRepositoryFound_thenNoAnnotationsAdded() {
// When
gitEnricher.create(PlatformMode.kubernetes, klb);
gitEnricher.enrich(PlatformMode.kubernetes, klb);

// Then
HasMetadata result = klb.buildFirstItem();
Expand All @@ -162,7 +165,7 @@ void withEmptyGitDirectory_thenNoGitAnnotationsAdded() throws Exception {
// Given
FileUtil.createDirectory(new File(baseDirectory, ".git"));
// When
gitEnricher.create(PlatformMode.kubernetes, klb);
gitEnricher.enrich(PlatformMode.kubernetes, klb);
// Then
HasMetadata result = klb.buildFirstItem();
assertThat(result)
Expand Down Expand Up @@ -191,24 +194,29 @@ void setUp() throws Exception {
}


Stream<Arguments> controllerResources() {
Stream<Arguments> kubernetesResources() {
return Stream.of(
arguments(new ServiceBuilder().build()),
arguments(new DeploymentBuilder().build()),
arguments(new DeploymentConfigBuilder().build()),
arguments(new ReplicaSetBuilder().build()),
arguments(new ReplicationControllerBuilder().build()),
arguments(new DaemonSetBuilder().build()),
arguments(new StatefulSetBuilder().build()),
arguments(new JobBuilder().build())
arguments(new ServiceBuilder().withNewMetadata().endMetadata().build()),
arguments(new DeploymentBuilder().withNewMetadata().endMetadata().build()),
arguments(new DeploymentConfigBuilder().withNewMetadata().endMetadata().build()),
arguments(new ReplicaSetBuilder().withNewMetadata().endMetadata().build()),
arguments(new ReplicationControllerBuilder().withNewMetadata().endMetadata().build()),
arguments(new DaemonSetBuilder().withNewMetadata().endMetadata().build()),
arguments(new StatefulSetBuilder().withNewMetadata().endMetadata().build()),
arguments(new JobBuilder().withNewMetadata().endMetadata().build()),
arguments(new SecretBuilder().withNewMetadata().endMetadata().build()),
arguments(new ImageStreamBuilder().withNewMetadata().endMetadata().build()),
arguments(new BuildConfigBuilder().withNewMetadata().endMetadata().build())
);
}

@ParameterizedTest(name = "Git annotations should be added to {0}")
@MethodSource("controllerResources")
void create_whenResourceProvided_thenAddGitAnnotations(HasMetadata h) throws Exception {
@MethodSource("kubernetesResources")
void enrich_whenResourceProvided_thenAddGitAnnotations(HasMetadata h) {
// Given
klb = new KubernetesListBuilder().addToItems(h);
// When
gitEnricher.create(PlatformMode.kubernetes, klb);
gitEnricher.enrich(PlatformMode.kubernetes, klb);
// Then
HasMetadata result = klb.buildFirstItem();
assertThat(result)
Expand All @@ -227,7 +235,7 @@ void whenGitRemotePropertySpecified_thenUseProvidedGitRemoteInAnnotations() thro
properties.put("jkube.remoteName", "upstream");

// When
gitEnricher.create(PlatformMode.kubernetes, klb);
gitEnricher.enrich(PlatformMode.kubernetes, klb);

// Then
HasMetadata result = klb.buildFirstItem();
Expand All @@ -246,7 +254,7 @@ void whenRemoteNotFound_thenGitUrlAnnotationNotAdded() throws Exception {
git.remoteRemove().setRemoteName("origin").call();

// When
gitEnricher.create(PlatformMode.kubernetes, klb);
gitEnricher.enrich(PlatformMode.kubernetes, klb);

// Then
HasMetadata result = klb.buildFirstItem();
Expand All @@ -263,7 +271,7 @@ void whenRemoteNotFound_thenGitUrlAnnotationNotAdded() throws Exception {
@DisplayName("OpenShift vcs-uri, vcs-ref annotations added in OpenShift Platform")
void whenPlatformModeOpenShift_thenAddOpenShiftVcsAnnotations() {
// When
gitEnricher.create(PlatformMode.openshift, klb);
gitEnricher.enrich(PlatformMode.openshift, klb);

// Then
HasMetadata result = klb.buildFirstItem();
Expand All @@ -286,3 +294,4 @@ private void assertJkubeAnnotationsRemoteUrlAndBranch(Map<String, String> annota
.containsEntry("jkube.io/git-branch", GIT_BRANCH);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ items:
metadata:
annotations:
image.openshift.io/triggers: "@ignore@"
jkube.eclipse.org/git-branch: "@ignore@"
jkube.eclipse.org/git-commit: "@ignore@"
jkube.eclipse.org/git-url: "@ignore@"
labels:
env: dev
role: web
Expand All @@ -84,6 +87,10 @@ items:
role: web
template:
metadata:
annotations:
jkube.eclipse.org/git-branch: "@ignore@"
jkube.eclipse.org/git-commit: "@ignore@"
jkube.eclipse.org/git-url: "@ignore@"
labels:
role: web
spec:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ items:
kind: ServiceAccount
metadata:
annotations:
jkube.eclipse.org/git-url: "@ignore@"
jkube.eclipse.org/git-commit: "@ignore@"
jkube.eclipse.org/git-branch: "@ignore@"
maven: Noted
labels:
app: fragments
Expand All @@ -34,6 +37,10 @@ items:
- apiVersion: v1
kind: ConfigMap
metadata:
annotations:
jkube.eclipse.org/git-url: "@ignore@"
jkube.eclipse.org/git-commit: "@ignore@"
jkube.eclipse.org/git-branch: "@ignore@"
labels:
app: fragments
provider: jkube
Expand All @@ -51,6 +58,10 @@ items:
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
jkube.eclipse.org/git-url: "@ignore@"
jkube.eclipse.org/git-commit: "@ignore@"
jkube.eclipse.org/git-branch: "@ignore@"
labels:
app: fragments
provider: jkube
Expand All @@ -64,6 +75,10 @@ items:
- apiVersion: custom.resource.example.com/v1
kind: Example
metadata:
annotations:
jkube.eclipse.org/git-url: "@ignore@"
jkube.eclipse.org/git-commit: "@ignore@"
jkube.eclipse.org/git-branch: "@ignore@"
labels:
app: custom-resources
provider: jkube
Expand Down

0 comments on commit 5799f89

Please sign in to comment.