Skip to content

Commit 84f46da

Browse files
mnkmetacosm
andauthored
fix: HasMetadata.getApiVersion no slash when empty group
fix(model-core) apiVersion for core k8s resources The HasMetadata#getApiVersion method is returning a string starting with "/" when the group is "". This is not consistent with how owner references are specified. This issues is causing: operator-framework/java-operator-sdk#2723 --- refactor: unify apiVersion computation from group & version Co-authored-by: Chris Laprun <[email protected]>
1 parent a707ba8 commit 84f46da

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/ApiVersionUtil.java

+6-9
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ private ApiVersionUtil() {
2525

2626
/**
2727
* Extracts apiGroupName from apiGroupVersion when in resource for apiGroupName/apiGroupVersion combination
28-
*
28+
*
2929
* @param <T> Template argument provided
3030
* @param item resource which is being used
3131
* @param apiGroup apiGroupName present if any
@@ -42,7 +42,7 @@ public static <T> String apiGroup(T item, String apiGroup) {
4242

4343
/**
4444
* Returns the api version falling back to the items apiGroupVersion if not null.
45-
*
45+
*
4646
* @param <T> type of parameter
4747
* @param item item to be processed
4848
* @param apiVersion apiVersion string
@@ -59,7 +59,7 @@ public static <T> String apiVersion(T item, String apiVersion) {
5959

6060
/**
6161
* Separates apiGroupVersion for apiGroupName/apiGroupVersion combination.
62-
*
62+
*
6363
* @param apiVersion The apiGroupVersion or apiGroupName/apiGroupVersion combo.
6464
* @return Just the apiGroupVersion part without the apiGroupName.
6565
*/
@@ -75,7 +75,7 @@ public static String trimVersion(String apiVersion) {
7575

7676
/**
7777
* Separates apiGroupName for apiGroupName/apiGroupVersion combination.
78-
*
78+
*
7979
* @param apiVersion The apiGroupVersion or apiGroupName/apiGroupVersion combo.
8080
* @return Just the apiGroupName part without the apiGroupName, or apiVersion if no separator is found.
8181
*/
@@ -91,7 +91,7 @@ public static String trimGroup(String apiVersion) {
9191

9292
/**
9393
* Separates apiGroupName for apiGroupName/apiGroupVersion combination.
94-
*
94+
*
9595
* @param apiVersion The apiGroupVersion or apiGroupName/apiGroupVersion combo.
9696
* @return Just the apiGroupName part without the apiGroupName, or null if no separator is found.
9797
*/
@@ -110,9 +110,6 @@ public static String trimGroupOrNull(String apiVersion) {
110110
* @return version if group is null or empty, joined string otherwise.
111111
*/
112112
public static String joinApiGroupAndVersion(String group, String version) {
113-
if (Utils.isNullOrEmpty(group)) {
114-
return version;
115-
}
116-
return group + "/" + version;
113+
return HasMetadata.getApiVersion(group, version);
117114
}
118115
}

kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/HasMetadata.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ static String getApiVersion(Class<?> clazz) {
7676
final String group = getGroup(clazz);
7777
final String version = getVersion(clazz);
7878
if (group != null && version != null) {
79-
return group + "/" + version;
79+
return getApiVersion(group, version);
8080
}
8181
if (group != null || version != null) {
8282
throw new IllegalArgumentException(
@@ -86,6 +86,14 @@ static String getApiVersion(Class<?> clazz) {
8686
return null;
8787
}
8888

89+
static String getApiVersion(String group, String version) {
90+
Objects.requireNonNull(version);
91+
if (group == null || group.isBlank()) {
92+
return version;
93+
}
94+
return group + "/" + version;
95+
}
96+
8997
/**
9098
* Retrieves the group associated with the specified HasMetadata as defined by the {@link Group} annotation.
9199
*

kubernetes-model-generator/kubernetes-model-core/src/test/java/io/fabric8/kubernetes/api/model/HasMetadataTest.java

+5
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ void addingAndRemovingOwnerReferenceShouldWork() {
206206
assertFalse(hasMetadata.hasOwnerReferenceFor(owner2));
207207
}
208208

209+
@Test
210+
void apiVersionOfConfigMapShouldBeCorrect() {
211+
assertEquals("v1", HasMetadata.getApiVersion(ConfigMap.class));
212+
}
213+
209214
@Test
210215
void addingSameOwnerReferenceMultipleTimesShouldAddItOnlyOnce() {
211216
HasMetadata hasMetadata = new Default();

0 commit comments

Comments
 (0)