Skip to main content

Manager

Der Connect Manager ist zuständig zur korrekten Einrichtung eines Connect-Jobs eines Kunden. Um einen solchen Connect-Job auszuführen, wird ein eigener Pod in Kubernetes pro Kunde benötigt. Im Kubernetes Dashboard könnnen Connect-Jobs definiert werden. Damit ein Job fehlerfrei durchlaufen kann, benötigt es eine Job-Definition. Diese besteht aus den folgenden Informationen:

  • Name
  • Realm
  • Cron String (VisualCron)
  • docker-imager (gleiche Version bei allen)
  • Timeout
  • Secrets
    • Kundennummer + Realm
    • SSH-Relay keys
    • GRPC (Goole Remote Procedure Call) wird verschlüsselt
  • SQLdb enthält die Login-Informationen der jewieligen Datenbank, auf die zugegriffen wird.

Der Connect-Manager geht die einzelnen Job-Definitionen durch und lässt diese laufen.

Die Updatefunktionen werden dazu verwendet, die Tabellen, welche für Connect verwendet werden, zu aktualisieren, so dass die Tabelle die Soll-Struktur im AD vorgibt.

Zuerst werden die Konfigurationen der Studenten aus Scolaris als Variablen gespeichert, so dass diese Konfiguration anschliessend auf die Studenten übertragen werden kann. Zusätzlich dazu werden die Studenten markiert, welche zukünftig gelöscht werden sollten. Die Bedingung, die zur Löschung verwendet wird lautet wie folgt:
WHERE UserConfigType = 'S' AND Students.StudentID IS NULL AND UserConfigDelete IS NULL AND UserConfigIsGeneric = 0
Im Anschluss wird der gesamte Vorgang für das Personal wiederholt

Dieser Abschnitt beschreibt die verwendete Funktion „connect_validate“. Die Validierungsfunktion kontrolliert die Benutzer- und Gruppendatensätze auf deren Vollständigkeit und weist bei fehlenden Attributen einen Fehlertyp (Integer) zu. Nachfolgend wird eine Tabelle mit den entsprechenden Fehlertypen und deren Bedeutung aufgeführt. Bei jeder Validierung werden zu Beginn die Fehlertypen der Benutzer und Gruppen auf NULL gesetzt, so dass

Fehlertyp Bedeutung SQL Bedingung
1 Kein Mandant wurde ausgewählt MainConnectUser.UserConfigMandantChosen IS NULL AND MainConnectUser.UserWarning IS NULL
2 UserConfigMandant ist nicht Teil des Mandanten (POWER(2, UserConfigMandantChosen -1 ) & Mandant ) = 0 AND MainConnectUser.UserWarning IS NULL
3 Der zugewiesene Mandant ist nicht konfiguriert MainConnectUser.UserConfigMandantChosen NOT IN (SELECT MandantNummer FORM TblConnectConfigMandant) AND UserWarning is NULL
4 Das Attribut UserConfigDNFIrstElem ist nicht eindeutig MainConnectUser.UserConfigDNFirstElem IN (select UserConfigDNFirstElem FROM MainConnectUser GROUP BY UserConfigDNFirstElem HAVING COUNT (*)>1)
5 UserPrincipalName ist nicht vorhanden MainConnectUser.UserUserPrincipalName IS NULL
6 UserSAMAccountName ist nicht vorhanden MainConnectUser.UserSAMAccountName IS NULL
7 Die zugewiesene E-Mail Adresse ist ungültig CASE WHEN
UserMail LIKE '[a-z,0-9,_,-]%@[a-z,0-9,_,-]%.[a-z][a-z]%' AND
UserMail NOT LIKE '%@%@%' AND
CHARINDEX('.@',UserMail) = 0 AND
CHARINDEX('..',UserMail) = 0 AND
HARINDEX(',',UserMail) = 0 AND
CHARINDEX(' ',UserMail) = 0 AND
RIGHT(UserMail, 1) BETWEEN 'a' AND 'z'
THEN 1 ELSE 0 END = 0
8 Der Mandant ist nicht vorhanden WHERE MainConnectUser.Mandant IS NULL
9 MailAlias ungültig CASE WHEN
UserAlias(1-5) LIKE '[a-z,0-9,_,-]%@[a-z,0-9,_,-]%.[a-z][a-z]%' AND
UserMail NOT LIKE '%@%@%' AND
CHARINDEX('.@',UserMail) = 0 AND
Fehlertyp Bedeutung SQL Bedingung
1 Kein Mandant wurde ausgewählt MainConnectGroup.GroupConfigMandantChosen IS NULL AND MainConnectGroup.GroupWarning IS NULL
2 GroupConfigMandant ist nicht Teil des Mandanten (POWER(2, GroupConfigMandantChosen -1 ) & Mandant ) = 0 AND MainConnectGroup.GroupWarning IS NULL AND GroupConfigMandantChosen != 0
3 Der zugewiesene Mandant ist nicht konfiguriert MainConnectGroup.GroupConfigMandantChosen NOT IN (SELECT MandantNummer FORM TblConnectConfigMandant) AND GroupWarning is NULL AND GroupConfigMandantChosen != 0
4 Das Attribut GroupConfigDNFIrstElem ist nicht eindeutig MainConnectGroup.GroupConfigDNFirstElem IN (select GroupConfigDNFirstElem FROM MainConnectGroup GROUP BY GroupConfigDNFirstElem HAVING COUNT (*)>1)
8 Der Mandant ist nicht vorhanden WHERE MainConnectGroup.Mandant IS NULL

Die Funktion „sp_ConnectMigrateUser“ übernimmt GUID und Aliasse von TblConnectMigration nach MainConnectUser. Zuerst wird überprüft, ob der Datensatz einen Usertyp (Migrationstyp) hat. In einem weiteren Verlauf werden alle Daten aus TblConnectMigration ausgelesen, welche anschliessend in die MainConnectUser Tabelle übertragen werden. Dabei werden folgende Attribute verwendet:

MainConnectUser TblConnectMigration
UserObjectGUID UserGUID
UserMailAlias1 Alias1
UserMailAlias2 Alias2
UserMailAlias3 Alias3
UserMailAlias4 Alias4
UserMailAlias5 Alias5