Xen Orchestra 5.102
Welcome to the final release of the year! Despite December being a shorter month, we’ve managed to deliver a feature-packed update to close out 2024 on a high note.
This release also gives us the perfect opportunity to reflect on the incredible progress we’ve made throughout 2024, as we gear up to tackle exciting challenges in the year ahead.
👨🚀 Project & Community
As we close out the year, it’s clear that both our project and community are thriving like never before! Let’s take a moment to celebrate the highlights of 2024 and look ahead to an even brighter future.
Vates in 2024: a year of transformation
2024 has truly been a landmark year for Vates. In just two years, our team has tripled in size, and this incredible growth has opened the door to exciting new possibilities.
But we’re not stopping here. With this momentum, we can confidently see ourselves breaking the 100-person milestone in 2025 (another exciting horizon for us to reach). The future is bright, and we’re just getting started!
XO Project Health in 2024
Just in 2024, we had:
- 20 new committers
- 695 pull requests merged
- 123 issues closed
- Many new backup features: CBT support, mirror backup, chained backup, immutability, auto retry, better backup reports, GFS retention, sync backup merging, many auto backup healthcheck improvements…
- First XO 6 preview available, after sharing all our UI/UX work
Some interesting stats generated by "Git of Theseus" project:
Meet us at the FOSDEM!
We’re thrilled to announce that Vates will have a booth at FOSDEM 2025 in Brussels, taking place on February 1st and 2nd. Come visit us to explore the entire Vates Virtualization Management Stack and chat with our team.
Oh, and did we mention? We’re bringing plenty of swag, so don’t miss out!
Xen Project Winter Meeting: final stretch
The countdown is on! The Xen Project Winter Meeting kicks off in exactly one month. We’re in the final stages of preparation and are excited to announce the full program (including all Xen talks and design sessions) in just two weeks.
Stay tuned, and don’t worry: we’ll share a complete recap in February to keep you in the loop!
OpenBSD support in XCP-ng 8.3
Thanks to knightjoel on our forums, a patch was submitted in OpenBSD upstream to fix an issue related to Xen 4.17.
The fix was merged in November meaning any recent OpenBSD 7.6 snapshot past that date is working now on XCP 8.3! (thanks Andrew for the test).
New XO translation management
We've made major improvements to the way translations are managed in Xen Orchestra. Weblate now works directly with our GitHub repository to automatically create commits, push changes and open pull requests for updates.
Syncing changes from GitHub to Weblate is still done manually for now, but it's something we can automate later using GitHub hooks. These updates will make it easier to keep translations up to date and ensure that the interface remains accessible to users around the world. We'll provide a guide as soon this enters in production!
And now, what's up in this last release of 2024!
💾 Backup
2024 was big on backup, and December is no exception!
Synchronous backup merging
In Xen Orchestra 5.102, you can now merge backups synchronously through the advanced settings, which makes it easier to manage incremental and mirrored backups while avoiding lock issues.
If this option is enabled:
- Backups may take a little longer because the merge time is included in the total backup time.
- Backup speeds will be slightly slower because some merges are performed in parallel, which can affect I/O performance.
- Merges and transfers will not overlap, meaning that the next transfer will not start until the merge is complete (especially for VMs with concurrency set to 1).
This update simplifies backup workflows, helping to prevent problems and making it easier to handle complex backup chains. If you have lock errors in the past, this will solve it!
Health Check: Adding tags to exclude VMs
You can now use tags to exclude VMs from health checks. This makes it easier to control which VMs are monitored. Just add a tag on the VM called xo:no-health-check
and the VM won't be checked:
Also, as we have a great tag system, you can add the reason if you want. For that, you just need to use the format xo:no-health-check=REASON
. Here is an example:
In that case, you know "why" you disabled the health-check!
All in all, this is useful for VMs that are in maintenance mode or have special configurations that don't require monitoring at certain times. Excluding these VMs helps to make the health checks more efficient and focused on the ones that matter.
Long term retention documented
We've documented the long-term retention feature that was introduced in the previous release (Xen Orchestra 5.101). This feature, based on the Grandfather-Father-Son (GFS) backup strategy, ensures that the first backup of each time bucket (daily, weekly, monthly) is kept. In addition, any backup that meets certain conditions, such as being the first of a time bucket or meeting a specified number of backups, will also be retained.
This documentation explains how to set up and use this feature. You can find it over at https://docs.xen-orchestra.com/backups#retention-and-scheduling
🥝 Core UI
Core UI is the main UI used both for XO Lite and XO 6, since they share the same components.
New components
State here for empty tables, tag list, dropdown… They are now part of the available components!
New centralized task system
Managing tasks across your infrastructure can be complex, but our new centralized Job Management feature simplifies this process. A "job" in Xen Orchestra is now a centralized part of the code designed to handle specific tasks, with the following capabilities:
- Defined execution logic: each job clearly defines what happens when it runs, ensuring consistency and reliability in task execution.
- Argument validation: built-in mechanisms validate job arguments, preventing errors before execution begins.
- State tracking: keep track of whether a job is running both internally (by monitoring its promise) and externally (using custom checks), ensuring consistency across the app.
- Extensibility: easily add new job types to adapt to evolving needs.
This feature provides a robust foundation for managing tasks efficiently, ensuring reliability and consistency across the app.
New menu management system
Managing menus in a complex application like Xen Orchestra can be a challenging task. That’s why we’ve developed a new, dynamic menu management system to simplify the process and enhance usability. This system allows you to easily define and manage menus, offering a range of flexible options to suit your needs.
You can define menu items in various ways: as external links, internal links (leveraging Vue Router), actions (with handler functions), jobs (integrating with the Centralized Job Management feature), or even submenus, which handle toggling and positioning automatically. Once a menu is set up, each element becomes programmatically accessible, so you can refer to it directly (e.g., menu.help.documentation
) and pass it to the menu item component.
The menu item component itself is designed to adapt seamlessly to the data you provide. It ensures the correct HTML tags, attributes, handlers, and behaviors are applied automatically based on the item type. Submenus are also dynamically positioned and toggled for a smooth and user-friendly experience.
This new system makes creating, updating, and managing menus more intuitive than ever, ensuring a consistent and efficient user experience throughout the application.
Improved Guidelines for Vue.js Components
We've updated our development guidelines, focusing on Vue.js components for web-core, XO 6, and XO Lite. The new documentation provides clear advice on how to structure components, name them, and maintain consistency across the codebase.
These changes are designed to help developers write code that fits well within the existing framework and is easy to maintain. Whether you're new to the project or have been working on it for a while, these updates should make it easier to contribute effectively.
🛰️ XO 6
As a reminder, XO 6 preview is available by adding /v6
at the end of your XOA URL.
Dashboard: pool status
The new Pool status component shows key details about your connected servers, like their health, connection status, and resource usage. It helps you keep track of your servers and quickly spot any issues.
And now your pool dashboard is looking like this:
📡 REST API
With XO 6 fully adopting our REST API (leaving the legacy JSON-RPC behind), the API is evolving faster than before.
Add pool status in dashboard endpoint
You can get all the visible info in the XO 6 dashboard by doing an API call to the /dashboard
endpoint. And obviously, since we added the pool status, it's part of the data now, eg in this JSON:
{
…
},
"poolsStatus": {
"connected": 3,
"unreachable": 4,
"unknown": 0
}
}
Manage VDIs when creating VMs via the REST API
We've made it easier to manage Virtual disk images (VDIs) when creating virtual machines through the REST API. Before this update, VDIs were automatically included from the selected template, but you couldn’t add, change, or remove them during the creation process.
Now, you can add, modify, or remove VDIs as you create the VM. This gives you more control over the storage setup, allowing you to customize your VM exactly how you want it.
Example:
// The VM will be created with the template's VDIs
xo-cli rest post pools/<your-pool-id>/actions/create_vm \
name_label="mra-vm-from-rest-api" \
template="<your-template-id>"
// The VM will be created with the template's VDIs + one VDI
xo-cli rest post pools/<your-pool-id>/actions/create_vm \
name_label="mra-vm-from-rest-api" \
template="<your-template-id>" \
vdis=json:'[{"name_label":"foobar", "size": 1073741824 }]'
// The VM will be created with the template's VDIs but the VDI with `userdevice 0` will be updated
xo-cli rest post pools/<your-pool-id>/actions/create_vm \
name_label="mra-vm-from-rest-api" \
template="<your-template-id>" \
vdis=json:'[{"userdevice":"0", "name_label":"foobarbaz"}]'
// The VM will be created with the template's VDIs but, the VDI with `userdevice 0` will be removed
xo-cli rest post pools/<your-pool-id>/actions/create_vm \
name_label="mra-vm-from-rest-api" \
template="<your-template-id>" \
vdis=json:'[{"userdevice":"0", "destroy": true}]'
🛡️ Air gap features
2024 marked a turning point for air-gapped deployments. We’ve worked tirelessly to ensure our entire stack is fully operational and seamlessly updatable in isolated environments. The result? A robust solution tailored for air-gapped production environments.
To help you get started, we’ve created a comprehensive guide that walks you through every step. If your production environment requires air-gap compatibility, don’t hesitate to reach out: we’ll provide everything you need to succeed!
🆕 Misc
Despite December being a shorter month (with just one sprint instead of the usual two due to the holiday season) our Misc section remains packed with updates and enhancements.
Updated Sign-In Page Design
The sign-in page has been updated to better match the style of XO6. This includes a new logo and some style tweaks to make it look more consistent with the rest of the interface. We have kept the changes to a minimum, to maintain a familiar feel for users.
Editing XenStore Entries in the UI
You can now edit XenStore entries directly from the Xen Orchestra interface. This feature is available on the VMs → Advanced page, and allows you to modify string entries, making it easier to manage XenStore data.
For example, you can add a key pair this way:
Then, from the guest OS, you can now read the value:
# xenstore read vm-data/foo
bar
And it works both ways! If you write a key from the OS, it will be displayed in XO: if you input xenstore write vm-data/foo baz
, Xen Orchestra will instantly display the updated result in the UI!
As demonstrated, Xenstore offers a powerful yet straightforward mechanism for communication between XO and virtual machines.
RPU scheduling
You can now schedule a Rolling Pool Update in the job section. For instance, you might want to kick off an RPU every Sunday at 3 AM to keep things fresh. Here's how to set it up:
- Create the job: use the
pool.rollingUpdate
option and specify the pools you want to include. - Set the schedule: create a schedule (e.g., weekly on Sunday at 3 AM) and link it to your job.
- Profit!
Expanded alarm notifications
We've expanded the range of alarms displayed in the dashboard to include critical system messages that were previously overlooked. This enhancement ensures that important alerts, such as MULTIPATH_PERIODIC_ALERT
and BOND_STATUS_CHANGED
, are now prominently featured, providing a more comprehensive view of your system's health.
mdadm
status
We’ve made it easier than ever to monitor the health of your software RAID arrays! The mdadm status is now displayed directly in the Host → Advanced section, giving you quick and clear insights into your RAID's condition:
Additionally, if a host contains a degraded software RAID, you’ll see a dedicated red triangle in the host view. Clicking on it provides detailed information about the issue, ensuring that it’s impossible to overlook critical problems:
Cloudbase-Init Support Now Documented
In the previous Xen Orchestra update (version 5.101), we added support for Cloudbase-Init, a tool that automates the initialization of Windows virtual machines in cloud environments. With Xen Orchestra 5.102, we’ve ensured that this support is properly documented in our official documentation, available in the Advanced section.
This documentation explains how Cloudbase-Init integrates with Xen Orchestra and covers the setup process. You can now easily refer to this guide to more effectively manage Windows VMs with Cloudbase-Init.
Listing Missing Patches for XenServer 8
For XenServer 8 (effectively 8.4-ish) and newer, Xen Orchestra now highlights any missing patches directly in the interface. This makes it easier to quickly see what needs updating and take action without switching between tools. It’s a straightforward way to help administrators keep their systems secure and running smoothly.