Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
c9c8907
Klargjør for rapid
joarau Nov 11, 2025
228096e
Legg til varsellytter for rekrutteringstreff
joarau Nov 12, 2025
73b02ae
Bruk riktige parametere for rekrutteringstreff
joarau Nov 12, 2025
274eba9
Send repidconnection i steden for funksjon for isalive
joarau Nov 12, 2025
f2c1685
Bytt til avsenderreferanseid i steden for stilling id, bortsett fra i…
joarau Nov 12, 2025
732ba41
Lag eget apikall for rekrutteringstreff
joarau Nov 12, 2025
628128d
Legg til flere endepunktstester
joarau Nov 12, 2025
5092cfe
Skill ut meldingsmaler for rekrtteringstreff til eget hent endepunkt
joarau Nov 12, 2025
833789a
Rydd opp i main fil
joarau Nov 13, 2025
263964b
Deprecate gammelt endpoint
joarau Nov 13, 2025
4a903fa
FIkse kommenatarer
joarau Nov 13, 2025
9b9301d
Håndter at stilling ikke finnes med en exception til scheduler
joarau Nov 13, 2025
12a4eb6
Refacor til å bruke to maler en for rekrutteringstreff og en for stil…
joarau Nov 14, 2025
5525a7f
Fiks enum navn
joarau Nov 17, 2025
2374dfb
Fiks intendering
joarau Nov 17, 2025
b1e682f
bruk riktig adresse for rekrutteringstreff
joarau Nov 17, 2025
1221ce7
Fiks logging
joarau Nov 17, 2025
78e1d32
Oppgrader mockk
joarau Nov 17, 2025
2ccedff
Fiks avhengigheter, oppgrader til nyere postgres i test, og deploy ti…
joarau Nov 17, 2025
55c2267
Legg til groupid for kafka
joarau Nov 17, 2025
5c7a082
Legg til groupid for kafka
joarau Nov 17, 2025
c0319fe
Legger til rapid topic i kafka konfigurasjon
joarau Nov 18, 2025
13e709d
Legg til riktig format på nais env variabler
joarau Nov 18, 2025
7304cdd
Fiks oppsett rapid
joarau Nov 18, 2025
fefd5a4
Bruk avhengigheter uten ktor for rapid, og forenkel testrapid med del…
joarau Nov 18, 2025
02fd77c
Putt rapid i tråd
joarau Nov 18, 2025
0b32722
legg til større timeout for rapid restart
joarau Nov 19, 2025
a0618dc
Lag konsekvent navngiving for rapid eventer og tilhørende kodenavn
joarau Nov 19, 2025
176f8c4
Skiftet til camelcase for eventer i rapid
joarau Nov 19, 2025
086f951
Bytt til rekrutteringstreffid som avsenderid, ikke varselid det var f…
joarau Nov 20, 2025
8401228
Bytt til andre eventnavn for invitasjon og treffendret hendelse fra r…
joarau Nov 21, 2025
e957a2c
Fjern unødvendig parameter for tittel ved rekrutteringstreff
joarau Nov 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
name: Build and deploy
on: [ push, workflow_dispatch ]
on: [push, workflow_dispatch]

jobs:
call-build-and-deploy:
uses: navikt/toi-github-actions-workflows/.github/workflows/build-and-deploy.yaml@v1
with:
java-version: '21'
deploy-to-dev-if-branch-name-is: 'eksponer-kanal-frontend'
java-version: "21"
deploy-to-dev-if-branch-name-is: "rapid"
permissions:
contents: read
id-token: write
Expand Down
38 changes: 23 additions & 15 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
plugins {
application
kotlin("jvm") version "1.9.21"
kotlin("jvm") version "2.2.21"
}

group = "no.nav"
version = "1.0-SNAPSHOT"

val mockOAuth2ServerVersion = "2.1.0"
val mockOAuth2ServerVersion = "2.2.1"
val fuelVersion = "2.3.1"
val javalinVersion = "6.1.3"
val javalinVersion = "6.7.0"

application {
mainClass.set("no.nav.toi.kandidatvarsel.MainKt")
Expand All @@ -22,36 +22,44 @@ repositories {

dependencies {
implementation("io.javalin:javalin:$javalinVersion")
implementation("ch.qos.logback:logback-classic:1.4.12")
implementation("net.logstash.logback:logstash-logback-encoder:7.2")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.14.0")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.0")
implementation("com.auth0:java-jwt:4.4.0")
implementation("com.auth0:jwks-rsa:0.22.1")
implementation("ch.qos.logback:logback-classic:1.5.18")
implementation("net.logstash.logback:logstash-logback-encoder:8.1")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.19.0")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.19.0")
implementation("com.auth0:java-jwt:4.5.0")
implementation("com.auth0:jwks-rsa:0.22.2")
implementation("no.nav.common:audit-log:3.2023.12.12_13.53-510909d4aa1a")
implementation("org.codehaus.janino:janino:3.1.11")
implementation("com.fasterxml.uuid:java-uuid-generator:5.0.0")
implementation("org.codehaus.janino:janino:3.1.12")
implementation("com.fasterxml.uuid:java-uuid-generator:5.1.0")
implementation("com.github.kittinunf.fuel:fuel:$fuelVersion")
implementation("com.github.kittinunf.fuel:fuel-jackson:$fuelVersion")

implementation("org.apache.kafka:kafka-clients:3.7.0")
implementation("org.apache.kafka:kafka-clients:4.1.0")
implementation("no.nav.tms.varsel:kotlin-builder:1.0.0")

implementation("com.zaxxer:HikariCP:5.1.0")
implementation("com.zaxxer:HikariCP:6.3.0")
implementation("org.springframework:spring-jdbc:6.1.5")
implementation("org.postgresql:postgresql:42.7.3")
implementation("org.flywaydb:flyway-core:10.10.0")
implementation("org.flywaydb:flyway-database-postgresql:10.10.0")

// Rapids and rivers fra tbd-libs (uten Ktor)
val tbdLibsVersion = "2024.11.25-10.59-6f263a10"
implementation("com.github.navikt.tbd-libs:rapids-and-rivers:$tbdLibsVersion")
implementation("com.github.navikt.tbd-libs:rapids-and-rivers-api:$tbdLibsVersion")
implementation("com.github.navikt.tbd-libs:kafka:$tbdLibsVersion")
testImplementation("com.github.navikt.tbd-libs:rapids-and-rivers-test:$tbdLibsVersion")

testImplementation(platform("org.junit:junit-bom:5.10.2"))
testImplementation("org.junit.jupiter:junit-jupiter")
testImplementation("uk.org.webcompere:system-stubs-jupiter:2.1.6")
testImplementation("uk.org.webcompere:system-stubs-jupiter:2.1.8")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
testImplementation("org.assertj:assertj-core:3.23.1")
testImplementation("no.nav.security:mock-oauth2-server:$mockOAuth2ServerVersion")
testImplementation("org.wiremock:wiremock:3.3.1")
testImplementation("org.skyscreamer:jsonassert:1.5.1")
testImplementation("org.testcontainers:postgresql:1.19.7")
testImplementation("org.testcontainers:postgresql:1.21.3")
testImplementation("io.mockk:mockk:1.14.6")
}

tasks.test {
Expand Down
3 changes: 2 additions & 1 deletion nais/dev-gcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@
},
"dbTier": "db-f1-micro",
"kafkaPool": "nav-dev",
"fssCluster": "dev-fss"
"fssCluster": "dev-fss",
"kafka_consumer_group_id": "rekrutteringsbistand-kandidatvarsel-api-1"
}
7 changes: 7 additions & 0 deletions nais/nais.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ spec:
- application: rekrutteringsbistand-stilling-api
- application: rekrutteringsbistand-kandidatsok-api
env:
- name: KAFKA_RAPID_TOPIC
value: toi.rapid-1
- name: KAFKA_CONSUMER_GROUP_ID
value: {{ kafka_consumer_group_id }}
- name: KAFKA_RESET_POLICY
value: "earliest"
- name: AD_GROUP_REKBIS_ARBEIDSGIVERRETTET
value: {{adGroupRekbisArbeidsgiverrettet}}
- name: AD_GROUP_REKBIS_JOBBSOKERRETTET
Expand All @@ -50,6 +56,7 @@ spec:
value: {{adGroupRekbisUtvikler}}
- name: KANDIDATSOK_API_URL
value: http://rekrutteringsbistand-kandidatsok-api

{{#each env }}
- name: {{ @key }}
value: {{ this }}
Expand Down
3 changes: 2 additions & 1 deletion nais/prod-gcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@
"env": {},
"dbTier": "db-custom-1-3840",
"kafkaPool": "nav-prod",
"fssCluster": "prod-fss"
"fssCluster": "prod-fss",
"kafka_consumer_group_id": "rekrutteringsbistand-kandidatvarsel-api-1"
}
4 changes: 3 additions & 1 deletion src/main/kotlin/no/nav/toi/kandidatvarsel/Javalin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import auth.obo.KandidatsokApiKlient
import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.github.navikt.tbd_libs.rapids_and_rivers.KafkaRapid
import com.zaxxer.hikari.HikariDataSource
import io.javalin.Javalin
import io.javalin.http.HttpStatus
Expand All @@ -18,6 +19,7 @@ fun startJavalin(
dataSource: HikariDataSource,
migrateResult: AtomicReference<MigrateResult>,
kandidatsokApiKlient: KandidatsokApiKlient,
kafkaRapid: KafkaRapid,
port: Int = 8080,
): Javalin = Javalin
.create {
Expand All @@ -37,7 +39,7 @@ fun startJavalin(
}
.apply {
azureAdAuthentication(azureAdConfig)
handleHealth(dataSource, migrateResult)
handleHealth(dataSource, migrateResult, kafkaRapid)
handleVarsler(dataSource, kandidatsokApiKlient)
handleMeldingsmal()

Expand Down
23 changes: 15 additions & 8 deletions src/main/kotlin/no/nav/toi/kandidatvarsel/KubernetesHealthApi.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.toi.kandidatvarsel

import com.github.navikt.tbd_libs.rapids_and_rivers.KafkaRapid
import io.javalin.Javalin
import io.javalin.http.Handler
import io.javalin.http.HttpStatus
Expand All @@ -8,21 +9,27 @@ import org.flywaydb.core.api.output.MigrateResult
import java.util.concurrent.atomic.AtomicReference
import javax.sql.DataSource

fun Javalin.handleHealth(dataSource: DataSource, migrationResult: AtomicReference<MigrateResult>) {
fun Javalin.handleHealth(
dataSource: DataSource,
migrationResult: AtomicReference<MigrateResult>,
kafkaRapid: KafkaRapid
) {
fun checks(checks: Map<String, () -> Boolean>) = Handler { ctx ->
val checkOutcomes = checks.mapValues { it.value() }
val httpStatus = if (checkOutcomes.all { it.value }) HttpStatus.OK else HttpStatus.SERVICE_UNAVAILABLE
ctx.status(httpStatus).json(checkOutcomes)
}

val isReadyChecks = mapOf(
"database" to { dataSource.isReady() },
"migration" to { migrationResult.get()?.success == true }
)
val isReadyChecks = buildMap {
put("database") { dataSource.isReady() }
put("migration") { migrationResult.get()?.success == true }
put("rapid") { kafkaRapid.isRunning() }
}

val isAliveChecks = mapOf(
"migration" to { migrationResult.get()?.success != false }
)
val isAliveChecks = buildMap {
put("migration") { migrationResult.get()?.success != false }
put("rapid") { kafkaRapid.isRunning() }
}

get("/internal/ready", checks(isReadyChecks), UNPROTECTED)
get("/internal/alive", checks(isAliveChecks), UNPROTECTED)
Expand Down
Loading
Loading