diskimage-builder/releasenotes/notes/dibv2-omnibus-b30e0c7ecd76db8d.yaml
Ian Wienand 6887e796e1 Add 2.0.0 release notes
This is a distillation of a longer email I sent to openstack-dev [1]
as an omnibus update for 2.0.0 release notes.

[1] http://lists.openstack.org/pipermail/openstack-dev/2017-February/111833.html

Change-Id: Ic0b012626e0850c41d532e5dfdf82538cc6397d8
2017-03-10 14:29:30 +11:00

95 lines
4.1 KiB
YAML

---
prelude: >-
Version 2.0.0 of diskimage-builder incorporates recent work from the
feature/v2 branch. This includes incorporating some largely
internal changes to the way it finds and calls elements,
enhancements to partitioning and removal of some long-deprecated
elements.
If you use dib exclusively via the command-line disk-image-create
installed from a package or via pypi you are unlikely to notice
any difference (if you run it directly from a git-tree checkout,
you may be affected).
features:
- |
2.0.0 includes a new framework for partitioning contributed by
Andreas Florath. This should allow for creating multiple
partitions, images with encryption, LVM support and flexibility
for multiple-devices, all of which are currently not supported.
Please check the v2 documentation, specs and reach out if these
features interest you (some parts still in review).
- |
Element override is now supported. If you have an element of the
same name earlier in the ``ELEMENTS_PATH``, it will override later
instances (previously, the behaviour was undefined).
upgrade:
- |
For purposes of both users and development we want dib to be as
"pythonic" as possible and behave like all other projects. Two
major visible changes are:
- command-line scripts are entry points (i.e. need to be installed)
- elements have moved under diskimage_create module
The result of the first is that ``./bin/disk-image-create`` from
the source tree is no longer there. Like all other projects, you
should install dib into a virtualenv (if you're developing, use
pip -e) and ``disk-image-create`` will "just work".
The second change, moving the inbuilt elements under the
``diskimage_create`` module, is a simplification so we always have
a canonical path to our elements. Since we now always know where
elements are relative to the imported diskimage_builder module we
can drop all the path guessing complexity. This has other good
flow-on effects such as ``testr`` being able to find unit-tests
for elements in the normal fashion and having imports work as
usual.
We are aware there are a number of tools that like to take dib
elements and do things with them. Reading some of the dib source
you may find there is a canonical way to find out the included dib
elements path -- ask dib itself, something like
.. code-block:: shell
DIB_ELEMENTS=$(python -c '
import diskimage_builder.paths;
diskimage_builder.paths.show_path("elements")')
Note you probably do not want this. As mentioned, another feature
of v2 is override elements -- an element that appears first in the
element path-list will override any built-in one (just like
$PATH). There is a function,
``diskimage_builder.get_elements()``, which will correctly process
the element path, calculate overrides and return a canonical list
of elements, their dependencies and correct paths.
*That* said, you probably do not want this either! There are a
number of elements that do things on behalf of other elements --
they look for a file in the included elements, say, and use that
as a manifest for something. Previously, these would just have to
make up their own element processing via inspection of the
command-line arguments. dib now exports pre-computed variables
that an element can walk for all the current build elements -- a
YAML list for easy python decoding and a function that builds an
array for Bash elements.
deprecations:
- |
A number of long-deprecated elements have been removed in v2, which
are to the best of our knowledge unused.
- ``partitioning-sfdisk``
- ``deploy-ironic-element``
- ``ironc-discovered-ramdisk``
- ``serial-console-element``
- ``map-services``
- |
We have removed and deprecated the ``dib-utils`` package. This
was intended to be a more generic repository of tools that might
be useful outside dib, but that did not eventuate and it has been
folded back into dib for simplicity.