Xen Orchestra: a Web interface for XCP

Maybe you heard few years ago, a project called Xen Orchesta. It was designed to provide a web interface for Xen hypervisor with Xend backend. The project started in 2009, but paused one year later, due to lack of time from the original designer. As you can read on the project website, XO is now re-developed from scratch. But its goal now is to provide an interface for XCP. Why XCP? Because, with XAPI, it offers a full set of features with unmatched possibilities for a Open Source product.
Despite this, XCP lacks of a free, simple and open source interface. That’s why the project reboot. Other interesting projects are now dead (like OpenXenManager, a clone of XenCenter). To avoid this kind of scenario, a clear intention for XO team is to provide a living project: “release often” policy, listening to the community, and deliver commercial support to getting resources needed for the project life. The original team behind XO have created their own company to sustain this durability to XO. Furthermore, XO license is AGPL.

Current state

XO was just rebooted in December. But we want a first version rapidly, at least for testing purpose (architecture validation, feedback, suggestions). That’s why this release is quite light: we focused on global design, picking right technologies for the future. Because we think it’s better to analyse and implement a strong basis rather than doing ugly stuff which can jeopardize the project later. So, we are proud to present you XO “Archlute” which is the first step in web management for XCP.

Under the hood

Architecture

The first version of XO had an important scalability problem: each client (PHP page) connected to each XCP server leading to an exponential number of connections (see figure below). Furthermore the information was transmitted in its wholeness regardless of what the client already knew.

In the new version of XO we have decided to create a new component, XO-Server, which has for primary function to serve has a pseudo-proxy server between the clients and the XCP servers. Thanks to Xen-API events, it stores an up-to-date cache of the XCP servers’ state and permits XO to be very responsive.
Additionally, because it knows which data the clients already have, it can transmit only what changed since the last update and preserve has much as possible its clients’ bandwidth.

There is much advantage to this new architecture:

  • XO-Server contains all XO logics (such as users management, pools management, …) so the client code can stay as simple as possible;
  • if need be, a new client (dedicated to smartphones for instance) could be created very easily and share its configuration with the current one.

The other benefice of XO-Server is its position: on the top of all your servers. It guarantees the possibility to add exciting features for XO, like fine grained statistics, energy management, tasks automation, transparent migration between pools etc.

Technical choices

We have chosen proven components to build XO on it to guarantee its robustness and is evolutivity.
PHP 5.3 is the main language used as much for XO-Server as XO-Web. We do not use any PHP frameworks but we try to keep our code as modular as possible thanks to the wonderful tool which is Composer.
The design of XO-Web is built using the Bootstrap framework which permits XO to be almost as easy to use on smartphones/tablets as it is on desktop computers.
We also use Backbone.js to provide a dynamic interface which stays always up to date. In later versions we will probably extends its usage to make the interface as responsive as possible in limiting round-trips to the web server.
In the future, we will look into using Processing.js to provide advanced visualizations of your Xen infrastructure, like this “molecule” design:

More resources:

Get involved

Express your ideas: go on this page to post ideas of features you will like included on XO. More you express your interest, more the project will be great.
Download
For now, if you are a user, you can download the tarball here, and follow the README for install steps. If you are a developer, you can clone our git repo (xo-server here and xo-web here). For bug reports, please use this repository.
This release is a great opportunity for you to express what do you expect from a XCP web UI.

What’s next?

Well, first, we’ll add missing views, reorganize some pages, refactoring data and correct reported bugs (that’s why your feedback is essential!). We’ll publish then a roadmap, extending the project visibility. All project news are available on the main project page, and major announcements will be also published on Xen blog.

Read more