Descripción
Permite fijar límites de potencia (W) y peso (kg) por rack individual. El editor y el PDF avisan cuando se aproximan o se superan esos límites, mejorando la planificación de capacidad en sala.
Lo que cambia en v1.57.0
- Campos nuevos en Rack:
max_power_w(vatios) ymax_weight_kg(kilogramos), ambos con valor por defecto 0 (= sin límite definido). - Modal “Rack Information”: dos nuevos inputs para fijar los límites (0 = sin límite; el editor avisa al rebasarlos).
- Avisos de capacidad en la cabecera del editor:
- Badge de U ocupadas cambia de
42Ua12/42U(usa ocupado/total). - Badge de potencia pasa a mostrar
350 / 3500 W(consumo actual / límite del rack). - Badge de peso muestra
80 / 800 kg(peso actual / límite). - Coloreo dinámico: ámbar cuando se alcanza el 90% del límite, rojo si se supera (clases
capacity-warn/capacity-overeneditor.css). - Los badges se recalculan al momento al añadir, mover o editar equipos, y al guardar el modal.
- Badge de U ocupadas cambia de
- PDF mejorado del rack: bloque “Capacity” con tabla (Resource / Usage / Status) que muestra estado OK / NEAR LIMIT / OVER LIMIT para Space (U), Power (W) y Weight (kg); columnas nuevas de consumo (W) y peso (kg) por equipo.
- Backup/restore: los nuevos campos viajan en la exportación completa (
backup_full_start/write_full_backup_zip) y se restauran sin romper backups antiguos (campos ausentes → valor 0). - i18n: cadenas en español (
Potencia máx.,Peso máx., etc.) enlocale/es/LC_MESSAGES/. - API:
RackSchemayRackInputSchemaexponen los límites; endpoints GET/PUT/api/racks/{id}persisten;exclude_unsetprotege límites anteriores en PUTs parciales.
Motivación
DCIM Fase 1/2 ya tenía:
- Rollup de potencia y peso en el dashboard (modelo: campos
power_w/weight_kgenDevice.model_data). - Agregación en
racks/services/rollup.py(suma de equipos).
Esta v1.57.0 añade la capa de límites + avisos visuales, evitando sorpresas al desplegar equipos nuevos sin revisar números.
Componentes tocados
- racks/models.py —
Rack(migration 0013: dos nuevos FloatField). - racks/schemas.py —
RackSchema/RackInputSchemaexponen límites. - racks/services/racks.py —
create_rack()/update_rack()/update_rack_metadata()manejan límites. - racks/api/export/pdf_export.py —
generate_rack_pdf()incluye bloque Capacity y columnas W/kg. - racks/api/export/backup.py / restore.py — campos incluidos en full backup/restore.
- static/js/editor/devices.js —
updatePowerRollup()con coloreo (ámbar ≥90%, rojo si supera). - static/js/editor/ui_panels.js — modal “Rack Information” con inputs de límites.
- static/css/pages/editor.css — clases
.capacity-warn/.capacity-over. - templates/editor.html — fields nuevos en el modal.
- tests/api/test_rack_capacity.py — 6 tests (create/update, exclude_unset, PDF, backup/restore roundtrip).
Tests
6 tests nuevos en tests/api/test_rack_capacity.py:
test_create_rack_with_limits— POST /api/racks persiste límites.test_update_rack_limits— PUT /api/racks/{id} actualiza límites.test_update_without_limits_keeps_them— payload sin campos no pisa anteriores (exclude_unset).test_pdf_includes_capacity_block— PDF muestra tabla Capacity con estado OVER LIMIT si procede.test_pdf_without_limits_shows_no_limit— sin límites, no hay alarmas en PDF.test_backup_restore_roundtrip_limits— roundtrip completo backup/restore preserva límites.
Véase también
- [[entity—racks—model—rack]] — modelo Rack + nuevos campos max_power_w / max_weight_kg
- [[entity—racks—endpoint—patch-rack-limits]] — persistencia de límites vía GET/PUT /api/racks/{id}
- [[entity—racks—service—update-power-rollup]] — función frontend que colorea badges según límites