Problem
NME Auto-Scale provides one Alternate Schedule slot alongside the Default Schedule. For host pools serving users across multiple time zones, days that appear similar on the surface require meaningfully different configurations — and a single Alternate Schedule slot cannot express more than one deviation from the Default.
Concrete example — a pool serving US and India developers (Central Time / India Standard Time):
- Monday–Thursday: India active 23:30–01:30 CT each night; US business day. Needs full Default config with an 11 PM pre-stage (15 hosts) firing every night to cover the next morning's India influx.
- Friday: India active from 00:00 CT through ~14:00 CT (identical start to Mon–Thu); India goes offline ~14:00 CT when the IST weekend begins; US EOD follows. Needs the same daytime profile as Mon–Thu but must NOT fire the 11 PM ramp-up — there is no India Saturday morning demand to cover.
- Saturday: India weekend all day; near-zero US demand. Needs a low-capacity profile (base=8, burst=2) with no pre-stage and no drain windows.
- Sunday: India weekend continues through daytime, but 23:30 CT = India Monday morning influx begins. Needs low capacity during the day but must fire an 11 PM pre-stage (15 hosts, 2-hr scale-in delay) — identical pre-stage need as Mon–Thu but different daytime sizing than Mon–Thu.
These four profiles cannot be expressed with one Default + one Alternate:
- Friday and Mon–Thu look identical until 14:00 CT, but Friday must suppress the 11 PM ramp-up that Mon–Thu require.
- Saturday and Sunday are both low-demand weekend days but Sunday uniquely needs the 11 PM pre-stage that Saturday must not have.
The current workaround — using the Pre-Stage Hosts days array to indirectly suppress the pre-stage on certain days — works only when Saturday is already on the Alternate Schedule. It creates a silent coupling between the Alternate Schedule day assignment and the Pre-Stage days array that breaks any time either is edited without awareness of the dependency. This is what caused a capacity saturation incident on our pool this week when a days change was made without recognizing the downstream effect.
Description
Allow administrators to define two or more named Alternate Schedule entries, each with its own day assignments and fully independent Auto-Scale configuration. The Default Schedule applies on any day not claimed by an Alternate Schedule.
Vision
In Auto-Scale → Schedule, replace the single "Alternate Schedule" section with an "Add alternate schedule" button — consistent with how multiple Pre-Stage Hosts configs and Rolling Drain windows are added today.
Each alternate schedule entry would have a display name, a weekdays picker, and the full set of Auto-Scale parameters: host pool sizing, scaling logic, scale-in restriction, rolling drain mode, and pre-stage hosts (including per-config scale-in delay).
Day assignment would be mutually exclusive — a day can only belong to one schedule, and the UI prevents overlap at save time. Existing configurations with a single Alternate Schedule would migrate transparently as "Alternate Schedule 1" with no behavioral change.
The REST API should expose all alternate schedules as a named array (see related feature request: Expose Alternate Schedule and pre-stage scale-in delay via the Auto-Scale REST API).
Ideal end state for the use case above:
- Default (Mon–Thu): full production config; 11 PM pre-stage fires nightly
- Alt 1 – Friday: identical daytime config; pre-stage disabled (no evening ramp-up)
- Alt 2 – Saturday: base=8, burst=2, no pre-stage, no drain windows
- Alt 3 – Sunday: base=8, burst=2; 11 PM pre-stage (15 hosts, 2-hr delay) for Monday India influx
Comments (1 comment)