From b417ce19adf465611405ad3edc34527dcfb13386 Mon Sep 17 00:00:00 2001 From: nsednev Date: Thu, 26 Sep 2024 18:55:47 +0300 Subject: [PATCH] Fix: ostree images, pulling container larger than 0.9M Signed-off-by: nsednev --- docs/qm containers.conf/README.md | 28 +++++++++++++++++++++ tests/ffi/common/prepare.sh | 41 +++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 docs/qm containers.conf/README.md diff --git a/docs/qm containers.conf/README.md b/docs/qm containers.conf/README.md new file mode 100644 index 00000000..ed1e343a --- /dev/null +++ b/docs/qm containers.conf/README.md @@ -0,0 +1,28 @@ +# Title: How to change the variables in qm containers.conf + +## Description + +The `container.conf` file needs to be modified to allow pulling images larger than 1G from the repository on OStree images. + +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" + +## Sample code should look like this + + + +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. diff --git a/tests/ffi/common/prepare.sh b/tests/ffi/common/prepare.sh index 4e371134..4f661fa7 100644 --- a/tests/ffi/common/prepare.sh +++ b/tests/ffi/common/prepare.sh @@ -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 @@ -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}')