Skip to content

Commit f5ee357

Browse files
authored
Merge branch 'master' into dev_fix#5641
2 parents c57c15f + 98e38a8 commit f5ee357

11 files changed

+143
-96
lines changed

Diff for: shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/ContextPathParser.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,18 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
100100
List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
101101
if (Objects.nonNull(paths)) {
102102
for (V1HTTPIngressPath path : paths) {
103-
if (path.getPath() == null) {
103+
String pathPath = path.getPath();
104+
if (Objects.isNull(pathPath)) {
104105
continue;
105106
}
106107
OperatorEnum operator = getOperator(path.getPathType());
107-
ConditionData pathCondition = createPathCondition(path.getPath(), operator);
108+
ConditionData pathCondition = createPathCondition(pathPath, operator);
108109
List<ConditionData> conditionList = new ArrayList<>(2);
109110
if (Objects.nonNull(hostCondition)) {
110111
conditionList.add(hostCondition);
111112
}
112113
conditionList.add(pathCondition);
113-
SelectorData selectorData = createSelectorData(path.getPath(), conditionList);
114+
SelectorData selectorData = createSelectorData(pathPath, conditionList);
114115
ContextMappingRuleHandle contextMappingRuleHandle = createContextMappingRuleHandle(annotations);
115116
List<RuleData> ruleDataList = new ArrayList<>();
116117
List<ConditionData> ruleConditionList = getRuleConditionList(annotations);

Diff for: shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DivideIngressParser.java

+19-9
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import io.kubernetes.client.openapi.models.V1IngressTLS;
3232
import io.kubernetes.client.openapi.models.V1Secret;
3333
import io.kubernetes.client.openapi.models.V1Service;
34+
import io.kubernetes.client.openapi.models.V1ServiceBackendPort;
3435
import org.apache.commons.collections4.CollectionUtils;
3536
import org.apache.commons.lang3.StringUtils;
3637
import org.apache.commons.lang3.tuple.Pair;
@@ -200,7 +201,8 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
200201
List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
201202
if (Objects.nonNull(paths)) {
202203
for (V1HTTPIngressPath path : paths) {
203-
if (path.getPath() == null) {
204+
String pathPath = path.getPath();
205+
if (Objects.isNull(pathPath)) {
204206
continue;
205207
}
206208

@@ -219,7 +221,7 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
219221
ConditionData pathCondition = new ConditionData();
220222
pathCondition.setOperator(operator.getAlias());
221223
pathCondition.setParamType(ParamTypeEnum.URI.getName());
222-
pathCondition.setParamValue(path.getPath());
224+
pathCondition.setParamValue(pathPath);
223225
List<ConditionData> conditionList = new ArrayList<>(2);
224226
if (Objects.nonNull(hostCondition)) {
225227
conditionList.add(hostCondition);
@@ -229,7 +231,7 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
229231
SelectorData selectorData = SelectorData.builder()
230232
.pluginId(String.valueOf(PluginEnum.DIVIDE.getCode()))
231233
.pluginName(PluginEnum.DIVIDE.getName())
232-
.name(path.getPath())
234+
.name(pathPath)
233235
.matchMode(MatchModeEnum.AND.getCode())
234236
.type(SelectorTypeEnum.CUSTOM_FLOW.getCode())
235237
.enabled(true)
@@ -251,7 +253,7 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
251253
divideRuleHandle.setRequestMaxSize(Long.parseLong(annotations.getOrDefault(IngressConstants.REQUEST_MAX_SIZE_ANNOTATION_KEY, "102400")));
252254
}
253255
RuleData ruleData = RuleData.builder()
254-
.name(path.getPath())
256+
.name(pathPath)
255257
.pluginName(PluginEnum.DIVIDE.getName())
256258
.matchMode(MatchModeEnum.AND.getCode())
257259
.conditionDataList(conditionList)
@@ -267,11 +269,19 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
267269
}
268270

269271
private String parsePort(final V1IngressServiceBackend service) {
270-
if (Objects.nonNull(service.getPort())) {
271-
if (service.getPort().getNumber() != null && service.getPort().getNumber() > 0) {
272-
return String.valueOf(service.getPort().getNumber());
273-
} else if (service.getPort().getName() != null && StringUtils.isNoneBlank(service.getPort().getName().trim())) {
274-
return service.getPort().getName().trim();
272+
V1ServiceBackendPort servicePort = service.getPort();
273+
if (Objects.nonNull(servicePort)) {
274+
Integer portNumber = servicePort.getNumber();
275+
if (Objects.nonNull(portNumber) && portNumber > 0) {
276+
return String.valueOf(portNumber);
277+
} else {
278+
String servicePortName = servicePort.getName();
279+
if (Objects.nonNull(servicePortName)) {
280+
String trim = servicePortName.trim();
281+
if (StringUtils.isNoneBlank(trim)) {
282+
return trim;
283+
}
284+
}
275285
}
276286
}
277287
return null;

Diff for: shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DubboIngressParser.java

+27-14
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import io.kubernetes.client.openapi.models.V1IngressTLS;
3232
import io.kubernetes.client.openapi.models.V1Secret;
3333
import io.kubernetes.client.openapi.models.V1Service;
34+
import io.kubernetes.client.openapi.models.V1ServiceBackendPort;
3435
import org.apache.commons.collections4.CollectionUtils;
3536
import org.apache.commons.lang3.StringUtils;
3637
import org.apache.commons.lang3.tuple.Pair;
@@ -128,13 +129,16 @@ public ShenyuMemoryConfig parse(final V1Ingress ingress, final CoreV1Api coreV1A
128129
if (Objects.nonNull(tlsList) && CollectionUtils.isNotEmpty(tlsList)) {
129130
List<SslCrtAndKeyStream> sslList = new ArrayList<>();
130131
for (V1IngressTLS tls : tlsList) {
131-
if (Objects.nonNull(tls.getSecretName()) && Objects.nonNull(tls.getHosts()) && CollectionUtils.isNotEmpty(tls.getHosts())) {
132+
List<String> hosts = tls.getHosts();
133+
String secretName = tls.getSecretName();
134+
if (Objects.nonNull(secretName) && CollectionUtils.isNotEmpty(hosts)) {
132135
try {
133-
V1Secret secret = coreV1Api.readNamespacedSecret(tls.getSecretName(), namespace, "ture");
134-
if (secret.getData() != null) {
135-
InputStream keyCertChainInputStream = new ByteArrayInputStream(secret.getData().get("tls.crt"));
136-
InputStream keyInputStream = new ByteArrayInputStream(secret.getData().get("tls.key"));
137-
tls.getHosts().forEach(host ->
136+
V1Secret secret = coreV1Api.readNamespacedSecret(secretName, namespace, "ture");
137+
Map<String, byte[]> secretData = secret.getData();
138+
if (Objects.nonNull(secretData)) {
139+
InputStream keyCertChainInputStream = new ByteArrayInputStream(secretData.get("tls.crt"));
140+
InputStream keyInputStream = new ByteArrayInputStream(secretData.get("tls.key"));
141+
hosts.forEach(host ->
138142
sslList.add(new SslCrtAndKeyStream(host, keyCertChainInputStream, keyInputStream))
139143
);
140144
}
@@ -186,11 +190,19 @@ private List<DubboUpstream> getDefaultDubboRouteConfig(final V1IngressBackend de
186190
}
187191

188192
private String parsePort(final V1IngressServiceBackend service) {
189-
if (Objects.nonNull(service.getPort())) {
190-
if (service.getPort().getNumber() != null && service.getPort().getNumber() > 0) {
191-
return String.valueOf(service.getPort().getNumber());
192-
} else if (service.getPort().getName() != null && StringUtils.isNoneBlank(service.getPort().getName().trim())) {
193-
return service.getPort().getName().trim();
193+
V1ServiceBackendPort servicePort = service.getPort();
194+
if (Objects.nonNull(servicePort)) {
195+
Integer portNumber = servicePort.getNumber();
196+
if (Objects.nonNull(portNumber) && portNumber > 0) {
197+
return String.valueOf(portNumber);
198+
} else {
199+
String servicePortName = servicePort.getName();
200+
if (Objects.nonNull(servicePortName)) {
201+
String trim = servicePortName.trim();
202+
if (StringUtils.isNoneBlank(trim)) {
203+
return trim;
204+
}
205+
}
194206
}
195207
}
196208
return null;
@@ -207,11 +219,12 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
207219
List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
208220
if (Objects.nonNull(paths)) {
209221
for (V1HTTPIngressPath path : paths) {
210-
if (path.getPath() == null) {
222+
String pathPath = path.getPath();
223+
if (Objects.isNull(pathPath)) {
211224
continue;
212225
}
213226
OperatorEnum operator = getOperator(path.getPathType());
214-
ConditionData pathCondition = createPathCondition(path.getPath(), operator);
227+
ConditionData pathCondition = createPathCondition(pathPath, operator);
215228
List<ConditionData> conditionList = new ArrayList<>(2);
216229
if (Objects.nonNull(hostCondition)) {
217230
conditionList.add(hostCondition);
@@ -222,7 +235,7 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
222235
if (upstreamList.isEmpty()) {
223236
upstreamList = dubboUpstreamList;
224237
}
225-
SelectorData selectorData = createSelectorData(path.getPath(), conditionList, upstreamList);
238+
SelectorData selectorData = createSelectorData(pathPath, conditionList, upstreamList);
226239
List<RuleData> ruleDataList = new ArrayList<>();
227240
List<MetaData> metaDataList = new ArrayList<>();
228241
for (String label : labels.keySet()) {

Diff for: shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/GrpcParser.java

+15-8
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import io.kubernetes.client.openapi.models.V1IngressTLS;
3232
import io.kubernetes.client.openapi.models.V1Secret;
3333
import io.kubernetes.client.openapi.models.V1Service;
34+
import io.kubernetes.client.openapi.models.V1ServiceBackendPort;
3435
import org.apache.commons.collections4.CollectionUtils;
3536
import org.apache.commons.lang3.StringUtils;
3637
import org.apache.commons.lang3.tuple.Pair;
@@ -210,11 +211,16 @@ private List<GrpcUpstream> parseUpstream(final V1IngressBackend backend, final S
210211
}
211212

212213
private String parsePort(final V1IngressServiceBackend service) {
213-
if (Objects.nonNull(service.getPort())) {
214-
if (service.getPort().getNumber() != null && service.getPort().getNumber() > 0) {
215-
return String.valueOf(service.getPort().getNumber());
216-
} else if (service.getPort().getName() != null && StringUtils.isNoneBlank(service.getPort().getName().trim())) {
217-
return service.getPort().getName().trim();
214+
V1ServiceBackendPort servicePort = service.getPort();
215+
if (Objects.nonNull(servicePort)) {
216+
Integer portNumber = servicePort.getNumber();
217+
if (Objects.nonNull(portNumber) && portNumber > 0) {
218+
return String.valueOf(portNumber);
219+
} else {
220+
String servicePortName = servicePort.getName();
221+
if (Objects.nonNull(servicePortName) && StringUtils.isNoneBlank(servicePortName.trim())) {
222+
return servicePortName.trim();
223+
}
218224
}
219225
}
220226
return null;
@@ -230,19 +236,20 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
230236
List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
231237
if (Objects.nonNull(paths)) {
232238
for (V1HTTPIngressPath path : paths) {
233-
if (path.getPath() == null) {
239+
String pathPath = path.getPath();
240+
if (Objects.isNull(pathPath)) {
234241
continue;
235242
}
236243
OperatorEnum operator = getOperator(path.getPathType());
237-
ConditionData pathCondition = createPathCondition(path.getPath(), operator);
244+
ConditionData pathCondition = createPathCondition(pathPath, operator);
238245
List<ConditionData> conditionList = new ArrayList<>(2);
239246
if (Objects.nonNull(hostCondition)) {
240247
conditionList.add(hostCondition);
241248
}
242249
conditionList.add(pathCondition);
243250
List<GrpcUpstream> grpcUpstreamList = parseUpstream(path.getBackend(), namespace);
244251

245-
SelectorData selectorData = createSelectorData(path.getPath(), conditionList, grpcUpstreamList);
252+
SelectorData selectorData = createSelectorData(pathPath, conditionList, grpcUpstreamList);
246253
List<RuleData> ruleDataList = new ArrayList<>();
247254
List<MetaData> metaDataList = new ArrayList<>();
248255
for (String label : labels.keySet()) {

Diff for: shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
import java.util.ArrayList;
3434
import java.util.List;
35+
import java.util.Objects;
3536

3637
/**
3738
* Parser of Ingress.
@@ -103,7 +104,7 @@ public List<ShenyuMemoryConfig> parse(final V1Ingress ingress, final CoreV1Api c
103104

104105
private boolean getBooleanAnnotation(final V1Ingress ingress, final String annotationKey) {
105106
String annotationValue = ingress.getMetadata().getAnnotations().get(annotationKey);
106-
return annotationValue != null && Boolean.parseBoolean(annotationValue);
107+
return Objects.nonNull(annotationValue) && Boolean.parseBoolean(annotationValue);
107108
}
108109

109110
private void contextPathParse(final V1Ingress ingress, final List<ShenyuMemoryConfig> shenyuMemoryConfigList, final CoreV1Api coreV1Api) {

Diff for: shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/MotanIngressParser.java

+10-7
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,15 @@ public ShenyuMemoryConfig parse(final V1Ingress ingress, final CoreV1Api coreV1A
115115
if (Objects.nonNull(tlsList) && CollectionUtils.isNotEmpty(tlsList)) {
116116
List<SslCrtAndKeyStream> sslList = new ArrayList<>();
117117
for (V1IngressTLS tls : tlsList) {
118-
if (tls.getSecretName() != null && tls.getHosts() != null && CollectionUtils.isNotEmpty(tls.getHosts())) {
118+
String secretName = tls.getSecretName();
119+
List<String> hosts = tls.getHosts();
120+
if (Objects.nonNull(secretName) && CollectionUtils.isNotEmpty(hosts)) {
119121
try {
120-
V1Secret secret = coreV1Api.readNamespacedSecret(tls.getSecretName(), namespace, "ture");
122+
V1Secret secret = coreV1Api.readNamespacedSecret(secretName, namespace, "ture");
121123
if (Objects.nonNull(secret.getData())) {
122124
InputStream keyCertChainInputStream = new ByteArrayInputStream(secret.getData().get("tls.crt"));
123125
InputStream keyInputStream = new ByteArrayInputStream(secret.getData().get("tls.key"));
124-
tls.getHosts().forEach(host ->
126+
hosts.forEach(host ->
125127
sslList.add(new SslCrtAndKeyStream(host, keyCertChainInputStream, keyInputStream))
126128
);
127129
}
@@ -153,7 +155,8 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
153155
List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
154156
if (Objects.nonNull(paths)) {
155157
for (V1HTTPIngressPath path : paths) {
156-
if (path.getPath() == null) {
158+
String pathPath = path.getPath();
159+
if (Objects.isNull(pathPath)) {
157160
continue;
158161
}
159162

@@ -172,7 +175,7 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
172175
ConditionData pathCondition = new ConditionData();
173176
pathCondition.setOperator(operator.getAlias());
174177
pathCondition.setParamType(ParamTypeEnum.URI.getName());
175-
pathCondition.setParamValue(path.getPath());
178+
pathCondition.setParamValue(pathPath);
176179
List<ConditionData> conditionList = new ArrayList<>(2);
177180
if (Objects.nonNull(hostCondition)) {
178181
conditionList.add(hostCondition);
@@ -181,14 +184,14 @@ private List<IngressConfiguration> parseIngressRule(final V1IngressRule ingressR
181184
ConditionData ruleConditionData = new ConditionData();
182185
ruleConditionData.setParamType(ParamTypeEnum.URI.getName());
183186
ruleConditionData.setOperator(OperatorEnum.EQ.getAlias());
184-
ruleConditionData.setParamName(annotations.getOrDefault(IngressConstants.PLUGIN_MOTAN_PATH, path.getPath()));
187+
ruleConditionData.setParamName(annotations.getOrDefault(IngressConstants.PLUGIN_MOTAN_PATH, pathPath));
185188
List<ConditionData> ruleConditionDataList = new ArrayList<>();
186189
ruleConditionDataList.add(ruleConditionData);
187190

188191
SelectorData selectorData = SelectorData.builder()
189192
.pluginId(String.valueOf(PluginEnum.MOTAN.getCode()))
190193
.pluginName(PluginEnum.MOTAN.getName())
191-
.name(path.getPath())
194+
.name(pathPath)
192195
.matchMode(MatchModeEnum.AND.getCode())
193196
.type(SelectorTypeEnum.CUSTOM_FLOW.getCode())
194197
.enabled(true)

0 commit comments

Comments
 (0)