Skip to content

Commit 20589d9

Browse files
committed
fix: spring boot with bom
1 parent c1cc8e7 commit 20589d9

File tree

7 files changed

+93
-79
lines changed

7 files changed

+93
-79
lines changed

pom.xml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,11 @@
7676
<type>pom</type>
7777
<scope>import</scope>
7878
</dependency>
79-
80-
8179
<dependency>
8280
<groupId>org.awaitility</groupId>
8381
<artifactId>awaitility</artifactId>
8482
<version>${awaitility.version}</version>
8583
</dependency>
86-
8784
<dependency>
8885
<groupId>org.assertj</groupId>
8986
<artifactId>assertj-core</artifactId>
@@ -94,7 +91,6 @@
9491
<artifactId>mockito-core</artifactId>
9592
<version>${mokito.version}</version>
9693
</dependency>
97-
9894
<dependency>
9995
<groupId>org.slf4j</groupId>
10096
<artifactId>slf4j-api</artifactId>
@@ -205,7 +201,7 @@
205201
</goals>
206202
<phase>initialize</phase>
207203
<configuration>
208-
<property>josdk.project.root</property>
204+
<property>acf.project.root</property>
209205
</configuration>
210206
</execution>
211207
</executions>
@@ -233,7 +229,7 @@
233229
</goals>
234230
<configuration>
235231
<!--suppress UnresolvedMavenProperty -->
236-
<configFile>${josdk.project.root}/contributing/eclipse-google-style.xml</configFile>
232+
<configFile>${acf.project.root}/contributing/eclipse-google-style.xml</configFile>
237233
</configuration>
238234
</execution>
239235
</executions>
@@ -316,7 +312,6 @@
316312
<id>release</id>
317313
<build>
318314
<plugins>
319-
320315
<plugin>
321316
<groupId>org.apache.maven.plugins</groupId>
322317
<artifactId>maven-surefire-plugin</artifactId>

samples/spring-boot-sample/pom.xml

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55
<parent>
6-
<groupId>org.springframework.boot</groupId>
7-
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>2.6.1</version>
9-
<relativePath/> <!-- lookup parent from repository -->
6+
<groupId>io.javaoperatorsdk</groupId>
7+
<artifactId>operator-framework-framework-samples</artifactId>
8+
<version>0.0.1-SNAPSHOT</version>
109
</parent>
10+
1111
<groupId>io.javaoperatorsdk.admissioncontroller.sample</groupId>
1212
<artifactId>spring-boot-sample</artifactId>
1313
<version>0.0.1-SNAPSHOT</version>
@@ -16,6 +16,19 @@
1616
<properties>
1717
<java.version>11</java.version>
1818
</properties>
19+
20+
<dependencyManagement>
21+
<dependencies>
22+
<dependency>
23+
<groupId>org.springframework.boot</groupId>
24+
<artifactId>spring-boot-dependencies</artifactId>
25+
<version>2.6.1</version>
26+
<type>pom</type>
27+
<scope>import</scope>
28+
</dependency>
29+
</dependencies>
30+
</dependencyManagement>
31+
1932
<dependencies>
2033
<dependency>
2134
<groupId>org.springframework.boot</groupId>
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package io.javaoperatorsdk.admissioncontroller.sample.springbootsample;
22

3-
import io.fabric8.kubernetes.api.model.Pod;
4-
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionReview;
5-
import io.javaoperatorsdk.admissioncontroller.AdmissionController;
63
import org.springframework.beans.factory.annotation.Autowired;
74
import org.springframework.beans.factory.annotation.Qualifier;
85
import org.springframework.http.HttpStatus;
@@ -12,30 +9,37 @@
129
import org.springframework.web.bind.annotation.ResponseBody;
1310
import org.springframework.web.bind.annotation.RestController;
1411

12+
import io.fabric8.kubernetes.api.model.Pod;
13+
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionReview;
14+
import io.javaoperatorsdk.admissioncontroller.AdmissionController;
15+
1516
@RestController
1617
public class AdmissionEndpoint {
1718

18-
private final AdmissionController<Pod> addLabelMutationController;
19-
private final AdmissionController<Pod> validatingController;
20-
21-
@Autowired
22-
public AdmissionEndpoint(@Qualifier("mutatingController") AdmissionController<Pod> addLabelMutationController,
23-
@Qualifier("validatingController") AdmissionController<Pod> validatingController) {
24-
this.addLabelMutationController = addLabelMutationController;
25-
this.validatingController = validatingController;
26-
}
27-
28-
@PostMapping("/mutate")
29-
@ResponseBody
30-
public ResponseEntity<AdmissionReview> mutate(@RequestBody AdmissionReview admissionReview) {
31-
AdmissionReview resultReview = addLabelMutationController.handle(admissionReview);
32-
return new ResponseEntity<>(resultReview, HttpStatus.valueOf(resultReview.getResponse().getStatus().getCode()));
33-
}
34-
35-
@PostMapping("/validate")
36-
public ResponseEntity<AdmissionReview> validate(@RequestBody AdmissionReview admissionReview) {
37-
AdmissionReview resultReview = validatingController.handle(admissionReview);
38-
return new ResponseEntity<>(resultReview, HttpStatus.valueOf(resultReview.getResponse().getStatus().getCode()));
39-
}
19+
private final AdmissionController<Pod> addLabelMutationController;
20+
private final AdmissionController<Pod> validatingController;
21+
22+
@Autowired
23+
public AdmissionEndpoint(
24+
@Qualifier("mutatingController") AdmissionController<Pod> addLabelMutationController,
25+
@Qualifier("validatingController") AdmissionController<Pod> validatingController) {
26+
this.addLabelMutationController = addLabelMutationController;
27+
this.validatingController = validatingController;
28+
}
29+
30+
@PostMapping("/mutate")
31+
@ResponseBody
32+
public ResponseEntity<AdmissionReview> mutate(@RequestBody AdmissionReview admissionReview) {
33+
AdmissionReview resultReview = addLabelMutationController.handle(admissionReview);
34+
return new ResponseEntity<>(resultReview,
35+
HttpStatus.valueOf(resultReview.getResponse().getStatus().getCode()));
36+
}
37+
38+
@PostMapping("/validate")
39+
public ResponseEntity<AdmissionReview> validate(@RequestBody AdmissionReview admissionReview) {
40+
AdmissionReview resultReview = validatingController.handle(admissionReview);
41+
return new ResponseEntity<>(resultReview,
42+
HttpStatus.valueOf(resultReview.getResponse().getStatus().getCode()));
43+
}
4044

4145
}
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
package io.javaoperatorsdk.admissioncontroller.sample.springbootsample;
22

3-
import io.fabric8.kubernetes.api.model.HasMetadata;
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
46
import io.fabric8.kubernetes.api.model.Pod;
57
import io.javaoperatorsdk.admissioncontroller.AdmissionController;
68
import io.javaoperatorsdk.admissioncontroller.NotAllowedException;
7-
import org.springframework.context.annotation.Bean;
8-
import org.springframework.context.annotation.Configuration;
99

1010
@Configuration
1111
public class Config {
1212

13-
public static final String APP_NAME_LABEL_KEY = "app.kubernetes.io/name";
13+
public static final String APP_NAME_LABEL_KEY = "app.kubernetes.io/name";
1414

15-
@Bean
16-
public AdmissionController<Pod> mutatingController() {
17-
return new AdmissionController<>((resource, operation) -> {
18-
resource.getMetadata().getLabels().putIfAbsent(APP_NAME_LABEL_KEY, "mutation-test");
19-
return resource;
20-
});
21-
}
15+
@Bean
16+
public AdmissionController<Pod> mutatingController() {
17+
return new AdmissionController<>((resource, operation) -> {
18+
resource.getMetadata().getLabels().putIfAbsent(APP_NAME_LABEL_KEY, "mutation-test");
19+
return resource;
20+
});
21+
}
2222

23-
@Bean
24-
public AdmissionController<Pod> validatingController() {
25-
return new AdmissionController<>((resource, operation) -> {
26-
if (resource.getMetadata().getLabels().get(APP_NAME_LABEL_KEY) == null) {
27-
throw new NotAllowedException("Missing label: " + APP_NAME_LABEL_KEY);
28-
}
29-
});
30-
}
23+
@Bean
24+
public AdmissionController<Pod> validatingController() {
25+
return new AdmissionController<>((resource, operation) -> {
26+
if (resource.getMetadata().getLabels().get(APP_NAME_LABEL_KEY) == null) {
27+
throw new NotAllowedException("Missing label: " + APP_NAME_LABEL_KEY);
28+
}
29+
});
30+
}
3131

3232
}

samples/spring-boot-sample/src/main/java/io/javaoperatorsdk/admissioncontroller/sample/springbootsample/SpringBootSampleApplication.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
@SpringBootApplication
77
public class SpringBootSampleApplication {
88

9-
public static void main(String[] args) {
10-
SpringApplication.run(SpringBootSampleApplication.class, args);
11-
}
9+
public static void main(String[] args) {
10+
SpringApplication.run(SpringBootSampleApplication.class, args);
11+
}
1212

1313
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.javaoperatorsdk.admissioncontroller.sample.springbootsample;
22

3+
import java.nio.file.Files;
4+
35
import org.junit.jupiter.api.Test;
46
import org.springframework.beans.factory.annotation.Autowired;
57
import org.springframework.beans.factory.annotation.Value;
@@ -9,34 +11,35 @@
911
import org.springframework.http.MediaType;
1012
import org.springframework.test.web.servlet.MockMvc;
1113

12-
import java.nio.file.Files;
13-
1414
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
15+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
1516
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
1617

1718
@SpringBootTest
1819
@AutoConfigureMockMvc
1920
public class AdmissionEndpointTest {
2021

21-
@Autowired
22-
private MockMvc mockMvc;
22+
@Autowired
23+
private MockMvc mockMvc;
2324

24-
@Value("classpath:admission-request.json")
25-
private Resource request;
25+
@Value("classpath:admission-request.json")
26+
private Resource request;
2627

2728

28-
@Test
29-
public void testValidation() throws Exception {
30-
mockMvc.perform(post("/validate").contentType(MediaType.APPLICATION_JSON)
31-
.content(new String(Files.readAllBytes(request.getFile().toPath()))))
32-
.andExpect(status().isForbidden());
33-
}
29+
@Test
30+
public void testValidation() throws Exception {
31+
mockMvc.perform(post("/validate").contentType(MediaType.APPLICATION_JSON)
32+
.content(new String(Files.readAllBytes(request.getFile().toPath()))))
33+
.andExpect(status().isForbidden());
34+
}
3435

35-
@Test
36-
public void testMutation() throws Exception {
37-
mockMvc.perform(post("/mutate").contentType(MediaType.APPLICATION_JSON)
38-
.content(new String(Files.readAllBytes(request.getFile().toPath()))))
39-
.andExpect(status().isOk());
40-
}
36+
@Test
37+
public void testMutation() throws Exception {
38+
mockMvc.perform(post("/mutate").contentType(MediaType.APPLICATION_JSON)
39+
.content(new String(Files.readAllBytes(request.getFile().toPath()))))
40+
.andExpectAll(status().isOk(), content().contentType(MediaType.APPLICATION_JSON),
41+
content().json(
42+
"{\"apiVersion\":\"admission.k8s.io/v1\",\"kind\":\"AdmissionReview\",\"response\":{\"allowed\":true,\"patch\":\"W3sib3AiOiJhZGQiLCJwYXRoIjoiL21ldGFkYXRhL2xhYmVscy9hcHAua3ViZXJuZXRlcy5pb34xbmFtZSIsInZhbHVlIjoibXV0YXRpb24tdGVzdCJ9XQ==\",\"patchType\":\"JSONPatch\",\"status\":{\"apiVersion\":\"v1\",\"kind\":\"Status\",\"code\":200},\"uid\":\"0df28fbd-5f5f-11e8-bc74-36e6bb280816\"}}"));
43+
}
4144

4245
}

samples/spring-boot-sample/src/test/java/io/javaoperatorsdk/admissioncontroller/sample/springbootsample/SpringBootSampleApplicationTests.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
@SpringBootTest
77
class SpringBootSampleApplicationTests {
88

9-
@Test
10-
void contextLoads() {
11-
}
9+
@Test
10+
void contextLoads() {}
1211

1312
}

0 commit comments

Comments
 (0)