[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] RFC: Configuring rumprun-xen application stacks from Xenstore



(Cc-ing xen-devel as this is relevant to general use of
"application-specific" domains, MirageOS, etc.)

Hi,

back in July there was some discussion on configuring rump kernel
application stacks:
http://thread.gmane.org/gmane.comp.rumpkernel.user/321

Some proposals were made, but no actual implementation work was done. In
the mean time, I have implemented the simplest possible mechanism I could
think of for rumprun-xen, using Xenstore.

The patches are available for review as PR #12:
https://github.com/rumpkernel/rumprun-xen/pull/12

Following is the high-level description from the Git commit:

In order to run rumprun-xen applications that are actually useful, we
need to be able to configure block devices and network interfaces.
These changes implement a basic mechanism to do this using Xenstore.

Conceptually the changes consist of the following parts which work
together:

  - The rumpconfig module provides _rumprun_config() and
    _rumprun_deconfig() functions. These are called before and after the
    application main() function, and also in the case of deconfig when
    _exit() is called.

  - These functions rely on keys like the following being present in
    Xenstore at the time the domain is started:

    /local/domain/<domid>/rumprun/net/0/... (first network interface)
    /local/domain/<domid>/rumprun/net/1/... (second network interface)
    /local/domain/<domid>/rumprun/blk/0/... (first block device)
    /local/domain/<domid>/rumprun/blk/1/... (second block device)

  - The "xr" driver script, currently located in app-tools/. The
    motivation for this script is twofold:

    Firstly, in order to write the configuration to Xenstore the domain
    must be created in a paused state so that we can retrieve its unique
    . Only then do we know where in Xenstore to write the
    configuration data.

    Secondly, it is my intention with this work to provide a
    "docker-alike" interface for running rumprun applications. The "xr"
    script is therefore the CLI for running such applications.

Note that in this initial version, only configuring IPv4 network
interfaces with DHCP is supported, and only using image files with ffs
or cd9660 filesystems for block devices is supported.

Xen people: I'm especially interested in whether or not this is a valid use
of Xenstore.

Further: I originally wanted to just add the rumprun/* keys to the
(generated) domain configuration file, but it turns out that xl does not
allow adding arbitrary keys or at least they don't show up in Xenstore for
the domain.  Hence the "two-step" approach with first creating the paused
domain, then writing the keys to Xenstore and starting the domain.

Martin

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.