I’ve very proud to announce the second release of xenvman!

This release contains some backward-incompatible changes to the HTTP API but it also introduces some very exciting and useful features.

Live environment reconfiguration

This is the biggest feature in the release, I think. Basically now we’re able to change the environment composition while it is running! We can:

  • Stop running containers
  • Resume stopped containers
  • Start new containers inside an environment by executing new templates

This new feature is very helpful for testing distributed services, for example. You can simulate node departure by stopping a container and conversely a node arrival can be achieved by creating a new container on the fly.

This is all done using a new PATCH env endpoint.

Dynamic discovery

This feature relates to the previous one. If we can update the environment composition on the fly, we can no longer hardcode hostname -> IP mappings into /etc/hosts anymore.

We solve this by injecting a special dynamic discovery agent container into an environment. It’s basically a simple DNS proxy which can be configured/updated using HTTP API. And so every time there’s a change in environment configuration, xenvman calls the agent over exposed port and updates it accordingly.

The agent forwards all the requests for unknown mappings to a DNS server of choice (default is 1.1.1.1).

Old (static) discovery can still be enabled by changing disable_discovery option.

Here’s a picture, providing a visual distinction between static and dynamic discovery modes.

discovery modes

More info on dynamic discovery.

Web UI

A new simple web UI has been integrated into xenvman in v2.0.0. Nothing fancy, but it still allows you to:

  • Inspect currently running environments
  • Terminate environments
  • Browse through available templates, including all available template parameters.

web ui 1 web ui 2 web ui 2

details.

Summary

Version 2.0.0 brings along quite some useful features, and definitely simplifies my daily work, testing-wise. There’s a chance it can be useful to other people too.

Don’t hesitate to drop me a line if you find it useful for your tasks or for whatever question/feedback you might have.