Skip to content

Commit 1490340

Browse files
CommonWorkflowScheduler
Signed-off-by: Lehmann_Fabian <fabian.lehmann@informatik.hu-berlin.de>
0 parents  commit 1490340

Some content is hidden

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

57 files changed

+4202
-0
lines changed

.dockerignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
target/
2+
.git/
3+
.idea/
4+
README.md
5+
Dockerfile
6+
.gitignore
7+
.dockerignore
8+
data/

.gitignore

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
2+
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
3+
4+
# User-specific stuff
5+
.idea/**/workspace.xml
6+
.idea/**/tasks.xml
7+
.idea/**/usage.statistics.xml
8+
.idea/**/dictionaries
9+
.idea/**/shelf
10+
11+
# Generated files
12+
.idea/**/contentModel.xml
13+
14+
# Sensitive or high-churn files
15+
.idea/**/dataSources/
16+
.idea/**/dataSources.ids
17+
.idea/**/dataSources.local.xml
18+
.idea/**/sqlDataSources.xml
19+
.idea/**/dynamic.xml
20+
.idea/**/uiDesigner.xml
21+
.idea/**/dbnavigator.xml
22+
23+
# Gradle
24+
.idea/**/gradle.xml
25+
.idea/**/libraries
26+
27+
# Gradle and Maven with auto-import
28+
# When using Gradle or Maven with auto-import, you should exclude module files,
29+
# since they will be recreated, and may cause churn. Uncomment if using
30+
# auto-import.
31+
.idea/artifacts
32+
.idea/compiler.xml
33+
.idea/jarRepositories.xml
34+
.idea/modules.xml
35+
.idea/*.iml
36+
.idea/modules
37+
*.iml
38+
*.ipr
39+
40+
# CMake
41+
cmake-build-*/
42+
43+
# Mongo Explorer plugin
44+
.idea/**/mongoSettings.xml
45+
46+
# File-based project format
47+
*.iws
48+
49+
# IntelliJ
50+
out/
51+
52+
# mpeltonen/sbt-idea plugin
53+
.idea_modules/
54+
55+
# JIRA plugin
56+
atlassian-ide-plugin.xml
57+
58+
# Cursive Clojure plugin
59+
.idea/replstate.xml
60+
61+
# Crashlytics plugin (for Android Studio and IntelliJ)
62+
com_crashlytics_export_strings.xml
63+
crashlytics.properties
64+
crashlytics-build.properties
65+
fabric.properties
66+
67+
# Editor-based Rest Client
68+
.idea/httpRequests
69+
70+
# Android studio 3.1+ serialized cache file
71+
.idea/caches/build_file_checksums.ser
72+
73+
.idea
74+
75+
target
76+
77+
pom-development.xml

Dockerfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
FROM maven:3.8.3-jdk-11-slim AS build
2+
WORKDIR /build
3+
COPY pom.xml pom.xml
4+
RUN mvn dependency:go-offline -B -Dmaven.repo.local=/mvn/.m2nrepo/repository
5+
COPY src/ src/
6+
RUN mvn package -DskipTests -Dmaven.repo.local=/mvn/.m2nrepo/repository
7+
8+
#
9+
# Package stage
10+
#
11+
FROM openjdk:17-alpine
12+
WORKDIR /app
13+
RUN addgroup -S javagroup && adduser -S javauser -G javagroup && mkdir data
14+
COPY --from=build /build/target/k8s-scheduler*.jar k8s-scheduler.jar
15+
RUN chown -R javauser:javagroup /app
16+
USER javauser
17+
EXPOSE 8080
18+
ENTRYPOINT ["java","-jar","/app/k8s-scheduler.jar"]

Dockerfile-development

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FROM maven:3-openjdk-17-slim AS build
2+
WORKDIR /build
3+
COPY pom.xml pom.xml
4+
RUN mkdir data/ && mvn dependency:go-offline -B -Dmaven.repo.local=/mvn/.m2nrepo/repository
5+
COPY src/ src/
6+
RUN mvn package -f /build/pom.xml -DskipTests -Dmaven.repo.local=/mvn/.m2nrepo/repository

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Kubernetes Workflow Scheduler
2+
3+
SWAGGER: http://localhost:8080/swagger-ui.html
4+
5+
API-DOCS: http://localhost:8080/v3/api-docs/

pom.xml

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>org.springframework.boot</groupId>
9+
<artifactId>spring-boot-starter-parent</artifactId>
10+
<version>2.4.2</version>
11+
<relativePath/> <!-- lookup parent from repository -->
12+
</parent>
13+
14+
<groupId>org.example</groupId>
15+
<artifactId>k8s-scheduler</artifactId>
16+
<version>1.0-SNAPSHOT</version>
17+
18+
<properties>
19+
<maven.compiler.source>11</maven.compiler.source>
20+
<maven.compiler.target>11</maven.compiler.target>
21+
<start-class>fonda.scheduler.Main</start-class>
22+
</properties>
23+
24+
<dependencies>
25+
26+
<dependency>
27+
<groupId>io.fabric8</groupId>
28+
<artifactId>kubernetes-client</artifactId>
29+
<version>5.12.2</version>
30+
</dependency>
31+
32+
<dependency>
33+
<groupId>org.javatuples</groupId>
34+
<artifactId>javatuples</artifactId>
35+
<version>1.2</version>
36+
</dependency>
37+
38+
<dependency>
39+
<groupId>org.projectlombok</groupId>
40+
<artifactId>lombok</artifactId>
41+
<version>1.18.24</version>
42+
<scope>provided</scope>
43+
</dependency>
44+
45+
<dependency>
46+
<groupId>junit</groupId>
47+
<artifactId>junit</artifactId>
48+
<version>4.13.2</version>
49+
</dependency>
50+
51+
<dependency>
52+
<groupId>org.mockito</groupId>
53+
<artifactId>mockito-inline</artifactId>
54+
<version>4.5.1</version>
55+
<scope>test</scope>
56+
</dependency>
57+
58+
<dependency>
59+
<groupId>org.springframework.boot</groupId>
60+
<artifactId>spring-boot-starter-web</artifactId>
61+
<version>2.6.7</version>
62+
</dependency>
63+
64+
<dependency>
65+
<groupId>org.springframework.boot</groupId>
66+
<artifactId>spring-boot-starter-test</artifactId>
67+
<version>2.6.7</version>
68+
<scope>test</scope>
69+
</dependency>
70+
71+
<dependency>
72+
<groupId>org.jetbrains</groupId>
73+
<artifactId>annotations</artifactId>
74+
<version>23.0.0</version>
75+
<scope>compile</scope>
76+
</dependency>
77+
78+
<dependency>
79+
<groupId>org.junit.vintage</groupId>
80+
<artifactId>junit-vintage-engine</artifactId>
81+
<version>5.8.2</version>
82+
<scope>test</scope>
83+
</dependency>
84+
85+
<dependency>
86+
<groupId>org.apache.commons</groupId>
87+
<artifactId>commons-collections4</artifactId>
88+
<version>4.4</version>
89+
<scope>test</scope>
90+
</dependency>
91+
92+
<dependency>
93+
<groupId>commons-net</groupId>
94+
<artifactId>commons-net</artifactId>
95+
<version>3.8.0</version>
96+
</dependency>
97+
98+
<dependency>
99+
<groupId>org.springdoc</groupId>
100+
<artifactId>springdoc-openapi-ui</artifactId>
101+
<version>1.6.4</version>
102+
</dependency>
103+
104+
105+
</dependencies>
106+
107+
<build>
108+
<plugins>
109+
<plugin>
110+
<groupId>org.apache.maven.plugins</groupId>
111+
<artifactId>maven-shade-plugin</artifactId>
112+
<executions>
113+
<execution>
114+
<phase>package</phase>
115+
<goals>
116+
<goal>shade</goal>
117+
</goals>
118+
<configuration>
119+
<transformers>
120+
<transformer
121+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
122+
<resource>META-INF/spring.handlers</resource>
123+
</transformer>
124+
<transformer
125+
implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer">
126+
<resource>META-INF/spring.factories</resource>
127+
</transformer>
128+
<transformer
129+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
130+
<resource>META-INF/spring.schemas</resource>
131+
</transformer>
132+
<transformer
133+
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
134+
<transformer
135+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
136+
<mainClass>fonda.scheduler.Main</mainClass>
137+
</transformer>
138+
</transformers>
139+
</configuration>
140+
</execution>
141+
</executions>
142+
</plugin>
143+
<plugin>
144+
<groupId>org.jacoco</groupId>
145+
<artifactId>jacoco-maven-plugin</artifactId>
146+
<version>0.8.7</version>
147+
<configuration>
148+
<propertyName>surefireArgLine</propertyName>
149+
</configuration>
150+
<executions>
151+
<execution>
152+
<id>pre-unit-test</id>
153+
<phase>process-test-classes</phase>
154+
<goals>
155+
<goal>prepare-agent</goal>
156+
</goals>
157+
</execution>
158+
<execution>
159+
<id>post-unit-test</id>
160+
<phase>test</phase>
161+
<goals>
162+
<goal>report</goal>
163+
</goals>
164+
</execution>
165+
</executions>
166+
</plugin>
167+
<plugin>
168+
<groupId>org.apache.maven.plugins</groupId>
169+
<artifactId>maven-surefire-plugin</artifactId>
170+
<version>3.0.0-M5</version>
171+
<configuration>
172+
<!-- redirectTestOutputToFile>true</redirectTestOutputToFile -->
173+
<argLine>${surefireArgLine} --illegal-access=permit</argLine>
174+
</configuration>
175+
<executions>
176+
<execution>
177+
<id>default-test</id>
178+
<phase>test</phase>
179+
<goals>
180+
<goal>test</goal>
181+
</goals>
182+
</execution>
183+
</executions>
184+
</plugin>
185+
</plugins>
186+
</build>
187+
188+
</project>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package fonda.scheduler;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.boot.SpringApplication;
5+
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
7+
@SpringBootApplication
8+
@Slf4j
9+
public class Main {
10+
11+
public static void main(String[] args) {
12+
if( System.getenv( "SCHEDULER_NAME" ) == null || System.getenv( "SCHEDULER_NAME" ).isEmpty() ){
13+
throw new IllegalArgumentException( "Please define environment variable: SCHEDULER_NAME" );
14+
}
15+
SpringApplication.run(Main.class, args);
16+
}
17+
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package fonda.scheduler.client;
2+
3+
import fonda.scheduler.model.NodeWithAlloc;
4+
5+
public interface Informable {
6+
7+
void informResourceChange();
8+
void newNode( NodeWithAlloc node );
9+
void removedNode( NodeWithAlloc node );
10+
11+
12+
}

0 commit comments

Comments
 (0)