17899 Commits

Author SHA1 Message Date
Pierre Brunet
99af2031c4 feat(backups): improve doc (#10390)
improve backup documentation for developers
2026-09-25 16:28:16 +02:00
Elise-F
22706164d6 feat: technical release (#10458) 2026-09-25 15:03:27 +02:00
Florent BEAUCHAMP
dc57333f58 feat(v2v): remove vddk dependency (#10421)
Co-authored-by: Mathieu <mathieu.piton@vates.tech>
2026-09-25 10:38:26 +02:00
spacotte-vates
3fea79d899 feat(xo-web): add support for IS_XOA_BUILD var (#10429) 2026-09-25 10:34:55 +02:00
Florent BEAUCHAMP
f4fa020d2e feat(backups): make live mount restore works with xo-proxy (#10431) 2026-09-25 10:15:17 +02:00
Florent BEAUCHAMP
b5f119f1d4 feat(nbd-client): implement a nbd-client for stdin/stdout instead of a tcp connection (#10381) 2026-09-25 09:57:53 +02:00
Florent BEAUCHAMP
d1029ffb24 docs(live-mount): add documentation of live mount (#10445)
* docs(live-mount): add documentation of live mount

Co-authored-by: Thomas Moraine <thomas.moraine@vates.tech>
2026-09-25 09:48:11 +02:00
Mathieu
a4b17d5abb fix(rest-api): triggers updates for objects that are unmodified but computed (#10441) 2026-09-24 15:43:41 +02:00
Elise-F
b1b5097b6b feat(lite) : add action forget on host (#10315)
* update changelog file

* feedback one

* feat(lite): add forget action on host

* udpate changelog file

* fix rebase

* feedback

* rebase
2026-09-24 15:15:09 +02:00
Marie Garde
5ba393ca2b feat(xo6): fix imports vif form (#10451) 2026-09-24 14:59:32 +02:00
Marie Garde
b3b02b1fef feat(lite): Create Vif from VM Network (#10216) 2026-09-24 14:23:18 +02:00
Killian
6b4a7e5ebd fix(jobs): updates a sequence's runner user on save (#10423)
* fix(jobs): updates a sequence's runner user on save
2026-09-24 13:14:00 +02:00
MlssFrncJrg
9e38c0bac2 fix(xo-web): VDI migration now shows all pool SRs for admins, even on VMs bound to a Resource Set (#10422) 2026-09-24 12:14:16 +02:00
amouillard-vates
4d6a5ffa60 feat(web-core): add accent prop to MenuItem (#10348) 2026-09-24 09:01:20 +02:00
Mathieu
fc571c00d4 feat(xo-server,rest-api,xo-web/rpu): force-close an incomplete rolling pool update record (#10418)
* feat(xo-server,rest-api,xo-web/rpu): force-close an incomplete rolling pool update record

A pool whose previous rolling pool update left a recovery record refuses a
new run until that record is dealt with. Once the operator has reviewed the
pool, `pool.finalizeRollingUpdate` and
`POST /rest/v0/pools/{id}/actions/finalize_rolling_update` close it.

Without `force`, the finalization is refused (`incorrectState`, property
`unrestoredItems`) while the record says the run changed something the pool
still shows changed: HA, auto power-on, WLB, load balancer, backup
schedules, hosts left disabled, running VMs away from their home host,
pinned VMs shut down and not started again. A record that cannot be read
is refused too, with an unknown list.

With `force`, the record is deleted, the abandoned items are written to the
task and the trace, nothing is restored nor changed in the pool.

To tell what the run changed from what the operator did, the run now
persists, before each change, the settings it touches (strict write) and
whether each host was enabled before the run.

XO 5 shows a "Finalize" action on the incomplete update banner, which is
now also shown for a run that succeeded but whose record could not be
removed. Forcing asks for a second confirmation listing the items.
2026-09-23 16:53:43 +02:00
amouillard-vates
974c2cfee9 feat(xo6): sort networks by name on hosts > networks table (#10367) 2026-09-23 15:51:42 +02:00
Thierry Goettelmann
fc6124b1b8 feat(web-core/table): add row selection, checkbox column and controls bar (#10435) 2026-09-23 15:30:29 +02:00
Thomas Moraine
97d338710d doc(xo): remove SECURITY.md to apply global Vates security policy (#10405)
This commit removes the local `SECURITY.md` file from the Xen Orchestra repository.

The new global Vates security policy is now in place, so the local file
is no longer needed and should be replaced by the central policy:
https://github.com/vatesfr/.github/blob/main/SECURITY.md

This ensures consistent security reporting guidelines across Vates projects.

Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
2026-09-23 13:27:17 +02:00
Grandalf
e957c2d821 test(backups): cover VM backups cache invalidation and local mutations (#10261)
test(xo-server/backups): cover VM backups cache invalidation and local mutations
2026-09-23 11:22:36 +02:00
Elise-F
a1dba1ed4e feat(lite): add start shutdown action host (#10314)
* update changelog file

* feedback one

* update changelog file

* feat(lite): add start shutdown action host

* update changelog file

* feeback 1

* feedback 2

* feedback 3
2026-09-22 15:32:35 +02:00
Marie Garde
26a71c4d4b feat(xo-remote-parser): migration JS to TS and update tests (#10399) 2026-09-22 14:50:44 +02:00
ayoub-el-kajji-v
c40741ccf4 feat(rest-api): add reclaim space method per vm or backup repository (#10262) 2026-09-21 19:02:09 +02:00
ayoub-el-kajji-v
c95dec183e Fix(backup): immediate delta vm backup deletion (#10273) 2026-09-21 16:07:58 +02:00
Thierry Goettelmann
ee0b8f0468 feat(web-core): enhance collection flags configuration and add clearFlag (#10428) 2026-09-21 14:05:57 +02:00
Florent BEAUCHAMP
75d9e4afda feat(xo-web): implement read only live mount as restore target (#10345)
following the backend PR this PR implement the xo5 ui to use live mount for restoring a VM .

    the popup is enlarged to ensure there is enough space
    it fixes a ui feature where removing a VDI make it unrestorable without closing and reopening 
    A disk row is complete when its action has the destination it needs: Live mount → a host, Restore → its own SR or the main SR, Do not restore → nothing.
    An incomplete row shows a red message under its selector, and since the rows sit in a collapsed panel, a red "Some disks have no destination yet" line is also shown outside it.
    The restore SR selector's placeholder now reads "Use main SR" once a main SR is set, so an empty field reads as a deliberate fallback rather than an oversight.
    For live moiunt the picker is prefilled with the host that can use the SR
2026-09-21 11:07:56 +02:00
Sylvère
eb7471a248 chore(web-core,web,lite): update FontAwesome, clean unused icon packages imports (#10365) 2026-09-21 09:52:34 +02:00
Grandalf
cae1b72571 feat(xo-server/backups): list the backups from a journal-replayed cache (#10257)
[XO-2850]
2026-09-21 09:36:25 +02:00
Olivier Lambert
f56150c25b Revert "feat(browser-media): prototype local ISO streaming in XO 5 and XO 6"
This reverts commit 5d1d0eba2f.
2026-09-18 18:40:28 +02:00
Olivier Lambert
5d1d0eba2f feat(browser-media): prototype local ISO streaming in XO 5 and XO 6 2026-09-18 18:37:16 +02:00
Mathieu
fe69a029e1 fix(openmetrics): don't block the scrape on stale collector caches (#10409)
Introduced by 2b7b6ba
See XO-2984
2026-09-18 17:29:46 +02:00
Patrice Ferlet
12a32dce22 fix(@xen-orchestra/mcp): use undici fetch to fix Node 26 dispatcher crash (#10413)
* fix(@xen-orchestra/mcp): use undici fetch to fix Node 26 dispatcher crash

Node's global fetch is backed by Node's bundled undici and rejects a
dispatcher from the npm undici dependency with UND_ERR_INVALID_ARG on
some Node versions (e.g. Node 26), surfacing as "fetch failed". The MCP
passed an EnvHttpProxyAgent dispatcher to the global fetch, so it crashed
at startup.

Route every request through undici's own fetch (proxyFetch) so the
dispatcher and the fetch come from the same undici copy. Add a FetchFn
injection point so unit tests can mock the fetch instead of globalThis.fetch.

Fixes #10411
2026-09-18 17:14:39 +02:00
Elise-F
cafea84fee feat(lite) : add action force reboot on host (#10311)
* update changelog file

* feedback one

* update changelog file

* feat(lite): add force reboot action on host

* update changelog file

* feedback 1

* feedback loader
2026-09-18 17:02:30 +02:00
Bastien Nollet
13480c3457 fix(xo-server): prevent incidental static_memory_min edit (#10285)
XO-3040
2026-09-18 11:26:32 +02:00
Bastien Nollet
4fc992da52 feat(users): add firstname, lastname and username properties (#10163) 2026-09-17 16:53:07 +02:00
Florent BEAUCHAMP
6f73bde276 feat(backups): backend of using live disk mount for restore (#10343)
* feat(backups): implement backend for live mounting disk

when restoring a VM, the vdi to SR map is extended to support a
'live-mount' mode , additionaly to the now explicit 'restore'
and 'ignore' mode

live-mount will need the host. no check is done on backend to
ensure if the VM is bootable
 
add e2e test
2026-09-17 16:30:27 +02:00
Florent BEAUCHAMP
70cbf5cda3 feat(xo-server): implement live mounting a backup archive disk (#10302) 2026-09-17 16:10:06 +02:00
Florent BEAUCHAMP
44b7db2fd9 feat(@vates/iscsi): extract iscsi package code (#10242)
implementation of an iscsi target and initiator in typescript

this will serve as a basis of 2 projects:

    connecting directly to 3rd party san
    exposing a disk from a backup archive to the host, effectively enabling direct mount to a running VM. Final target is to be able to boot completely the VM

@vates/iscsi/VALIDATION.md file is a journal of the additional test I run on my lab
@vates/iscsi/PROTOCOL.md describe the subset of the protocol implemented . For example we only support 1 LUN per target, not multiple connection , only one type of auth and keep alive
2026-09-17 15:07:15 +02:00
Mathieu
f56d241c18 feat(xo-server,rest-api,xo-web/rpu): safe start on a partially updated pool (#10394)
* feat(xo-server,rest-api,xo-web/rpu): safe start on a partially updated pool

A rolling pool update used to overwrite the recovery record left by the
previous run and to look only at the master to decide whether there was
anything to update. Both hid a pool left half updated: an interrupted run,
or updates applied by hand, could be silently completed or forgotten.

- `startRpuRecoveryRun` now refuses a new run while the pool still has a
  record, whatever its status, with an `incorrectState` error (property
  `rollingUpdateRecovery`). The RPU guard held by the caller makes the
  check-then-write safe. A run which fails before any host was handled
  drops its record instead of marking it failed: the orchestrator restores
  what it changed on its way out, and a refused precondition (a guidance to
  accept, a pinned VM to shut down) must not block the retry the operator
  just consented to.
- The update refuses a pool whose master is already up to date while
  another host is not (`incorrectState`, property `partiallyUpdatedPool`,
  `actual` listing the outdated hosts) unless the new
  `acceptCurrentStateAsBaseline` option is set. The option is exposed on
  `pool.rollingUpdate` and on `POST /rest/v0/pools/{id}/actions/rolling_update`.
- XO5 enables the rolling pool update button as soon as any host of the
  pool has missing patches, not only the master, disables it while a
  recovery record exists, and asks for confirmation before accepting the
  current state as the baseline.

Until the force-close operation ships, a leftover record can only be
removed by hand: it must land in the same release.

* feat(xo-server,rest-api,xo-web/rpu): changelog entry for #10394

* fix(xo-server/rpu): getRollingUpdateRecovery returns null on no record

* fix(xo-server/rpu): persist acceptCurrentStateAsBaseline, mark record succeeded on delete failure

* fix(xo-server/rpu): drop an empty record after the pool is restored, update LINSTOR only past the guards
2026-09-17 14:17:06 +02:00
MlssFrncJrg
ce7d94ec77 fix(xo-server): enhance CSP handling for Netdata (#10275)
Introduced by #10101
2026-09-16 17:01:09 +02:00
Mathieu
f91d64235a fix(xo-server): fix vm topology when editing incompatible cpu max number (#10398)
* fix(xo-server): fix vm topology when editing incompatible cpu number
2026-09-16 15:51:31 +02:00
ayoub-el-kajji-v
116f50821e fix(backups): change prefix name for health checks (#10361)
[XO-2797] This PR is for changing the displayed name during backups health check from [Importing...] to [Health Check...]
Introduced by 03865bc
2026-09-16 15:28:24 +02:00
Enée DI IORIO
43f63ee784 feat(web-core): update UiLegend component to v6 (#9509) 2026-09-16 14:58:12 +02:00
Grandalf
11ec9fd5da fix(backups): don't destroy the job's own rolling snapshots (#10395)
listReplicatedVms() stopped excluding snapshots in c1e9b83 (#9524) so that new-style replication, where each transfer is a snapshot of the target VM, would be covered. But a backup snapshot of the source VM matches the very same filter: it carries xo:backup:schedule and xo:backup:vm, and setVmOtherConfig passes srUuid = null, which removes xo:backup:sr and therefore matches the srUuid = undefined argument of the "delete previous interrupted copies" sweep in FullXapiWriter._run.

A full backup job replicating to an SR of the source pool thus destroyed both the rolling snapshot retained from the previous run and the one it had just taken, silently: the sweep is fire-and-forget under ignoreErrors, and XAPI holds the destroy of the snapshot being exported until the transfer ends instead of refusing it.

A replication snapshot is a snapshot of a replica, so a snapshot of the VM designated by xo:backup:vm can never be one.
2026-09-16 14:16:26 +02:00
spacotte-vates
ea2acac77b fix(backups): don't destroy the delta base after failed transfer (#10369)
XO-2994

Customer reported that after a failed replication transfer, the next run was a full and a VM was left orphaned on the target.

This is due to _removeUnusedSnapshots() protecting the last snapshot irrelevant of if it was successfully transferred and thus, in the case of a failed transfer, breaking the delta chain
2026-09-16 10:53:02 +02:00
Pierre Brunet
14b7115cf1 fix(openmetrics): share metrics collection on slow pools (#10401) 2026-09-16 10:19:42 +02:00
MlssFrncJrg
d0645598b9 feat(xo-server/proxy): check proxy licenses from XOA instead of blocking backups on it (#10280)
XO-2768
2026-09-15 20:42:18 +02:00
Thomas Moraine
83b2fd9056 docs(releases.md): document security support (#10379)
Document which Xen Orchestra versions receive security fixes
in the actual XO doc, not just in SECURITY.md.

Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
2026-09-15 17:13:13 +02:00
Florent BEAUCHAMP
0c04076324 feat(v2v): use CBT to discover allocated blocks instead of vddk (#10384)
Faster (25 GiB test VM: the map goes from 2.5s to 50ms) and fewer moving
parts: the vddk map needs nbdkit, the vddk library and nbdinfo, all
version-coupled, where CBT is a handful of documented calls every backup
product has relied on for years.

Checked on ESXi 8.0.1 that enabling CBT on a disk which already holds data
backfills the tracking file, so the first query reports what was already
written and not only what is written afterwards. Against `nbdinfo --map` the
two maps differ by 960 KiB which reads back as zeros: CBT reports the blocks
that were written where the vddk reports the ones VMFS allocated.

CBT must be enabled before the migration, it cannot usefully be turned on
during the run:
- powered off VM: nothing else to do, the reconfigure writes the tracking
  file and the query answers straight away
- running VM: the query needs a snapshot, and tracking only starts at the
  next stun (snapshot create/delete, power cycle, vMotion)
2026-09-15 16:47:03 +02:00
spacotte-vates
c37c4a286d fix(xo-server): fix cache issue on vmBackupOnRemote (#10277) 2026-09-15 15:56:09 +02:00
Mathieu Lantin
21d99ee856 fix(xo-server-netbox): use numeric comparison to find the most specific prefix (#10297)
Fixes #10240
2026-09-15 14:59:32 +02:00