a Γi@s6ddlmZddlTddlTddlTGdddZdS)) defaultdict)*c@s`eZdZeddZeddZeZdZddZ dddZ d d Z e d d Z e d dZdS) eventlistcCsttSNrlistr r 1/usr/lib/python3.9/site-packages/isc/eventlist.pyzeventlist.cCsttSrrr r r r r r Nc Csgd}||_|D]}|j|||D]\}}|D]Z}|D]P}||}|s^qJt|||} |jr|j || | qJ|j || | qJqBt |j ||ddd|j ||<t |j ||ddd|j ||<q2qdS)N)Z SyncPublishZPublishZ SyncDeleteZActivateZInactiveZDeletecSs|jSrwheneventr r r r +r z$eventlist.__init__..)keycSs|jSrr rr r r r -r ) _kdictZzones_zonesadditemsvaluesZgettimekeyeventsep_Kappend_Zsorted) selfZkdictZ propertieszonealgkeyskZpropter r r __init__s(     zeventlist.__init__c Csdd}|s|}|r |dkr dnd}|r4|dkr4dnd}d}} d} |rb||jvrb|d|dS|rd} |s~||d||}|s||d||} nX|jD]P} |s| |jvrd} || d||}|s| |jvrd} || d||} q| s|ddS|o| S) Nc_sdSrr )argskwargsr r r noop2r z eventlist.coverage..noopKSKTFZZSKz!ERROR: No key events found for %szERROR: No key events found)r checkzonerr r) rrkeytypeuntiloutputr'Zno_zskZno_kskZkokZzokfoundzr r r coverage1s6  zeventlist.coveragec Cstd}|dkr|j|}n |j|}|D]D}|d||t|ft|||||}|rf|d|ol|}q*|S)NTr(z9Checking scheduled %s events for zone %s, algorithm %s...zNo errors found)rrr dnskeyZalgstrrcheckset) rrr*r+r,ZallokZkzrokr r r r)Ts    zeventlist.checkzonecCsN|sdS|d|dddd|D] }|d|jt|jfddq(dS)Nz r:F)skipz %s: %s)ZshowtimeZwhatreprr)eventsetr,rr r r showsetfs zeventlist.showsetc CsHt}t}d}|D]P}d}|r0|dj|jkr:|||dj|jkr||t}||q|rt|||s|d|dSd}} |D]}|rt|dj|kr|dtdt|dS|D]}||| \}} qt |||s|d|dS| s&|d|dS| |s|d |dSqdS) NFTrzERROR: No %s events foundzIgnoring events after %sz%a %b %d %H:%M:%S UTC %Yz*ERROR: No %s's are active after this eventz-ERROR: No %s's are published after this eventz=ERROR: No %s's are both active and published after this event) rrrZcalendarZtimegmtimestrftimegmtimestatusrr7 intersection) r6r*r+r,groupsgroupZ eventsfoundrZactiveZ publishedr r r r1nsT        zeventlist.checkset)N)__name__ __module__ __qualname__rrrsetrrr$r/r) staticmethodr7r1r r r r rs   # rN) collectionsrr0Zkeydictrrr r r r  s