> addUserToSession(@RequestParam String organisasjo
}
return brukerService.getId(organisasjonsnummer, exchange).flatMap(id -> exchange
.getSession()
+ .doOnError(e -> log.error("Feil ved lagring av bruker i session", e))
.doOnSuccess(session -> session.getAttributes().put(UserSessionConstant.SESSION_USER_ID_KEY, id))
.map(value -> ResponseEntity.ok().build())
).switchIfEmpty(Mono.just(ResponseEntity.notFound().build()));
diff --git a/apps/dolly-frontend/src/main/js/src/RootComponent.tsx b/apps/dolly-frontend/src/main/js/src/RootComponent.tsx
index 5e0d28ca773..416536453e3 100644
--- a/apps/dolly-frontend/src/main/js/src/RootComponent.tsx
+++ b/apps/dolly-frontend/src/main/js/src/RootComponent.tsx
@@ -67,9 +67,9 @@ const ErrorView = () => {
}
export const RootComponent = () => (
-
-
-
+
+
+
(
} path="*" element={} />
-
-
-
+
+
+
)
diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/appError/AppError.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/appError/AppError.tsx
index de98befe24f..27c599c42d4 100644
--- a/apps/dolly-frontend/src/main/js/src/components/ui/appError/AppError.tsx
+++ b/apps/dolly-frontend/src/main/js/src/components/ui/appError/AppError.tsx
@@ -19,10 +19,11 @@ export const AppError = ({ error, stackTrace, style }: Props) => {
]
useEffect(() => {
+ console.error('Ukjent error i Dolly: ' + error)
if (errorsRequiringReload.some((e) => error?.toString()?.includes(e))) {
navigate(0)
}
- }, [])
+ }, [error])
return (
diff --git a/apps/dolly-frontend/src/main/js/src/components/utlogging/navigateToLogin.tsx b/apps/dolly-frontend/src/main/js/src/components/utlogging/navigateToLogin.tsx
index e827e3777de..36cf89d8f22 100644
--- a/apps/dolly-frontend/src/main/js/src/components/utlogging/navigateToLogin.tsx
+++ b/apps/dolly-frontend/src/main/js/src/components/utlogging/navigateToLogin.tsx
@@ -1,4 +1,4 @@
export const navigateToLogin = (feilmelding?: string) => {
- console.error(feilmelding)
+ console.error('Ukjent feil i Dolly, feilmelding: ' + feilmelding)
window.location.href = '/login'
}
diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java
index 29899ece816..af85ef82344 100644
--- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java
+++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java
@@ -9,4 +9,4 @@ public class LevendeArbeidsforholdAnsettelseApplication {
public static void main(String[] args) {
SpringApplication.run(LevendeArbeidsforholdAnsettelseApplication.class, args);
}
-}
+}
\ No newline at end of file
diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/AaregConsumer.java
index 6ebf3dd5160..e921868112a 100644
--- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/AaregConsumer.java
+++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/AaregConsumer.java
@@ -46,12 +46,6 @@ public AaregConsumer(
.pendingAcquireMaxCount(10000)
.pendingAcquireTimeout(Duration.ofSeconds(300))
.build())
- .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
- .option(ChannelOption.SO_KEEPALIVE, true)
- .option(EpollChannelOption.TCP_KEEPIDLE, 300)
- .option(EpollChannelOption.TCP_KEEPINTVL, 60)
- .option(EpollChannelOption.TCP_KEEPCNT, 8)
- .responseTimeout(Duration.ofSeconds(10))
))
.build();
}
diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/KodeverkServiceConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/KodeverkServiceConsumer.java
index 7b82e557049..263800d4851 100644
--- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/KodeverkServiceConsumer.java
+++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/KodeverkServiceConsumer.java
@@ -29,7 +29,7 @@ public KodeverkServiceConsumer(
serverProperties = consumers.getTestnavKodeverkService();
ExchangeStrategies exchangeStrategies = ExchangeStrategies.builder()
- .codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(16 * 1024 * 1024))
+ .codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(8 * 1024 * 1024))
.build();
this.webClient = webClientBuilder
.baseUrl(serverProperties.getUrl())
diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/PdlConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/PdlConsumer.java
index 32935d75386..6c63af3560d 100644
--- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/PdlConsumer.java
+++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/consumers/PdlConsumer.java
@@ -49,7 +49,7 @@ public PdlConsumer(
.create(ConnectionProvider.builder("PDL connections")
.maxConnections(1)
.pendingAcquireMaxCount(10000)
- .pendingAcquireTimeout(Duration.ofSeconds(30))
+ .pendingAcquireTimeout(Duration.ofSeconds(3000))
.build())))
.build();
}
diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/service/AnsettelseService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/service/AnsettelseService.java
index d3102a88ce2..fc7319c60f7 100644
--- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/service/AnsettelseService.java
+++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/service/AnsettelseService.java
@@ -111,6 +111,7 @@ private Flux getPersonSomKanAnsettes(Integer stillingsprosent, D
.flatMap(Flux::fromIterable)
.filter(arbeidsavtale -> nonNull(arbeidsavtale.getBruksperiode()) &&
isNull(arbeidsavtale.getBruksperiode().getTom()))
+ .filter(arbeidsavtale -> nonNull(arbeidsavtale.getStillingsprosent()))
.map(Arbeidsavtale::getStillingsprosent)
.reduce(0, (a, b) -> (int) (a + b))
.map(sum -> sum + stillingsprosent <= 100)
diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java
index cc6890bc59c..66b479053cc 100644
--- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java
+++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnav/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java
@@ -13,10 +13,10 @@
import org.springframework.http.HttpStatusCode;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
-import reactor.core.scheduler.Schedulers;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.time.Duration;
import java.time.LocalDate;
import java.util.List;
@@ -55,14 +55,7 @@ public Flux opprettArbeidsforhold(KanAnsettesDTO kanAnsettes, St
String arbeidsforholdstype, Integer stillingsprosent) {
return aaregConsumer.opprettArbeidsforhold(lagArbeidsforhold(kanAnsettes, yrke, arbeidsforholdstype, stillingsprosent))
- .publishOn(Schedulers.boundedElastic())
- .doOnNext(status -> {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- });
+ .delayElements(Duration.ofSeconds(1));
}
/**
diff --git a/apps/organisasjon-forvalter/build.gradle b/apps/organisasjon-forvalter/build.gradle
index 6aad329ac3a..cc5bb9ad425 100644
--- a/apps/organisasjon-forvalter/build.gradle
+++ b/apps/organisasjon-forvalter/build.gradle
@@ -14,6 +14,8 @@ properties {
}
dependencies {
+ implementation "com.google.cloud:spring-cloud-gcp-starter-secretmanager:$versions.gcpSecretManager"
+
implementation "no.nav.testnav.libs:avro-schema"
implementation "no.nav.testnav.libs:data-transfer-objects"
implementation "no.nav.testnav.libs:database"
diff --git a/apps/organisasjon-forvalter/src/main/resources/application-local.yml b/apps/organisasjon-forvalter/src/main/resources/application-local.yml
index b4b73c613d0..8555fea2280 100644
--- a/apps/organisasjon-forvalter/src/main/resources/application-local.yml
+++ b/apps/organisasjon-forvalter/src/main/resources/application-local.yml
@@ -1,8 +1,14 @@
-
spring:
+ cloud:
+ gcp:
+ secretmanager:
+ project-id: dolly-dev-ff83
+ config:
+ import: "sm://"
datasource:
- url: jdbc:postgresql://localhost:5432/db-organisasjon-forvalter
- username: ${NAV_USERNAME}
+ url: jdbc:postgresql://localhost:5432/testnav-organisasjon-forvalter-local
+ username: testnav-organisasjon-forvalter-local
+ password: ${sm://testnav-organisasjon-forvalter-local}
consumers:
generer-navn-service:
diff --git a/apps/organisasjon-forvalter/src/test/resources/application-test.yml b/apps/organisasjon-forvalter/src/test/resources/application-test.yml
index db1ca5d3a2c..f5afb1ea114 100644
--- a/apps/organisasjon-forvalter/src/test/resources/application-test.yml
+++ b/apps/organisasjon-forvalter/src/test/resources/application-test.yml
@@ -1,6 +1,10 @@
TOKEN_X_ISSUER: dummy
spring:
+ cloud:
+ gcp:
+ secretmanager:
+ enabled: false
datasource:
url: jdbc:h2:mem:testdb
driverClassName: org.h2.Driver
diff --git a/apps/pdl-forvalter/build.gradle b/apps/pdl-forvalter/build.gradle
index b35263e4dee..e5203f33255 100644
--- a/apps/pdl-forvalter/build.gradle
+++ b/apps/pdl-forvalter/build.gradle
@@ -14,6 +14,8 @@ properties {
}
dependencies {
+ implementation "com.google.cloud:spring-cloud-gcp-starter-secretmanager:$versions.gcpSecretManager"
+
implementation "no.nav.testnav.libs:database"
implementation "no.nav.testnav.libs:vault"
implementation "no.nav.testnav.libs:data-transfer-objects"
diff --git a/apps/pdl-forvalter/src/main/resources/application-local.yaml b/apps/pdl-forvalter/src/main/resources/application-local.yaml
index 1f9ba16ae12..74abe6fd89a 100644
--- a/apps/pdl-forvalter/src/main/resources/application-local.yaml
+++ b/apps/pdl-forvalter/src/main/resources/application-local.yaml
@@ -1,7 +1,14 @@
spring:
+ cloud:
+ gcp:
+ secretmanager:
+ project-id: dolly-dev-ff83
+ config:
+ import: "sm://"
datasource:
- url: jdbc:postgresql://localhost:5432/db-pdl-forvalter
- username: ${NAV_USERNAME}
+ url: jdbc:postgresql://localhost:5432/testnav-pdl-forvalter-local
+ username: testnav-pdl-forvalter-local
+ password: ${sm://testnav-pdl-forvalter-local}
consumers:
adresse-service:
diff --git a/apps/udi-stub/src/main/resources/application-local.yml b/apps/udi-stub/src/main/resources/application-local.yml
index ae84f9cddc1..dbdde1d44dd 100644
--- a/apps/udi-stub/src/main/resources/application-local.yml
+++ b/apps/udi-stub/src/main/resources/application-local.yml
@@ -1,6 +1,7 @@
spring:
datasource:
- url: jdbc:postgresql://localhost:5432/udi-stub-dev
hikari:
maximum-pool-size: 3
- minimum-idle: 1
\ No newline at end of file
+ minimum-idle: 1
+ url: jdbc:postgresql://localhost:5432/testnav-udistub
+ username: postgres
\ No newline at end of file
diff --git a/docs/gcp_db.md b/docs/gcp_db.md
index 015b1f5611d..b20628ecee4 100644
--- a/docs/gcp_db.md
+++ b/docs/gcp_db.md
@@ -5,25 +5,27 @@ Enkelte applikasjoner bruker en database i GCP som "lokal" database, dvs. i Spri
* `organisasjon-forvalter`
* `pdl-forvalter`
-På grunn av begrensninger i NAIS må disse databasene tilhøre en applikasjon. Det finnes en [../apps/dolly-db](../apps/dolly-db) som deployes flere ganger for å opprette og "eie" disse databasene.
+Disse er refert til under som `APP_NAME`.
-Disse har derfor en noe annen konfigurasjon for kjøring lokalt, og bruker [NAIS CLI](https://doc.nais.io/operate/cli/reference/postgres/).
+Applikasjonene har en noe annen konfigurasjon for kjøring lokalt, og bruker [gcloud CLI](https://doc.nais.io/operate/cli/reference/postgres/) og [cloud_sql_proxy](https://cloud.google.com/sql/docs/postgres/connect-auth-proxy).
-* Du må være logget på med gcloud CLI.
-* ~~Databasene må forberedes for tilgang.~~ **En gang, dette er allerede gjort.**
+* `cloud_sql_proxy` installeres med
```
-> nais postgres prepare --all-privs
+> gcloud components install cloud-sql-proxy
```
-* Du må gi din personlige bruker tilgang til databasen. **En gang.**
+* Du må være logget på med gcloud CLI.
```
-> nais postgres grant
+> gcloud auth login --update-adc
```
-* Tilgang til DB gis gjennom NAIS CLI.
+* Du må starte `cloud_sql_proxy` med rett `APP_NAME` (se over).
```
-> nais postgres proxy
+> cloud_sql_proxy -instances=dolly-dev-ff83:europe-north1:testnav-APP_NAME-local=tcp:5432
```
-* Brukernavnet må være din NAV-ident. Du må enten:
- * Sette en miljøvariabel `NAV_USERNAME` til din NAV-ident. **En gang.**
- * Endre brukernavnet i den aktuelle application-local.yml fra `${NAV_USERNAME}` til ditt navn. **Hver gang. Og ikke commit'e den endringen.**
-Etter at proxy'en er startet kan du da kjøre den aktuelle applikasjonen lokalt.
\ No newline at end of file
+Etter at proxy'en er startet kan du da kjøre den aktuelle applikasjonen lokalt. Applikasjonen henter selv passord vha. [Spring Cloud GCP](https://spring.io/projects/spring-cloud-gcp) ved oppstart.
+
+Hvis du ønsker tilgang direkte til databasen gjennom en annen klient som IntelliJ så må du hente ut passordet vha.
+```
+> gcloud secrets versions access latest --secret=testnav-APP_NAME-local
+```
+JDBC connect URL vil være `jdbc:postgresql://localhost:5432/testnav-APP_NAME-local?user=testnav-APP_NAME-local`.
\ No newline at end of file
diff --git a/docs/local_db.md b/docs/local_db.md
index d90e601a2ee..54b406dd48c 100644
--- a/docs/local_db.md
+++ b/docs/local_db.md
@@ -10,22 +10,17 @@ Dette er en kort beskrivelse på hvordan du setter opp PSQL i Docker og fyller d
Her bruker vi `dolly-backend` som eksempel. Vi bruker også [NAIS CLI](https://doc.nais.io/operate/cli/) som igjen avhenger av [gcloud CLI](https://cloud.google.com/sdk/gcloud). Eksport gjøres med [pg_dump](https://www.postgresql.org/docs/current/app-pgdump.html).
Først logg inn med gcloud CLI. NAIS CLI avhenger av dette.
-
~~~
-> gcloud auth login
+> gcloud auth login --update-adc
~~~
-
Sett opp en proxy mot databasen [definert i applikasjonen](../apps/dolly-backend/config.yml) `dolly-backend`. Legg merke til hva databasen heter og la proxyen stå og kjøre mens du eksporterer i neste steg.
-
~~~
> nais postgres proxy dolly-backend
~~~
-Setter opp en proxy for deg mot databasen
-
+Setter opp en proxy for deg mot databasen til applikasjonen (her: `dolly-backend`).
~~~
> pg_dump --username=YOUR_NAV_EMAIL_ADDRESS --clean --create --no-owner --no-privileges --verbose --file=~/dump.sql testnav-dolly-backend
~~~
-
Output havner her i fila `~/dump.sql` og skal brukes ved import.
Legg merke til `--clean --create --no-owner --no-privileges`. Vi eksporterer til et script som tømmer eksisterende database, oppretter en ny database ved behov, og fjerner owner og groups på alle tabeller. Vi ønsker at eier av alle tabellene lokalt er default-brukeren `postgres`.
@@ -33,11 +28,9 @@ Legg merke til `--clean --create --no-owner --no-privileges`. Vi eksporterer til
## Eksportere fra FSS
Her bruker vi `dolly-backend-dev` som eksempel. Eksport gjøres med [pg_dump](https://www.postgresql.org/docs/current/app-pgdump.html). Databasen er [definert i applikasjonen](../apps/dolly-backend/config.test.yml).
-
~~~
> pg_dump --host=dev-pg.intern.nav.no --username=USERNAME_FROM_VAULT --clean --create --no-owner --no-privileges --verbose --exclude-table=idents_from_* --exclude-table=diff_idents --exclude-table=test --file=~/dump.sql dolly-test
~~~
-
Brukernavn og passord hentes fra Vault, i dette tilfellet fra https://vault.adeo.no/ui/vault/secrets/postgresql%2Fpreprod-fss/credentials/dolly-test-admin.
Legg merke til at vi bruker `--exclude-table` i dette eksempelet. I denne databasen hadde vi noen tabeller med annen eier, som ikke lar seg eksportere med credentials fra Vault. I de fleste andre tilfeller kan du utelate `--exclude-table`.
@@ -45,11 +38,9 @@ Legg merke til at vi bruker `--exclude-table` i dette eksempelet. I denne databa
## Sette opp PSQL i Docker
**Dette gjøres bare én gang.** Vi lager oss en container kalt `postgres`, der auth er slått av fra din Docker host. Default-brukeren `postgres` vil stå som eier av alle tabeller.
-
~~~
> docker run --name postgres -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 postgres
~~~
-
Her kjøres containeren uten `--detach`, slik at vi kan følge med på logger i tilfelle feil under import, men det er valgfritt.
## Importere inn i PSQL
@@ -57,7 +48,6 @@ Her kjøres containeren uten `--detach`, slik at vi kan følge med på logger i
Import gjøres med [psql](https://www.postgresql.org/docs/current/app-psql.html). Et alternativ er [pg_restore](https://www.postgresql.org/docs/current/app-pgrestore.html), men da må eksporten gjøres med `--format=custom` og du kan ikke justere på SQLen før import ved behov.
En evt. eksisterende database vil bli erstattet, men du kan fint ha flere databaser for flere test-scenarier samtidig. Hvis du importerer fra de to eksemplene over så vil du for eksempel ha to databaser lokalt ved navn `testnav-dolly-backend` og `dolly-test`.
-
~~~
> psql --username=postgres --file=~\dump.sql
~~~
\ No newline at end of file
diff --git a/docs/local_general.md b/docs/local_general.md
index bd1a49af937..f0e3dd38ab2 100644
--- a/docs/local_general.md
+++ b/docs/local_general.md
@@ -1,5 +1,5 @@
# Kjøring lokalt
-Dette er felles for alt applikasjon som er ment å kunne kjøres lokalt.
+Dette er felles for alle applikasjoner som er ment å kunne kjøres lokalt.
* Bruk Spring profile `local`. **NB:** Noen applikasjoner/proxyer bruker fortsatt andre profiler, f.eks. `dev`. Sjekk og vurder å endre til standard `local` der det gjelder.
* Bruk VM options `--add-opens java.base/java.lang=ALL-UNNAMED`.
* Hvis Swagger er satt opp er det tilgjengelig på http://localhost:8080/swagger.
\ No newline at end of file
diff --git a/plugins/java/src/main/groovy/dolly-versions.gradle b/plugins/java/src/main/groovy/dolly-versions.gradle
index a2656a3d4de..bd7e53dcd9f 100644
--- a/plugins/java/src/main/groovy/dolly-versions.gradle
+++ b/plugins/java/src/main/groovy/dolly-versions.gradle
@@ -8,6 +8,8 @@ class DollyVersionCatalog {
String springSession = "3.3.1"
String springCloud = "2023.0.3"
+ String gcpSecretManager = "5.7.0"
+
String apacheAvro = "1.11.3"
String apacheKafka = "3.7.0"
String apachePoi = "5.3.0"
diff --git a/settings.gradle b/settings.gradle
index 3799e302e51..d875552ca0b 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -12,7 +12,7 @@ plugins {
id "com.gradle.develocity" version "3.17.4"
}
-rootProject.name = "testnorge"
+rootProject.name = "testnav"
develocity {
buildScan {