Skip to content

Commit 0165844

Browse files
committed
wip
Signed-off-by: Attila Mészáros <a_meszaros@apple.com>
1 parent 63be331 commit 0165844

File tree

3 files changed

+315
-0
lines changed

3 files changed

+315
-0
lines changed

migration/pom.xml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
4+
Copyright Java Operator SDK Authors
5+
6+
Licensed under the Apache License, Version 2.0 (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
18+
-->
19+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20+
<modelVersion>4.0.0</modelVersion>
21+
<parent>
22+
<groupId>io.javaoperatorsdk</groupId>
23+
<artifactId>java-operator-sdk</artifactId>
24+
<version>5.3.1-SNAPSHOT</version>
25+
</parent>
26+
27+
<artifactId>migration</artifactId>
28+
<name>Operator SDK - Migration Recipes</name>
29+
<description>OpenRewrite migration recipes for Java Operator SDK</description>
30+
31+
<properties>
32+
<openrewrite.version>8.46.1</openrewrite.version>
33+
</properties>
34+
35+
<dependencies>
36+
<dependency>
37+
<groupId>org.openrewrite</groupId>
38+
<artifactId>rewrite-java</artifactId>
39+
<version>${openrewrite.version}</version>
40+
</dependency>
41+
<dependency>
42+
<groupId>org.openrewrite</groupId>
43+
<artifactId>rewrite-maven</artifactId>
44+
<version>${openrewrite.version}</version>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.openrewrite</groupId>
48+
<artifactId>rewrite-test</artifactId>
49+
<version>${openrewrite.version}</version>
50+
<scope>test</scope>
51+
</dependency>
52+
<dependency>
53+
<groupId>org.junit.jupiter</groupId>
54+
<artifactId>junit-jupiter-api</artifactId>
55+
<scope>test</scope>
56+
</dependency>
57+
<dependency>
58+
<groupId>org.junit.jupiter</groupId>
59+
<artifactId>junit-jupiter-engine</artifactId>
60+
<scope>test</scope>
61+
</dependency>
62+
<dependency>
63+
<groupId>org.assertj</groupId>
64+
<artifactId>assertj-core</artifactId>
65+
<scope>test</scope>
66+
</dependency>
67+
</dependencies>
68+
69+
</project>
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#
2+
# Copyright Java Operator SDK Authors
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#
16+
17+
---
18+
type: specs.openrewrite.org/v1beta/recipe
19+
name: io.javaoperatorsdk.operator.migration.V5_3Migration
20+
displayName: Migrate to Java Operator SDK v5.3
21+
description: >-
22+
Migrates Java Operator SDK from v5.2 to v5.3, including the JUnit module
23+
rename and Metrics interface method renames.
24+
recipeList:
25+
- io.javaoperatorsdk.operator.migration.RenameJUnitModule
26+
- io.javaoperatorsdk.operator.migration.MetricsMethodRenames
27+
- io.javaoperatorsdk.operator.migration.RemoveMonitorSizeOf
28+
---
29+
type: specs.openrewrite.org/v1beta/recipe
30+
name: io.javaoperatorsdk.operator.migration.RenameJUnitModule
31+
displayName: Rename JUnit module artifact
32+
description: >-
33+
Renames the operator-framework-junit-5 artifact to operator-framework-junit.
34+
recipeList:
35+
- org.openrewrite.maven.ChangeArtifactId:
36+
groupId: io.javaoperatorsdk
37+
oldArtifactId: operator-framework-junit-5
38+
newArtifactId: operator-framework-junit
39+
---
40+
type: specs.openrewrite.org/v1beta/recipe
41+
name: io.javaoperatorsdk.operator.migration.MetricsMethodRenames
42+
displayName: Rename Metrics interface methods
43+
description: >-
44+
Renames methods on the Metrics interface to match the new v5.3 API.
45+
recipeList:
46+
- org.openrewrite.java.ChangeMethodName:
47+
methodPattern: "io.javaoperatorsdk.operator.api.monitoring.Metrics reconcileCustomResource(..)"
48+
newMethodName: reconciliationSubmitted
49+
- org.openrewrite.java.ChangeMethodName:
50+
methodPattern: "io.javaoperatorsdk.operator.api.monitoring.Metrics reconciliationExecutionStarted(..)"
51+
newMethodName: reconciliationStarted
52+
- org.openrewrite.java.ChangeMethodName:
53+
methodPattern: "io.javaoperatorsdk.operator.api.monitoring.Metrics reconciliationExecutionFinished(..)"
54+
newMethodName: reconciliationSucceeded
55+
- org.openrewrite.java.ChangeMethodName:
56+
methodPattern: "io.javaoperatorsdk.operator.api.monitoring.Metrics failedReconciliation(..)"
57+
newMethodName: reconciliationFailed
58+
- org.openrewrite.java.ChangeMethodName:
59+
methodPattern: "io.javaoperatorsdk.operator.api.monitoring.Metrics finishedReconciliation(..)"
60+
newMethodName: reconciliationFinished
61+
- org.openrewrite.java.ChangeMethodName:
62+
methodPattern: "io.javaoperatorsdk.operator.api.monitoring.Metrics cleanupDoneFor(..)"
63+
newMethodName: cleanupDone
64+
- org.openrewrite.java.ChangeMethodName:
65+
methodPattern: "io.javaoperatorsdk.operator.api.monitoring.Metrics receivedEvent(..)"
66+
newMethodName: eventReceived
67+
---
68+
type: specs.openrewrite.org/v1beta/recipe
69+
name: io.javaoperatorsdk.operator.migration.RemoveMonitorSizeOf
70+
displayName: Remove monitorSizeOf method invocations
71+
description: >-
72+
Removes calls to the monitorSizeOf method which was removed in v5.3.
73+
recipeList:
74+
- org.openrewrite.java.RemoveMethodInvocations:
75+
methodPattern: "io.javaoperatorsdk.operator.api.monitoring.Metrics monitorSizeOf(..)"
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
/*
2+
* Copyright Java Operator SDK Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.javaoperatorsdk.operator.migration;
17+
18+
import static org.openrewrite.java.Assertions.java;
19+
import static org.openrewrite.maven.Assertions.pomXml;
20+
21+
import org.junit.jupiter.api.Test;
22+
import org.openrewrite.test.RecipeSpec;
23+
import org.openrewrite.test.RewriteTest;
24+
25+
class V53MigrationTest implements RewriteTest {
26+
27+
@Override
28+
public void defaults(RecipeSpec spec) {
29+
spec.recipeFromResources("io.javaoperatorsdk.operator.migration.V5_3Migration");
30+
}
31+
32+
@Test
33+
void renamesJUnitModuleInMaven() {
34+
rewriteRun(
35+
pomXml(
36+
"""
37+
<project>
38+
<modelVersion>4.0.0</modelVersion>
39+
<groupId>com.example</groupId>
40+
<artifactId>test</artifactId>
41+
<version>1.0</version>
42+
<dependencies>
43+
<dependency>
44+
<groupId>io.javaoperatorsdk</groupId>
45+
<artifactId>operator-framework-junit-5</artifactId>
46+
<version>5.2.0</version>
47+
<scope>test</scope>
48+
</dependency>
49+
</dependencies>
50+
</project>
51+
""",
52+
"""
53+
<project>
54+
<modelVersion>4.0.0</modelVersion>
55+
<groupId>com.example</groupId>
56+
<artifactId>test</artifactId>
57+
<version>1.0</version>
58+
<dependencies>
59+
<dependency>
60+
<groupId>io.javaoperatorsdk</groupId>
61+
<artifactId>operator-framework-junit</artifactId>
62+
<version>5.2.0</version>
63+
<scope>test</scope>
64+
</dependency>
65+
</dependencies>
66+
</project>
67+
"""));
68+
}
69+
70+
@Test
71+
void renamesMetricsMethods() {
72+
rewriteRun(
73+
// language=java
74+
java(
75+
"""
76+
package io.javaoperatorsdk.operator.api.monitoring;
77+
78+
import java.util.Map;
79+
import io.fabric8.kubernetes.api.model.HasMetadata;
80+
import io.javaoperatorsdk.operator.api.reconciler.RetryInfo;
81+
import io.javaoperatorsdk.operator.processing.event.Event;
82+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
83+
84+
public interface Metrics {
85+
default void receivedEvent(Event event, Map<String, Object> metadata) {}
86+
default void reconcileCustomResource(HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {}
87+
default void reconciliationExecutionStarted(HasMetadata resource, Map<String, Object> metadata) {}
88+
default void reconciliationExecutionFinished(HasMetadata resource, Map<String, Object> metadata) {}
89+
default void failedReconciliation(HasMetadata resource, RetryInfo retryInfo, Exception exception, Map<String, Object> metadata) {}
90+
default void finishedReconciliation(HasMetadata resource, Map<String, Object> metadata) {}
91+
default void cleanupDoneFor(ResourceID resourceID, Map<String, Object> metadata) {}
92+
}
93+
""",
94+
"""
95+
package io.javaoperatorsdk.operator.api.monitoring;
96+
97+
import java.util.Map;
98+
import io.fabric8.kubernetes.api.model.HasMetadata;
99+
import io.javaoperatorsdk.operator.api.reconciler.RetryInfo;
100+
import io.javaoperatorsdk.operator.processing.event.Event;
101+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
102+
103+
public interface Metrics {
104+
default void eventReceived(Event event, Map<String, Object> metadata) {}
105+
default void reconciliationSubmitted(HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {}
106+
default void reconciliationStarted(HasMetadata resource, Map<String, Object> metadata) {}
107+
default void reconciliationSucceeded(HasMetadata resource, Map<String, Object> metadata) {}
108+
default void reconciliationFailed(HasMetadata resource, RetryInfo retryInfo, Exception exception, Map<String, Object> metadata) {}
109+
default void reconciliationFinished(HasMetadata resource, Map<String, Object> metadata) {}
110+
default void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {}
111+
}
112+
"""));
113+
}
114+
115+
@Test
116+
void renamesMetricsMethodCallsInImplementation() {
117+
rewriteRun(
118+
// Stub for the Metrics interface
119+
// language=java
120+
java(
121+
"""
122+
package io.javaoperatorsdk.operator.api.monitoring;
123+
124+
import java.util.Map;
125+
126+
public interface Metrics {
127+
default void receivedEvent(Object event, Map<String, Object> metadata) {}
128+
default void reconcileCustomResource(Object resource, Object retryInfo, Map<String, Object> metadata) {}
129+
}
130+
"""),
131+
// Implementation that overrides the old method names
132+
// language=java
133+
java(
134+
"""
135+
package com.example;
136+
137+
import java.util.Map;
138+
import io.javaoperatorsdk.operator.api.monitoring.Metrics;
139+
140+
public class MyMetrics implements Metrics {
141+
@Override
142+
public void receivedEvent(Object event, Map<String, Object> metadata) {
143+
System.out.println("event received");
144+
}
145+
146+
@Override
147+
public void reconcileCustomResource(Object resource, Object retryInfo, Map<String, Object> metadata) {
148+
System.out.println("reconcile");
149+
}
150+
}
151+
""",
152+
"""
153+
package com.example;
154+
155+
import java.util.Map;
156+
import io.javaoperatorsdk.operator.api.monitoring.Metrics;
157+
158+
public class MyMetrics implements Metrics {
159+
@Override
160+
public void eventReceived(Object event, Map<String, Object> metadata) {
161+
System.out.println("event received");
162+
}
163+
164+
@Override
165+
public void reconciliationSubmitted(Object resource, Object retryInfo, Map<String, Object> metadata) {
166+
System.out.println("reconcile");
167+
}
168+
}
169+
"""));
170+
}
171+
}

0 commit comments

Comments
 (0)