Test/API: use directories and files customization for supported images
Use directories and files customization in the compose request for image types that support this customization (only ostree installer and raw image do not support it). Extend the instance verification to check for the custom directories and files. Extend the ostree commit verification to check for the custom directories and files. Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
parent
d1325aaf45
commit
c528948b71
6 changed files with 122 additions and 8 deletions
|
|
@ -330,6 +330,43 @@ EndOfMessage
|
|||
fi
|
||||
export SUBSCRIPTION_BLOCK
|
||||
|
||||
# Define the customizations for the images here to not have to repeat them
|
||||
# in every image-type specific file.
|
||||
case "${IMAGE_TYPE}" in
|
||||
# The Directories and Files customization is not supported for this image type.
|
||||
"$IMAGE_TYPE_EDGE_INSTALLER")
|
||||
DIR_FILES_CUSTOMIZATION_BLOCK=
|
||||
;;
|
||||
*)
|
||||
DIR_FILES_CUSTOMIZATION_BLOCK=$(cat <<EOF
|
||||
,
|
||||
"directories": [
|
||||
{
|
||||
"path": "/etc/custom_dir/dir1",
|
||||
"user": "root",
|
||||
"group": "root",
|
||||
"mode": "0775",
|
||||
"ensure_parents": true
|
||||
},
|
||||
{
|
||||
"path": "/etc/custom_dir2"
|
||||
}
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "/etc/custom_dir/custom_file.txt",
|
||||
"data": "image builder is the best\n"
|
||||
},
|
||||
{
|
||||
"path": "/etc/custom_dir2/empty_file.txt"
|
||||
}
|
||||
]
|
||||
EOF
|
||||
)
|
||||
;;
|
||||
esac
|
||||
export DIR_FILES_CUSTOMIZATION_BLOCK
|
||||
|
||||
# generate a temp key for user tests
|
||||
ssh-keygen -t rsa-sha2-512 -f "${WORKDIR}/usertest" -C "usertest" -N ""
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function createReqFile() {
|
|||
"packages": [
|
||||
"postgresql",
|
||||
"dummy"
|
||||
]${SUBSCRIPTION_BLOCK},
|
||||
],
|
||||
"users":[
|
||||
{
|
||||
"name": "user1",
|
||||
|
|
@ -63,7 +63,7 @@ function createReqFile() {
|
|||
"name": "user2",
|
||||
"key": "$(cat "${WORKDIR}/usertest.pub")"
|
||||
}
|
||||
]
|
||||
]${SUBSCRIPTION_BLOCK}${DIR_FILES_CUSTOMIZATION_BLOCK}
|
||||
},
|
||||
"image_request": {
|
||||
"architecture": "$ARCH",
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ function createReqFile() {
|
|||
"packages": [
|
||||
"postgresql",
|
||||
"dummy"
|
||||
]${SUBSCRIPTION_BLOCK}
|
||||
]${SUBSCRIPTION_BLOCK}${DIR_FILES_CUSTOMIZATION_BLOCK}
|
||||
},
|
||||
"image_request": {
|
||||
"architecture": "$ARCH",
|
||||
|
|
|
|||
|
|
@ -43,6 +43,9 @@ function _instanceCheck() {
|
|||
else
|
||||
echo "Not RHEL OS. Skip subscription check."
|
||||
fi
|
||||
|
||||
# Verify that directories and files customization worked as expected
|
||||
verify_dirs_files_customization "$_ssh"
|
||||
}
|
||||
|
||||
WORKER_REFRESH_TOKEN_PATH="/etc/osbuild-worker/token"
|
||||
|
|
@ -90,3 +93,39 @@ function compose_status_with_org_id {
|
|||
--header "Authorization: Bearer $(access_token_with_org_id "$refresh_token")" \
|
||||
"http://localhost:443/api/image-builder-composer/v2/composes/$compose"
|
||||
}
|
||||
|
||||
# Verify that directories and files customization worked as expected
|
||||
function verify_dirs_files_customization {
|
||||
echo "✔️ Checking custom directories and files"
|
||||
local _ssh="$1"
|
||||
local _error=0
|
||||
|
||||
# verify that `/etc/custom_dir/dir1` exists and has mode `0775`
|
||||
local cust_dir1_mode
|
||||
cust_dir1_mode=$($_ssh stat -c '%a' /etc/custom_dir/dir1)
|
||||
if [[ "$cust_dir1_mode" != "775" ]]; then
|
||||
echo "Directory /etc/custom_dir/dir1 has wrong mode: $cust_dir1_mode"
|
||||
_error=1
|
||||
fi
|
||||
|
||||
# verify that `/etc/custom_dir/custom_file.txt` exists and contains `image builder is the best\n`
|
||||
local cust_file_content
|
||||
cust_file_content=$($_ssh cat /etc/custom_dir/custom_file.txt)
|
||||
if [[ "$cust_file_content" != "image builder is the best" ]]; then
|
||||
echo "File /etc/custom_dir/custom_file.txt has wrong content: $cust_file_content"
|
||||
_error=1
|
||||
fi
|
||||
|
||||
# verify that `/etc/custom_dir2/empty_file.txt` exists and is empty
|
||||
local cust_file2_content
|
||||
cust_file2_content=$($_ssh cat /etc/custom_dir2/empty_file.txt)
|
||||
if [[ "$cust_file2_content" != "" ]]; then
|
||||
echo "File /etc/custom_dir2/empty_file.txt has wrong content: $cust_file2_content"
|
||||
_error=1
|
||||
fi
|
||||
|
||||
if [[ "$_error" == "1" ]]; then
|
||||
echo "Testing of custom directories and files failed."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ function createReqFileEdge() {
|
|||
"name": "user2",
|
||||
"key": "$(cat "${WORKDIR}/usertest.pub")"
|
||||
}
|
||||
]
|
||||
]${DIR_FILES_CUSTOMIZATION_BLOCK}
|
||||
},
|
||||
"image_request": {
|
||||
"architecture": "$ARCH",
|
||||
|
|
@ -67,7 +67,7 @@ function createReqFileGuest() {
|
|||
"packages": [
|
||||
"postgresql",
|
||||
"dummy"
|
||||
]${SUBSCRIPTION_BLOCK},
|
||||
],
|
||||
"users":[
|
||||
{
|
||||
"name": "user1",
|
||||
|
|
@ -78,7 +78,7 @@ function createReqFileGuest() {
|
|||
"name": "user2",
|
||||
"key": "$(cat "${WORKDIR}/usertest.pub")"
|
||||
}
|
||||
]
|
||||
]${SUBSCRIPTION_BLOCK}${DIR_FILES_CUSTOMIZATION_BLOCK}
|
||||
},
|
||||
"image_request": {
|
||||
"architecture": "$ARCH",
|
||||
|
|
@ -107,7 +107,7 @@ function createReqFileVSphere() {
|
|||
"packages": [
|
||||
"postgresql",
|
||||
"dummy"
|
||||
]${SUBSCRIPTION_BLOCK}
|
||||
]${SUBSCRIPTION_BLOCK}${DIR_FILES_CUSTOMIZATION_BLOCK}
|
||||
},
|
||||
"image_request": {
|
||||
"architecture": "$ARCH",
|
||||
|
|
@ -156,6 +156,44 @@ function verifyEdgeCommit() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
verify_dirs_files_customization_edge_commit "${COMMIT_DIR}/repo" $OSTREE_REF
|
||||
}
|
||||
|
||||
function verify_dirs_files_customization_edge_commit() {
|
||||
echo "✔️ Checking custom directories and files is ostree commit"
|
||||
local _repo_path=$1
|
||||
local _ref=$2
|
||||
local _error=0
|
||||
|
||||
# verify that `/usr/etc/custom_dir/dir1` exists and has mode `0775`
|
||||
# the output from ostree is 'd00775 0 0 0 { [(b'security.selinux', b'system_u:object_r:etc_t:s0')] } /usr/etc/custom_dir/dir1'
|
||||
local cust_dir1_mode
|
||||
cust_dir1_mode=$(ostree --repo="${_repo_path}" ls -X "${_ref}" /usr/etc/custom_dir/dir1 | awk '{print $1}')
|
||||
if [[ "$cust_dir1_mode" != "d00775" ]]; then
|
||||
echo "Directory /usr/etc/custom_dir/dir1 has wrong mode: $cust_dir1_mode"
|
||||
_error=1
|
||||
fi
|
||||
|
||||
# verify that `/usr/etc/custom_dir/custom_file.txt` exists and contains `image builder is the best\n`
|
||||
local cust_file_content
|
||||
cust_file_content=$(ostree --repo="${_repo_path}" cat "${_ref}" /usr/etc/custom_dir/custom_file.txt)
|
||||
if [[ "$cust_file_content" != "image builder is the best" ]]; then
|
||||
echo "File /usr/etc/custom_dir/custom_file.txt has wrong content: $cust_file_content"
|
||||
_error=1
|
||||
fi
|
||||
|
||||
# verify that `/usr/etc/custom_dir2/empty_file.txt` exists and is empty
|
||||
local cust_file2_content
|
||||
cust_file2_content=$(ostree --repo="${_repo_path}" cat "${_ref}" /usr/etc/custom_dir2/empty_file.txt)
|
||||
if [[ "$cust_file2_content" != "" ]]; then
|
||||
echo "File /usr/etc/custom_dir2/empty_file.txt has wrong content: $cust_file2_content"
|
||||
_error=1
|
||||
fi
|
||||
|
||||
if [[ "$_error" == "1" ]]; then
|
||||
echo "Testing of custom directories and files failed."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Verify image blobs from s3
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ function createReqFile() {
|
|||
"packages": [
|
||||
"postgresql",
|
||||
"dummy"
|
||||
]${SUBSCRIPTION_BLOCK}
|
||||
]${SUBSCRIPTION_BLOCK}${DIR_FILES_CUSTOMIZATION_BLOCK}
|
||||
},
|
||||
"image_request": {
|
||||
"architecture": "$ARCH",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue