ePhorte-synkronisering

Driftsdokumentasjon og veiledning i ePhortesynkroniseringen.

1   Innledning

Høsten 2014 ble det innledet arbeide med en ny synkronisering mot ePhorte. Den gamle synkroniseringen bestod av en Cerebrum-jobb som genererte en XML-fil, og et Java-program som snakket SOAP mot ePhorte. Den nye versjonen er et Cerebrum-script som snakker direkte med ePhorte via en tjeneste (SOAP).

Forskjeller fra tidligere tjeneste:

  • Slettet Java-program. Ikke lenger bruk for jobbene: - Henting av ephorte-sted-fil - Gammel ephorte-sync
  • Erstattet contrib/no/uio/generate_ephorte_export.py med ny sync
  • Ikke behov for ephorte-eksportfiler (XML) eller ephorte-steder.dat
  • contrib/no/uio/populate_ephorte.py er nesten uforandret, men den henter nå stedkoder fra ePhorte direkte.

2   Konfigurasjon

Før prodsettelse må man ha en config-fil (f.eks. kalt sync_ephorte.cfg i etc-directory). Ved å kjøre contrib/no/uio/sync_ephorte_person.py --config-help, genereres en mal for denne filen. Faktiske verdier i filen må gis ved prodsettelse.

I tillegg trengs passordfil for ePhorte-tjenesten. Denne er på samme format som andre passordfiler i Cerebrum, og legges i samme katalog:

[DEFAULT]
wsdl=https://example.com/foo/bar/baz?wsdl
username=bruker
…

gjør at scriptet forventer:

…/etc/passwords/passwd-bruker@example.com med innhold
"bruker\tpassord"

Eksempel på konfigfil:

[DEFAULT]
wsdl=https://ephuiotest.trofast.uio.no/cerebrum2ephorte/Service.svc?wsdl
customer_id=UiO2
database=uiotest2
username=ephsys
client_key=None
client_cert=None
ca_certs=None
selection_spread=ePhorte_person
changes_too_old_days=200

Her vil cryptoparametrene være

ca_certs:Filnavn med CA-sertifikater
client_cert:PEM-fil med sertifikat
client_key:PEM-fil med privatnøkkel (hvis ikke lagt inn i client_cert).

None vil i configfilen tolkes som ikke satt.

Både populate_ephorte.py og sync_ephorte_persons.py tar et argument, --config, som angir configfilnavn. Denne defaulter til sync_ephorte.cfg hvis ikke angitt. Dersom filen ikke finnes, prøves også cereconf.CONFIG_PATH (så default er ./sync_ephorte.cfg etterfulgt av cereconf.CONFIG_PATH + /sync_ephorte.cfg).

Parametret changes_too_old_days brukes av quick-syncen; changelog-oppføringer eldre enn dette antall dager ignoreres.

Andre konfigurasjonsparametre hentes også fra cereconf.py, nemlig og ikke bare dette:

EPHORTE_FSAT_SKO , stedkodene som listes opp i denne python listen får ansatte til å automatisk bli assignet: Arkivdel som "SAK FSAT" og journalenhet som J-FSAT

3   Miljø

Vi er blitt enige med eSAK, ved Lena Andersen, om kva miljø som skal brukast i dei ulike fasane ved utvikling, staging og produksjon:

Stadie Cerebrum-miljø Trofast-host ePhorte-database
Test/utvikling cere-utv01.uio.no ephuiotest.trofast.uio.no test
Staging Cerebrum testmiljø TODO kurs
Produksjon cerebrum-uio.uio.no ephuio.trofast.uio.no prod

4   Overgang

I en periode er synkronisering av tilganger ikke gjort. sync_ephorte_persons.py har en modus som vil spytte ut de endringer som en fullsync vil gjøre, men uten å gjøre det:

python contrib/no/uio/sync_ephorte_persons.py --permission-report rapport.txt

Denne vil her generere filen rapport.txt, som ePhorte-ansvarlige kan gå gjennom før prodsettelse.

5   Beskrivelse av opsjoner

python contrib/no/uio/sync_ephorte_persons.py --help vil skrive ut melding om opsjoner til kommandolinjen. Kort sagt må det oppgis en kommando:

full-persons:Syncer persondata (navn, e-post, kontaktinfo osv.) for alle med spread.
full-roles-perms:Syncer roller og tilganger for alle med spread.
quick-roles-perms:Endrer roller og tilganger for alle med spread.
permission-report filnavn:Skriver en rapport over hva full-roles-perms ville ha gjort.

I tillegg kommer config, som er beskrevet over, og commit. Kjører man uten commit, vil endringer ikke ha effekt hverken i Cerebrum eller ePhorte.

6   Scheduled_jobs

Det er nå tre jobber som må settes opp for å synce med ePhorte:

:populate: contrib/no/uio/populate_ephorte.py -r -p [--mail-warnings-to e-post]
:sync persondata: contrib/no/uio/sync_ephorte_persons.py --full-persons --commit
:sync roller og tilganger: contrib/no/uio/sync_ephorte_persons.py --quick-roles-perms --commit

Det tilbys også en fullsync av roller og tilganger, som kan kjøres av og til:

contrib/no/uio/sync_ephorte_persons.py --full-roles-perms --commit

7   Feilmeldinger

Under følger en liste over loggmeldinger som kan oppstå. På det nåværende tidspunkt er det uklart hvilke feilmeldinger ePhorte kan finne på å sende. Sannsynligvis vil melding pga. nettverksforbindelse være det vanligste.

Could not ensure existence of bruker@uio.no in ePhorte: (stack trace)
Personen ble av uviss årsak ikke opprettet i ePhorte. Stack trace gir feilmelding fra ePhorte. Sannsynlig årsak kan være nettverksproblemer.
person_id:xxx has ePhorte role, but no ePhorte spread, skipping
Bør ikke forekomme; alle som har roller i ePhorte skal ha spread. Det må avgjøres hva som er korrekt.
Did not delete authz for bruker@uio.no: XX@stedkode, all-ous=YYY
Feilmelding fra ePhorte. følger i stack trace. Merk: @None, all-ous=False er ePhorte for «ephorte egne steder», stedkode 999999
No OU in ePhorte for XXXXXX for perm YY for bruker@uio.no
Stedkoden er ikke funnet i ePhorte. Merk at stedkoder eksporteres manuelt i dag.
Could not ensure access for bruker@uio.no: XX@stedkode, all-ous=YYY
Feilmelding fra ePhorte. følger i stack trace. Merk: @None, all-ous=False er ePhorte for «ephorte egne steder», stedkode 999999
person_id:entity_id has role XX at non-ePhorte OU stedkode, skipping role
Rollen er knyttet til en stedkode som ikke har ePhorte-spread.
OU stedkode dose not exist in ePhorte for role …
Stedkoden i feilmeldingen har ePhorte-spread, men finnes ikke i ePhorte likevel. Dette må fikses manuelt i ePhorte.
Could not ensure existence of role …
Feilmelding fra ePhorte følger i stacktrace.
Could not remove role …
Feilmelding fra ePhorte følger i stacktrace.
Av hamar
Publisert 12. jan. 2016 13:21