[xen-tools] Re: More changes

Steve Kemp steve at steve.org.uk
Sat Sep 1 13:35:08 CEST 2007


Hi,

  Sorry for the slow reply, especially after my previously
 harsh mail.  I'm pretty busy at the moment, which almost
 certainly contributed to the tone of my previous mail.

  I'm sorry if I overreacted, or was percieved more hashly
 than I intended.  I genuinely welcome contributions, and
 I'm usually happy to be persuaded on issues if there are
 two or more approaches and people dislike mine.

  That said I'll now summerize how I view things at the
 moment.

  In my opinion xen-tools is a collection of related tools
 which may be used to create and manipulate Xen guest domains.
 Nothing more, and nothing less.

  Because the tools share a lot of common code/ideas I'd
 like to modularise them somewhat.  This is where I think
 our ideas have the possability of coinciding.

  The only significant difference between my thoughts and 
 your proposed design is that I regard the modularisation
 as primarily an *implementation detail*.

  I find it hard to picture a situation where users would
 want to use modular library code to create their own guest
 domains on demand, then later remove them.  This is for
 two primary reasons:

     1.  It ties them into using Perl, which many external
        programs/projects do not.

     2.  It involves them writing code for little appreciable
        gain.  (ie. customisation can be substantial right
        now via both the skelington system & the hook solution.)

  So I believe that for 99% of cases the command line tools
 themselves, and their associated command line arguments reflect
 the public API.  (Indeed I am aware of several applications,
 some public and some not, which *do* create and destroy 
 Xen guests by essentially running fork()/exec("xen-creat....").)

  I, personally, would like to refactor the core of the code
 such that there exists both:

  1.  A binary directory containing the xen-create-image, etc, scripts.
  2.  A library of modules/modular code which is shared between them.

  With that in mind the choice mostly falls down to being
 how to organise the modules.  Right now I have a list of
 hardwired installation methods, for example, which would 
 be nice to extend via inheritance of an abstract "installer"
 class.

  Similarly it should be possible to abstract the different
 storage mechanisms, (loopback, lvm, evms, drdb), into a
 clean hierarchy.

  Right now I've neither planned in a serious way, nor
 implemented any such thing.

  (Although you can see hints of my thinking if you look
 at the recent updates to use --install-source + --install-method
 rather than the tool-specific flags which were previously
 in place.  The reason for that?  A proprietry installation
 method which uses an "image-server".  Neat.  I may be able to
 discuss this, or share the code at some point in the future
 but not yet.)

  Anyway I'll stop here for the moment; I just wanted to
 reply quickly to explain myself, apologise for being
 harsher than intended, and to avoid leaving people in 
 suspense.

Steve
--






More information about the xen-tools-discuss mailing list