Skip to content

Latest commit

 

History

History
146 lines (93 loc) · 6.31 KB

README.md

File metadata and controls

146 lines (93 loc) · 6.31 KB

Kouta-external

kouta-external

1. Palvelun tehtävä

Tarjoaa rajapinnan ulkoisille palveluille uuden koulutustarjonnan indeksoituun dataan.
Mahdollistaa myös kouta-backendin hakujen luonnin ja muokkauksen.

2. Arkkitehtuuri

Kouta-external on Scalatralla toteutettu HTTP API, joka tarjoilee kouta-indeksoijan Elasticsearchiin indeksoimaa kouta-backendin dataa.

3. Kehitysympäristö

3.1. Esivaatimukset

Asenna haluamallasi tavalla koneellesi

  1. IntelliJ IDEA + scala plugin
  2. Docker (postgresia ja elasticsearchia varten)
  3. Maven Jos haluat ajaa komentoriviltä Mavenia, mutta idean Mavenilla pärjää kyllä hyvin, joten tämä ei ole pakollinen

Lisäksi tarvitset Java SDK:n ja Scala SDK:n (Unix pohjaisissa käyttöjärjestelmissä auttaa esim. SDKMAN!). Kirjoitushetkellä käytössä openJDK11 ja scala 2.12.10.

PostgreSQL kontti-image buildataan (täytyy tehdä vain kerran) komennnolla:

# projektin juuressa
cd postgresql/docker
docker build --tag koutaexternal-postgres .

Kopioi lokaalia kehitystä varten konfiguraatiotiedosto '/src/test/resources/dev-vars.template.yml' -> '/src/test/resources/dev-vars.yml'. Dev-vars.yml on ignoroitu Gitissä ettei salasanat valu repoon.

Lokaalin ajon asetuksia voi muuttaa muokkaamalla '/src/test/resources/dev-vars.yml'-tiedostoa.

3.2. Testien ajaminen

Jos Maven on asennettuna, voi testit ajaa myös komentoriviltä mvn test komennolla tai rajaamalla ajettavien testejä mvn test -Dsuites="<testiluokan nimet pilkulla erotettuna>". Esimerkiksi mvn test -Dsuites="fi.oph.kouta.external.integration.HakukohdeSpec"

Jos ajat testejä monta kertaa peräkkäin, ajamista voi nopeuttaa pitämällä testidatalla täytetyn ElasticSearchin koko ajan käynnissä. Tämä onnistuu seuraavilla komennoilla:

$ docker-compose up -d kouta-elastic
$ docker-compose up elasticdump-loader
$ export TEST_USE_PRERUN_ELASTIC=true

3.3. Migraatiot

Migraatiot ajetaan automaattisesti testien alussa tai kun kouta-external käynnistetään.

3.4. Ajaminen lokaalisti

Ennen lokaalia ajoa täytyy olla elasticsearch pyörimässä. Katso ohjeet elasticsearch-kontin käynnistämiseen kouta-indeksoijan README:sta

Tämän jälkeen käynnistä Ideassa embeddedJettyLauncher.scala (right-click -> Run). Tämä käynnistää samalla postgresql kontin. Sovellus käynnistyy porttiin 8097.

3.5. Ajaminen lokaalisti testiympäristön ElasticSearchia vasten

Luo seuraavanlainen src/test/resources/dev-vars.yml-tiedosto ja korvaa *YMPÄRISTÖ* testiympäristön arvolla testi, hahtuva tai untuva:

host_postgresql_koutaexternal: localhost
host_postgresql_koutaexternal_port: 5435
postgres_app_user: oph
host_postgresql_koutaexternal_app_password: oph

cas_url: https://virkailija.*YMPÄRISTÖ*opintopolku.fi/cas
kouta_external_cas_service: http://localhost:8097/kouta-external/auth/login
kouta_external_cas_username: DUMMY
kouta_external_cas_password: DUMMY

kouta_external_elasticsearch7_url: *ES_URL*
kouta_external_elasticsearch_auth_enabled: true
kouta_external_elasticsearch_username: *ES_TUNNUS*
kouta_external_elasticsearch_password: *ES_SALASANA*

host_virkailija: virkailija.*YMPÄRISTÖ*opintopolku.fi
host_alb_virkailija: virkailija.*YMPÄRISTÖ*opintopolku.fi

kouta_external_api_modify_enabled: true

Korvaa myös *ES_URL* ES:n ympäristökohtaisella julkisella osoitteella, joka löytyy täältä: https://wiki.eduuni.fi/pages/viewpage.action?pageId=266406750

Korvaa *ES_TUNNUS* ja *ES_SALASANA* oikeilla testiympäristön salasanoilla, jotka voit katsa SSM:stä AWS:n konsolin kautta tai config.py-komentorivityökalulla

Kytke päälle Opintopolun VPN.

Huom! Jos käytät SSM:stä löytyvää ElasticSearchin sisäverkon osoitetta etkä julkista, joudut tunneloimaan liikenteen bastionin läpi. Julkisella osoitteella riittää, että kytket päälle Opintopolun VPN:n

Käynnistä kouta-external lokaalisti ajamalla IntelliJ IDEA:ssa EmbeddedJettyLauncher ja mene osoitteeseen:

http://localhost:8097/kouta-external/auth/login

Kirjaudu sisään omilla testitunnuksillasi.

Lokaalin kouta-externalin pitäisi nyt ohjata kyselyt valitsemasi ympäristön ElasticSearchiin.

3.6. Swagger

Swagger löytyy osoitteesta http://localhost:8097/kouta-external/swagger/

3.7. Kehitystyökalut

Suositeltava kehitysympäristö on IntelliJ IDEA + scala plugin

3.8. Testidata

Katso kouta-indeksoijan readme:stä kuinka saat lokaaliin elasticsearchiin indeksoitua dataa. Tämän jälkeen käynnistä kouta-external tätä lokaalia elasticsearchia vasten.

Kouta-indeksoijan avulla saat päivitettyä tarvittaessa myös testien käyttämän mock-data-dumpin.

4. Ympäristöt

4.1. Testiympäristöt

Testiympäristöjen swaggerit löytyvät seuraavista osoitteista:

4.2. Asennus

Asennus hoituu samoilla työkaluilla kuin muidenkin OPH:n palvelujen. Cloud-basen dokumentaatiosta ja ylläpidolta löytyy apuja.

4.3. Lokit

Lokit löytyvät AWS:n CloudWatchista. Log groupin nimemssä on etuliitteenä ympäristön nimi, esim. untuva-app-kouta-external

5. Koodin tyyli

Projekti käyttää Scalafmt formatteria koodin formatoitiin. Voit vaihtaa idean scalan code style asetuksista formatteriksi scalafmt ja laittaa vaikka päälle automaattisen formatoinnin tallennuksen yhteydessä.