Skip to content

Commit

Permalink
Fix: ostree images, pulling container larger than 0.9M
Browse files Browse the repository at this point in the history
Container with size > 1G is failing and resulting no disk space on podman pull

The fix creates a workaround for OStree images to properly use prepare.sh.
Adds OStree image specific checkup to the prepare.sh and sets image_copy_tmp_dir="/var/tmp.dir", so the prepare_images section could be used also for OStree images.
Resolve: #574

Signed-off-by: nsednev <[email protected]>
  • Loading branch information
nsednev committed Sep 26, 2024
1 parent 67a9d9a commit 3bbe302
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
21 changes: 21 additions & 0 deletions tests/ffi/common/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Title: OStree images using podman pull to pull containers, larger than 1G.

Description:
The `container.conf` file needs to be modified to allow pulling images from the repository.

Input:

Update container image_copy_tmp_dir if the image is an OStree.
1.Create /var/qm/tmp.dir or differently named directory on host.
2.Create /etc/qm/containers/containers.conf.d or differently named directory on host.
3.Create and edit /etc/qm/containers/containers.conf.d/qm_image_tmp_dir.conf or differently named *.conf file and add the following lines:
[engine]
image_copy_tmp_dir="/var/tmp.dir"

By default image_copy_tmp_dir="/var/tmp".
Changing its default value to /var/tmp.dir will allow the container to pull images larger than 1G.

This is a work around and it should not be used constantly.

Expected result:
Containers on host will be able to pull images larger than 1G.
41 changes: 41 additions & 0 deletions tests/ffi/common/prepare.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,30 @@
. ../../e2e/lib/utils

DROP_IN_DIR="/etc/containers/systemd/qm.container.d/"
OSTREE_PATH="/run/ostree"
export QM_HOST_REGISTRY_DIR="/var/qm/lib/containers/registry"
export QM_REGISTRY_DIR="/var/lib/containers/registry"
export QM_TMP_DIR="/var/tmp.dir"
export CONTAINERS_CONF_DIR="/etc/qm/containers/containers.conf.d"
export QM_IMAGE_TMP_DIR_CONF="qm_image_tmp_dir.conf"

# Checks if the system is running under OSTree.
# This function determines if the system is using OSTree by checking for the
# existence of the directory specified by the OSTREE_PATH environment variable.
# Returns:
# 0 (success) if the OSTREE_PATH directory exists, indicating the system is
# running under OSTree.
# 1 (failure) if the OSTREE_PATH directory does not exist, indicating the
# system is not running under OSTree.
is_ostree() {
if [ -d "${OSTREE_PATH}" ]; then
echo "The system is running under OSTree."
return 0
else
echo "The system is not running under OSTree."
return 1
fi
}

prepare_test() {
# Search variables for update file in qm.container
Expand Down Expand Up @@ -37,6 +59,25 @@ reload_config() {
}

prepare_images() {
# Update container image_copy_tmp_dir if the image is an OStree.
# Default location for storing temporary container image content. Can be overridden with the TMPDIR environment
# variable. If you specify "storage", then the location of the
# container/storage tmp directory will be used.
# By default image_copy_tmp_dir="/var/tmp"
# This is a work around and it should not be used constantly
# This script checks if the directory /run/ostree exists.
# If it does, it executes the following commands:
# 1. Creates the directory /var/qm/tmp.dir if it does not already exist.
# 2. Creates the directory /etc/qm/containers/containers.conf.d if it does not already exist.
# 3. Writes a configuration file qm_image_tmp_dir.conf in /etc/qm/containers/containers.conf.d
# with the content specifying the temporary directory for image copying as /var/tmp.dir.

if is_ostree; then
exec_cmd "mkdir -p /var/qm/tmp.dir"
exec_cmd "mkdir -p ${CONTAINERS_CONF_DIR}"
exec_cmd "echo -e '[engine]\nimage_copy_tmp_dir=\"${QM_TMP_DIR}\"' > ${CONTAINERS_CONF_DIR}/${QM_IMAGE_TMP_DIR_CONF}"
fi

exec_cmd "podman pull quay.io/centos-sig-automotive/ffi-tools:latest"
# Copy container image registry to /var/qm/lib/containers
image_id=$(podman images | grep quay.io/centos-sig-automotive/ffi-tools | awk -F " " '{print $3}')
Expand Down

0 comments on commit 3bbe302

Please sign in to comment.