Skip to content

Commit

Permalink
Merge branch 'master' into avd-leder-vise-koer-v3
Browse files Browse the repository at this point in the history
  • Loading branch information
mbolstad committed Nov 19, 2024
2 parents ccc7cc2 + c7cfcba commit 9cedc67
Show file tree
Hide file tree
Showing 36 changed files with 593 additions and 574 deletions.
21 changes: 10 additions & 11 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

val mainClass = "no.nav.k9.los.K9LosKt"
val hikariVersion = "6.0.0"
val flywayVersion = "10.19.0"
val hikariVersion = "6.1.0"
val flywayVersion = "10.21.0"
val vaultJdbcVersion = "1.3.10"
val koinVersion = "4.0.0"
val kotliqueryVersion = "1.9.0"
val k9SakVersion = "5.0.1"
val k9SakVersion = "5.1.1"
val k9KlageVersion = "0.4.5"
val fuelVersion = "2.3.1"
val jacksonVersion = "2.17.2"
val commonsTextVersion = "1.12.0"

val dusseldorfKtorVersion = "5.0.9"
val dusseldorfKtorVersion = "5.0.10"
val ktorVersion = "2.3.12"
val kafkaVersion = "3.8.0"
val kafkaVersion = "3.9.0"

val navTilgangskontroll = "3.2024.01.24_10.14-f70bae69bd65"

// Test Dependencies
val testContainers = "1.20.2"
val testContainers = "1.20.3"
val jsonassertVersion = "1.5.3"
val jupiterVersion = "5.11.2"
val jupiterVersion = "5.11.3"
val assertkVersion = "0.28.1"
val mockkVersion = "1.13.13"

Expand All @@ -48,7 +48,6 @@ dependencies {
implementation("io.ktor:ktor-server-status-pages:$ktorVersion")
implementation("io.ktor:ktor-server-cors:$ktorVersion")
implementation("io.ktor:ktor-server-call-logging:$ktorVersion")
implementation("io.ktor:ktor-server-locations-jvm:$ktorVersion")
implementation("io.ktor:ktor-server-html-builder-jvm:$ktorVersion")
implementation("io.ktor:ktor-server-websockets-jvm:$ktorVersion")
implementation("io.ktor:ktor-client-auth-jvm:$ktorVersion")
Expand All @@ -74,9 +73,9 @@ dependencies {
implementation("no.nav.k9.statistikk:kontrakter:2.0_20220411110858_dc06dd1")

// opentelemetry
implementation("io.opentelemetry:opentelemetry-api:1.43.0")
implementation("io.opentelemetry:opentelemetry-extension-kotlin:1.43.0")
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:2.8.0")
implementation("io.opentelemetry:opentelemetry-api:1.44.1")
implementation("io.opentelemetry:opentelemetry-extension-kotlin:1.44.1")
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:2.10.0")

// Div
implementation(enforcedPlatform( "com.fasterxml.jackson:jackson-bom:$jacksonVersion"))
Expand Down
4 changes: 2 additions & 2 deletions nais/alerts/alert-manager.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ spec:
iconEmoji: ':error:'
sendResolved: true
httpConfig:
proxyURL: http://webproxy.nais:8088
proxyUrl: http://webproxy.nais:8088
title: |-
[\{{ .Status | toUpper }}\{{ if eq .Status "firing" }}:\{{ .Alerts.Firing | len }}\{{ end }}] \{{ .CommonLabels.alertname }}
text: |-
\{{ range .Alerts -}}
*Alert:* \{{ .Annotations.title }}\{{ if .Labels.severity }} - `\{{ .Labels.severity }}`\{{ end }}
*Summary:* \{{ .Annotations.summary }}
*Description:* \{{ .Annotations.description }} <https://logs.adeo.no/app/discover#/?_g=(time:(from:now-24h,to:now))&_a=(columns:!(message,envclass,level),index:'96e648c0-980a-11e9-830a-e17bbd64b4db',interval:auto,query:(language:lucene,query:'%2Bapplication:%22k9-los-api%22%20%2Bcluster:{{ cluster }}%20%2Blevel:Error'))|kibana>
*Description:* \{{ .Annotations.description }} <https://logs.adeo.no/app/r/s/96GYs|kibana>
\{{ end }}
color: |-
\{{ if eq .Status "firing" -}}
Expand Down
3 changes: 3 additions & 0 deletions nais/kafka/produksjonsstyring-k9sak.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ spec:
- team: k9saksbehandling
application: k9-sak
access: write
- team: k9saksbehandling
application: ung-sak
access: write
- team: k9saksbehandling
application: k9-los-api
access: read
2 changes: 2 additions & 0 deletions nais/prod-fss.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ spec:
runtime: java
destinations:
- id: "elastic-apm"
- id: "grafana-lgtm"

vault:
enabled: true
paths:
Expand Down
23 changes: 9 additions & 14 deletions src/main/kotlin/no/nav/k9/los/K9Los.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import io.ktor.serialization.jackson.*
import io.ktor.server.application.*
import io.ktor.server.auth.*
import io.ktor.server.http.content.*
import io.ktor.server.locations.*
import io.ktor.server.metrics.micrometer.*
import io.ktor.server.plugins.callid.*
import io.ktor.server.plugins.callloging.*
Expand Down Expand Up @@ -54,7 +53,7 @@ import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.tilbaketillos.k9TilbakeE
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.tilbaketillos.k9tilbakeKorrigerOutOfOrderProsessor
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9klagetillos.K9KlageTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9saktillos.K9SakTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9tilbaketillos.K9TilbakeTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.tilbaketillos.K9TilbakeTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.forvaltning.forvaltningApis
import no.nav.k9.los.nyoppgavestyring.ko.KøpåvirkendeHendelse
import no.nav.k9.los.nyoppgavestyring.ko.OppgaveKoApis
Expand All @@ -70,7 +69,7 @@ import no.nav.k9.los.tjenester.avdelingsleder.nokkeltall.NokkeltallApis
import no.nav.k9.los.tjenester.avdelingsleder.oppgaveko.AvdelingslederOppgavekøApis
import no.nav.k9.los.tjenester.driftsmeldinger.DriftsmeldingerApis
import no.nav.k9.los.tjenester.fagsak.FagsakApis
import no.nav.k9.los.tjenester.innsikt.innsiktGrensesnitt
import no.nav.k9.los.tjenester.innsikt.InnsiktApis
import no.nav.k9.los.tjenester.kodeverk.KodeverkApis
import no.nav.k9.los.tjenester.konfig.KonfigApis
import no.nav.k9.los.tjenester.mock.localSetup
Expand Down Expand Up @@ -114,7 +113,7 @@ fun Application.k9Los() {
val k9TilbakeTilLosAdapterTjeneste = koin.get<K9TilbakeTilLosAdapterTjeneste>()
k9TilbakeTilLosAdapterTjeneste.setup()

if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 9, 18, 11, 30))) {
if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 18, 20, 30))) {
if (1 == 0) { //HAXX for å ikke kjøre jobb, men indikere at koden er i bruk og dermed ikke slettes
//koin.get<ReservasjonKonverteringJobb>().kjørReservasjonskonvertering() //TODO slette
//koin.get<K9SakTilLosLukkeFeiloppgaverTjeneste>().kjørFeiloppgaverVask() //TODO slette
Expand All @@ -123,9 +122,7 @@ fun Application.k9Los() {
koin.get<K9KlageTilLosHistorikkvaskTjeneste>().kjørHistorikkvask()
koin.get<K9TilbakeTilLosHistorikkvaskTjeneste>().kjørHistorikkvask()
}
if (configuration.koinProfile == KoinProfile.PREPROD) {
koin.get<K9PunsjTilLosHistorikkvaskTjeneste>().kjørHistorikkvask()
}
koin.get<K9TilbakeTilLosHistorikkvaskTjeneste>().kjørHistorikkvask()
}

install(Authentication) {
Expand Down Expand Up @@ -301,8 +298,6 @@ fun Application.k9Los() {
logRequests()
}

install(Locations)

install(Routing) {

MetricsRoute()
Expand All @@ -320,7 +315,7 @@ fun Application.k9Los() {
// localSetup.initPunsjoppgave()
api(sseChannel)
route("/forvaltning") {
innsiktGrensesnitt()
InnsiktApis()
forvaltningApis()
route("k9saktillos") { K9SakTilLosApi() }
route("k9klagetillos") { K9KlageTilLosApi() }
Expand All @@ -335,7 +330,7 @@ fun Application.k9Los() {
} else {
authenticate(*issuers.allIssuers()) {
route("forvaltning") {
innsiktGrensesnitt()
InnsiktApis()
forvaltningApis()
route("k9saktillos") { K9SakTilLosApi() }
route("k9klagetillos") { K9KlageTilLosApi() }
Expand Down Expand Up @@ -413,9 +408,9 @@ private fun Route.api(sseChannel: BroadcastChannel<SseEvent>) {
route("ny-oppgavestyring") {
route("ko", { hidden = true }) { OppgaveKoApis() }
route("oppgave", { hidden = true }) { OppgaveQueryApis() }
route("feltdefinisjon", { hidden = true }) { FeltdefinisjonApi() }
route("oppgavetype", { hidden = true }) { OppgavetypeApi() }
route("oppgave-v3", { hidden = true }) { OppgaveV3Api() }
route("feltdefinisjon", { hidden = true }) { FeltdefinisjonApi() } // Må legge til tilgangskontroll dersom disse endepunktene aktiveres
route("oppgavetype", { hidden = true }) { OppgavetypeApi() } // Må legge til tilgangskontroll dersom disse endepunktene aktiveres
route("oppgave-v3", { hidden = true }) { OppgaveV3Api() } // Må legge til tilgangskontroll dersom disse endepunktene aktiveres
route("sok") { SøkeboksApi() }
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/no/nav/k9/los/KoinProfiles.kt
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.tilbaketillos.k9TilbakeE
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9klagetillos.K9KlageTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9saktillos.K9SakTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9saktillos.K9SakTilLosLukkeFeiloppgaverTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9tilbaketillos.K9TilbakeTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.tilbaketillos.K9TilbakeTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.forvaltning.ForvaltningRepository
import no.nav.k9.los.nyoppgavestyring.ko.KøpåvirkendeHendelse
import no.nav.k9.los.nyoppgavestyring.ko.OppgaveKoTjeneste
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ interface IPepClient {

suspend fun kanLeggeUtDriftsmelding(): Boolean

suspend fun harTilgangTilReservingAvOppgaver(): Boolean
suspend fun harTilgangTilReserveringAvOppgaver(): Boolean

suspend fun kanSendeSakTilStatistikk(
fagsakNummer: String
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class PepClient(
return evaluate(requestBuilder)
}

override suspend fun harTilgangTilReservingAvOppgaver(): Boolean {
override suspend fun harTilgangTilReserveringAvOppgaver(): Boolean {
val requestBuilder = XacmlRequestBuilder()
.addResourceAttribute(RESOURCE_DOMENE, DOMENE)
.addResourceAttribute(RESOURCE_TYPE, TILGANG_SAK)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class PepClientLocal : IPepClient {
return true
}

override suspend fun harTilgangTilReservingAvOppgaver(): Boolean {
override suspend fun harTilgangTilReserveringAvOppgaver(): Boolean {
return true
}

Expand Down
5 changes: 3 additions & 2 deletions src/main/kotlin/no/nav/k9/los/integrasjon/pdl/PdlService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -110,16 +110,17 @@ class PdlService constructor(
} catch (e: Exception) {
try {
val value = LosObjectMapper.instance.readValue<Error>(json!!)
log.warn("Fikk pdl-feil ${value.errors.joinToString(",")}", e)

if (value.errors.any { it.extensions?.code == "unauthorized" }) {
val resultat = PersonPdlResponse(true, null)
//TODO vurder å cache her også
//aktørIdTilPersonCache.set(cacheKey, CacheObject(resultat, LocalDateTime.now().plus(pdlCacheVarighet)))
return resultat
} else {
log.warn("Fikk ukjent error fra pdl (noe annet enn 'unauthorized'): ${value.errors.joinToString(",")}", e)
}
} catch (e: Exception) {
log.warn(e.message, e)
log.warn("Ukjent feil ved tolkning av error fra pdl", e)
}
return PersonPdlResponse(false, null)
}
Expand Down
2 changes: 0 additions & 2 deletions src/main/kotlin/no/nav/k9/los/integrasjon/pdl/PersonPdl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.fasterxml.jackson.databind.annotation.JsonSerialize
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer
import org.slf4j.LoggerFactory
import java.time.LocalDate


data class PersonPdl(
val `data`: Data
) {
val log = LoggerFactory.getLogger("PersonPdl")!!
data class Data(
val hentPerson: HentPerson
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9tilbaketillos
package no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.tilbaketillos

import kotlinx.coroutines.*
import kotliquery.TransactionalSession
Expand All @@ -7,7 +7,6 @@ import no.nav.k9.los.domene.lager.oppgave.v2.TransactionalManager
import no.nav.k9.los.domene.repository.BehandlingProsessEventTilbakeRepository
import no.nav.k9.los.eventhandler.DetaljerMetrikker
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.HistorikkvaskMetrikker
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.tilbaketillos.K9TilbakeTilLosAdapterTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9saktillos.TilbakeEventTilDtoMapper
import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.OppgaveV3
import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.OppgaveV3Tjeneste
Expand Down Expand Up @@ -142,16 +141,16 @@ class K9TilbakeTilLosHistorikkvaskTjeneste(

val behandlingProsessEventer = DetaljerMetrikker.time("k9tilbakeHistorikkvask", "hentEventer") { behandlingProsessEventTilbakeRepository.hentMedLås(tx, uuid).eventer }
val høyesteInternVersjon = DetaljerMetrikker.time("k9tilbakeHistorikkvask", "hentHøyesteInternVersjon") {
oppgaveV3Tjeneste.hentHøyesteInternVersjon(uuid.toString(), "k9tilbake", "K9", tx)!!
oppgaveV3Tjeneste.hentHøyesteInternVersjon(uuid.toString(), "k9tilbake", "K9", tx)
}
var eventNrForBehandling = 0L
var oppgaveV3 : OppgaveV3? = null
for (event in behandlingProsessEventer) {
if (eventNrForBehandling > høyesteInternVersjon) {
if (høyesteInternVersjon != null && eventNrForBehandling > høyesteInternVersjon) {
log.info("Avbryter historikkvask for ${event.eksternId} ved eventTid ${event.eventTid}. Forventer at håndteres av vanlig adaptertjeneste.")
break //Historikkvasken har funnet eventer som ennå ikke er lastet inn med normalflyt. Dirty eventer skal håndteres av vanlig adaptertjeneste
}
var oppgaveDto = TilbakeEventTilDtoMapper.lagOppgaveDto(event, forrigeOppgave)
val oppgaveDto = TilbakeEventTilDtoMapper.lagOppgaveDto(event, forrigeOppgave)

oppgaveV3 = DetaljerMetrikker.time("k9tilbakeHistorikkvask", "utledEksisterendeOppgaveversjon") { oppgaveV3Tjeneste.utledEksisterendeOppgaveversjon(oppgaveDto, eventNrForBehandling, tx) }
DetaljerMetrikker.time("k9tilbakeHistorikkvask", "oppdaterEksisterendeOppgaveversjon") { oppgaveV3Tjeneste.oppdaterEksisterendeOppgaveversjon(oppgaveV3, eventNrForBehandling, tx) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.launch
import no.nav.k9.los.eventhandler.ChannelMetrikker
import no.nav.k9.los.eventhandler.asCoroutineDispatcherWithErrorHandling
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9tilbaketillos.K9TilbakeTilLosHistorikkvaskTjeneste
import org.slf4j.LoggerFactory
import java.util.*
import java.util.concurrent.Executors
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,14 @@ class TilbakeEventTilDtoMapper {
),
OppgaveFeltverdiDto(
nøkkel = "registrertDato",
//TODO feltet heter *dato, avrunde til dato?
verdi = forrigeOppgave?.hentVerdi("registrertDato")
?: event.opprettetBehandling.truncatedTo(ChronoUnit.SECONDS).toString()
),
OppgaveFeltverdiDto(
nøkkel = "mottattDato",
verdi = forrigeOppgave?.hentVerdi("mottattDato")
?: event.opprettetBehandling.truncatedTo(ChronoUnit.SECONDS).toString()
),
OppgaveFeltverdiDto(
nøkkel = "feilutbetaltBeløp",
verdi = event.feilutbetaltBeløp?.toString() ?: forrigeOppgave?.hentVerdi("feilutbetaltBeløp")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package no.nav.k9.los.nyoppgavestyring.ko

data class AntallOppgaver(val antallUtenReserverte: Long)
Loading

0 comments on commit 9cedc67

Please sign in to comment.