Volver a la wiki

El restore aprende a actualizar: machaca lo que coincide, nunca borra (v1.75.0)

Valor para el usuario

Hasta ahora, restaurar un backup solo sabía “añadir”: todo lo que traía la maleta se recreaba junto a lo que ya había en la organización, así que restaurar dos veces el mismo backup duplicaba cada rack, cada cable, cada ficha. Desde v1.75.0 el motor del restore acepta un segundo modo, “Actualizar lo existente”: lo que coincide con el backup por su identidad natural (el nombre de un rack o plano, la IP de una ficha o de un target de monitorización, el título de un runbook, el device+puerto de un cable, el nombre de una playlist o proyecto de Signage…) se sobrescribe con los datos de la copia en vez de duplicarse, lo nuevo se añade igual que antes, y lo que vive en la organización y NO viene en el backup nunca se borra — actualizar no es sincronizar. Es la pieza pedida por Edu el día anterior (“avisar y actualizar si son los mismos datos” en vez de duplicar), decidida en el grill del 21-08 (opción A: el modo es siempre una elección explícita del usuario en cada restauración, nunca automático). Si al fusionar dos equipos acabaran solapados en el mismo hueco del rack, la restauración entera se rechaza con el motivo, sin dejar nada a medias. Segunda de las cuatro piezas de la ventana del task #236 — la cara visible (el selector de modo en el modal de restauración) llega en la siguiente pieza; hoy el motor queda listo pero aún no expuesto en la UI.

Cómo usarla

  1. El endpoint de restore acepta un parámetro mode ("add" por defecto, o "update"); si no es uno de esos dos valores responde 400.
  2. La tarea Huey run_full_restore(job_id, org_id, zip_path, rack_ids=None, mode="add") propaga el modo a apply_full_restore_from_zip() (ver [[entity—racks—service—apply-full-restore-from-zip]]) y guarda mode en el resultado del job junto a counts (lo creado) y el nuevo updated (lo machacado).
  3. En modo "update", cada modelo con identidad natural clara se busca primero (por nombre, IP, título…) y si existe se actualiza en vez de crearse; los devices se emparejan por su nombre dentro del mismo rack.
  4. Tras aplicar, la verificación esperado-vs-aplicado suma creado + actualizado: un re-restore perfecto en modo actualizar sale complete: true con 0 elementos creados.
  5. El selector visual del modo en el modal de restauración (reutilizando el árbol ya construido para elegir qué backupear, ver [[feature—backup-restore—creacion-selectiva-v1-74-0]]) llega en la siguiente pieza de la ventana.

Implementación

Commits relacionados

Véase también

Subir