htools: add partial implementation of lib/objects.py
authorIustin Pop <iustin@google.com>
Fri, 18 Nov 2011 09:59:12 +0000 (10:59 +0100)
committerIustin Pop <iustin@google.com>
Tue, 13 Mar 2012 12:48:15 +0000 (13:48 +0100)
commitb1e8152024ccdf8049f34508a41e6f90fd16a6f3
tree62fb6cd454083a997a85b721fdbbd81764eaaf23
parent0547d608b4d5424e9192f5e2e7619393b5e2e250
htools: add partial implementation of lib/objects.py

This is partial since not all object types can be easily converted for
now (will need some changes on the Python side for this).

Most importantly, the *Params types do not have a good solution now:
the Python code, due to its dynamic typing, hides the fact that we
actually have two different types at play: a full type which needs to
have all keys, and the 'partial' type which has slightly different
behaviour. I've implemented these in Haskell as two different types,
Full* and Partial*, which are derived automatically from a single
Parameter type, together with the associated Fill* functions.

Furthermore, HVParams is even more special, as its contents is not
fixed but varies per hypervisor type, plus it has the HV_GLOBALS part
which should not be customisable at instance type (yay for
exceptions). As such, this should be written in Haskell as a
multi-constructor type, but it's the only one so far and thus we don't
have support for it yet.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
Makefile.am
htools/Ganeti/Objects.hs [new file with mode: 0644]
htools/Ganeti/THH.hs