Dev report 2 on Xen Orchestra 5.0

Hi everyone! Here is a new report on our work to release a Xen Orchestra 5.0.

This time, we are talking about a big change from all previous versions, even those from the beginning. We could say a new paradigm: to be "search" centered in the home view.

The interface is still "work in progress", thus GUI in those screenshots is far from definitive.

Large infrastructures

It appears we got some kind of non-planned XO usage: a LOT of XO deployments are done in medium/large infrastructures. Let's say, "medium" is about 50 to 100 VMs, and "large" up to 2000+ VMs. And XO was initially developed for a very small infrastructure (10 VMs?), as tool for everyday Xen usage.

Today, XO is another beast (replication, continuous delta backup, load balancing, cloud capabilities, self-server for XenServer etc.) but we never changed the UI concept.

If xo-server is able to handle a lot VMs and hosts, GUI is another challenge!

A new home view

The current home view is useful for people with less than ~20 VMs. The "hierarchical" display allows you to have a spatial representation of your whole infrastructure:

Basically, you can see the "Pool > Host > VM" organisation.

But what about this view with hundreds of VMs? Answer:

  • you won't find anything by scrolling
  • displaying hundreds of VMs in the browser is horribly slow...
  • ... and useless!

6 months ago, we implemented an "advanced" search bar: not bad, but far from being perfect. You could only filter, not sort or make actions on those filtered results.

What could be a good solution for everyone?

A solution

The idea is not just to provide a good search engine, but also a complete solution for managing all your XenServer infrastructure. Ideally:

  • less clicks to see or make what you want
  • find a subset of interesting object
  • make bulk actions on all results found
  • sort your result for more pertinent insight

This combo of ideas could lead you to almost never use another view than this one to manage your whole infrastructure!

But let's use some real examples to give you some ideas.

Default filter

By default, the interesting stuff is basically your running VMs. And probably, the first action you'll do, is to type some text in the search filter. So we've done 2 things in the XO home page:

  • pre-loaded the search for all running VMs
  • giving you directly the focus on the search field

You can also see directly that:

  • your search is already filled with power_state:running
  • you are working only on "VM" objects (blue button)
  • you got 25 VMs displayed (on 60 in total)
  • you got 5 pools, 6 hosts and 20 tags in your whole XenServer infrastructure

You can clear the search by clicking in the button inside the search field, you'll see all VMs.

Details

You can also expand a VM (or all) to see more detailed informations, like vCPUs number, RAM, number of disks and network interfaces, IP addresses and tags.

You can also see we are filtering on tags, meaning all VMs with the "dundee" tag.

Syntax

The filter syntax is pretty simple: you can search in any object property or on everything (if you don't specify any property). A space between two expressions is a "AND" ("OR" is |).

You also have a not filter (!), e.g all non-running VMs could be displayed with !power_state:running (so you'll have all halted, paused, suspended VMs).

But we can do even more fun stuff! Examples:

  • virtualizationMode:hvm will show you all HVM guests (replace it by pv to see your PV guests)
  • xenTools:"out of date" will display all VMs without outdated tools! Handy isn't it?

More?

  • power_state:run os_version:distro:!debian will display all running VMs which are not having Debian running on it.

Find me all Debian 7 versions! Possible too thanks to Xen tools (os_version:major:7 os_version:distro:debian)

You could even find distros with their kernel versions!

Pre-made filters and GUI

Okay, good, but you won't remember this, especially at the start. So we built some pre-made filters to give you this in 2 clicks: "Running VMs" or "Halted VMs", Virtualization mode etc.

You can also choose some pools or hosts via their "select" fields: they will display only VMs which are on them. Same for tags, you can add multiple tags to find what you want.

That's not it! What about clicking on a VM state (Running for example, the "green dot") and filtering instantly all running VMs? Same story on a tag inside a VM: just click on it, it will add this tag in the filter.

Oh and also, saving user searches will be possible (

Sort!

Sorting those results is the next step to give you a perfect control on your whole XenServer environnement. You could sort by VM name, CPU number, OS name, number of disks, whatever.

You can do a lot of stuff with this, especially to get an quick insight, even if you have a large number of VMs.

Bulk actions

Now you get your results, maybe you want to do actions on those VMs? Remove them, migrate them, stop them?

No problem, just select those who want, or even all with the "super" select box. Then, a toolbar will be displayed, and you can fire the bulk action:

Pagination/infinite scroll

2 reasons:

  1. performance
  2. user experience

First, the slowest thing on a browser is the DOM. Render a page with hundreds of elements is really, really (really) slow. The idea is to avoid it at all costs. Two possibilities: pagination or infinite scroll. They are similar in performance perspective.

Then anyway, why display 1000 VMs at the same time? Even if the browser is fast enough, could you even find something in this pile of VMs?

That's why having a good filter/search system is really important. We are pretty sure than combining a nice UI with pre-configured searches (for people who are not used to search syntax) AND a advanced filters is something we want to release for the 5.0 release of Xen Orchestra.