17899 Commits

Author SHA1 Message Date
Marie Garde
d846e00dff feat(xo6): BR add detail page (#10454)
* feat(xo6): BR add detail page

* Prepare PR

* add tests

* fix breadcrum

* fix post rebase

* fix admin path

* fix link side panel

# Conflicts:
#	@xen-orchestra/web/src/modules/backup-repository/components/list/panel/cards/BackupRepositoryInfosCard.unit.test.ts
#	@xen-orchestra/web/src/modules/backup-repository/components/list/panel/cards/BackupRepositoryInfosCard.vue

* feedback

* feedback

* rebase ok
2026-10-14 08:50:18 +02:00
Florent BEAUCHAMP
f93bb67409 fix(xen-api): really throw import error while importing VM (#10551) 2026-10-13 17:13:44 +02:00
Florent BEAUCHAMP
51bb88a1ce feat(vmware-explorer): method to list/attach/detail disk to satellites (#10449)
* feat(vmware-explorer): implement attaching and detaching disks
* feat(vmware-explorer): implement a check to see if a disk can be attached to a VM
* feat(vmware-explorer): implement a method to detect what host are candidates to deploy a satellite
* refactor: computing the datastore of a datapath
2026-10-13 13:58:23 +02:00
Pierre Donias
11335b465b fix(xo-web/self): fix removing a tag from a resource set (#10550)
Fixes Zammad#65918
2026-10-13 11:05:35 +02:00
Killian
295b8838a6 docs(backups): explain when reverse replication updates the VM in place (#10558) 2026-10-13 10:01:20 +02:00
Pierre Briffaux
e0b0c75682 feat(xo6): add copy button for multiple information (#9976) 2026-10-13 09:16:35 +02:00
Thomas Moraine
286dafa267 docs: document warm migration and fix broken link in architecture page (#10570) 2026-10-12 18:20:37 +02:00
Thierry Goettelmann
b08ad1669f feat(web-core): add UiLinkList component (#10287) 2026-10-12 17:36:54 +02:00
Thomas Moraine
4731cbd629 docs(advanced.md): document estimated per-VM power consumption metric (#10569) 2026-10-12 17:13:27 +02:00
Florent BEAUCHAMP
1c4890be10 fix(xo-cli): error when using output on a rest api query (#10541) 2026-10-12 16:59:56 +02:00
Pierre Donias
4abb9d80bc feat(xo-web/patches): warn when pool master is not up to date (#10523) 2026-10-12 16:24:18 +02:00
Mathieu
87fe4e2b53 docs(rest-api): enhance REST API guideline (#10416) 2026-10-12 15:37:17 +02:00
ayoub-el-kajji-v
6058f07813 feat(api-rest): add sr probe endpoints (#10099) 2026-10-12 14:43:07 +02:00
Sebastien Rodot
d451d5c35b feat(xo-server-sdn-controller): add unit tests
- check that objects listeners are properly attached/detached on Xapi connect/disconnect
- check that xapi instance doesn't leak on reconnect
2026-10-12 14:34:55 +02:00
Sebastien Rodot
375b9fe91b fix(xo-server-sdn-controller): avoid leaking listeners on disconnect
Objects listeners are added to Xapi objects by the sdn-controller plugin, but 
they are only removed at plugin `unload()` time.

Prefer to remove them at Xapi disconnect time.
2026-10-12 14:34:55 +02:00
Sebastien Rodot
d53294f15c fix(xo-server-sdn-controller): re-watch XAPI events after reconnect
When a pool's XAPI connection drops and reconnects, xo-server destroys the
old Xapi instance and creates a new one (same pool UUID, same XAPI object
$refs). The plugin tracked managed pools by pool UUID, so _manageXapi()
short-circuited on reconnect and never attached its add/update/remove
listeners to the new Xapi instance.

From then on the plugin was blind to XAPI events: re-applying VIF traffic
rules on VM start, handling VIF/PIF plug and star-center election all
stopped silently until the plugin was reloaded.

Track the managed Xapi instances instead of pool UUIDs, and drop a dead
instance on disconnect so its replacement is managed again.
2026-10-12 14:34:55 +02:00
Sebastien Rodot
40e5ca9a73 fix(xo-server-sdn-controller): recreate stale OpenFlow controllers
When a XAPI connection drops and reconnects, xo-server creates a new
Xapi instance while the XAPI objects (and their $refs) are kept. The
ofChannels cache still held the controllers of the previous
connection, so traffic rule add/delete calls were silently skipped
without reaching the host.

Rework _getOrCreateOfChannel() to key the cache on the Xapi instance:
entries from a previous connection are dropped and the controller is
recreated, concurrent calls share the same instantiation, and a
failed instantiation clears the cache.

Also drop the cached controller when the host is disabled or its XAPI
is not connected, so it is recreated as soon as it comes back.
2026-10-12 14:34:55 +02:00
ayoub-el-kajji-v
cf760d26cd feat(backup): support ndb through http proxy (#10544) 2026-10-12 11:23:29 +02:00
Thierry Goettelmann
d4b85421fe fix(web-core): make query builder usable inside a form (#10475) 2026-10-12 09:59:46 +02:00
Thierry Goettelmann
61a06e817b feat(web-core): add queryFilter rule and backTo to multi-step form (#10477) 2026-10-12 09:31:32 +02:00
Thierry Goettelmann
1b1ae506b6 feat(web-core): add checkbox column to host, SR and VM column sets (#10485) 2026-10-12 09:28:58 +02:00
Thierry Goettelmann
641f988781 feat(web-core): add ignoreRoute option to table pagination and query builder filter (#10476) 2026-10-12 09:27:43 +02:00
Thierry Goettelmann
b6b94a80b1 refactor(xo6): extract VM, host and SR query builder schemas into composables (#10488) 2026-10-12 09:25:17 +02:00
Florent BEAUCHAMP
70b0824dc4 feat(backups): improve full mirror backup performances (#10537)
XO-3135 and XO-3134
2026-10-09 19:04:29 +02:00
Marie Garde
4a9d434559 feat(xo6): add emergency shutdown button host (#10412) 2026-10-09 08:42:23 +02:00
Alina D
341bd0301d feat(xo6/new-vm-form): allow resizing existing template disks when a … (#10359) 2026-10-08 20:13:29 +02:00
Pierre Donias
70be55528f fix(lite): do not reuse window.origin protocol and port when overriding master host (#9955)
When overriding the pool master with `?master=<host>`, XO Lite kept the page's
protocol and port and only swapped the hostname (e.g. `https://proxy:8443` +
`?master=192.168.1.10` → `https://192.168.1.10:8443`). Requests sent directly to
hosts also always used the page's protocol, regardless of the master's.

Everything now follows the XAPI connection (one commit each):

1. **Master override** (`xen-api.store.ts`): the value is parsed as a URL,
   `https://` by default, port and protocol allowed. An invalid value falls back
   to the default host instead of crashing XO Lite.
2. **RRD stats** (`xen-api.ts`, `getResource`): use the XAPI protocol.
3. **VM and host consoles**: `wss:` if XAPI is `https:`, `ws:` otherwise.
4. **Unreachable hosts check**: pings hosts with the XAPI protocol, so the
   certificates modal checks the right URLs.
2026-10-08 16:08:03 +02:00
Joris K
71ff8b0d24 feat(xo6/lite): add shortcut to focus the treeview search (#10492)
* feat(lite): add searchbar in the treeview

* add changelog and improvement

* feedback

* review feedback

* feat(xo6/lite): add shortcut to focus the treeview search

* add changelog

* added mac shortcut

* feedback
2026-10-08 16:03:37 +02:00
Florent BEAUCHAMP
33caeacb49 fix(nbd-client): better handling of reconnection (#10456)
* fix(nbd-client): better handling of reconnection

don't let a failure of an already remplaced trasnport impact the
current transport
2026-10-08 14:19:20 +02:00
Elise-F
854e5dbd89 fix(xo6): add missing condition to the detach job (#10543) 2026-10-08 13:48:27 +02:00
Pierre Donias
c069b7e9c7 fix(lite/vm-creation): keep UEFI firmware when setting boot order (#10521)
Introduced by #8317

`VM.set_HVM_boot_params` replaces the whole map, so setting the boot order for a
network install or a VM without disk dropped the firmware set just before, and
the VM booted in BIOS mode.
2026-10-08 11:18:30 +02:00
Thierry Goettelmann
8338851c4c feat(web-core,web,lite): add UiPanelCardTitle component (#10289)
* feat(web-core,web,lite): add UiPanelCardTitle component

Figma's "Panel title v3" describes three formats — plain text, linked
title, title with an id — which the existing VtsCardObjectTitle only
covered partially, and which several cards had reimplemented inline with
their own flex/gap rules.

Rather than three components, the parts are independent and optional: a
`to` or `href` makes the title a link, an icon or an id is shown when
passed, and `size` replaces Figma's `level`, which described the
appearance in terms of hierarchy.

Adopting it in the side panel cards drops their local title styles, and
brings them back to the 0.8rem title-to-content gap the design system
specifies.

* chore(lite): add the ui-panel-card-title story route

The generated route-map entry was omitted when the story was added.

* fix(web): address review feedback

Task infos and warnings are arrays, so their counters read `length`
directly instead of going through `Object.keys` and a non-null assertion
that only held thanks to the parent's `v-if`.

Add the changelog entries for the side panel card titles.

See XO-2885

* feat(web-core,web,lite): migrate side panel cards to UiPanelCardTitle

Replace the remaining `UiCardTitle` usages in side panel cards with
`UiPanelCardTitle`, so every panel card title shares the same layout.

To cover the cases the old titles handled, `UiPanelCardTitle` gains
`label`, `action` and `more-actions` slots, and tighter spacing between
the title and its id.

See XO-2885
2026-10-08 11:01:20 +02:00
Elise-F
7edeb7a253 feat(lite): add detach action on host (#10520)
* update changelog file

* feedback one

* feat(host): add action reboot on host

* feat(lite): add forget action on host

* feedback

* feat(lite): add detach action on host

* update changelog

* fix modal translations

* add 'host is running' condition to the job and fix translations

* feedback
2026-10-08 10:16:29 +02:00
Mathieu
1a012bdd94 fix(web-core/web): handle SSE for non XAPI objects (#10450) 2026-10-08 09:15:10 +02:00
Sandrine Barrucand
493aa7f15d feat(xo6/pool): add validation to pool connection form (#10484) 2026-10-07 16:40:31 +02:00
Alina D
cb1e45b6b0 feat(xo6): allow removing existing (template) disks in the New VM form (#10292) 2026-10-07 16:02:11 +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
Elise-F
8c4e4d110a feat(lite): add action restart toolstack on host (#10480)
* update changelog file

* feedback one

* feat(host): add action reboot on host

* feat(lite): add forget action on host

* feat(host): Add restart toolstack action for hosts with HA disabled

* feat(icon status): Add a power status icon to the treeview and to the host header

* update changelog files

* fix rebase

* feedback
2026-10-06 15:29:41 +02:00
Florent BEAUCHAMP
cc8f039341 fix(backups): allow a deadlocked merge to recover (#10424)
* fix(backups): properly throw an error if a disk is missing from a chain to merge
but accept it if the merge was interrupted at the cleanup phase
* fix(backups): a merge with 0 or 1 disk is a warning
* fix(backups): don't try to merge chain that are out of retention
this fix will allow broken to recover after a while ( depending on
retention and full backup interval )
* fix: defense in depth against deletion
 every path this class compares it against is normalized (disk paths, alias targets), so
 it must be too: a raw path would e.g. make #cleanOrphanDataFiles fail to exclude the VDI
 directory from the data directories it sweeps, and delete every unclaimed file in it
* fix(backups): better handling of missing disks during a merge
* ensure we never delete ancestries of a differential disk
2026-10-06 15:05:55 +02:00
ayoub-el-kajji-v
59c8935e37 fix(backups): delete first not working in replication (#10452)
* fix(backups): delete old entries before starting a new replication
2026-10-06 14:52:50 +02:00
Thomas Moraine
779e448f21 docs(users): recommend enabling OTP authentication (#10539)
Strongly recommend OTP (TOTP) authentication to mitigate brute force attacks on passwords.
2026-10-06 14:43:39 +02:00
Elise-F
3a64afb226 feat(lite): add enable and disable actions on host (#10337)
* update changelog file

* feedback one

* feat(host): add action reboot on host

* add header state

* feat(lite): add forget action on host

* feat(lite): add enable and disable actions on host

* update changelog file

* fix rebase

* fix rebase

* feedback one

* add redirect after forget action
2026-10-06 13:55:14 +02:00
Marie Garde
cfdf0de9ee feat(xo6): Add create form backup repository (#10271)
* feat(xo6): create and edit backup repository form

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix post rebase

* add tests

* feedback

* feedback

* rebase ok

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 11:39:18 +02:00
Pierre Donias
d6e6e963bf feat(xo-web/ip-pools): show IP format example (#10522) 2026-10-06 11:09:50 +02:00
Pierre Donias
29c7c0e6f1 fix(web-core/remote-resource): clear error after a successful fetch (#10516)
Introduced by #8855

lastError was never reset, so one failed poll kept hasError true and
dashboard cards in error state until reload.
2026-10-06 11:07:05 +02:00
Joris K
72a9959a3c fix(xo6): update modal events to handle confirm actions correctly (#10417) 2026-10-06 11:03:16 +02:00