FS#15640 - refactor dataformat

Attached to Project: Release Engineering
Opened by Dieter Plaetinck (Dieter_be) - Wednesday, 22 July 2009, 17:54 GMT
Last edited by Gerardo Exequiel Pozzi (djgera) - Monday, 26 November 2012, 04:44 GMT
Task Type General Gripe
Category AIF
Status Closed
Assigned To No-one
Architecture All
Severity Low
Priority Normal
Reported Version 2009.02
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Right now, the "achilles heel" of AIF is the format it uses to represent blockdevices and filesystems.

We support normal filesystems, dm_crypt and lvm and in the future we want to support softraid (and lets keep things like btrfs/zfs/evms also in mind)
When representing/working with such setup, you need to be aware of the following requirements:
1- support for "new" blockdevices (eg /dev/mapper/device) popping up because of a certain configuration
2- support for one filesystem on multiple blockdevices and the other way around (lvm, softraid)
3- support for dependencies. (eg when building the whole setup)
4- support for reverse dependencies (when tearing the setup down on a rollback)
5- when the user has one or more filesystems already existing with 'old' data (higher level or lower level) the above things get really interesting.
6- support for multiple layers (dm_crypt on lvm on raw and so on)

Stuff like this is hard to implement.
currently aif does not support a filesystem on multiple blockdevices, and when rolling back a system containing valuable user data it sometimes will give up entirely if it's not smart enough.
The other stuff is implemented, but since it's in bash it's not always pretty.

Especially with the long term in mind, I think this stuff should be refactored.
Ideally we use an external library or commandline tool that can generate and parse formats which support the relevant structures/relations.
Maybe something like yaml but more lightweight.

If you're interested in this, do not hesitate to send an e-mail to me (Dieter) or the releng ML.
I will guide you through the aif source code and assist you with this stuff.
This task depends upon

Closed by  Gerardo Exequiel Pozzi (djgera)
Monday, 26 November 2012, 04:44 GMT
Reason for closing:  Deferred