Gestion des exclusions de timeperiods

Posted in Shinken by Nap on January 6, 2010

Et bien après une bataille qui avait des air de guerre épique, j’ai mis en place les exclusions de timeperiods. Après une première version un peu … bourrine, une nouvelle arrive qui passe les tests et qui en plus est rapide. Cette partie du code n’est pas celle que je préfère, car il faut dire que les problèmes des dates et de calcul d’intervalle, c’est touffu, surtout lorsque l’intervalle ressemble à ‘monday 3 – thursday 4 00:00-11:00,12:00-24:00‘ (soit entre le troisième lundi du mois et le 4ième jeudi). Et puis le plus marrant dans ces définitions, c’est que c’est relatif par rapport au moment où vous calculer…

Mine de rien, c’est sûrement la partie la plus complexe de l’outil. Bon je ne vais pas me plaindre, le module time de python a bien aidé. Bref, vous pouvez faire une déclaration du genre :
define timeperiod{
timeperiod_name 24×7
alias 24_Hours_A_Day,_7_Days_A_Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
exclude workhours
}

# ‘workhours’ timeperiod definition
define timeperiod{
timeperiod_name workhours
alias Normal Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}

Donc ici 24×7 sera sans les workhours (bon bah c’est un exemple hein, à vous de trouver quelque chose de plus utile….). Donc un check en 24×7 voulant être lancé vers 10h le sera à 17h en fait. Ceci gère aussi si les timeperiods dans exclude ont elles même des exclude bien sûr.

Related Posts: