feat(ups): ramura "pe baterie" se poate testa fara scoaterea din priza
Lantul de protectie are doua jumatati. Prima - "UPS-ul chiar raporteaza trecerea pe baterie?" - e deja dovedita de perechile de evenimente Kernel-Power 105 de la panele reale din 2026. A doua - decizie, alerta, oprirea curata a Oracle - nu avea cum sa fie exercitata decat asteptand o pana. Acum monitorul accepta un SIMULARE.json care suprascrie citirea de alimentare. Doua garzi, ca un fisier uitat sa nu opreasca serverul pe date inventate: "expira" e obligatoriu si e sters automat la depasire, iar oprirea e in gol daca nu se cere explicit "dryRun": false. Cat e activa, fiecare ciclu scrie WARN in log si -Mode Status o afiseaza. test-battery.ps1 conduce simularea si urmareste logul; sterge fisierul si daca e intrerupt. Cu -ConfirmReal 'DA-OPRESTE-SERVERUL' devine repetitie reala pentru o fereastra de mentenanta - singurul mod de a masura cat dureaza shutdown immediate pe baza de productie, informatie de care depinde alegerea pragurilor. Validat in gol pe 27.08.2026: detectie la 15:36:09 + email de pana, apoi exact trei cicluri de confirmare, declansare pe pragul de 35% la 15:36:40 si secventa parcursa integral. Oracle a ramas Running. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RRyaDj39hPQ89SZS6URRpS
This commit is contained in:
@@ -96,6 +96,7 @@ canal care să se strice separat.
|
||||
|---|---|
|
||||
| `scripts/ups-monitor/ups-monitor.ps1` | monitorul propriu-zis (buclă + moduri de test) |
|
||||
| `scripts/ups-monitor/install-ups-monitor.ps1` | instalare: copiere, `config.json`, ACL, task programat |
|
||||
| `scripts/ups-monitor/test-battery.ps1` | test: simulează „pe baterie" fără scoaterea din priză |
|
||||
| `scripts/ups-monitor/test-comms-loss.ps1` | test: dezactivează temporar bateria HID și verifică alerta de comunicație |
|
||||
| `scripts/ups-monitor/config.example.json` | șablon; **fișierul real nu se comite** (conține parola SMTP) |
|
||||
|
||||
@@ -170,9 +171,45 @@ powershell -ExecutionPolicy Bypass -File C:\ROMFAST\ups-monitor\ups-monitor.ps1
|
||||
| Pierderea comunicației (`test-comms-loss.ps1`) | dispozitiv oprit 15:24:44 → alertă **15:26:44** (exact 8 cicluri × 15 s) + email; reactivare → „comunicația a revenit" + email; `Win32_Battery` înapoi la 1 instanță |
|
||||
| Taskul rulează ca SYSTEM | proces `ups-monitor.ps1 -Mode Run`, `state.json` actualizat la fiecare ciclu |
|
||||
|
||||
**Netestat, pentru că cere pană reală:** trecerea pe baterie, pragurile de oprire și oprirea
|
||||
efectivă a Oracle. Ramura de decizie e comună cu cea testată în dry-run, dar declanșatorul nu
|
||||
a fost exercitat pe hardware. Vezi punctul 1 din secțiunea 6.
|
||||
### Testul „pe baterie", fără scoaterea din priză
|
||||
|
||||
Lanțul de protecție are două jumătăți, și se testează separat:
|
||||
|
||||
| Jumătatea | Cum se validează |
|
||||
|---|---|
|
||||
| UPS → Windows (*chiar raportează trecerea pe baterie?*) | **deja dovedită de istoric**: perechile de evenimente Kernel-Power **105** la panele reale din 10 iun, 13 mai, 5 mai, 25 feb 2026 |
|
||||
| Windows → script → alertă → oprirea Oracle | `test-battery.ps1`, oricând, fără hardware |
|
||||
|
||||
```powershell
|
||||
# repetiție în gol - sigură oricând, în producție
|
||||
powershell -ExecutionPolicy Bypass -File C:\ROMFAST\_deploy\test-battery.ps1 -Percent 30 -Minute 3
|
||||
|
||||
# doar trecerea pe baterie, fără atingerea pragului de oprire
|
||||
powershell -ExecutionPolicy Bypass -File C:\ROMFAST\_deploy\test-battery.ps1 -Percent 80 -Minute 3
|
||||
```
|
||||
|
||||
Scriptul scrie `SIMULARE.json` lângă `config.json`; cât există, monitorul folosește valorile
|
||||
din el în locul citirii reale. Două gărzi, ca un fișier uitat să nu oprească serverul pe date
|
||||
inventate:
|
||||
|
||||
- **`expira` e obligatoriu.** Fără el fișierul e ignorat; la depășire, monitorul îl șterge singur.
|
||||
- **Oprirea e în gol**, dacă nu se cere explicit `"dryRun": false`.
|
||||
|
||||
Cât e activă simularea, fiecare ciclu scrie în log o linie `WARN SIMULARE ACTIVA`, iar
|
||||
`-Mode Status` o afișează. `test-battery.ps1` șterge fișierul și dacă e întrerupt.
|
||||
|
||||
**Repetiție reală**, într-o fereastră de mentenanță — Oracle chiar se oprește și serverul
|
||||
chiar se închide, dar UPS-ul rămâne în priză:
|
||||
|
||||
```powershell
|
||||
powershell -ExecutionPolicy Bypass -File C:\ROMFAST\_deploy\test-battery.ps1 -ConfirmReal 'DA-OPRESTE-SERVERUL'
|
||||
```
|
||||
|
||||
Asta e singurul mod de a verifica de-adevăratelea cât durează `shutdown immediate` pe baza de
|
||||
producție — informația de care depinde alegerea pragurilor.
|
||||
|
||||
**Rămâne netestabilă prin simulare** doar autonomia reală a UPS-ului: câte minute ține sub
|
||||
sarcina actuală. Aceea cere scoaterea din priză (secțiunea 6, punctul 1).
|
||||
|
||||
**Dezarmare de urgență** (monitorul rămâne pornit, dar nu mai ia nicio decizie):
|
||||
|
||||
@@ -252,11 +289,16 @@ nu are constrângerea asta.
|
||||
## 6. Rămâne de făcut
|
||||
|
||||
1. **Testul de autonomie reală.** Pragurile de 10 min / 35 % sunt alese conservator, nu
|
||||
măsurate. Nu se știe cât ține UPS-ul sub sarcina actuală, deci nu se știe dacă cele 10
|
||||
minute lasă destul timp pentru `shutdown immediate` + oprirea Windows-ului. Se măsoară
|
||||
scoțând UPS-ul din priză, cu monitorul **dezarmat** (`DEZACTIVAT`) și cu cineva care
|
||||
urmărește `-Mode Status`. Până atunci, pragurile sunt o presupunere rezonabilă, nu o
|
||||
garanție.
|
||||
măsurate. Sunt două necunoscute distincte, iar doar una cere scoaterea din priză:
|
||||
|
||||
- *cât durează oprirea curată* (`shutdown immediate` + închiderea Windows-ului) — se află
|
||||
dintr-o **repetiție reală** cu `test-battery.ps1 -ConfirmReal ...`, într-o fereastră de
|
||||
mentenanță, cu UPS-ul în priză;
|
||||
- *cât ține UPS-ul sub sarcina actuală* — asta chiar cere scoaterea din priză, cu monitorul
|
||||
**dezarmat** (`DEZACTIVAT`) și cu cineva care urmărește `-Mode Status`.
|
||||
|
||||
Pragul corect e „autonomia măsurată minus durata opririi, cu marjă". Până când ambele sunt
|
||||
măsurate, pragurile rămân o presupunere rezonabilă, nu o garanție.
|
||||
2. **Vârsta acumulatorilor.** Necunoscută. Pe cluster există deja criteriul de vârstă în
|
||||
testul lunar (`proxmox/cluster/ups/`); aici nu există nimic echivalent.
|
||||
3. **BIOS: *Restore on AC power loss*.** De verificat la prima intervenție fizică — altfel
|
||||
|
||||
Reference in New Issue
Block a user