Volver a la wiki

Contrato

GET /api/racks/{id}

Devuelve el rack completo, incluidos los límites de capacidad (nuevos en v1.57.0).

Response (RackSchema):

{
  "id": 1,
  "name": "Rack A",
  "location": "Data Center Room 1",
  "height_u": 42,
  "status": "active",
  "power_consumption": 2.5,
  "max_power_w": 3500,           # ← NUEVO: vatios máximos (0 = sin límite)
  "max_weight_kg": 800,           # ← NUEVO: kg máximos (0 = sin límite)
  "notes": "Production rack",
  "deleted_at": null,
  "is_template": false,
  "devices": [...]
}

PUT /api/racks/{id}

Actualiza metadatos del rack. Los campos max_power_w / max_weight_kg son opcionales (exclude_unset: no se pisan si no vienen en el payload).

Request (RackInputSchema):

{
  "name": "Rack A Updated",
  "location": "New Location",
  "height_u": 48,
  "status": "active",
  "power_consumption": 2.5,
  "max_power_w": 4000,            # ← NUEVO: opcional
  "max_weight_kg": 1000,          # ← NUEVO: opcional
  "notes": "Updated notes"
}

Valores especiales:

Comportamiento

  1. Persistencia: racks/services/racks.py → update_rack() / create_rack() escriben los valores en la BD.
  2. Validación: números no negativos (min=0). No hay validación cruzada (ej. no se chequea si max_power_w < consumo_actual al guardar).
  3. Schema: la exposición la hace RackSchema (GET) / RackInputSchema (PUT).
  4. Modal Rack Information: el frontend lee/escribe estos campos via el endpoint.

Fuentes de datos

Lado frontend

File: static/js/editor/ui_panels.js → initRackInfoModal().

Responsabilidades (DCIM #134)

ComponenteQué hace
RackSchemaExpone max_power_w / max_weight_kg en GET.
RackInputSchemaDefine max_power_w / max_weight_kg como float | None (opcional en PUT).
RackServiceValida/asigna límites al crear/actualizar.
update_rack()Protege límites con exclude_unset (no pisa anteriores si no vienen en payload).
templates/editor.htmlInputs en el modal con data-max-power-w / data-max-weight-kg.
ui_panels.jsLee/escribe limite via el modal; dispara updatePowerRollup() al guardar.

Véase también

Subir