Faire en sorte que hobo couvre le déploiement des tenants.
hobo
le serveur de déploiement : gestion de l'environnement dans le /manage et envoi du hobo.json correspondant dans celery
hobo.multitenant
reprendre entrouvert.djommon.multitenant (fait avec conservation de l'historique, dans la branche wip/merging-multitenant de hobo, #6468)
hobo.agent
réception du hobo.json dans le celery, déploiement de tous les services correspondant via l'appel de commandes de ce genre :
sudo -u service /usr/lib/service/manage.py hobo_deploy www.example.net < hobo.json
hobo.agent.authentic2
ne contient que la commande de management hobo_deploy dédiée au déploiement d'un tenant authentic2 :
- create_tenant
- création de la bi-clé SAML dans le tenant (saml.crt, saml.key)
- copie du hobo.json reçu dans tenant/www.example.net/hobo.json
- ajout des policies par défaut
- download des metadonnées dans federation.xml
- sync-metadata de federation.xml
Cette application est à ajouter dans le INSTALLED_APPS (ou SHARED_APPS) d'authentic2 pour lui donner cette commande hobo_deploy
hobo.agent.common
ne contient que la commande de management hobo_deploy dédiée au déploiement d'un SP mellonisé :
- create_tenant
- copie du hobo.json reçu dans tenant/www.example.net/hobo.json
- download des metadonnées de l'idp dans tenant/www.example.net/metadata_idp_0.xml
Cette application est à ajouter dans le INSTALLED_APPS (ou SHARED_APPS) du SP cible (combo, passerelle, ...) pour lui donner la commande hobo_deploy
hobo.middleware.settings.mellon
configuration des settings.MELLON* depuis les données de tenant/www.example.net/metadata_idp_0.xml et le hobo.json si besoin
hobo.middleware.settings.authentic2
configuration des settings.SAML* depuis saml.crt et saml.key
hobo.middleware.context.vars
création des templatesvars depuis le hobo.json du tenant
Le celery client reçoit un environnement hobo.json. Pour chaque tenant de chaque service listé dans cet environnement, il lance la commande de déploiement du service. Pour un service djangoisé, c'est typiquement :
sudo -u service /usr/lib/service/manage.py hobo_deploy www.example.net < hobo.json
Ce "hobo_deploy" va lancer la commande de management programmée dans hobo/agent/<service>/management/commands/hobo_deploy.py
Le processus de création est configurer pour gérer un tenant qui existe déjà, et ne rien faire dans ce cas, juste mettre à jour le hobo.json, et s'il est différent mettre à jour les métadonnées, etc. Ces mises à jour sont prises en compte aussitôt par le tenant via les middlewares.
hobo pourrait fournir: from hobo.helper.settings.mellon import * # config de base MELLON ouaip bon bofff