During the creation of a disk image (e.g. for a VM), there is the need to create, setup, configure and afterwards detach some kind of storage where the newly installed OS can be copied to or directly installed in.
Currently dib is somewhat limited when it comes to setting up the block device: only one partition that can be used for data. LVM, encryption, multi-device or installation in an already existing block device is not supported.
In addition there are several places (main, lib, elements) where the current way of handling the block device is used (spread knowledge and implementation).
Also it is not possible, to implement the handling as different elements: it is not possible to pass results of one element in the same phase to another element. Passing results from one phase to dib main is limited.
Possible use cases are (Actor: End User)
Please note that these are only examples and details are described and implemented by different sub-specs.
Because of the current way to execute elements, it is not possible to have different elements for each feature. Instead the changes will be implemented in a python module ‘block_device’ placed in the ‘diskimage_builder’ directory.
The entry-point mechanism is used to create callable python programs. These python programs are directly called from within the dib-main.
There is the need to implement some functions or classes that take care about common used new functionality: e.g. storing state between phases, calling python sub-modules and passing arguments around. These functionality is implemented as needed - therefore it is most likely that the first patch implements also big parts of these infrastructure tasks.
Is described in the sub-elements.
Is described in the sub-elements.
Paradigm changes from execute script to configuration for block_device phase.
Is described in the sub-elements.
Would be good, if other people would support this - and specify and implement modules.
This is an overview over changes in the block device layer. Each level or module needs it’s own spec.
A first step is to reimplement the existing functionality, this contains:
As a second step the following functionality can be added:
Of course any other functionality can also be added when needed and wanted.
Is described in the sub-elements.
Is described in the sub-elements.
Is described in the sub-elements.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.