Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/fjerning av ukjent bruker #332

Merged
merged 5 commits into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 0 additions & 12 deletions nais/dev-gcp-q1.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,6 @@ spec:
- host: navansatt.dev-fss-pub.nais.io
- host: saf-q1.dev-fss-pub.nais.io

gcp:
buckets:
- name: eessi-pensjon-journal-dev-q1
retentionPeriodDays: 40
lifecycleCondition:
age: 365
createdBefore: 2020-01-01
numNewerVersions: 2
withState: ANY
uniformBucketLevelAccess: true
webproxy: true
kafka:
pool: nav-dev
Expand All @@ -45,8 +35,6 @@ spec:
value: test
- name: NAMESPACE
value: q1
- name: GCP_BUCKET_NAME_JOURNAL
value: eessi-pensjon-journal-dev-q1
- name: GCP_BUCKET_NAME_GJENNY
value: eessi-pensjon-gjenny-dev-q1
- name: EUX_RINA_API_V1_URL
Expand Down
12 changes: 0 additions & 12 deletions nais/dev-gcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,6 @@ spec:
- host: norg2.dev-fss-pub.nais.io
- host: navansatt.dev-fss-pub.nais.io
- host: saf-q2.dev-fss-pub.nais.io
gcp:
buckets:
- name: eessi-pensjon-journal-uten-bruker-dev
lifecycleCondition:
age: 365
createdBefore: 2020-01-01
numNewerVersions: 2
withState: ANY
uniformBucketLevelAccess: true

webproxy: true
kafka:
pool: nav-dev
Expand All @@ -47,8 +37,6 @@ spec:
value: test
- name: NAMESPACE
value: q2
- name: GCP_BUCKET_NAME_JOURNAL
value: eessi-pensjon-journal-uten-bruker-dev
- name: GCP_BUCKET_NAME_GJENNY
value: eessi-pensjon-gjenny-dev
- name: EUX_RINA_API_V1_URL
Expand Down
6 changes: 0 additions & 6 deletions nais/prod-gcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,13 @@ spec:
- host: saf.prod-fss-pub.nais.io

webproxy: true
gcp:
buckets:
- name: eessi-pensjon-journal-uten-bruker
uniformBucketLevelAccess: true
kafka:
pool: nav-prod
env:
- name: SPRING_PROFILES_ACTIVE
value: prod
- name: NAMESPACE
value: p
- name: GCP_BUCKET_NAME_JOURNAL
value: eessi-pensjon-journal-uten-bruker
- name: GCP_BUCKET_NAME_GJENNY
value: eessi-pensjon-gjenny
- name: EUX_RINA_API_V1_URL
Expand Down
123 changes: 0 additions & 123 deletions src/main/kotlin/no/nav/eessi/pensjon/gcp/GcpStorageService.kt
Original file line number Diff line number Diff line change
@@ -1,32 +1,23 @@
package no.nav.eessi.pensjon.gcp

import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.google.cloud.storage.BlobId
import com.google.cloud.storage.BlobInfo
import com.google.cloud.storage.Storage
import no.nav.eessi.pensjon.eux.model.SedType
import no.nav.eessi.pensjon.personidentifisering.relasjoner.secureLog
import no.nav.eessi.pensjon.utils.mapJsonToAny
import no.nav.eessi.pensjon.utils.toJson
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Component
import java.nio.ByteBuffer
import java.time.LocalDateTime
import java.time.OffsetDateTime
import java.time.temporal.ChronoUnit

@Component
class GcpStorageService(
@param:Value("\${GCP_BUCKET_NAME_GJENNY}") var gjennyBucket: String,
@param:Value("\${GCP_BUCKET_NAME_JOURNAL}") var journalBucket: String,
var gcpStorage: Storage
) {
private val logger = LoggerFactory.getLogger(GcpStorageService::class.java)

init {
ensureBucketExists(gjennyBucket)
ensureBucketExists(journalBucket)
}

private fun ensureBucketExists(bucketName: String) {
Expand All @@ -40,10 +31,6 @@ class GcpStorageService(
return eksisterer(storageKey, gjennyBucket)
}

fun journalFinnes(storageKey: String): Boolean {
return eksisterer(storageKey, journalBucket)
}

private fun eksisterer(storageKey: String, bucketName: String): Boolean {

val obj = gcpStorage.get(BlobId.of(bucketName, storageKey))
Expand All @@ -64,11 +51,6 @@ class GcpStorageService(
return hent(storageKey, gjennyBucket)
}

fun hentFraJournal(storageKey: String): JournalpostDetaljer? {
logger.debug("Henter journalpostdetaljer for rinaSakId: $storageKey")
return hent(storageKey, journalBucket)?.let { mapJsonToAny<JournalpostDetaljer>(it) }
}

private fun hent(storageKey: String, bucketName: String): String? {
try {
logger.info("storageKey: $storageKey og bucketName: $bucketName")
Expand All @@ -94,109 +76,4 @@ class GcpStorageService(
if (gjennysak != null) logger.info("Lagret info på S3 med rinaID: $euxCaseId for gjenny: ${gjennysak.toJson()}")
}
}

fun lagreJournalpostDetaljer(
journalpostId: String?,
rinaSakId: String,
rinaDokumentId: String,
sedType: SedType?,
eksternReferanseId: String
) {
val journalpostDetaljer =
JournalpostDetaljer(journalpostId, rinaSakId, rinaDokumentId, sedType, eksternReferanseId)
val blob = gcpStorage.create(
BlobInfo.newBuilder(journalBucket, rinaSakId).setContentType("application/json").build(),
journalpostDetaljer.toJson().toByteArray()
)
logger.info(
"""Journalpostdetaljer lagret i bucket:
| $journalBucket, med key: ${blob.name}
| innhold""".trimMargin() + journalpostDetaljer.toJson()
)
}

fun lagreJournalPostRequest(lagretJournalPost: String, rinaId: String?, dokId: String?) {
try {
if (rinaId == null || dokId == null) {
logger.error("Mangler informasjon fra: $rinaId, sedId: $dokId eller journalpost")
return
}
val path = "${rinaId}/${dokId}"
logger.info("Storing sedhendelse to S3: $path")
val blob = gcpStorage.create(
BlobInfo.newBuilder(journalBucket, path).setContentType("application/json").build(),
lagretJournalPost.toByteArray()
)
secureLog.info(
"""Journalpostdetaljer lagret i bucket:
| $journalBucket, med key: ${blob.name}
| innhold: ${lagretJournalPost}""".trimMargin()
)
} catch (_: Exception) {
logger.warn("Feil under lagring av journalpost request")
}
}

/**
* Henter journalpost fra bucket med blobPath Pair<JournalPostId, BlobPath>
*/
fun hentOpprettJournalpostRequest(rinaIdOgSedId: String): Pair<String, BlobId>? {
try {
val blobId = BlobId.of(journalBucket, rinaIdOgSedId)
val journalpostIdFraUkjentBruker = gcpStorage.get(blobId)
if (journalpostIdFraUkjentBruker.exists()) {
logger.info("Henter melding med rinanr $rinaIdOgSedId, for bucket $journalBucket")
val request = journalpostIdFraUkjentBruker.getContent().decodeToString()
return Pair(request, blobId)
.also {
logger.debug(
"""Journalpost fra ukjent bruker:
| blobid: $blobId
| rinaIdOgSedId: $rinaIdOgSedId
| $it""".trimMargin()
)
}
} else {
logger.error("Finner ikke lagret journalpostId for $rinaIdOgSedId, for bucket $journalBucket")
}
} catch (ex: Exception) {
logger.warn("En feil oppstod under henting av journalpostRequest objekt ved : $rinaIdOgSedId i bucket")
}
return null
}

fun arkiverteSakerForRinaId(rinaId: String, rinaDokumentId: String): List<String>? {
try {
logger.info("Henter arkiverte saker for RinaId: $rinaId, dokumentid: $rinaDokumentId")
val blobs = gcpStorage.list(journalBucket)

for (blob in blobs.iterateAll()) {
logger.debug("Undersøker blob_name: ${blob.name} mot $rinaId")
if (blob.name.contains(rinaId)) {
logger.info(
"""Vi har treff på en tidligere buc: $rinaId som mangler bruker:
| dokument: $rinaDokumentId
| lagret jp: ${blob.name}
""".trimMargin()
)
return blobs.values.filter {
it.name.contains(rinaId)
}.map { it.name }.also { logger.info("Arkiverte saker: $it") }
}
}
} catch (ex: Exception) {
logger.warn("En feil oppstod under henting av arkiverte rinasaker objekt: $rinaId i bucket", ex)
}
return null
}
}

@JsonIgnoreProperties(ignoreUnknown = true)
data class JournalpostDetaljer(
val journalpostId: String?,
val rinaSakId: String,
val rinaDokumentId: String,
val sedType: SedType?,
val eksternReferanseId: String,
val opprettet: LocalDateTime? = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS)
)
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,6 @@ class SedMottattListener(
}

override fun behandleSedHendelse(sedHendelse: SedHendelse) {
if (gcpStorageService.journalFinnes(sedHendelse.rinaSakId)) {
logger.info("Innkommende ${sedHendelse.sedType} med rinaId: ${sedHendelse.rinaSakId} finnes i GCP storage")
}

val bucType = sedHendelse.bucType!!
val buc = euxService.hentBuc(sedHendelse.rinaSakId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,6 @@ class SedSendtListener(
}

override fun behandleSedHendelse(sedHendelse: SedHendelse) {
if (gcpStorageService.journalFinnes(sedHendelse.rinaSakId)) {
logger.info("Utgående ${sedHendelse.sedType} med rinaId: ${sedHendelse.rinaSakId} finnes i GCP storage")
}
val bucType = sedHendelse.bucType!!
val buc = euxService.hentBuc(sedHendelse.rinaSakId)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,7 @@ import no.nav.eessi.pensjon.models.Tema
import no.nav.eessi.pensjon.oppgaverouting.Enhet
import no.nav.eessi.pensjon.oppgaverouting.HendelseType
import no.nav.eessi.pensjon.utils.toJson
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test

open class GcpStorageServiceTest {

Expand All @@ -41,7 +38,7 @@ open class GcpStorageServiceTest {
every { getContent() } returns lagretJournalPost.toJson().toByteArray()
}
listOf("gjennyB", "journalB").forEach { every { storage.get(it, *emptyArray<Storage.BucketGetOption>()) } returns mockk(relaxed = true)}
gcpStorageService = GcpStorageService("gjennyB", "journalB", storage)
gcpStorageService = GcpStorageService("gjennyB", storage)

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,6 @@ internal class ConfigRestTemplateTest {
every { bestemSakKlient.kallBestemSak(any()) } returns mockk(relaxed = true)
every { navansattKlient.navAnsattMedEnhetsInfo(any(), any()) } returns null
every { gcpStorageService.gjennyFinnes(any())} returns false
every { gcpStorageService.journalFinnes(any())} returns false
every { gcpStorageService.arkiverteSakerForRinaId(any(), any()) } returns emptyList()
every { hentSakService.hentSak("147666") } returns mockk(relaxed = true)
}

Expand All @@ -129,7 +127,6 @@ internal class ConfigRestTemplateTest {
val requestSlot = slot<OpprettJournalpostRequest>()

every { journalpostKlient.opprettJournalpost(capture(requestSlot), any(), null) } returns mockk(relaxed = true)
justRun { gcpStorageService.lagreJournalpostDetaljer(any(), any(), any(), any(), any()) }

sedSendtListener.consumeSedSendt(
javaClass.getResource("/eux/hendelser/P_BUC_01_P2000_MedUgyldigVedlegg.json")!!.readText(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package no.nav.eessi.pensjon.integrasjonstest

import com.ninjasquad.springmockk.MockkBean
import io.mockk.every
import io.mockk.justRun
import io.mockk.mockk
import no.nav.eessi.pensjon.EessiPensjonJournalforingTestApplication
import no.nav.eessi.pensjon.eux.klient.EuxKlientLib
Expand Down Expand Up @@ -53,13 +52,8 @@ internal class SedSendtIntegrationTest : IntegrasjonsBase() {

@BeforeEach
fun beforeEach() {
justRun { gcpStorageService.lagreJournalpostDetaljer(any(), any(), any(), any(), any()) }
every { gcpStorageService.gjennyFinnes(any()) } returns false
every { gcpStorageService.journalFinnes(any()) } returns false
every { gcpStorageService.hentFraJournal(any()) } returns null
every { gcpStorageService.arkiverteSakerForRinaId(any(), any()) } returns emptyList()
every { gcpStorageService.hentFraGjenny(any()) } returns null
justRun { gcpStorageService.lagreJournalPostRequest(any(), any(), any()) }
}

@TestConfiguration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,6 @@ internal open class JournalforingTestBase {
fun setup() {
ReflectionTestUtils.setField(kravHandler, "kravTopic", "kravTopic")
journalforingService.nameSpace = "test"
every { gcpStorageService.journalFinnes(any()) } returns false
every { gcpStorageService.gjennyFinnes(any()) } returns false
every { gcpStorageService.hentFraGjenny(any()) } returns null
}
Expand Down Expand Up @@ -232,7 +231,6 @@ internal open class JournalforingTestBase {

every { personService.harAdressebeskyttelse(any()) } returns harAdressebeskyttelse
every { navansattKlient.navAnsattMedEnhetsInfo(any(), any()) } returns null
every { gcpStorageService.journalFinnes(any()) } returns false
every { gcpStorageService.gjennyFinnes(any()) } returns false
every { gcpStorageService.hentFraGjenny(any()) } returns null

Expand Down Expand Up @@ -372,7 +370,6 @@ internal open class JournalforingTestBase {
every { navansattKlient.navAnsattMedEnhetsInfo(any(), any()) } returns null
every { journalpostKlient.oppdaterDistribusjonsinfo(any()) } returns Unit
every { etterlatteService.hentGjennySak(any()) } returns mockHentGjennySak(sakId)
every { gcpStorageService.journalFinnes(any()) } returns false
every { gcpStorageService.gjennyFinnes(any()) } returns false
every { gcpStorageService.hentFraGjenny(any()) } returns null

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -897,7 +897,6 @@ internal class PBuc10IntegrationTest : JournalforingTestBase() {
?: SED.generateSedToClass(createSedPensjon(SedType.P15000, fnrVoksen, eessiSaknr = sakId, gjenlevendeFnr = fnrBarn, krav = krav, pdlPerson = sokPerson , relasjon = relasjonAvod))

initCommonMocks(sed, alleDocs)
every { gcpStorageService.journalFinnes(any()) } returns false
every { gcpStorageService.gjennyFinnes(any()) } returns false
every { gcpStorageService.hentFraGjenny(any()) } returns null

Expand Down Expand Up @@ -1062,7 +1061,6 @@ internal class PBuc10IntegrationTest : JournalforingTestBase() {
if (benyttSokPerson) {
every { personService.sokPerson(any()) } returns setOf(IdentInformasjon(fnrBarn, IdentGruppe.FOLKEREGISTERIDENT), IdentInformasjon("BLÆ", IdentGruppe.AKTORID))
}
every { gcpStorageService.journalFinnes(any()) } returns false
every { gcpStorageService.gjennyFinnes(any()) } returns false
every { gcpStorageService.hentFraGjenny(any()) } returns null

Expand Down Expand Up @@ -1119,7 +1117,6 @@ internal class PBuc10IntegrationTest : JournalforingTestBase() {
val sed = SED.generateSedToClass<P15000>(createSedPensjon(SedType.P15000, fnrVoksen, eessiSaknr = sakId, gjenlevendeFnr = fnrVoksenSoker, krav = krav, relasjon = relasjonAvod))
initCommonMocks(sed, alleDocs)
every { gcpStorageService.hentFraGjenny(any()) } returns null
every { gcpStorageService.journalFinnes(any()) } returns false
every { gcpStorageService.gjennyFinnes(any()) } returns false

every { personService.hentPerson(NorskIdent(fnrVoksen)) } returns createBrukerWith(fnrVoksen, "Voksen ", "Forsikret", land, aktorId = AKTOER_ID)
Expand Down Expand Up @@ -1192,7 +1189,6 @@ internal class PBuc10IntegrationTest : JournalforingTestBase() {

every { navansattKlient.navAnsattMedEnhetsInfo(any(), any()) } returns null
every { journalpostKlient.oppdaterDistribusjonsinfo(any()) } returns Unit
every { gcpStorageService.journalFinnes(any()) } returns false
every { gcpStorageService.gjennyFinnes(any()) } returns false
every { gcpStorageService.hentFraGjenny(any()) } returns null

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class JournalforingServiceMedGCPTest {
gcpStorage = mockk<Storage>()
every { gcpStorage.get(eq("bucket"), *anyVararg()) } returns mockk<Bucket>()

gcpStorageService = GcpStorageService("bucket", "bucket", gcpStorage)
gcpStorageService = GcpStorageService("bucket", gcpStorage)
safClient = mockk()
oppgaveroutingService = mockk()
pdfService = mockk()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ internal class SedMottattListenerTest {
private val euxService = mockk<EuxService>(relaxed = true)
private val bestemSakService = mockk<BestemSakService>(relaxed = true)
private val gcpStorageService = mockk<GcpStorageService>().apply {
every { journalFinnes(any()) } returns false
justRun { lagre(any(), any()) }
}

Expand Down
Loading
Loading