Skip to content

Commit 71cf8d1

Browse files
authored
[CYB-193][UI] Landing page for pipelines. (#81)
1 parent dcf2ea3 commit 71cf8d1

File tree

119 files changed

+2995
-2284
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+2995
-2284
lines changed

flink-cyber/cyber-jobs/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@
9191
<version>${project.parent.version}</version>
9292
<scope>provided</scope>
9393
</dependency>
94+
<dependency>
95+
<groupId>com.cloudera.cyber</groupId>
96+
<artifactId>cyber-worker-service</artifactId>
97+
<version>${project.parent.version}</version>
98+
<scope>provided</scope>
99+
</dependency>
94100
</dependencies>
95101

96102
<build>

flink-cyber/cyber-jobs/src/main/assemblies/cloudera.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,13 @@
8787
<fileMode>0644</fileMode>
8888
</file>
8989

90+
<file>
91+
<source>../cyber-services/cyber-worker-service/target/cyber-worker-service-${project.version}.jar</source>
92+
<outputDirectory>jobs/</outputDirectory>
93+
<destName>cyber-worker-service-${cybersec.full.version}.jar</destName>
94+
<fileMode>0644</fileMode>
95+
</file>
96+
9097
<file>
9198
<source>../flink-commands/scoring-commands/target/scoring-commands-${project.version}.jar</source>
9299
<outputDirectory>tools/</outputDirectory>

flink-cyber/cyber-services/cyber-service-common/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,10 @@
4848
<groupId>org.springframework.boot</groupId>
4949
<artifactId>spring-boot-autoconfigure</artifactId>
5050
</dependency>
51+
<dependency>
52+
<groupId>org.apache.flink</groupId>
53+
<artifactId>flink-core</artifactId>
54+
<scope>provided</scope>
55+
</dependency>
5156
</dependencies>
5257
</project>

flink-cyber/cyber-services/cyber-service-common/src/main/java/com/cloudera/service/common/request/RequestBody.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,18 @@
55
import lombok.Data;
66
import lombok.NoArgsConstructor;
77

8+
import java.util.List;
9+
810
@Data
911
@Builder
1012
@NoArgsConstructor
1113
@AllArgsConstructor
1214
public class RequestBody {
1315
private String clusterServiceId;
1416
private String jobIdHex;
15-
private String pipelineDir;
17+
private String pipelineName;
1618
private String branch;
19+
private String profileName;
20+
private List<String> jobs;
1721
private byte[] payload;
1822
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package com.cloudera.service.common.request;
22

33
public enum RequestType {
4-
GET_ALL_CLUSTERS_SERVICE_REQUEST, GET_CLUSTER_SERVICE_REQUEST, START_JOB_REQUEST, RESTART_JOB_REQUEST, STOP_JOB_REQUEST, GET_JOB_CONFIG_REQUEST, UPDATE_JOB_CONFIG_REQUEST
4+
GET_ALL_CLUSTERS_SERVICE_REQUEST, GET_CLUSTER_SERVICE_REQUEST, START_JOB_REQUEST, RESTART_JOB_REQUEST, STOP_JOB_REQUEST, GET_JOB_CONFIG_REQUEST, CREATE_EMPTY_PIPELINE, START_ARCHIVE_PIPELINE, UPDATE_JOB_CONFIG_REQUEST
55
}

flink-cyber/cyber-services/cyber-service-common/src/main/java/com/cloudera/service/common/response/Job.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public class Job {
3131

3232
private JobType jobType;
3333

34+
private String user;
35+
3436
@AllArgsConstructor
3537
@Getter
3638
public enum JobType {
@@ -46,7 +48,6 @@ public enum JobType {
4648

4749
public String[] getScript(Job job) {
4850
switch (this) {
49-
case GENERATOR:
5051
case PROFILE:
5152
case PARSER:
5253
return new String[]{scriptName, job.getJobBranch(), job.getJobPipeline(), job.getJobName()};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.cloudera.service.common.response;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
@Data
9+
@Builder
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
public class Pipeline {
13+
String id;
14+
String name;
15+
String clusterName;
16+
String date;
17+
String userName;
18+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package com.cloudera.service.common.response;
22

33
public enum ResponseType {
4-
GET_ALL_CLUSTERS_SERVICE_RESPONSE, GET_CLUSTER_SERVICE_RESPONSE, START_JOB_RESPONSE, RESTART_JOB_RESPONSE, STOP_JOB_RESPONSE, GET_JOB_CONFIG_RESPONSE, UPDATE_JOB_CONFIG_RESPONSE, ERROR_RESPONSE
4+
GET_ALL_CLUSTERS_SERVICE_RESPONSE, GET_CLUSTER_SERVICE_RESPONSE, START_JOB_RESPONSE, RESTART_JOB_RESPONSE, STOP_JOB_RESPONSE, GET_JOB_CONFIG_RESPONSE, UPDATE_JOB_CONFIG_RESPONSE, CREATE_EMPTY_PIPELINE_RESPONSE, START_ARCHIVE_PIPELINE_RESPONSE, ERROR_RESPONSE
55
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.cloudera.cyber.restcli.configuration;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
import org.springframework.boot.context.properties.ConfigurationProperties;
6+
import org.springframework.context.annotation.Configuration;
7+
8+
@Configuration
9+
@ConfigurationProperties(prefix = "cluster")
10+
@Getter
11+
@Setter
12+
public class AppWorkerConfig {
13+
private String name;
14+
private String id;
15+
private String status;
16+
private String version;
17+
private String pipelineDir;
18+
}

flink-cyber/cyber-services/cyber-worker-service/src/main/java/com/cloudera/cyber/restcli/controller/KafkaListenerController.java

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.cloudera.cyber.restcli.controller;
22

3+
import com.cloudera.cyber.restcli.configuration.AppWorkerConfig;
34
import com.cloudera.cyber.restcli.service.JobService;
5+
import com.cloudera.cyber.restcli.service.FilePipelineService;
46
import com.cloudera.service.common.Utils;
57
import com.cloudera.service.common.request.RequestBody;
68
import com.cloudera.service.common.request.RequestType;
@@ -29,18 +31,11 @@
2931
@RequiredArgsConstructor
3032
@Slf4j
3133
public class KafkaListenerController {
32-
33-
@Value("${cluster.name}")
34-
private String clusterName;
35-
@Value("${cluster.id}")
36-
private String clusterId;
37-
@Value("${cluster.status}")
38-
private String clusterStatus;
39-
@Value("${cluster.version}")
40-
private String clusterVersion;
41-
4234
private final JobService jobService;
35+
private final FilePipelineService pipelineService;
36+
private final AppWorkerConfig config;
4337

38+
//TODO: Rewrite to Spring events. Probably split the events into separate types, such as cluster event, job event, pipeline event, etc.
4439
@KafkaListener(topics = "#{kafkaProperties.getRequestTopic()}", containerFactory = "kafkaListenerContainerFactory")
4540
@SendTo({"#{kafkaProperties.getReplyTopic()}"})
4641
public Message<ResponseBody> handleMessage(RequestBody requestBody, @Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) String key, @Header(KafkaHeaders.REPLY_TOPIC) byte[] replyTo,
@@ -85,6 +80,26 @@ public Message<ResponseBody> handleMessage(RequestBody requestBody, @Header(Kafk
8580
} catch (IOException e) {
8681
return handleErrorResponse(e, replyTo, correlationId);
8782
}
83+
case CREATE_EMPTY_PIPELINE:
84+
try {
85+
pipelineService.createEmptyPipeline(requestBody.getPipelineName(), requestBody.getBranch());
86+
final ResponseBody responseBody = ResponseBody.builder().build();
87+
return buildResponseMessage(responseBody, ResponseType.CREATE_EMPTY_PIPELINE_RESPONSE, replyTo, correlationId);
88+
} catch (Exception e) {
89+
return handleErrorResponse(e, replyTo, correlationId);
90+
}
91+
case START_ARCHIVE_PIPELINE:
92+
try {
93+
pipelineService.extractPipeline(requestBody.getPayload(), requestBody.getPipelineName(), requestBody.getBranch());
94+
pipelineService.startPipelineJob(requestBody.getPipelineName(), requestBody.getBranch(), requestBody.getProfileName(), requestBody.getJobs());
95+
final ResponseBody responseBody = ResponseBody.builder().build();
96+
return buildResponseMessage(responseBody, ResponseType.START_ARCHIVE_PIPELINE_RESPONSE, replyTo, correlationId);
97+
} catch (Exception e) {
98+
log.error("Exception while processing the Start All request {}", e.getMessage());
99+
return handleErrorResponse(e, replyTo, correlationId);
100+
101+
}
102+
88103
}
89104
return null;
90105
}
@@ -95,10 +110,10 @@ private Message<ResponseBody> getResponseBodyMessage(byte[] replyTo, byte[] corr
95110
ResponseBody responseBody = ResponseBody.builder()
96111
.jobs(jobs)
97112
.clusterMeta(ClusterMeta.builder()
98-
.name(clusterName)
99-
.clusterId(clusterId)
100-
.clusterStatus(clusterStatus)
101-
.version(clusterVersion)
113+
.name(config.getName())
114+
.clusterId(config.getId())
115+
.clusterStatus(config.getStatus())
116+
.version(config.getVersion())
102117
.build())
103118
.build();
104119
return buildResponseMessage(responseBody, responseType, replyTo, correlationId);

0 commit comments

Comments
 (0)