Cerebrum-funksjonalitet for Exchange

En beskrivelse av de deler av Cerebrum som er utviklet og/eller utvidet for å støtte Exchange 2013. Dette dokumentet beskriver bare Cerebrum-interne detaljer og ikke selve integrasjonsløsninge med Exchange.

1   ExchangeGroups

Cerebrum inneholder en egen modul, som heter ExchangeGroups. Denne inneholder i hovedsak støtte for Distribusjonsgrupper.

API'et definerer også klassen SecurityGroup, men det har ikke vært behov for å implementere noe ekstra funksjonalitet for denne typen grupper i Cerebrum som ikke allerede støttes av vanlig Group-entitet.

Modulen er plassert i:

Cerebrum/modules/exchange/v2013/ExchangeGroups.py

1.1   DistributionGroup

Distribusjonsgrupper i Cerebrum baserer seg på vanlige grupper, med utvidet metadata og funksjonalitet. Dette krevde en egen database-tabell.

Oppretting av en distribusjonsgrupper logger en hendelse av typen dl_roomlist_create eller dl_group_create. Skillet mellom disse er nødvendig fordi de skal behandles forskjellig ved eksport til Exchange.

Ved sletting av en distribusjonsgruppe fjernes all metadata om gruppen, og den gjøres om til en vanlig Cerebrum-gruppe. Selve gruppeentiteten fortsetter altså å leve i Cerebrum og må deaktivere via vanlig Group-API dersom behovet skulle oppstå.

Ved søk etter distribusjonsgrupper brukes bare vanlig gruppe-API.

Behovet for historikk ved endring av metadata til distribusjonsgrupper er det implementert metoder for å sette og modifisere samtlige av attributtene. Full oversikt over relevante metoder og informasjon om hvilket attributt de brukes på er tilgjengelig i klassedefinisjonen.

For å gjøre synkroniseringsrutinen noe enklere er det implementert en metode, get_distgroup_attributes_and_targetdata(..) som returner et dict med alle data relevante for synkronisering av distribusjonsgruppen til Exchange.

Til sist implementerer klassen de e-postrelaterte metodene som er nødvendig for distribusjonsgrupper:

  • create_distgroup_mailtarget
  • deactivate_dl_mailtarget
  • _create_distgroup_mailaddr

Disse metodene er forholdsvis enkle og gjør akkurat det navnene tilsier, nemlig etablerer og fjerner en distribusjonsgruppe. Inline-kommentarene i de aktuelle metoden forklarer hvorfor en mixin-klasse implementasjon ikke ble valgt, samt gir noen forretningsregler for e-postdata knyttet til distribusjonsgrupper.

2   Konstanter

Støtten for Exchange krever en rekke nye konstanter i Cerebrum. De fleste av disse er knyttet til logging av historikk for mailtargets og logging av historikk for distribusjonsgrupper men det er også definert target_type for distribusjonsgrupper, en navnetype for display_name, spread til Exchange for sikkerhets- og distribusjonsgrupper osv.

3   Exchange-funksjonalitet andre steder i Cerebrum

Det er tatt hensyn til Exchange flere andre steder i Cerebrum. De viktigste slike endringer er:

  • Eksport av maildata til LDAP - det er lagt inn hindring for eksport av tripnote og forwards til LDAP for brukere som er aktive i Exchange. Dette skal beskytte UiO mot migreringsutfordringer og feil i oppryddingsrutiner. Oppdatert kode er å finne i contrib/generate_mail_ldif.py og ./Cerebrum/modules/no/uio/EmailLDAP.py.
  • Populering av automatiske ansattgrupper har fått ekstra funksjonalitet og kan nå brukes til å populere ansattgruppene med primærbrukere i stedet for personobjekter. Dette ble gjort for å forenkle eksporten til Exchange og fordi det ikke finnes noe case for grupper populert med personobjekter per i dag. Det er svært viktig at contrib/populate_automatic_groups.py med tilhørende scheduled_jobs.py kommer i produksjon når Exchange kommer i produksjon (må ikke vente til migreringen er ferdig!).

3.1   Email.py

I e-mail-modulen i Cerebrum er det lagt til en ny target_type for Exchange. Historikk på e-post-entiteter ble implementert samtidig med innføringen av Exchange på UiO, men denne er av genersik karakter.

3.2   Andre hensyn

Det er gjort endringer flere andre steder i Cerebrum:

  • UiO sin Account har automatisk håndtering av Exchange-kontoer for brukere.
  • Ny konfigurasjon for Exchange.

Det er mer Exchange-relaterte hensyn i Cerebrum, men disse er små.

Av jazz, jsama, jokim
Publisert 21. okt. 2015 21:04