[Improve]Improve flink env check method (#3461)
* [Improve] improve hard code in FlinkEnvServiceImpl
* improve front end hard code and back end check method
* improve check method return type
* improve front end check method logic
* improve message support i18n
* improve i18n error message
---------
Co-authored-by: benjobs <benjobs@apache.org>
diff --git a/streampark-common/src/main/java/org/apache/streampark/common/enums/FlinkEnvStatus.java b/streampark-common/src/main/java/org/apache/streampark/common/enums/FlinkEnvStatus.java
new file mode 100644
index 0000000..8e47123
--- /dev/null
+++ b/streampark-common/src/main/java/org/apache/streampark/common/enums/FlinkEnvStatus.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.streampark.common.enums;
+
+/* the flink environment status */
+public enum FlinkEnvStatus {
+
+ /* FLINK_HOME path invalid */
+ INVALID(-1),
+
+ /* this add/update operation are feasible */
+ FEASIBLE(0),
+
+ /* defined flink name repeated */
+ NAME_REPEATED(1),
+
+ /* dist Jar more than one */
+ FLINK_DIST_REPEATED(2);
+
+ private final int code;
+
+ FlinkEnvStatus(int code) {
+ this.code = code;
+ }
+
+ public int getCode() {
+ return code;
+ }
+}
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/FlinkEnvController.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/FlinkEnvController.java
index 1c0e794..c8304b7 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/FlinkEnvController.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/FlinkEnvController.java
@@ -17,6 +17,7 @@
package org.apache.streampark.console.core.controller;
+import org.apache.streampark.common.enums.FlinkEnvStatus;
import org.apache.streampark.console.base.domain.RestResponse;
import org.apache.streampark.console.base.exception.ApiDetailException;
import org.apache.streampark.console.core.entity.FlinkEnv;
@@ -52,8 +53,8 @@
@Operation(summary = "Verify flink environment")
@PostMapping("check")
public RestResponse check(FlinkEnv version) {
- Integer checkResp = flinkEnvService.check(version);
- return RestResponse.success(checkResp);
+ FlinkEnvStatus checkResp = flinkEnvService.check(version);
+ return RestResponse.success(checkResp.getCode());
}
@Operation(summary = "Create flink environment")
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/FlinkEnvService.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/FlinkEnvService.java
index 4a0b9bd..02bc04c 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/FlinkEnvService.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/FlinkEnvService.java
@@ -17,6 +17,7 @@
package org.apache.streampark.console.core.service;
+import org.apache.streampark.common.enums.FlinkEnvStatus;
import org.apache.streampark.console.core.entity.FlinkEnv;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -29,11 +30,9 @@
* Checks if a specific version of Flink exists.
*
* @param version The version of Flink to check.
- * @return Returns an Integer value indicating the existence of the specified version: - 0 if the
- * version exists - 1 if the version does not exist - null if the version is invalid or an
- * error occurred during the check
+ * @return Returns enum value indicating the existence of the specified version.
*/
- Integer check(FlinkEnv version);
+ FlinkEnvStatus check(FlinkEnv version);
/**
* Create a new instance.
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkEnvServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkEnvServiceImpl.java
index 55522fc..1878e63 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkEnvServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkEnvServiceImpl.java
@@ -17,6 +17,7 @@
package org.apache.streampark.console.core.service.impl;
+import org.apache.streampark.common.enums.FlinkEnvStatus;
import org.apache.streampark.console.base.exception.ApiAlertException;
import org.apache.streampark.console.core.entity.FlinkEnv;
import org.apache.streampark.console.core.mapper.FlinkEnvMapper;
@@ -49,11 +50,9 @@
* two places will be checked: <br>
* 1) name repeated <br>
* 2) flink-dist repeated <br>
- * -1) invalid path <br>
- * 0) ok <br>
*/
@Override
- public Integer check(FlinkEnv version) {
+ public FlinkEnvStatus check(FlinkEnv version) {
// 1) check name
LambdaQueryWrapper<FlinkEnv> queryWrapper =
new LambdaQueryWrapper<FlinkEnv>().eq(FlinkEnv::getFlinkName, version.getFlinkName());
@@ -61,7 +60,7 @@
queryWrapper.ne(FlinkEnv::getId, version.getId());
}
if (this.count(queryWrapper) > 0) {
- return 1;
+ return FlinkEnvStatus.NAME_REPEATED;
}
// 2) check dist_jar
@@ -70,12 +69,12 @@
if (flinkLib.exists() && flinkLib.isDirectory()) {
int distSize = flinkLib.listFiles(f -> f.getName().matches("flink-dist.*\\.jar")).length;
if (distSize > 1) {
- return 2;
+ return FlinkEnvStatus.FLINK_DIST_REPEATED;
}
} else {
- return -1;
+ return FlinkEnvStatus.INVALID;
}
- return 0;
+ return FlinkEnvStatus.FEASIBLE;
}
@Override
diff --git a/streampark-console/streampark-console-webapp/src/enums/flinkEnum.ts b/streampark-console/streampark-console-webapp/src/enums/flinkEnum.ts
index b0b2f83..7a2359c 100644
--- a/streampark-console/streampark-console-webapp/src/enums/flinkEnum.ts
+++ b/streampark-console/streampark-console-webapp/src/enums/flinkEnum.ts
@@ -234,3 +234,10 @@
IN_KUBERNETES = 3,
INVALID = 4,
}
+
+export enum FlinkEvnEnum {
+ INVALID = -1,
+ FEASIBLE = 0,
+ NAME_REPEATED = 1,
+ FLINK_DIST_REPEATED = 2,
+}
diff --git a/streampark-console/streampark-console-webapp/src/locales/lang/en/setting/flinkHome.ts b/streampark-console/streampark-console-webapp/src/locales/lang/en/setting/flinkHome.ts
index 107d419..e4b2f77 100644
--- a/streampark-console/streampark-console-webapp/src/locales/lang/en/setting/flinkHome.ts
+++ b/streampark-console/streampark-console-webapp/src/locales/lang/en/setting/flinkHome.ts
@@ -32,6 +32,7 @@
flinkNameIsRequired: 'flink name is required',
flinkHomeTips: 'The absolute path of the FLINK_HOME',
flinkHomeIsRequired: 'flink home is required',
+ flinkDistIsRepeated: 'FLINK_HOME error: can no found flink-dist or found multiple flink-dist.',
createFlinkHomeSuccessful: ' create successful!',
updateFlinkHomeSuccessful: ' update successful!',
},
diff --git a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/setting/flinkHome.ts b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/setting/flinkHome.ts
index e1b5895..20c1f75 100644
--- a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/setting/flinkHome.ts
+++ b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/setting/flinkHome.ts
@@ -28,10 +28,11 @@
descriptionPlaceholder: 'Flink描述',
operateMessage: {
flinkNameTips: 'Flink别名,举例: Flink-1.12',
- flinkNameIsUnique: 'Flink名称已存在',
+ flinkNameIsRepeated: 'Flink名称已存在',
flinkNameIsRequired: 'Flink名称必填',
flinkHomeTips: 'Flink所在服务器的绝对路径,举例: /usr/local/flink',
flinkHomeIsRequired: 'Flink安装路径必填',
+ flinkDistIsRepeated: 'flink/lib 路径下有且只能有一个flink-dist jar文件,当前未找到或找到多个,请检查!',
createFlinkHomeSuccessful: ' 创建成功!',
updateFlinkHomeSuccessful: ' 更新成功!',
},
diff --git a/streampark-console/streampark-console-webapp/src/views/flink/home/components/Modal.vue b/streampark-console/streampark-console-webapp/src/views/flink/home/components/Modal.vue
index 6f04790..1cd7264 100644
--- a/streampark-console/streampark-console-webapp/src/views/flink/home/components/Modal.vue
+++ b/streampark-console/streampark-console-webapp/src/views/flink/home/components/Modal.vue
@@ -29,7 +29,7 @@
import { BasicModal, useModalInner } from '/@/components/Modal';
import { useMessage } from '/@/hooks/web/useMessage';
import { fetchCheckEnv, fetchFlinkCreate, fetchFlinkUpdate } from '/@/api/flink/flinkEnv';
-
+ import { FlinkEvnEnum } from '/@/enums/flinkEnum';
const emit = defineEmits(['reload', 'register']);
const versionId = ref<string | null>(null);
const { t } = useI18n();
@@ -100,18 +100,16 @@
flinkHome: formValue.flinkHome,
});
const checkResp = parseInt(resp.data);
- if (checkResp != 0) {
- // Environment detection is successful
- if (checkResp == -1) {
- Swal.fire('Failed', 'FLINK_HOME invalid path.', 'error');
- } else if (checkResp == 1) {
- Swal.fire('Failed', t('setting.flinkHome.operateMessage.flinkNameIsUnique'), 'error');
- } else if (checkResp == 2) {
- Swal.fire(
- 'Failed',
- 'can no found flink-dist or found multiple flink-dist, FLINK_HOME error.',
- 'error',
- );
+ if (checkResp !== FlinkEvnEnum.FEASIBLE) {
+ switch (checkResp) {
+ case FlinkEvnEnum.INVALID:
+ Swal.fire('Failed', t('setting.flinkHome.operateMessage.flinkHomePathIsInvalid'), 'error');
+ break;
+ case FlinkEvnEnum.NAME_REPEATED:
+ Swal.fire('Failed', t('setting.flinkHome.operateMessage.flinkNameIsRepeated'), 'error');
+ break;
+ case FlinkEvnEnum.FLINK_DIST_REPEATED:
+ Swal.fire('Failed', t('setting.flinkHome.operateMessage.flinkDistIsRepeated'), 'error');
}
changeOkLoading(false);
return;