Skip to content

Commit c897129

Browse files
authored
Merge pull request #3021 from yue9944882/codegen-patch
Tracking manual edits in git diffs to unlock openapi ignore
2 parents d9ac4ce + ca85802 commit c897129

File tree

5 files changed

+125
-7
lines changed

5 files changed

+125
-7
lines changed

.github/workflows/generate.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,16 @@ jobs:
6262
USE_SINGLE_PARAMETER=true bash java.sh ../../kubernetes/ settings
6363
popd
6464
rm -rf gen
65+
git config user.email "[email protected]"
66+
git config user.name "Kubernetes Prow Robot"
67+
git checkout -b "$BRANCH"
68+
git add .
69+
git commit -s -m 'Automated openapi generation from ${{ github.event.inputs.kubernetesBranch }}'
70+
- name: Apply Manual Diffs
71+
run: |
72+
ls scripts/patches/*.diff | xargs git apply
73+
git add .
74+
git commit -s -m 'Applied patches under scripts/patches/*.diff'
6575
- name: Generate Fluent
6676
run: |
6777
# Only install the generated openapi module because the higher modules' compile
@@ -79,11 +89,8 @@ jobs:
7989
- name: Commit and push
8090
run: |
8191
# Commit and push
82-
git config user.email "[email protected]"
83-
git config user.name "Kubernetes Prow Robot"
84-
git checkout -b "$BRANCH"
8592
git add .
86-
git commit -s -m 'Automated openapi generation from ${{ github.event.inputs.kubernetesBranch }}'
93+
git commit -s -m 'Format and fluent-gen from ${{ github.event.inputs.kubernetesBranch }}'
8794
git push origin "$BRANCH"
8895
- name: Pull Request
8996
uses: repo-sync/pull-request@v2

kubernetes/.openapi-generator-ignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,3 @@
55
git_push.sh
66
README.md
77
pom.xml
8-
9-
# Remove when changes in kubernetes-client/java#366,#240 make into upstream openapi-generator
10-
src/main/java/io/kubernetes/client/openapi/JSON.java

scripts/patches/json.diff

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
diff --git a/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java b/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
2+
index 4406c2199..f56413a25 100644
3+
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
4+
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java
5+
@@ -23,6 +23,8 @@ import com.google.gson.JsonElement;
6+
import io.gsonfire.GsonFireBuilder;
7+
import io.gsonfire.TypeSelector;
8+
9+
+import io.kubernetes.client.gson.V1StatusPreProcessor;
10+
+import io.kubernetes.client.openapi.models.V1Status;
11+
import okio.ByteString;
12+
13+
import java.io.IOException;
14+
@@ -34,6 +36,9 @@ import java.text.ParsePosition;
15+
import java.time.LocalDate;
16+
import java.time.OffsetDateTime;
17+
import java.time.format.DateTimeFormatter;
18+
+import java.time.format.DateTimeFormatterBuilder;
19+
+import java.time.format.DateTimeParseException;
20+
+import java.time.temporal.ChronoField;
21+
import java.util.Date;
22+
import java.util.Locale;
23+
import java.util.Map;
24+
@@ -48,9 +53,19 @@ import java.util.HashMap;
25+
public class JSON {
26+
private static Gson gson;
27+
private static boolean isLenientOnJson = false;
28+
+
29+
+ private static final DateTimeFormatter RFC3339MICRO_FORMATTER =
30+
+ new DateTimeFormatterBuilder()
31+
+ .parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
32+
+ .append(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))
33+
+ .optionalStart()
34+
+ .appendFraction(ChronoField.NANO_OF_SECOND, 6, 6, true)
35+
+ .optionalEnd()
36+
+ .appendLiteral("Z")
37+
+ .toFormatter();
38+
private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter();
39+
private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter();
40+
- private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter();
41+
+ private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(RFC3339MICRO_FORMATTER);
42+
private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
43+
private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
44+
45+
@@ -58,7 +73,10 @@ public class JSON {
46+
public static GsonBuilder createGson() {
47+
GsonFireBuilder fireBuilder = new GsonFireBuilder()
48+
;
49+
- GsonBuilder builder = fireBuilder.createGsonBuilder();
50+
+ GsonBuilder builder =
51+
+ fireBuilder
52+
+ .registerPreProcessor(V1Status.class, new V1StatusPreProcessor())
53+
+ .createGsonBuilder();
54+
return builder;
55+
}
56+
57+
@@ -721,11 +739,14 @@ public class JSON {
58+
59+
@Override
60+
public void write(JsonWriter out, byte[] value) throws IOException {
61+
+ boolean oldHtmlSafe = out.isHtmlSafe();
62+
+ out.setHtmlSafe(false);
63+
if (value == null) {
64+
out.nullValue();
65+
} else {
66+
out.value(ByteString.of(value).base64());
67+
}
68+
+ out.setHtmlSafe(oldHtmlSafe);
69+
}
70+
71+
@Override
72+
@@ -781,7 +802,12 @@ public class JSON {
73+
if (date.endsWith("+0000")) {
74+
date = date.substring(0, date.length()-5) + "Z";
75+
}
76+
- return OffsetDateTime.parse(date, formatter);
77+
+ try {
78+
+ return OffsetDateTime.parse(date, formatter);
79+
+ } catch (DateTimeParseException e) {
80+
+ // backward-compatibility for ISO8601 timestamp format
81+
+ return OffsetDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
82+
+ }
83+
}
84+
}
85+
}

scripts/patches/list-meta.diff

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
diff --git a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java
2+
index 60381b312..7fb47e230 100644
3+
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java
4+
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1ListMeta.java
5+
@@ -266,7 +266,9 @@ public class V1ListMeta {
6+
@Override
7+
public V1ListMeta read(JsonReader in) throws IOException {
8+
JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
9+
- validateJsonObject(jsonObj);
10+
+
11+
+ // Disable validation so delete API can tolerate non-status return object (graceful deletion)
12+
+ // validateJsonObject(jsonObj);
13+
return thisAdapter.fromJsonTree(jsonObj);
14+
}
15+

scripts/patches/status.diff

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
diff --git a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java
2+
index b2b6db803..8a8a9765d 100644
3+
--- a/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java
4+
+++ b/kubernetes/src/main/java/io/kubernetes/client/openapi/models/V1Status.java
5+
@@ -394,7 +394,8 @@ public class V1Status {
6+
@Override
7+
public V1Status read(JsonReader in) throws IOException {
8+
JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
9+
- validateJsonObject(jsonObj);
10+
+ // Disable validation so delete API can tolerate non-status return object (graceful deletion)
11+
+ // validateJsonObject(jsonObj);
12+
return thisAdapter.fromJsonTree(jsonObj);
13+
}
14+

0 commit comments

Comments
 (0)