Skip to content

Commit e662e47

Browse files
wolfboysbenjobs
and
benjobs
authored
[Improve] FE job dependency component improvements (#3373)
* [Improve] FE job dependency component improvements * [Improve] MavenTool support mirror|proxy * [Improve] FE dependency component get latest value bug fixed * [Improve] resolve maven artifacts bug fixed. --------- Co-authored-by: benjobs <[email protected]>
1 parent 5d381d8 commit e662e47

File tree

14 files changed

+126
-55
lines changed

14 files changed

+126
-55
lines changed

.mvn/wrapper/MavenWrapperHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ protected PasswordAuthentication getPasswordAuthentication() {
9898
log(" - Downloader complete");
9999
}
100100

101-
public static String getFileMd5(String path) throws Exception {
101+
private static String getFileMd5(String path) throws Exception {
102102
MessageDigest md5 = MessageDigest.getInstance("MD5");
103103
try (FileInputStream inputStream = new FileInputStream(path)) {
104104
byte[] buffer = new byte[1024];

streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Application.java

+6
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,12 @@ public boolean isCustomCodeJob() {
462462
return DevelopmentMode.CUSTOM_CODE.getValue().equals(this.getJobType());
463463
}
464464

465+
@JsonIgnore
466+
public boolean isApacheFlinkCustomCodeJob() {
467+
return DevelopmentMode.CUSTOM_CODE.getValue().equals(this.getJobType())
468+
&& getApplicationType() == ApplicationType.APACHE_FLINK;
469+
}
470+
465471
@JsonIgnore
466472
public boolean isUploadJob() {
467473
return isCustomCodeJob() && ResourceFrom.UPLOAD.getValue().equals(this.getResourceFrom());

streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ private void prepareJars(Application app) throws IOException {
378378

379379
FsOperator localFS = FsOperator.lfs();
380380
// 1. copy jar to local upload dir
381-
if (app.isFlinkSqlJob() || app.isUploadJob()) {
381+
if (app.isFlinkSqlJob() || app.isApacheFlinkCustomCodeJob()) {
382382
if (!app.getMavenDependency().getJar().isEmpty()) {
383383
for (String jar : app.getMavenDependency().getJar()) {
384384
File localJar = new File(WebUtils.getAppTempDir(), jar);
@@ -393,7 +393,7 @@ private void prepareJars(Application app) throws IOException {
393393
}
394394
}
395395

396-
if (app.isCustomCodeJob()) {
396+
if (app.isApacheFlinkCustomCodeJob()) {
397397
// customCode upload jar to appHome...
398398
FsOperator fsOperator = app.getFsOperator();
399399
ResourceFrom resourceFrom = ResourceFrom.of(app.getResourceFrom());
@@ -437,7 +437,15 @@ private void prepareJars(Application app) throws IOException {
437437
if (!app.getMavenDependency().getPom().isEmpty()) {
438438
Set<Artifact> artifacts =
439439
app.getMavenDependency().getPom().stream()
440-
.filter(x -> !new File(localUploadDIR, x.artifactName()).exists())
440+
.filter(
441+
dep -> {
442+
File file = new File(localUploadDIR, dep.artifactName());
443+
if (file.exists()) {
444+
dependencyJars.add(file);
445+
return false;
446+
}
447+
return true;
448+
})
441449
.map(
442450
pom ->
443451
new Artifact(

streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@ public boolean update(Application appParam) {
852852

853853
application.setRelease(ReleaseState.NEED_RELEASE.get());
854854

855-
if (application.isUploadJob()) {
855+
if (application.isApacheFlinkCustomCodeJob()) {
856856
MavenDependency thisDependency = MavenDependency.of(appParam.getDependency());
857857
MavenDependency targetDependency = MavenDependency.of(application.getDependency());
858858

streampark-console/streampark-console-webapp/src/views/flink/app/Add.vue

+4-3
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,9 @@
201201
} else {
202202
params['jar'] = values.jar || null;
203203
params['mainClass'] = values.mainClass || null;
204+
params['dependency'] = await getDependency();
204205
}
205-
handleCreateApp(params);
206+
await handleCreateApp(params);
206207
} else {
207208
// from upload
208209
Object.assign(params, {
@@ -212,13 +213,13 @@
212213
mainClass: values.mainClass,
213214
dependency: await getDependency(),
214215
});
215-
handleCreateApp(params);
216+
await handleCreateApp(params);
216217
}
217218
}
218219
}
219220
async function getDependency() {
220221
// Trigger a pom confirmation operation.
221-
unref(dependencyRef)?.handleApplyPom();
222+
await unref(dependencyRef)?.handleApplyPom();
222223
// common params...
223224
const dependency: { pom?: string; jar?: string } = {};
224225
const dependencyRecords = unref(dependencyRef)?.dependencyRecords;

streampark-console/streampark-console-webapp/src/views/flink/app/EditFlink.vue

+3-3
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,9 @@
144144
}
145145

146146
/* Handling update parameters */
147-
function handleAppUpdate(values: Recordable) {
147+
async function handleAppUpdate(values: Recordable) {
148148
// Trigger a pom confirmation operation.
149-
unref(dependencyRef)?.handleApplyPom();
149+
await unref(dependencyRef)?.handleApplyPom();
150150
// common params...
151151
const dependency: { pom?: string; jar?: string } = {};
152152
const dependencyRecords = unref(dependencyRef)?.dependencyRecords;
@@ -173,7 +173,7 @@
173173
: JSON.stringify(dependency),
174174
};
175175
handleSubmitParams(params, values, k8sTemplate);
176-
handleUpdateApp(params);
176+
await handleUpdateApp(params);
177177
} catch (error) {
178178
submitLoading.value = false;
179179
}

streampark-console/streampark-console-webapp/src/views/flink/app/EditStreamPark.vue

+3-3
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,10 @@
176176
}
177177
}
178178

179-
function handleSubmitSQL(values: Recordable) {
179+
async function handleSubmitSQL(values: Recordable) {
180180
try {
181181
// Trigger a pom confirmation operation.
182-
unref(dependencyRef)?.handleApplyPom();
182+
await unref(dependencyRef)?.handleApplyPom();
183183
// common params...
184184
const dependency: { pom?: string; jar?: string } = {};
185185
const dependencyRecords = unref(dependencyRef)?.dependencyRecords;
@@ -212,7 +212,7 @@
212212
: JSON.stringify(dependency),
213213
};
214214
handleSubmitParams(params, values, k8sTemplate);
215-
handleUpdateApp(params);
215+
await handleUpdateApp(params);
216216
} catch (error) {
217217
createMessage.error('edit error');
218218
submitLoading.value = false;

streampark-console/streampark-console-webapp/src/views/flink/app/components/Dependency.vue

+5-5
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
const { t } = useI18n();
7676
const defaultValue = '';
7777
const { Swal } = useMessage();
78-
const { onChange, setContent } = useMonaco(pomBox, {
78+
const { onChange, setContent, getContent } = useMonaco(pomBox, {
7979
language: 'xml',
8080
code: props.value || defaultValue,
8181
options: {
@@ -106,7 +106,8 @@
106106
const classifierExp = /<classifier>([\s\S]*?)<\/classifier>/;
107107
const exclusionsExp = /<exclusions>([\s\S]*?)<\/exclusions>/;
108108
const invalidArtifact: Array<string> = [];
109-
props.value
109+
const propsValue = await getContent();
110+
propsValue
110111
.split('</dependency>')
111112
.filter((x) => x.replace(/\\s+/, '') !== '')
112113
.forEach((dep) => {
@@ -217,8 +218,7 @@
217218
/* load history config records */
218219
async function handleReloadHistoryUploads() {
219220
selectedHistoryUploadJars.value = [];
220-
const res = await fetchUploadJars();
221-
historyUploadJars.value = res;
221+
historyUploadJars.value = await fetchUploadJars();
222222
}
223223

224224
const filteredHistoryUploadJarsOptions = computed(() => {
@@ -291,7 +291,7 @@
291291
<Tabs type="card" v-model:activeKey="activeTab" class="pom-card">
292292
<TabPane key="pom" tab="Maven pom">
293293
<div class="relative">
294-
<div ref="pomBox" class="pom-box syntax-true" style="height: 300px"></div>
294+
<div ref="pomBox" class="pom-box syntax-true" style="height: 330px"></div>
295295
<a-button type="primary" class="apply-pom" @click="handleApplyPom()">
296296
{{ t('common.apply') }}
297297
</a-button>

streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateAndEditSchema.ts

+1-22
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,7 @@ import { fetchFlinkEnv } from '/@/api/flink/setting/flinkEnv';
4949
import { FlinkEnv } from '/@/api/flink/setting/types/flinkEnv.type';
5050
import { AlertSetting } from '/@/api/flink/setting/types/alert.type';
5151
import { FlinkCluster } from '/@/api/flink/setting/types/flinkCluster.type';
52-
import {
53-
AppTypeEnum,
54-
ClusterStateEnum,
55-
ExecModeEnum,
56-
JobTypeEnum,
57-
ResourceFromEnum,
58-
} from '/@/enums/flinkEnum';
52+
import { AppTypeEnum, ClusterStateEnum, ExecModeEnum, JobTypeEnum } from '/@/enums/flinkEnum';
5953
import { isK8sExecMode } from '../utils';
6054
import { useI18n } from '/@/hooks/web/useI18n';
6155
import { fetchCheckHadoop } from '/@/api/flink/setting';
@@ -125,21 +119,6 @@ export const useCreateAndEditSchema = (
125119
},
126120
rules: [{ required: true, message: t('flink.app.addAppTips.flinkSqlIsRequiredMessage') }],
127121
},
128-
{
129-
field: 'dependency',
130-
label: t('flink.app.dependency'),
131-
component: 'Input',
132-
slot: 'dependency',
133-
ifShow: ({ values }) => {
134-
if (edit?.appId) {
135-
return values.jobType == JobTypeEnum.SQL
136-
? true
137-
: values.resourceFrom == ResourceFromEnum.UPLOAD;
138-
} else {
139-
return values?.jobType == 'sql' ? true : values?.resourceFrom != 'cvs';
140-
}
141-
},
142-
},
143122
{ field: 'configOverride', label: '', component: 'Input', show: false },
144123
{
145124
field: 'isSetConfig',

streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateSchema.ts

+9
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,15 @@ export const useCreateSchema = (dependencyRef: Ref) => {
242242
values.appType == String(AppTypeEnum.APACHE_FLINK),
243243
rules: [{ required: true, message: t('flink.app.addAppTips.mainClassIsRequiredMessage') }],
244244
},
245+
{
246+
field: 'dependency',
247+
label: t('flink.app.dependency'),
248+
component: 'Input',
249+
slot: 'dependency',
250+
ifShow: ({ values }) => {
251+
return values?.jobType == 'sql' ? true : values?.appType == AppTypeEnum.APACHE_FLINK;
252+
},
253+
},
245254
{
246255
field: 'config',
247256
label: t('flink.app.appConf'),

streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useEditStreamPark.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
import { FormSchema } from '/@/components/Table';
1818
import { computed, h, Ref, ref, unref } from 'vue';
19-
import { ExecModeEnum, JobTypeEnum, UseStrategyEnum } from '/@/enums/flinkEnum';
19+
import { AppTypeEnum, ExecModeEnum, JobTypeEnum, UseStrategyEnum } from '/@/enums/flinkEnum';
2020
import { useCreateAndEditSchema } from './useCreateAndEditSchema';
2121
import { renderSqlHistory } from './useFlinkRender';
2222
import { Alert } from 'ant-design-vue';
@@ -141,14 +141,24 @@ export const useEditStreamParkSchema = (
141141
ifShow: ({ model, values }) => values.jobType != JobTypeEnum.SQL && model.projectName,
142142
},
143143
{ field: 'project', label: 'ProjectId', component: 'Input', show: false },
144-
145144
{
146145
field: 'module',
147146
label: 'Application',
148147
component: 'Input',
149148
render: ({ model }) => h(Alert, { message: model.module, type: 'info' }),
150149
ifShow: ({ model, values }) => values.jobType != JobTypeEnum.SQL && model.module,
151150
},
151+
{
152+
field: 'dependency',
153+
label: t('flink.app.dependency'),
154+
component: 'Input',
155+
slot: 'dependency',
156+
ifShow: ({ values }) => {
157+
return values.jobType == JobTypeEnum.SQL
158+
? true
159+
: values?.appType == AppTypeEnum.APACHE_FLINK;
160+
},
161+
},
152162
{ field: 'configId', label: 'configId', component: 'Input', show: false },
153163
{ field: 'config', label: '', component: 'Input', show: false },
154164
{ field: 'strategy', label: '', component: 'Input', show: false },

streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useFlinkRender.tsx

+9-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import { handleConfTemplate } from '/@/api/flink/config';
3939
import { decodeByBase64 } from '/@/utils/cipher';
4040
import { useMessage } from '/@/hooks/web/useMessage';
4141
import { SelectValue } from 'ant-design-vue/lib/select';
42-
import { CandidateTypeEnum, FailoverStrategyEnum } from '/@/enums/flinkEnum';
42+
import { AppTypeEnum, CandidateTypeEnum, FailoverStrategyEnum } from '/@/enums/flinkEnum';
4343
import { useI18n } from '/@/hooks/web/useI18n';
4444
import { fetchYarnQueueList } from '/@/api/flink/setting/yarnQueue';
4545
import { ApiSelect } from '/@/components/Form';
@@ -507,10 +507,17 @@ export const renderCompareSelectTag = (ver: any) => {
507507
);
508508
};
509509

510+
function handleResourceFrom(model: Recordable, value: string) {
511+
model.resourceFrom = value;
512+
if (value == 'upload') {
513+
model.appType = String(AppTypeEnum.APACHE_FLINK);
514+
}
515+
}
516+
510517
export const renderResourceFrom = (model: Recordable) => {
511518
return (
512519
<Select
513-
onChange={(value: string) => (model.resourceFrom = value)}
520+
onChange={(value: string) => handleResourceFrom(model, value)}
514521
value={model.resourceFrom}
515522
placeholder="Please select resource from"
516523
>

streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less

-2
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
}
2929
}
3030

31-
.sql-box,
3231
.pom-box {
33-
height: 550px;
3432
width: 100%;
3533
overflow: hidden;
3634
}

0 commit comments

Comments
 (0)