Dormeto
ENFR

Docs

Horaires

Un horaire garde un workload éveillé ou en veille à des heures fixes de la semaine. Toute personne qui peut réveiller et mettre en veille un workload peut lui en donner un. Dans le tableau de bord : la carte Schedule de la page du workload, et la vue Schedules, sous Fleet.

23 min de lectureManager 0.21.0

Ce qu'est un horaire

Un horaire appartient à un seul workload. Il réunit jusqu'à cinq éléments :

  • Les plages d'éveil gardent le workload éveillé, aux heures de bureau par exemple.
  • Les plages de veille le gardent endormi, la nuit par exemple, quel que soit le trafic.
  • Les dates d'exception sont des jours sans plage, comme les jours fériés.
  • La veille maximale réveille un workload endormi depuis trop longtemps, pour sa maintenance.
  • Une valeur de réunion dit jusqu'à quel intervalle deux plages de même type comptent comme une seule.

Les horaires demandent un manager 0.16.0 et des routeurs 0.31.0. Un routeur plus ancien les refuse : mettez-le à jour depuis Routers. Le calendrier demande un manager 0.17.0.

Ce qu'il remplace

Un horaire prend le pas sur le comportement à l'inactivité, tant qu'une plage dure :

  • Pendant une plage d'éveil, aucune mise en veille pour inactivité n'a lieu.
  • Pendant une plage de veille, les requêtes ne le réveillent pas. Avec "wake": "header", seule une requête portant l'en-tête le réveille.
  • En dehors de ses plages, les règles d'inactivité s'appliquent. Il se met en veille quand il est inactif et se réveille à la requête suivante.
  • Un court intervalle entre deux plages de même type n'est pas en dehors : Plages réunies.

Les pauses et les commandes du manager peuvent l'emporter sur un horaire : Ce qui l'emporte sur un horaire.

Un horaire complet

L'API reçoit un horaire en JSON, et la CLI envoie le même JSON depuis un fichier. Celui-ci utilise les champs dont la plupart des horaires ont besoin. Les récurrences et les plages réunies en ajoutent d'autres.

{
  "timeZone": "Europe/Paris",
  "windows": [
    {
      "kind": "awake",
      "days": [
        "mon", "tue", "wed",
        "thu", "fri"
      ],
      "start": "08:30",
      "end": "19:00"
    },
    {
      "kind": "nap",
      "days": [
        "mon", "tue", "wed",
        "thu", "fri"
      ],
      "start": "20:00",
      "end": "07:00",
      "wake": "header"
    },
    {
      "kind": "nap",
      "days": ["sat"],
      "start": "00:00",
      "end": "00:00",
      "wake": "never"
    }
  ],
  "exceptions": ["2026-12-25", "2027-01-01"],
  "maxNapDays": 7
}
  • Éveillé de 08:30 à 19:00, du lundi au vendredi.
  • En veille les nuits de semaine, de 20:00 à 07:00. Une requête portant l'en-tête de réveil le réveille quand même.
  • En veille tout le samedi. Aucune requête ne le réveille.
  • Le dimanche n'a aucune plage : le workload se met en veille quand il est inactif et se réveille aux requêtes.
  • Aucune plage le 25 décembre ni le 1er janvier.
  • Réveillé pour maintenance après 7 jours de veille.

Le calendrier Schedules

Depuis le manager 0.17.0, Schedules, sous Fleet, affiche les horaires sous forme de calendriers. Tous les rôles qui voient Workloads le voient.

La vue Schedules en semaine : trois calendriers cochés dans le panneau (etl-console, chat-test, quotes-sandbox), leurs plages d'éveil pleines en bleu et en rouge du matin au soir, leurs veilles de nuit en contour avec une lune à partir de 19:00 et 20:00, le lundi grisé car passé, et aucune plage rouge le jeudi, une date d'exception
La vue Week avec trois calendriers : l'éveil en plein, la veille en contour.

Activer des calendriers

  • Le panneau de gauche liste les workloads que vous pouvez consulter. Cherchez-les par nom, identifiant ou routeur.
  • Scheduled only, activé par défaut, masque les workloads sans horaire.
  • Cochez un workload pour afficher son calendrier. Chacun reçoit sa couleur. Jusqu'à 20 à la fois.
  • Vos calendriers et leurs couleurs sont conservés dans votre navigateur.
  • Un workload dont le routeur est antérieur à 0.31.0 est listé mais désactivé : « router 0.31.0 needed ».

Les vues

  • Day, Work week (du lundi au vendredi), Week et Month. Today et les flèches font avancer ou reculer dans le temps.
  • Les heures sont dans le fuseau de votre navigateur. Quand un horaire a un autre fuseau, l'infobulle d'une plage donne aussi ses heures dans ce fuseau.
  • Les plages d'éveil sont pleines, à la couleur du workload. Les plages de veille sont en contour, avec une lune.
  • Un repère indique quand la veille maximale d'un workload endormi le réveillera pour maintenance.
  • Les plages déjà passées sont grisées. Une date d'exception n'affiche aucune plage.
  • La vue et la date figurent dans l'adresse de la page : un lien rouvre la même période.

Dessiner une plage

Dans les vues Day, Work week et Week, faites glisser la souris sur 24 heures au plus, par pas de 15 minutes. La fenêtre New window s'ouvre. Le bouton New window l'ouvre aussi, au clavier.

La fenêtre New window après un glisser sur le samedi de 10:30 à 11:30 : workload quotes-sandbox, Awake choisi, Sat coché, From 10:30 To 11:30, Repeats every Sat, fuseau Europe/Paris, et la note indiquant que l'enregistrement remplace l'horaire du workload
New window, après un glisser sur le samedi de 10:30 à 11:30.
  • Workload : un de vos calendriers activés que vous pouvez modifier.
  • Awake ou Nap. Pour une veille, Wake indique si l'en-tête la réveille.
  • Les jours, From et To. La plage se répète chaque semaine : « Repeats every Sat ».
  • Le fuseau est celui de l'horaire du workload. Un premier horaire prend celui de votre navigateur.

Save ajoute la plage à l'horaire du workload. Il enregistre l'horaire tel qu'il était à l'ouverture de la fenêtre, plus votre plage. Une modification faite entre-temps par quelqu'un d'autre est perdue. Si le routeur refuse l'horaire, pour un chevauchement ou une limite, la fenêtre en donne la raison et reste ouverte.

Dans la vue Month, sélectionnez plutôt des jours. Chaque jour choisi reçoit une plage de 24 heures, de veille par défaut. Sélectionnez samedi et dimanche pour mettre le week-end en veille en un seul geste. Dans les autres vues, un glisser de plus de 24 heures est refusé.

Modifier ou supprimer des plages

Cliquez une plage pour ouvrir la fenêtre Schedule du workload. Modifiez-y ou supprimez ses plages, ses dates d'exception et sa veille maximale. Clear schedule supprime le tout, après confirmation.

Si vous ne pouvez pas modifier le workload, le clic ouvre sa page.

Dans la fenêtre Schedule, chaque plage a un onglet qui commence par son type. Awake est en vert avec un soleil, Nap en bleu avec une lune. Les boutons + après les onglets ajoutent une plage de veille ou d'éveil.

Avec le manager qui embarque le routeur 0.36.0, faites glisser un élément pour le déplacer. Faites glisser son bord haut ou bas pour changer son début ou sa fin. Dans les vues Day et Week, les bords montrent une poignée au survol.

Pour une plage qui se répète, le tableau de bord demande au lâcher :

  • Only this occurrence : la série saute cette date, et une plage de cette seule date s'applique aux nouvelles heures.
  • The whole series : toutes les occurrences bougent du même décalage, sur l'horloge de l'horaire.

La question indique quand un choix est impossible :

  • La série d'une plage cron : son expression dit quand elle commence.
  • Une série dont les occurrences ne bougeraient pas toutes de ce décalage.
  • Un déplacement vers un autre jour, sur un horaire avec des dates d'exception : il changerait l'occurrence qu'elles suppriment.
  • Une occurrence d'une plage cron qui commence plusieurs fois ce jour-là.
  • Une plage de plus de 24 heures.
  • Cette occurrence seule, sur un routeur antérieur à 0.36.0.

Une barre de plages réunies les déplace toutes les deux. Son bord haut change la première plage, son bord bas la dernière.

Chaque changement part d'une lecture fraîche de l'horaire. Cancel remet l'élément en place.

Les plages

Jours et heures

  • kind : awake (éveil) ou nap (veille).
  • days : les jours où la plage commence, de mon à sun, chacun une fois.
  • start et end : HH:MM, par pas de 5 minutes. 08:30 est accepté, 08:32 refusé.
  • timeZone : le fuseau de toutes les heures, un nom IANA tel que Europe/Paris. Un décalage tel que +01:00 est refusé.

La nuit et 24 heures

  • Quand end est égale ou antérieure à start, la plage se termine le lendemain. De 20:00 à 07:00 le mon, elle va du lundi soir au mardi matin.
  • Deux heures égales durent 24 heures. De 00:00 à 00:00 le sat, c'est tout le samedi.
  • Les heures restent celles de l'horloge lors des changements d'heure. Un début dans une heure sautée s'applique à la première minute qui suit. Un début dans une heure répétée s'applique la première fois.

Limites

  • Au plus 100 plages (20 avant le routeur 0.36.0) et 100 dates d'exception.
  • Une plage d'éveil et une plage de veille d'un même workload ne peuvent pas se chevaucher : Chevauchements.
  • Un champ inconnu est refusé. Chaque refus nomme son champ.

Plages d'éveil

  • Quand une plage d'éveil commence, un workload en veille ou en échec est réveillé, comme par le Wake du manager.
  • Tant qu'elle dure, le workload ne se met jamais en veille pour inactivité.
  • Le Nap du manager fonctionne toujours pendant la plage. Le workload dort alors jusqu'à la prochaine requête ou au prochain début de la plage.

Plages de veille et en-tête de réveil

  • Quand une plage de veille commence, un workload éveillé est mis en veille.
  • Tant qu'elle dure, une requête qui le réveillerait reçoit la page d'attente à la place. La page indique quand la veille se termine.
  • Avec "wake": "header", une requête portant x-dormeto-wake: 1 le réveille quand même. Avec "never", la valeur par défaut, aucune ne le réveille.
  • Les filtres intégrés passent en premier : les requêtes HEAD, les robots et les scanners ne le réveillent jamais.
  • Le Wake du manager fonctionne toujours.
  • Quand deux plages de veille se chevauchent, never l'emporte sur header.

Un script peut lire la fin de la veille. Le JSON de la page d'attente contient napUntil. La réponse porte l'en-tête x-dormeto-nap-until. Une veille sans fin connue, comme une suite de plages réunies, donne at et local à null, et l'en-tête vaut unknown.

Exemple : Nuits et week-ends en veille, avec l'en-tête.

Chevauchements

La règle porte sur les plages de types différents d'un même workload. Une plage d'éveil et une plage de veille ne peuvent pas se chevaucher. Deux plages de même type le peuvent.

  1. Deux workloads✓ Autorisé

    La règle vaut pour les plages d'un seul workload. Ces deux-là ne sont jamais en conflit, même dessinés ensemble sur le calendrier.

  2. Éveil + éveil✓ Autorisé

    Elles comptent comme une seule plage plus longue.

  3. Veille + veille✓ Autorisé

    Elles comptent aussi comme une seule plage plus longue. Tant qu'une plage active indique never, les requêtes ne le réveillent pas.

  4. Éveil + veille✕ Refusé

    Refusé à l'enregistrement. Le routeur nomme les deux plages et la première fois qu'elles se croisent : lundi de 16:00 à 18:00.

  5. Bout à bout✓ Autorisé

    Éveil de 08:00 à 12:00, puis veille de 12:00 à 20:00. L'une finit quand l'autre commence : ce n'est pas un chevauchement.

  6. Un court intervalle✓ Réunies

    Veille jusqu'à 12:00, puis de nouveau à partir de 12:10. L'intervalle reste dans les 15 minutes par défaut : elles comptent comme une seule. Une requête dans cet intervalle ne réveille pas le workload.

  7. Dates différentes✓ Autorisé

    Une plage d'éveil jusqu'au 30 juin, une plage de veille à partir du 1er juillet, aux mêmes heures. Elles ne se croisent jamais.

  8. Avec une répétition✕ Refusé sous 400 jours✓ Autorisé au-delà

    Le contrôle porte sur les 400 prochains jours. Une rencontre plus lointaine n'est pas refusée, et l'occurrence qui a commencé en dernier s'applique.

Le routeur vérifie à l'enregistrement. Un refus se lit ainsi : windows[1]: the nap window overlaps the awake window windows[0] (mon 18:00–19:00).

  • Deux plages hebdomadaires simples sont comparées sur toute la semaine.
  • Avec une répétition ou des dates, elles sont comparées date par date, sans les dates d'exception (Les dates de début et de fin).
  • Une plage de nuit compte jusqu'à sa fin, le lendemain matin.

Plages réunies

À partir du routeur 0.36.0, deux plages de même type séparées par un court intervalle comptent comme une seule. Le workload n'est donc ni réveillé ni mis en veille pour cet intervalle. Sans cela, un visiteur arrivé dans un intervalle de 10 minutes le réveillerait, et la seconde plage de veille le rendormirait. Cela vaut aussi pour les horaires déjà enregistrés : indiquez 0 pour garder un intervalle.

  • joinMinutes est le plus grand intervalle réuni : un nombre entier de 0 à 120, multiple de 5.
  • La valeur par défaut est 15. Un intervalle d'exactement 15 minutes est réuni. 0 ne réunit jamais.
  • L'intervalle se compte en temps écoulé : un changement d'heure compte quand il survient.

Où le régler

Le niveau le plus précis qui le définit l'emporte :

  1. Le workload. joinMinutes dans son horaire, à côté de maxNapDays. Dans le dashboard, c'est dans la boîte de dialogue de l'horaire.
  2. Le routeur. Ses réglages, à côté de hibernate. Passez par la page du routeur, ou par dormeto aws routers settings <router> --join-minutes 30.
  3. L'organisation. workloads.joinMinutes dans le settings.json du manager. Passez par les valeurs par défaut de la page Routers, ou par dormeto aws settings set --join-minutes 30. Le routeur le lit en 5 minutes au plus.
  4. La valeur par défaut. 15 minutes.

Un niveau illisible compte comme non défini. Sur Google Cloud, seuls le niveau du workload et la valeur par défaut s'appliquent.

Ce qui n'est pas réuni

  • Deux plages de types différents.
  • Un intervalle où commence une plage de l'autre type.
  • Un début supprimé par une date d'exception ou par les dates de début et de fin.

Une veille de 00:00 à 23:45 chaque jour ne finit donc jamais. Avec wake: never et sans durée maximale, aucun visiteur ne peut la réveiller. Mettez 0 pour garder l'intervalle.

Le contrôle à l'enregistrement compare toujours les plages telles qu'écrites : un intervalle ne provoque donc jamais de refus (Chevauchements).

Une limite : le second début reste un nouveau début. Un Nap ou un Wake du manager pris entre les deux dure donc jusqu'à lui.

Récurrences

À partir du routeur 0.36.0, une plage peut se répéter autrement que sur des jours de la semaine, entre deux dates. Une plage sans les nouveaux champs se lit comme avant, sauf pour les plages réunies. Un routeur antérieur à 0.36.0 les refuse comme inconnus. Il n'y a rien à appliquer de nouveau dans vos comptes.

Le reste fonctionne comme pour les plages hebdomadaires. Les dates d'exception, la veille maximale, les pauses, les modes de réveil et les changements d'heure s'appliquent à chaque occurrence.

Modèles de répétition

repeat remplace days : une plage a l'un ou l'autre.

  • Quotidien : tous les N jours. { "pattern": "daily", "interval": 3 } compte les jours à partir de from.
  • Hebdomadaire : toutes les N semaines, les jours choisis. { "pattern": "weekly", "interval": 2, "days": ["mon", "thu"] } compte les semaines, du lundi au dimanche, à partir de la semaine de from.
  • Mensuel, un jour du mois : { "pattern": "monthly", "interval": 3, "day": 15 } compte les mois à partir du mois de from. day va de 1 à 31. Un jour au-delà de la fin du mois tombe sur son dernier jour : le 31 tombe le 30 avril.
  • Mensuel, un jour de la semaine : { "pattern": "monthly", "nth": 1, "weekday": "mon" } est le premier lundi. nth va de 1 à 4 pour le premier au quatrième, ou vaut -1 pour le dernier. weekday va de mon à sun.
  • Annuel : mensuel avec "interval": 12. from donne le mois.
  • Ne pas répéter (Do not repeat) : une plage ponctuelle. Écrivez-la en quotidien, avec from et until à la même date. Le tableau de bord l'affiche ainsi : "Once on 4 Jan 2027".

interval va de 1 à 99, 1 par défaut. Au-dessus de 1, from est obligatoire : il sert de point de départ au compte.

Cet horaire utilise deux modèles :

{
  "timeZone": "Europe/Paris",
  "windows": [
    {
      "kind": "nap",
      "start": "20:00",
      "end": "07:00",
      "repeat": {
        "pattern": "weekly",
        "interval": 2,
        "days": ["mon", "thu"]
      },
      "from": "2027-01-04",
      "until": "2027-06-30",
      "wake": "header"
    },
    {
      "kind": "awake",
      "start": "08:00",
      "end": "18:00",
      "repeat": {
        "pattern": "monthly",
        "interval": 3,
        "nth": 1,
        "weekday": "mon"
      },
      "from": "2027-01-01"
    }
  ]
}

La veille a lieu une semaine sur deux, les nuits du lundi et du jeudi, du 4 janvier au 30 juin 2027. Une requête avec l'en-tête de réveil réveille quand même le workload. La plage d'éveil a lieu le premier lundi d'un mois sur trois.

Une plage ponctuelle, à une seule date :

{
  "timeZone": "Europe/Paris",
  "windows": [
    {
      "kind": "nap",
      "start": "09:00",
      "end": "17:00",
      "repeat": { "pattern": "daily" },
      "from": "2027-01-04",
      "until": "2027-01-04"
    }
  ]
}

Expressions cron

Une plage peut aussi se répéter selon une expression cron :

{
  "timeZone": "Europe/Paris",
  "windows": [
    {
      "kind": "awake",
      "repeat": {
        "pattern": "cron",
        "cron": "30 8 * * 1-5",
        "minutes": 630
      }
    }
  ]
}

Le workload reste éveillé à partir de 08:30, du lundi au vendredi, pendant 630 minutes : jusqu'à 19:00.

  • Le modèle cron remplace aussi start et end, et ne prend pas d'interval.
  • minutes est la durée de chaque occurrence, en heure de l'horloge. C'est un multiple de 5, de 5 à 10080 (7 jours).
  • Une expression a les cinq champs de crontab : minute hour day-of-month month day-of-week. Elle fait 200 caractères au plus.
  • Chaque champ est *, un nombre, un intervalle a-b, un pas */s ou a-b/s, ou une liste de ceux-ci séparés par des virgules.
  • Les mois acceptent aussi JAN à DEC, les jours SUN à SAT, en majuscules ou minuscules. Les jours vont de 0 à 7 : 0 et 7 sont tous deux le dimanche.
  • ? veut dire *, comme champ de jour entier seulement.
  • Quand les deux champs de jour sont restreints, l'un ou l'autre suffit, comme dans crontab. Un champ est restreint sauf s'il vaut exactement * ou ?.
  • Un champ de jour qui commence par *, comme */2, reste seul. À côté de l'autre champ de jour, il est refusé : les versions de cron le lisent différemment.
  • Chaque minute doit être un multiple de 5, comme les heures d'un horaire. * dans le champ des minutes est donc refusé. */5 et 0,30 sont acceptés.
  • cron(...), six champs, L, W et # sont refusés. Pour EventBridge, le jour 1 est le dimanche : ses expressions ne se liraient pas de la même façon ici.
  • 5/5 et les intervalles inversés comme 5-0 sont refusés. FRI-SUN va du vendredi au dimanche. Un pas trop grand comme */100 donne la première valeur.
  • Une expression qui ne correspond jamais à une date, comme 0 8 31 2 *, est refusée. 0 8 29 2 * est acceptée : elle correspond aux années bissextiles.

Un début toutes les quelques minutes s'applique de nouveau à chaque fois. Chaque début est une nouvelle occurrence. Un Nap ou un Wake du manager ne dure donc que jusqu'au début suivant : 5 minutes au plus avec */5. Une plage d'éveil de ce type bloque aussi les mises en veille. Le routeur ne la refuse pas, et le tableau de bord avertit.

Les dates de début et de fin

  • from et until sont des dates locales YYYY-MM-DD, dans le fuseau de l'horaire. Chacune est facultative et fonctionne seule. Les deux jours sont inclus.
  • Aucune occurrence ne commence avant from ni après until. Une occurrence commencée le jour de until va jusqu'à son terme.
  • Sans until, la plage n'a pas de date de fin.
  • until antérieur à from est refusé.
  • L'heure de fin d'une plage reste obligatoire : un début sans heure de fin n'est pas possible. « Terminer après N occurrences » n'existe pas.

Les chevauchements changent aussi. Dès qu'une plage d'une paire a from, until ou repeat, le routeur les compare jour par jour, en heure de l'horloge. Il regarde les 400 prochains jours locaux, à partir de la plus tardive des dates entre aujourd'hui et leurs from. Le refus donne la première date : windows[1]: the nap window overlaps the awake window windows[0] (2027-03-15 08:00–12:00). Au-delà de ces 400 jours, un chevauchement n'est pas refusé, et l'occurrence commencée en dernier s'applique.

Dans le tableau de bord, l'API et la CLI

L'aide du tableau de bord arrive avec le manager qui embarque le routeur 0.36.0.

  • L'éditeur de la plage a une liste Repeats : Weekly, par défaut, Do not repeat, Daily, Monthly, Yearly ou Cron expression.
  • En dessous, vous réglez ce que le modèle demande. C'est le N, les jours en pastilles, « on day N » ou « on the first to last weekday ». Pour Cron, c'est l'expression et une durée.
  • Les dates sont un début et une fin : No end date, par défaut, ou une date.
  • Une phrase redit la plage, et les 5 prochaines occurrences s'affichent dans le fuseau de l'horaire. Vous pouvez ainsi vérifier une expression cron avant d'enregistrer.
  • Si une expression cron n'est pas valide, la raison s'affiche sous son champ, et Save reste désactivé.
  • Une sélection dans le calendrier crée toujours une plage hebdomadaire. Les vues Week et Month dessinent tout ce qui se répète.
  • L'API et dormeto aws workloads schedule set --file prennent le même JSON.

Dates d'exception

  • exceptions liste des dates locales au format YYYY-MM-DD, 100 au plus.
  • Une plage qui commence à l'une de ces dates ne s'applique pas. Les plages de veille sont ignorées aussi.
  • Une plage commencée le jour précédent va jusqu'à son terme : une veille de nuit se termine bien le matin.
  • Dans la fenêtre Schedule, le champ s'appelle Dates without a window.
  • Avec le routeur 0.36.0, une plage prend aussi ses propres exceptions, 100 au plus. Seule cette plage les saute.
  • Déplacer une seule occurrence les écrit. L'onglet de la plage les montre sous Dates it skips.

Exemple : Un jour férié.

Plages terminées

  • Avec le routeur 0.36.0, une plage quitte son horaire quand aucune occurrence valide n'a fini dans l'année écoulée, et qu'aucune n'est à venir.
  • Son motif, sa période et les dates d'exception décident. Une plage sans until ne part jamais.
  • Les dates d'exception aussi anciennes partent aussi, celles de l'horaire et celles de chaque plage.
  • Un horaire sans plage ni veille maximale restante est supprimé.
  • L'organisation fixe le délai : workloads.endedWindowDays dans le settings.json du manager, de 30 à 3650 jours. 0 les garde.
  • Utilisez les valeurs par défaut de la page Routers, ou dormeto aws settings set --ended-window-days 90.
  • Le routeur ne supprime rien tant qu'il n'a jamais lu ces réglages, ni pendant qu'une plage est active.
  • Un horaire enregistré depuis la lecture du routeur reste tel qu'enregistré.

Veille maximale

  • maxNapDays, de 1 à 60, est la durée de veille la plus longue d'un workload.
  • Au-delà, le workload est réveillé pour maintenance. Les correctifs, les mises à jour d'agents et les renouvellements de certificats ont alors leur tour.
  • Si aucun trafic n'arrive, la vérification d'inactivité le remet en veille après son délai d'inactivité.
  • Un réveil de maintenance ne compte jamais comme du trafic. La chronologie indique « the maximum nap (a maintenance wake) ».
  • Un horaire peut ne contenir qu'une veille maximale, sans aucune plage.

Exemple : Correctifs seulement, avec une veille maximale.

Ce qui l'emporte sur un horaire

  • Le Wake du manager fonctionne toujours, même dans une plage de veille. Le workload reste alors éveillé jusqu'à une mise en veille pour inactivité ou au début de la plage de veille suivante.
  • Le Nap du manager fonctionne pendant une plage d'éveil. Une pause le refuse.
  • Une pause qui garde le workload éveillé, comme un keep-awake, l'emporte sur une plage de veille. Elle le réveille aussi aussitôt.
  • Une pause qui le laisse en veille l'emporte sur les plages d'éveil et sur le réveil de maintenance. Une requête le réveille quand même, sauf si une plage de veille la retient.
  • Une plage retenue par une pause s'applique à la fin de la pause, si elle est encore en cours.

Quand l'horaire s'applique

  • Le routeur vérifie aux repères de 5 minutes de l'horloge : 08:45, 08:50, et ainsi de suite. Une plage qui commence à 08:45 s'applique à la vérification de 08:45.
  • Chaque début ne s'applique qu'une fois. Une vérification manquée ou une mise à jour ne peut pas l'appliquer deux fois.
  • Un horaire enregistré en cours de plage s'applique à la vérification suivante.
  • Aucune mise en veille n'a lieu si une plage d'éveil commence dans les 30 minutes qui suivent. Cela vaut pour la mise en veille pour inactivité comme pour une plage de veille.

Tableau de bord, API et CLI

Dans le tableau de bord

  • La carte Schedule de la page d'un workload affiche le fuseau, les plages, les dates sans plage, la veille maximale et les prochains événements.
  • Add ou Edit ouvre la fenêtre Schedule. Elle a une ligne par plage, les jours en pastilles, les heures par pas de 5 minutes, et le fuseau, celui du navigateur par défaut. Clear supprime l'horaire.
  • Toute personne qui peut à la fois réveiller et mettre en veille le workload peut le modifier. Ce sont les opérateurs, les administrateurs et les membres dont les groupes accordent les deux sur ses tags.
  • Chaque modification est consignée dans le journal d'audit, en schedule ou schedule-clear.

Avec l'API

  • PUT /api/workloads/{router}/{id}/schedule, avec l'horaire en corps de requête, le définit. DELETE sur le même chemin le supprime. Les mêmes routes sous /iam/ servent les appelants IAM.
  • Un horaire refusé reçoit une erreur 400 avec les problèmes relevés par le routeur, chacun nommant son champ. Un routeur antérieur à 0.31.0 répond 409.
  • GET /api/workloads/{router}/{id} renvoie le schedule, les prochains événements et maintenanceDue.

Avec la CLI

La CLI 0.5.0 affiche, définit et supprime les horaires (installation et droits : Démarrer).

dormeto aws workloads schedule show  <router>/<workload> [--json]
dormeto aws workloads schedule set   <target>... | --tag k=v... --file <path or ->
dormeto aws workloads schedule clear <target>... | --tag k=v...
  • Une cible s'écrit <router>/<workload id>. --tag clé=valeur sélectionne à la place tous les workloads portant ce tag Dormeto. Répétez --tag pour exiger plusieurs tags.
  • Plusieurs cibles demandent une confirmation. --yes la passe et devient obligatoire sans terminal. --dry-run liste les cibles sans rien envoyer.
  • schedule set envoie le fichier tel quel. Un refus s'affiche tel que le routeur le formule.
  • schedule show affiche les plages et les prochains événements, chaque heure avec son fuseau. Sa sortie --json se renvoie avec --file -.

Exemples : Les workloads d'une équipe, par tag et La CI garde un environnement éveillé.

Exemples

Le routeur accepte tel quel chaque horaire ci-dessous. Enregistrez-le dans un fichier pour la CLI, ou composez-le dans la fenêtre Schedule.

Heures de bureau

Pourquoi : la première personne arrivée à 08:30 ne doit pas attendre un réveil.

{
  "timeZone": "Europe/Paris",
  "windows": [
    {
      "kind": "awake",
      "days": [
        "mon", "tue", "wed",
        "thu", "fri"
      ],
      "start": "08:00",
      "end": "19:00"
    }
  ]
}

À 08:00 chaque jour de semaine, le workload se réveille s'il dort. Il ne se met pas en veille pour inactivité avant 19:00. Le soir et le week-end, il se met en veille quand il est inactif et se réveille aux requêtes, comme avant.

Nuits et week-ends en veille, avec l'en-tête

Pourquoi : scanners et sondes réveillent un environnement de recette la nuit. Pourtant, la personne d'astreinte doit toujours pouvoir le réveiller.

{
  "timeZone": "Europe/Paris",
  "windows": [
    {
      "kind": "awake",
      "days": [
        "mon", "tue", "wed",
        "thu", "fri"
      ],
      "start": "08:00",
      "end": "19:00"
    },
    {
      "kind": "nap",
      "days": [
        "sun", "mon", "tue",
        "wed", "thu"
      ],
      "start": "20:00",
      "end": "07:00",
      "wake": "header"
    },
    {
      "kind": "nap",
      "days": ["fri", "sat"],
      "start": "20:00",
      "end": "20:00",
      "wake": "header"
    }
  ]
}

Les veilles de nuit commencent à 20:00, du dimanche au jeudi, et se terminent à 07:00. Les veilles du week-end commencent le vendredi et le samedi à 20:00 et durent 24 heures. Au total, le workload dort du vendredi 20:00 au lundi 07:00.

Une requête ordinaire reçoit la page d'attente. Une requête portant l'en-tête le réveille :

curl -H 'x-dormeto-wake: 1' https://staging.example.com/

Réveillé ainsi, il se remet en veille après son délai d'inactivité, ou au prochain début de 20:00.

Un jour férié

Pourquoi : le bureau est fermé le 25 décembre et le 1er janvier. Personne n'a besoin du workload éveillé à 08:00.

{
  "timeZone": "Europe/Paris",
  "windows": [
    {
      "kind": "awake",
      "days": [
        "mon", "tue", "wed",
        "thu", "fri"
      ],
      "start": "08:00",
      "end": "19:00"
    }
  ],
  "exceptions": ["2026-12-25", "2027-01-01"]
}

Aucune plage ne commence à ces dates. Le workload se met en veille quand il est inactif et se réveille aux requêtes, comme un week-end. Dans la fenêtre Schedule, ajoutez les dates sous Dates without a window.

Correctifs seulement, avec une veille maximale

Pourquoi : une machine endormie des semaines manque ses correctifs, ses mises à jour d'agents et ses renouvellements de certificats.

{
  "maxNapDays": 7
}

Aucune plage, donc aucun fuseau : seulement la veille maximale. Après 7 jours de veille, le workload est réveillé pour maintenance. Il se remet en veille après son délai d'inactivité si aucun trafic n'arrive. Pour tenir plutôt une fenêtre de maintenance fixe, ajoutez une plage d'éveil à ses heures.

Les workloads d'une équipe, par tag

Pourquoi : les workloads de l'équipe paiements suivent tous les heures de bureau. Une commande les règle tous.

dormeto aws workloads schedule set --tag team=payments --file schedule.json --dry-run
dormeto aws workloads schedule set --tag team=payments --file schedule.json
dormeto aws workloads schedule show prod-eu/w-1

schedule.json contient les heures de bureau ci-dessus. --dry-run liste les workloads portant le tag team=payments. La deuxième commande demande confirmation, puis donne à chacun sa propre copie.

Un workload tagué plus tard ne suit pas : relancez la commande. Les tags sont les étiquettes de Dormeto, pas des tags AWS (Workloads).

La CI garde un environnement éveillé : une pause, pas un horaire

Pourquoi : un pipeline lance ses tests à toute heure. Il lui faut l'environnement éveillé tout de suite, puis il le laisse se mettre en veille.

dormeto aws workloads keep-awake prod-eu/w-1 --for 2h --wait
# lancer les tests
dormeto aws workloads resume prod-eu/w-1

keep-awake met le workload en pause, éveillé. Il est réveillé s'il dort et n'est pas mis en veille avant la fin de la pause. --wait rend la main dès qu'il est éveillé, pour que l'étape suivante démarre. Il abandonne après --timeout, 15 minutes par défaut. resume met fin à la pause. Sinon, elle se termine seule après --for, 168h au plus.

Une pause ne demande pas de routeur 0.31.0 : la CLI 0.5.0 et un manager 0.15.0 suffisent. Elle garde le workload éveillé, donc elle l'emporte sur une plage de veille.