franGiPane - états des entités
Logique générale
De fait, l'état effectif (on/off) de certains objets (un site ouaibe, une adresse mail...) dépend souvent de l'état d'objets parents (un domaine, un enregistrement DNS...).
On veut pouvoir désactiver tout un domaine, par exemple, sans devoir mettre status='off' à tous ses objets fils. Ne serait-ce que pour ne pas perdre, au passage, l'information "quels objets fils étaient à on/off avant la désactivation ?", nécessaire lorsqu'on veut réactiver le domaine.
Par conséquent, la propagation hiérarchique de l'état des objets se fait au niveau des vues, et non au niveau des champs status des objets fils. Pour cela, le plus simple est de faire taper les vues filles dans les vues mères, plutôt que directement dans les tables mères.
D'autre part, tous les champs "status" de la base ont pour type le DOMAIN fGP_status
, qui n'accepte que les valeurs 'on' et 'off', histoire de simplifier. Sauf pour fGP_status_mail
, qui peut aussi valoir 'maintenance' (i.e. le mode "réessaie plus tard").
TODO : Que mettre comme DEFAULT ? on ou off ?
Règles de propagation
Un domaine est actif au niveau DNS
<=> status_dns='on' ET type = 'EXTERNAL'
<=> il apparaît dans dns.domains
Un enregistrement DNS est actif "dans l'absolu"
<=> status='on' ET son domaine parent .dns_status='on'
<=> il apparaît dans dns_records_on
Un enregistrement DNS est actif au niveau DNS
<=> (il est actif "dans l'absolu" ET domaine parent .type = 'EXTERNAL') OU il est généré dynamiquement
<=> il apparaît dans dns.records
Un site web est actif "dans l'absolu"
<=> son enregistrement DNS parent est actif "dans l'absolu"
<=> il apparaît dans web_sites_on
Un site web est actif au niveau Apache
<=> web_status='on' ET il est actif "dans l'absolu"
<=> il apparaît dans web.sites
Un site web est actif au niveau FTP
<=> ftp_status='on' ET il est actif "dans l'absolu"
Un compte FTP est actif
<=> le web_master correspondant est actif ET le web_site parent est actif au niveau FTP
<=> il apparaît dans nss.ftp_passwd
Un groupe FTP est actif
<=> le web_site parent est actif au niveau FTP
<=> il apparaît dans nss.ftp_group
Un mail bam/alias est actif
<=> status='on' ET son domaine parent .mail_status='on'
Un mail bam/alias est en maintenance
<=> status='on' ET son domaine parent .mail_status='maintenance'
TODO : Dans domains, dépendances entre en mail_status, dns_status, etc. ?