Currently diskimage-builder supports two ways to specify the image
size. One is defining a fixed image size using DIB_IMAGE_SIZE, the
other one is auto-detection while adding a security margin of 60% as
free space. This means when building larger images (e.g. >100GB) with
unknown size upfront we end up with much wasted space, IO and network
traffic when uploading the images to several cloud providers. This can
be optimized by adding a third way by defining DIB_IMAGE_EXTRA_SIZE to
specify the free space in GB. This makes it possible to easily build
images of varying sizes while still minimizing the overhead by keeping
the free space constant to e.g. 1GB.
Change-Id: I114c739d11d0cfe3b8d8abc6df5ff989edfb67f2
In many cases, the statically sized 64MB journal is far below the
e2fstools default calculation[0] which calls for a 64MB journal only
on filesystems smaller than 16GB. On bare metal in particular, the
correct default journal size will often be in the 512MB-1GB range.
Since we cannot know what the target system is, this should be a
tunable parameter that the user can set depending on the intended
image usage.
Add a DIB_JOURNAL_SIZE envvar and --mkfs-journal-size parameter
to the image creation so users can override the default journal
size.
[0] https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/tree/lib/ext2fs/mkjournal.c#n333
Change-Id: I65fa13a088eecdfe61636678578577ea2cfb3c0c
These options have always been a bit of a mess since v2 when we added
all the block-device flexibility. Add some explicit documentation to
try and help explain the relationship between these options and the
block-device config.
Change-Id: I49affcbef868d644f673b833bef8310cf25cfd0f
setuptools is required by python3-setools (a dependency of
policycoreutils-python) but is not in setools RPM dependency list in
Fedora 28. See [1] for DIB output.
This is a temporary workaround. It was fixed in Fedora rawhide and
Fedora 29 [2], but Fedora 28 is still unresolved.
[1] http://logs.openstack.org/81/600381/10/check/octavia-v2-dsvm-scenario-\
fedora-latest/4ac1e5c/controller/logs/dib-build/amphora-x64-haproxy.\
qcow2_log.txt.gz#_2019-01-21_10_15_49_816
[2] https://bugzilla.redhat.com/show_bug.cgi?id=1623371
Change-Id: Ie8c827d8217d885c3031c4f45aa2556951b01e83
The path $TMP_BUILD_DIR/mnt becomes the / inside the chroot during
the chroot phases of diskimage-builder. Previously this path was being
created using the account running diskimage-builder. This account may
not be valid inside the chroot. This causes path validation, when running
on a Ubuntu bionic host, to fail.
This patch chown's the $TMP_BUILD_DIR/mnt to root.root to make sure
that / is owned by a valid account inside the chroot.
Change-Id: Ifedc136baa67c7952942aed2c8cb1041902fef91
Closes-Bug: 1811113
Change order of default tox envlist in order of likeliness to fail on a
new change and add py37 and py36.
Change-Id: I9d21561991c1d956a62de72c906cf91305ce5328
There is an use of get_image_element_array on the environment.d
phase, for the iscsi-boot element.
This function is not available on that step. So moving the check
at next step, extra-data-d, where it is available.
Change-Id: I89cfe565492142c2f7962109360fcbcebadfd469
semanage is provided by package policycoreutils-python-utils in Fedora.
The tool is a requirement of element rpm-distro.
Change-Id: I46425ec8467caf8c4e0bd47ae89412a3b8d9b3b4
This plumbs through an "--use-nm" flag to glean which instructs it to
setup interface bringup with NetworkManager rather than legacy network
enablement scripts.
In this case, install the NetworkManager package. In the non-nm case,
also install the network-scripts for Fedora 29 -- this has stopped
being installed by default (it's been deprecated since forever).
As noted in the docs, this is currently really only relevant on the
supported rpm distros which are using the ifcfg-rh NetworkManager
plugin to effectively re-use old config files. However,
NetworkManager has similar plugins for other platforms, so support can
be expanded if changes are proposed.
Depends-On: https://review.openstack.org/618964
Change-Id: I4d76e88ce25e5675fd5ef48924acd09915a62a4b
Provide a "when" option that provides for not installing packages
based on a = or != match on an environment variable.
Unit tests are added.
Change-Id: Ifa824dccaff69fd447f45d54cb4a3083bcabdd86
This reverts commit db2d26a75f331e99f6e39d9e6775fc5f48c0cc90.
The bad upstream RPM has been removed, and the job no longer fails.
The jobs are part of the template, so don't need to be explicitly
listed as they were previously, however.
Related-Change: https://review.openstack.org/619625
Change-Id: I138b7f6bdef1d955a6e0babf228543ab2530159a
It looks like we dropped running these probably when we moved the
elements around. For testtools to find the test scripts we need to
add the __init__.py files to make the directories look like modules.
Also prevent copying any .pyc or cache files in as hooks.
Change-Id: I66d5f6ee62cc4d9ee14c64e819b4db57d035d09f
I'm not sure why, but run_ramdisk_element_test is not using the same
interface as run_disk_element_test, despite being called the same way.
Update it so we are capturing logs.
Change-Id: I41b6a3f2d6e5466b340677c6252b7646c1dc2663
This has been broken for a few days due to upstream issues. Will
restore when working
Change-Id: I2c1d0a7b64f9bb263358970127adbfa36f7c1a46
Related-Change: https://review.openstack.org/619625
Related-Bug: #1804475
I noticed that pylint environment doesn't work with Python 3.7; I
guess the pinned version has become incompatible. From the history
the pin is only for Python 2.7 compatability, so just restrict it to
that (with the basepython for the environment set to python3, it's
questionable if we still support pylint with 2.7, but anyway).
Change-Id: I6a916c8422239a4e1b47dcf28a4569f1637cae7a
This allows nodes with remote devices configured via iBFT to be
correctly used during Ironic introspection and deployment,
at least for non-multipath configurations.
The new element is added as a dependency for ironic-agent.
Change-Id: If3dac6504d26535593f12e851092065b688ef696
install-packages is running before install.d phase, there is a chance
that installing a package like "container-selinux" will failed the
build, moving "selinux-permissive" to run at pre-install stage make
more sense.
Change-Id: I32f988be725d4b385c3765c47a00cd57c53d7d71
Update builds to Fedora 29. Remove the openstack gate CI mirror
workaround for pre-28 versions as they're not building in the gate any
more.
Change-Id: Ia6a8ae8d66d69f6add39e571043328e7274ba26c