Skip to content

Commit

Permalink
update to latest kubetools
Browse files Browse the repository at this point in the history
  • Loading branch information
mucsi96 committed Dec 23, 2023
1 parent 7a2b39e commit 49bff89
Show file tree
Hide file tree
Showing 22 changed files with 193 additions and 143 deletions.
4 changes: 3 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@
},
"vs-kubernetes": {
"vs-kubernetes.kubeconfig": ".kube/config",
"vs-kubernetes.knownKubeconfigs": [".kube/config"],
"vs-kubernetes.knownKubeconfigs": [
".kube/config"
]
},
"java.configuration.updateBuildConfiguration": "interactive",
"search.exclude": {
Expand Down
2 changes: 1 addition & 1 deletion galaxy-requirements.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
collections:
- name: https://github.com/mucsi96/kubetools/releases/download/ansible-collection-19/mucsi96-kubetools-0.19.0.tar.gz
- name: https://github.com/mucsi96/kubetools/releases/download/ansible-collection-55/mucsi96-kubetools-0.55.0.tar.gz
type: url
76 changes: 38 additions & 38 deletions inventory.yaml
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
$ANSIBLE_VAULT;1.1;AES256
65616534366132616439363761313031386435383133396631323332633631636436616236393733
3365653732653138313465356637376430646265343332630a386639613566333265396136633533
37623036343337643066343261663432663762613534653865623330643131623930393066356331
3937656636316532330a346534396566613362326137373337613664646163356139653130613261
32303562363134376166366365336134666637653235343938393966383962663434333263663630
34383162363265366336376335393930383333353564353736666166313635373766373363613630
34646632663066356635663938353464363064316363616132373039616166333934393264333331
37356535393237313039356635363235633137633134343132316631653638353562343134633065
39316466666265353639346131643535663735373137316661366139613739343361316233303363
62336432383733316438373235373332346537346232616266643361303739303739666466393762
30623233383065663632326334636232346465363637626262356333373864383332636438366564
31376337313634313433303638366439613164656333633433316262663162313437303536663335
63666561323235353861383437376235623731653562363738336463356639633561323639666232
32396466303763636261306331336332656334636166646339383462613337346533303461306263
66346333663963313162663830393537633138636630356231383864373961613735373933363335
31376639636564383966646132313338353934303931653966363064666363386233313364633134
34393063386664326363323462313266623763303937623736633739383431623634613432313830
39376532373930626436313462346665323538336135316434653463393436373365646433663138
35383739376536663934633938383765353865663233633365633563646537306666366431323938
34396231383936386435623065336666366463643739306665343964383436323834653934626665
62633831376534366562343036626531666565313635646238306433383439326637623535653930
62366532366433353062666330383737643035313662633933663439373330323631336561376664
62346332373535616539656334666433633138393061613735386331643538373839333235626230
61653861623131653930363666336438666239313464386466616531316337613139343035636137
61633236363431383538383233303738323333343964363135303166343763326661343332663634
65636136306564616434356266336235393364646339616230386464333734663566383631623635
35343939656139633836653763353130373239373131666561326534626661353133653035383064
39666435656437343531393861313336633738346636653136373138303563363065373663613065
37323761383463396333663339613030396362363834313565356237343039306535633463636533
37383030323833333731663331643466636336336136633834656435633132626666313363316663
32383161353537333131303165393437326163346462643838396664363566363462306531333566
65636263613830336332643862643139336363656364383736353035366363383337613661363666
34633631646266303137643038666236346433643135616565356564313762376134383335613863
63366234333735363834343264666163343830356563626432373437613034333263313230653336
30303835323830353164313332393838666131626463323663636663363330353830343135353636
30363834653038363337336336653630343732393931313836626633343366663662353361396636
65343232613438346130393037623733353637353132376665393362343536643334393434386334
3838373964346461353938346537306433353937633339643865
30313431386530653731626335653661336630363865616265336538623764663362386631623366
3631363932666566363365383664383265393536363463390a663130383936643436623737636331
62303538633238386335366236623335626263663632356130353661616665373664303264313231
3934376361393261610a383062663165313132306237656564336439616634663263656330643037
64363463326163323730643438316231363164386434346165316637396533633664326434386562
64303332376237636662626564613035633136616265353665643434663836353739636464663361
64313465386266323632666562356638303734623564303034646337343466666661323232663564
38313864663331363432346338353032613036313662353338306133633462383334373065366539
33363562633538623130346163346165666330383565643539373866386130613166383864323030
66633066623166323032346265653161313333653230343362383062663638363734323564623539
30643037366261626639326163656234343632373964633363663236383338353761396635323663
66396639633562616562386462303039323737656461326666336433323064616632633337643766
39316336316131656362303333623133383633613131356362303534643134656635343030613261
32623633383336386666633465633733643239303266643838383437663362363763316332306439
36393137346363663562316434333730646431376134396133393863646466366633396638633662
34303835373965323763396338653938383132613836353661653433333236303963326561313666
36396135633833373733383437656335633466623061353939306233613737663262366166643834
64636564316263373432613863376333376337313539343437346265613130613730633735363538
37323765643763323938643234313335366235336264366636633161303835643539343762336631
34373162386635356338636263636630323938323835643434653664643432633762653739303337
63633937636532323533323361656163623438373663623432613433333936353565356337383461
33646461346137613465666161333136366463383838363239356562626632653764336563663762
65666261396335343837376231336362396666353230643161343363373030363537313338643961
30386538613539663463303733303230656662343631386666636565323034353834396164386234
65626566643063313562346666666539666532663363386138356166316661656361313035663064
33656537383366663230643634363664343535316234343139383439313538303031663739656336
65663863323361626430313134333061306234643165333835383166626637613265633266356532
64623533323261376238333762656566663832303235333163373061376338336564663063353737
65326162643535303731363965393937383034643333656166636539633735643265323731326466
34646338383231393034633263383964626430623836393964396335383637376232333532663435
31306664343532393833393836383037333331653766356433353766383330393362373034326362
35383762623430303739363037316330343662616535656534616535636134363566623938303132
34326134623635393762623330623262316432663664303932653132663135656137626666303039
36333631323439396263626365623139356535653963386464343961626664316562373263326464
35666661646137356639306133386464326231633166333731623465373939393037623139653831
63343138643161663136333261613761633166616462623933393938636533366339646136303531
30386137623661643637343865386335653333303739363135646165656332653633313362613034
3135656463633337383939626163616435633464623863653565
5 changes: 5 additions & 0 deletions provision.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
vars:
k8s_name: "{{ db_host }}"
host_prefix: workout
- role: mucsi96.kubetools.deploy_webdriver
- role: mucsi96.kubetools.deploy_spring_app
vars:
k8s_name: spring-app
Expand All @@ -33,6 +34,10 @@
WITHINGS_API_URI: "{{ withings_api_uri }}"
WITHINGS_CLIENT_ID: "{{ withings_client_id }}"
WITHINGS_CLIENT_SECRET: "{{ withings_client_secret }}"
STRAVA_API_URI: "{{ strava_api_uri }}"
STRAVA_CLIENT_ID: "{{ strava_client_id }}"
STRAVA_CLIENT_SECRET: "{{ strava_client_secret }}"
WEBDRIVER_API_URI: "http://{{ webdriver_host }}:{{ webdriver_port }}/wd/hub"
- role: mucsi96.kubetools.deploy_client_app
vars:
k8s_name: client-app
Expand Down
6 changes: 3 additions & 3 deletions server/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
<version>3.2.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>mucsi96</groupId>
Expand All @@ -21,7 +21,7 @@
<dependency>
<groupId>io.github.mucsi96</groupId>
<artifactId>kubetools</artifactId>
<version>1.25-SNAPSHOT</version>
<version>1.31-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down Expand Up @@ -93,7 +93,7 @@
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<version>3.0.0-beta-4</version>
<version>3.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
Expand All @@ -12,17 +14,33 @@
import org.springframework.security.web.SecurityFilterChain;

import io.github.mucsi96.kubetools.security.KubetoolsSecurityConfigurer;
import io.github.mucsi96.kubetools.security.MockSecurityConfigurer;

@Configuration
@EnableWebSecurity
@EnableMethodSecurity(jsr250Enabled = true)
public class SecurityConfiguration {

@Bean
@Profile("prod")
SecurityFilterChain securityFilterChain(
HttpSecurity http,
KubetoolsSecurityConfigurer kubetoolsSecurityConfigurer) throws Exception {
return kubetoolsSecurityConfigurer.configure(http).securityMatcher("/weight/**", "/ride/**").build();
return http
.securityMatcher("/weight/**", "/ride/**")
.with(kubetoolsSecurityConfigurer, Customizer.withDefaults())
.build();
}

@Bean
@Profile("!prod")
SecurityFilterChain mockSecurityFilterChain(
HttpSecurity http,
MockSecurityConfigurer mockSecurityConfigurer) throws Exception {
return http
.securityMatcher("/weight/**", "/ride/**")
.with(mockSecurityConfigurer, Customizer.withDefaults())
.build();
}

@Bean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;

public interface RideRepository extends JpaRepository<Ride, Long> {
public interface RideRepository extends JpaRepository<Ride, ZonedDateTime> {
List<Ride> findByCreatedAtBetween(ZonedDateTime startTime, ZonedDateTime endTime, Sort sort);
List<Ride> findByCreatedAtBefore(ZonedDateTime endTime, Sort sort);
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ private List<Long> getTodayRideActivityIds(OAuth2AuthorizedClient authorizedClie
}, headers);
List<StravaSummaryActivity> activities = response.getBody();

if (activities == null) {
return List.of();
}

try {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
Expand Down Expand Up @@ -111,6 +115,10 @@ public List<Ride> getTodayRides(OAuth2AuthorizedClient authorizedClient, ZoneId
} catch (JsonProcessingException e) {
}

if (activity == null) {
throw new RuntimeException("No matching activity");
}

return Ride.builder()
.createdAt(activity.getStartDate().atZoneSameInstant(ZoneOffset.UTC))
.name(activity.getName())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.convert.converter.Converter;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
Expand All @@ -28,6 +30,7 @@
import org.springframework.util.MultiValueMap;

import io.github.mucsi96.kubetools.security.KubetoolsSecurityConfigurer;
import io.github.mucsi96.kubetools.security.MockSecurityConfigurer;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.Data;
Expand All @@ -44,14 +47,30 @@ public class StravaConfiguration {
private String apiUri;

@Bean
@Profile("prod")
SecurityFilterChain stravaSecurityFilterChain(
HttpSecurity http,
KubetoolsSecurityConfigurer kubetoolsSecurityConfigurer) throws Exception {
return kubetoolsSecurityConfigurer.configure(http)
return http
.securityMatcher("/strava/**")
.oauth2Client(configurer -> configurer
.authorizationCodeGrant(customizer -> customizer
.accessTokenResponseClient(stravaAccessTokenResponseClient())))
.authorizationCodeGrant(customizer -> customizer
.accessTokenResponseClient(stravaAccessTokenResponseClient())))
.with(kubetoolsSecurityConfigurer, Customizer.withDefaults())
.build();
}

@Bean
@Profile("!prod")
SecurityFilterChain mockStravaSecurityFilterChain(
HttpSecurity http,
MockSecurityConfigurer mockSecurityConfigurer) throws Exception {
return http
.securityMatcher("/strava/**")
.oauth2Client(configurer -> configurer
.authorizationCodeGrant(customizer -> customizer
.accessTokenResponseClient(stravaAccessTokenResponseClient())))
.with(mockSecurityConfigurer, Customizer.withDefaults())
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;

public interface WeightRepository extends JpaRepository<Weight, Long> {
public interface WeightRepository extends JpaRepository<Weight, ZonedDateTime> {
List<Weight> findByCreatedAtBetween(ZonedDateTime startTime, ZonedDateTime endTime, Sort sort);
List<Weight> findByCreatedAtBefore(ZonedDateTime endTime, Sort sort);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.convert.converter.Converter;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
Expand Down Expand Up @@ -39,6 +41,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;

import io.github.mucsi96.kubetools.security.KubetoolsSecurityConfigurer;
import io.github.mucsi96.kubetools.security.MockSecurityConfigurer;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.Data;
Expand All @@ -54,14 +57,30 @@ public class WithingsConfiguration {
private String apiUri;

@Bean
@Profile("prod")
SecurityFilterChain withingsSecurityFilterChain(
HttpSecurity http,
KubetoolsSecurityConfigurer kubetoolsSecurityConfigurer) throws Exception {
return kubetoolsSecurityConfigurer.configure(http)
return http
.securityMatcher("/withings/**")
.oauth2Client(configurer -> configurer
.authorizationCodeGrant(customizer -> customizer
.accessTokenResponseClient(withingsAccessTokenResponseClient())))
.with(kubetoolsSecurityConfigurer, Customizer.withDefaults())
.build();
}

@Bean
@Profile("!prod")
SecurityFilterChain mockWithingsSecurityFilterChain(
HttpSecurity http,
MockSecurityConfigurer mockSecurityConfigurer) throws Exception {
return http
.securityMatcher("/withings/**")
.oauth2Client(configurer -> configurer
.authorizationCodeGrant(customizer -> customizer
.accessTokenResponseClient(withingsAccessTokenResponseClient())))
.with(mockSecurityConfigurer, Customizer.withDefaults())
.build();
}

Expand Down
5 changes: 5 additions & 0 deletions server/src/main/resources/application-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,8 @@ spring:
service-base-url: http://${K8S_POD_IP}:8080
management-base-url: http://${K8S_POD_IP}:${SPRING_ACTUATOR_PORT}
auto-deregistration: true
kubetools:
introspection-uri: ${INTROSPECTION_URI}
user-info-uri: ${USER_INFO_URI}
client-id: ${CLIENT_ID}
client-secret: ${CLIENT_SECRET}
6 changes: 6 additions & 0 deletions server/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,9 @@ strava:
username: ${STRAVA_USERNAME}
password: ${STRAVA_PASSWORD}
api-uri: ${STRAVA_API_URI}
kubetools:
introspection-uri: /
user-info-uri: /
client-id: clientId
client-secret: clientSecret

Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,8 @@ public class BaseIntegrationTest {

static PostgreSQLContainer<?> dbMock;

HttpHeaders getHeaders(String authority) {
HttpHeaders getHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.add("Remote-User", "rob");
headers.add("Remote-Groups", authority);
headers.add("Remote-Name", "Robert White");
headers.add("Remote-Email", "robert.white@mockemail.com");
headers.add("X-Timezone", "America/New_York");
return headers;
}
Expand Down
Loading

0 comments on commit 49bff89

Please sign in to comment.