Commit Graph

6681 Commits

Author SHA1 Message Date
Mathieu
1a012bdd94 fix(web-core/web): handle SSE for non XAPI objects (#10450) 2026-10-08 09:15:10 +02:00
Killian
0ff6196e72 feat(xo-server/backups,rest-api): stream changes of the VM backup archives over SSE (#10472)
The cache now announces what a listing finds and what a journal replay
changes, as `add`, `update` and `remove` events carrying the archive and its
previous value, on an emitter the app exposes as `app.vmBackupArchives`. What
was last announced for a repository outlives its entry, so a repository read
again from scratch only announces what really changed. A repository which is
removed or disabled goes through the new `forgetVmBackupRepository()`, which
announces all its archives as removed. A listener which throws is logged and no
longer fails the listing.

The REST API adds `backup-archive` to the SSE collections. It is bound to
`app.vmBackupArchives` the way `task` is, and filtered by `backup-archive:read`
through the same path as every other non-XAPI collection.

Nothing polls the repositories: changes are pushed whenever any client lists a
repository. The first listing after a restart sends every archive it already
holds as `add`.

XO-2992
XO-2993
2026-10-07 11:58:55 +02:00
Bastien Nollet
2ee51a3694 fix(load-balancer): process tags in each pool separately & other fixes 2026-10-07 11:25:38 +02:00
Bastien Nollet
87aca3ff5e feat(load-balancer): smarter migration restrictions 2026-10-07 11:25:38 +02:00
Bastien Nollet
305e66becc feat(load-balancer): vm-to-host affinity 2026-10-07 11:25:38 +02:00
b-Nollet
d3fea1296d feat(load-balancer): various minor improvements 2026-10-07 11:25:38 +02:00
Pierre Donias
d6e6e963bf feat(xo-web/ip-pools): show IP format example (#10522) 2026-10-06 11:09:50 +02:00
MlssFrncJrg
0070c7f709 fix(xo-lite/XO6): exclude ISO SR guest tools from selector in VM creation (#10430) 2026-10-06 10:36:47 +02:00
Mathieu
a84584d24e feat(rest-api): POST acl-roles support list of privileges (#10470) 2026-10-06 10:21:35 +02:00
Elise-F
decc09117d feat: patch technical release (#10529) 2026-10-05 15:47:30 +02:00
ayoub-el-kajji-v
b59c8f3d20 fix(xo-web): disable restat-toolstack for HA_enabled pool hosts in home (#10497) 2026-10-01 17:33:54 +02:00
Mathieu
b0c0d9361a fix(xen-api): fix HTTP/2 for server behind HTTP proxy (#10507)
Introduced by 11eed70
fix Forum#12502
2026-10-01 14:51:46 +02:00
Elise-F
989cd48559 feat: technical release (#10496) 2026-09-30 15:53:45 +02:00
ayoub-el-kajji-v
b2f0bfc907 fix(xo-web): disable restart toolstack button when HA enabled on pool (#10340) 2026-09-30 14:57:50 +02:00
ayoub-el-kajji-v
2bd4e2a747 fix(xo-server): disable restart toolstack on HA pools (#10344) 2026-09-30 11:31:37 +02:00
Pierre Donias
75098c3cda feat(xo-web/xo-cloud-config): require acknowledgment to enable backup to Vates servers
XO-3030
2026-09-30 11:25:49 +02:00
Pierre Donias
6f091b9380 feat(xo-web/xo-cloud-config): confirm before disabling backup to Vates servers
XO-3031
2026-09-30 11:25:49 +02:00
Elise-F
4b578d439f fix(xo-server): add reactivity on pif metrics (#10438) 2026-09-30 11:13:00 +02:00
Pierre Brunet
3dbf8738f1 fix(security): Add safeguard to v2v (#10489)
https://github.com/vatesfr/xen-orchestra/security/advisories/GHSA-mc4m-hc98-rhmv
2026-09-30 10:21:51 +02:00
ludalm13
f187b79319 fix(xo-server): trust forwarded headers from loopback so /v5 proxies … (#10461) 2026-09-30 10:03:34 +02:00
Bastien Nollet
0ae1cf917c fix(xo-web): fix log modal not closing (#10487) 2026-09-30 10:00:22 +02:00
Marie Garde
e287eaeb55 feat(xo6): create page backup repository list (#10247)
* feat(xo6): merge base master

* returns from PR

* fix build

* fix build

* add custom cards side panel

* return form url util

* fix build

* return form PR

* fix rebase

* Remove packages format and parse url

* fix from IA review

* wip rebase

* wip

* opencode review

* add tests utils

* Add changelog

* feedback

* feedback

* feedback

* add tests

* feedback

* feedback

* feedback

* feedback

* fix after rebase
2026-09-29 17:22:24 +02:00
Florent BEAUCHAMP
5a8393aa17 feat(xoa): auto open ufw port for livemount (#10468)
only open the specific route from source to xo / xo-proxy

port openned only live in memory : restarting ufw will drop them, thus making all the live-mount disk unavailable

doc updated
2026-09-29 17:08:38 +02:00
Florent BEAUCHAMP
323f69d773 feat(live-mount): detect disk removing and cleanup sr (#10432)
the live mount feature create a lot of SR , each with 1 disk
this PR introduce an automatic cleanup that will forget a SR as soon as the disk is removed, thus removing any user action needed to cleanup thins in the nominal case

crashing XO can leave SR pluggued
2026-09-29 17:03:57 +02:00
Killian
45ca13ba5d feat(xo-server/backups): replay the journal of the repositories on a proxy (#10437)
Phase 4 of the journal-replayed VM backups cache: brings proxy-attached repositories onto the same fast/fresh listing path as directly-attached ones, so a proxy repository is also listed once and then kept up to date by replaying its journal, instead of being re-listed in full on every refresh window.

What changes

RemoteAdapter#readBackupJournalEvents() reduces a journal read to the last event of each backup and resolves the added/changed ones back to their current metadata, so a listing can be brought up to date from a single call. A backup rewritten several times costs one metadata read; one written then deleted costs none.
VmBackupsCache no longer knows how a repository is read: that now lives entirely behind a new VmBackupsSource, which reads a directly-attached repository through the local adapter and a proxy-attached one through backup.listVmBackups (cold build, reused as-is) and the new backup.listVmBackupsJournal RPC (journal replay).
The proxy exposes backup.listVmBackupsJournal, returning its journal events with the backups already formatted, so XO gets a listing update in one round-trip instead of one metadata read per file. A proxy too old to know the method is warned about once and falls back to a full listing, same as before this change; it starts being replayed as soon as it's upgraded, with no restart needed on the XO side.
The cache's staleness check now compares its own clock only against when this process last refreshed an entry (refreshedAt), never against the watermark returned by a journal read (cursor), which is stamped by whichever process wrote it — proxy or not. Comparing the two directly would silently over- or under-refresh a repository depending on clock skew.
An entry also rebuilds from scratch if its repository moves to or from a proxy, or if the source reports it can no longer be replayed (e.g. an old proxy), rather than being purged outright.
The old proxy-only listing path in BackupNg (_listVmBackupsOnProxy, bypassing the cache) is removed: proxy and local repositories now go through the exact same cache.
A single corrupt/unreadable metadata no longer fails a whole journal read; it's kept behind the watermark so only that entry is retried on the next call instead of the caller falling back to listing the whole repository until the file is fixed.
The backup repository cache is now also invalidated on remote update/delete (previously only handled for backup repositories proper).
No behavior change for directly-attached repositories — this phase only extends the existing cache to proxy-attached ones.

XO-2852
2026-09-29 08:58:43 +02:00
MathieuRA
2f846bf07e fix(xo-server): interruptOnDisconnect does't update server error anymore 2026-09-28 19:53:59 +02:00
MathieuRA
ae3e04fb3d fix(xo-server): server status connected only if objects are fetched 2026-09-28 19:53:59 +02:00
MathieuRA
986c6b8687 fix(rest-api): fix SSE event order 2026-09-28 19:53:59 +02:00
Elise-F
d7a75b943b feat: technical release (#10467) 2026-09-28 10:43:56 +02:00
Mathieu
aea3717f81 feat(xo-server,rest-api,xo-web,types/rpu): keep RPU recovery to XCP-ng and XenServer 8.4+ (#10447) 2026-09-28 09:59:27 +02:00
MathieuRA
2b466d6ac8 fix(perf-alert): fix SR dead link
introduced by 779876ede9
2026-09-28 09:42:52 +02:00
MathieuRA
8ac91f9d7d fix(perf-alert): fix test plugin
introduced by 779876ede9
2026-09-28 09:42:52 +02:00
Florent BEAUCHAMP
a9caea651c fix(xo-server): ignore tests on startup (#10463)
detected on previous technical release
2026-09-28 09:04:15 +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
Florent BEAUCHAMP
f4fa020d2e feat(backups): make live mount restore works with xo-proxy (#10431) 2026-09-25 10:15:17 +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
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
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
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
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
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
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
Bastien Nollet
13480c3457 fix(xo-server): prevent incidental static_memory_min edit (#10285)
XO-3040
2026-09-18 11:26:32 +02:00