Skip to content

Commit

Permalink
tests/CI: Re-enable the vmware tests on RHEL 10
Browse files Browse the repository at this point in the history
Re-enable the vmware tests on RHEL 10 and use vcenter 8 instead of 6. This fixes the issues caused by outdated CPUs in old cluster by migrating to a new one with new hosts as well.
  • Loading branch information
tkoscieln authored and thozza committed Feb 25, 2025
1 parent 0dcbece commit 9b850de
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 67 deletions.
21 changes: 8 additions & 13 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ regression-composer-works-behind-satellite-fallback:

regression-composer-works-behind-satellite:
extends: .regression
rules:
rules:
# WHITELIST: Run on RHEL-nightly only
- if: $RUNNER =~ "/^.*(rhel-.*-nightly).*$/" && $CI_PIPELINE_SOURCE != "schedule"
variables:
Expand All @@ -270,7 +270,7 @@ regression-excluded-dependency:

regression-include-excluded-packages:
extends: .regression
rules:
rules:
# BLACKLIST: Skipped on fedora systems & excluding GA runners from the PR pipeline
- if: $RUNNER !~ "/^.*(fedora).*$/" && $CI_PIPELINE_SOURCE != "schedule" && $RUNNER !~ /[\S]+rhel-[\S]+-(?:(?:ga)|(?:eus))[\S]+/
- !reference [.nightly_rules_all, rules]
Expand Down Expand Up @@ -305,7 +305,7 @@ regression-insecure-repo:

regression-no-explicit-rootfs-definition:
extends: .regression
rules:
rules:
# BLACKLIST: Skipped on fedora systems & excluding GA runners from the PR pipeline
- if: $RUNNER !~ "/^.*(fedora).*$/" && $CI_PIPELINE_SOURCE != "schedule" && $RUNNER !~ /[\S]+rhel-[\S]+-(?:(?:ga)|(?:eus))[\S]+/
- !reference [.nightly_rules_all, rules]
Expand Down Expand Up @@ -493,11 +493,8 @@ vmware.sh_vmdk:
extends: .integration_rhel
rules:
# Run only on x86_64
# Temporarily disabled for RHEL-10 and Centos-10
- if: '$CI_PIPELINE_SOURCE != "schedule" && $RUNNER =~ "/^.*(x86_64).*$/" && $RUNNER !~ /[\S]+rhel-[\S]+-(?:(?:ga)|(?:eus))[\S]+/ && $RUNNER !~ "/^.*(rhel-10.0-nightly|centos-stream-10).*$/"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.6-[^ga][\S]+/ && $RUNNER =~ "/^.*(x86_64).*$/" && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
# - !reference [.upstream_rules_x86_64, rules]
# - !reference [.nightly_rules_x86_64, rules]
- !reference [.upstream_rules_x86_64, rules]
- !reference [.nightly_rules_x86_64, rules]
- !reference [.ga_rules_x86_64, rules]
variables:
SCRIPT: vmware.sh vmdk
Expand All @@ -506,11 +503,8 @@ vmware.sh_ova:
extends: .integration_rhel
rules:
# Run only on x86_64
# Temporarily disabled for RHEL-10 and Centos-10
- if: '$CI_PIPELINE_SOURCE != "schedule" && $RUNNER =~ "/^.*(x86_64).*$/" && $RUNNER !~ /[\S]+rhel-[\S]+-(?:(?:ga)|(?:eus))[\S]+/ && $RUNNER !~ "/^.*(rhel-10.0-nightly|centos-stream-10).*$/"'
# - !reference [.upstream_rules_x86_64, rules]
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUNNER =~ /[\S]+rhel-9.6-[^ga][\S]+/ && $RUNNER =~ "/^.*(x86_64).*$/" && $NIGHTLY == "true" && $RHEL_MAJOR == "9"'
# - !reference [.nightly_rules_x86_64, rules]
- !reference [.upstream_rules_x86_64, rules]
- !reference [.nightly_rules_x86_64, rules]
- !reference [.ga_rules_x86_64, rules]
variables:
SCRIPT: vmware.sh ova
Expand Down Expand Up @@ -585,6 +579,7 @@ API:
- azure
- gcp
- oci
- vsphere
RUNNER:
- aws/rhel-10.0-nightly-x86_64
INTERNAL_NETWORK: ["true"]
Expand Down
66 changes: 33 additions & 33 deletions test/cases/api/common/vsphere.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ function installClientVSphere() {
}

function checkEnvVSphere() {
printenv GOVMOMI_USERNAME GOVMOMI_PASSWORD GOVMOMI_URL GOVMOMI_CLUSTER GOVMOMI_DATACENTER GOVMOMI_DATASTORE GOVMOMI_FOLDER GOVMOMI_NETWORK > /dev/null
printenv VC8_GOVMOMI_USERNAME VC8_GOVMOMI_PASSWORD VC8_GOVMOMI_URL VC8_GOVMOMI_CLUSTER VC8_GOVMOMI_DATACENTER VC8_GOVMOMI_DATASTORE VC8_GOVMOMI_FOLDER VC8_GOVMOMI_NETWORK > /dev/null
}

# Create a cloud-int user-data file
Expand Down Expand Up @@ -134,24 +134,24 @@ function verifyInVSphere() {
# if one with this name exists, it appends "_<number>" to the name
greenprint "💿 ⬆️ Importing the converted VMDK image to VSphere"
$GOVC_CMD import.vmdk \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-pool="${GOVMOMI_CLUSTER}"/Resources \
-ds="${GOVMOMI_DATASTORE}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-pool="${VC8_GOVMOMI_CLUSTER}"/Resources \
-ds="${VC8_GOVMOMI_DATASTORE}" \
"${WORKDIR}/${VSPHERE_IMAGE_NAME}" \
"${VSPHERE_VM_NAME}"

# create the VM, but don't start it
greenprint "🖥️ Creating VM in VSphere"
$GOVC_CMD vm.create \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-pool="${GOVMOMI_CLUSTER}"/Resources \
-ds="${GOVMOMI_DATASTORE}" \
-folder="${GOVMOMI_FOLDER}" \
-net="${GOVMOMI_NETWORK}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-pool="${VC8_GOVMOMI_CLUSTER}"/Resources \
-ds="${VC8_GOVMOMI_DATASTORE}" \
-folder="${VC8_GOVMOMI_FOLDER}" \
-net="${VC8_GOVMOMI_NETWORK}" \
-net.adapter=vmxnet3 \
-m=4096 -c=2 -g=rhel8_64Guest -on=true -firmware=efi \
-disk="${VSPHERE_VM_NAME}/${VSPHERE_IMAGE_NAME}" \
Expand All @@ -161,53 +161,53 @@ function verifyInVSphere() {

# tagging vm as testing object
$GOVC_CMD tags.attach \
-u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}":"${VC8_GOVMOMI_PASSWORD}"@"${VC8_GOVMOMI_URL}" \
-k=true \
-c "osbuild-composer testing" gitlab-ci-test \
"/${GOVMOMI_DATACENTER}/vm/${GOVMOMI_FOLDER}/${VSPHERE_VM_NAME}"
"/${VC8_GOVMOMI_DATACENTER}/vm/${VC8_GOVMOMI_FOLDER}/${VSPHERE_VM_NAME}"

# upload ISO, create CDROM device and insert the ISO in it
greenprint "💿 ⬆️ Uploading the cloud-init user-data ISO to VSphere"
VSPHERE_CIDATA_ISO_PATH="${VSPHERE_VM_NAME}/cidata.iso"
$GOVC_CMD datastore.upload \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-ds="${GOVMOMI_DATASTORE}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-ds="${VC8_GOVMOMI_DATASTORE}" \
"${_ci_iso_path}" \
"${VSPHERE_CIDATA_ISO_PATH}"

local _cdrom_device
greenprint "🖥️ + 💿 Adding a CD-ROM device to the VM"
_cdrom_device="$($GOVC_CMD device.cdrom.add \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-vm "${VSPHERE_VM_NAME}")"

greenprint "💿 Inserting the cloud-init ISO into the CD-ROM device"
$GOVC_CMD device.cdrom.insert \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-ds="${GOVMOMI_DATASTORE}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-ds="${VC8_GOVMOMI_DATASTORE}" \
-vm "${VSPHERE_VM_NAME}" \
-device "${_cdrom_device}" \
"${VSPHERE_CIDATA_ISO_PATH}"

# start the VM
greenprint "🔌 Powering up the VSphere VM"
$GOVC_CMD vm.power \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-on "${VSPHERE_VM_NAME}"

HOST=$($GOVC_CMD vm.ip \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-v4=true \
-dc="${GOVMOMI_DATACENTER}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
"${VSPHERE_VM_NAME}")
greenprint "⏱ Waiting for the VSphere VM to respond to ssh"
_instanceWaitSSH "${HOST}"
Expand All @@ -226,25 +226,25 @@ function cleanupVSphere() {

greenprint "🧹 Cleaning up the VSphere VM"
$GOVC_CMD vm.destroy \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
"${VSPHERE_VM_NAME}"

greenprint "🧹 Cleaning up the VSphere Datastore"
$GOVC_CMD datastore.rm \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-ds="${GOVMOMI_DATASTORE}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-ds="${VC8_GOVMOMI_DATASTORE}" \
-f \
"${VSPHERE_CIDATA_ISO_PATH}"

$GOVC_CMD datastore.rm \
-u "${GOVMOMI_USERNAME}:${GOVMOMI_PASSWORD}@${GOVMOMI_URL}" \
-u "${VC8_GOVMOMI_USERNAME}:${VC8_GOVMOMI_PASSWORD}@${VC8_GOVMOMI_URL}" \
-k=true \
-dc="${GOVMOMI_DATACENTER}" \
-ds="${GOVMOMI_DATASTORE}" \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-ds="${VC8_GOVMOMI_DATASTORE}" \
-f \
"${VSPHERE_VM_NAME}"
}
42 changes: 21 additions & 21 deletions test/cases/vmware.sh
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ function cleanup() {
greenprint "🧼 Cleaning up"
# kill dangling journalctl processes to prevent GitLab CI from hanging
sudo pkill journalctl || echo "Nothing killed"
$GOVC_CMD vm.destroy -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" -k=true "${IMAGE_KEY}"
$GOVC_CMD vm.destroy -u "${VC8_GOVMOMI_USERNAME}":"${VC8_GOVMOMI_PASSWORD}"@"${VC8_GOVMOMI_URL}" -k=true "${IMAGE_KEY}"
set -eu
}
trap cleanup EXIT
Expand Down Expand Up @@ -122,13 +122,13 @@ tee "$VMWARE_CONFIG" > /dev/null << EOF
provider = "vmware"
[settings]
host = "${GOVMOMI_URL}"
username = "${GOVMOMI_USERNAME}"
password = "${GOVMOMI_PASSWORD}"
cluster = "${GOVMOMI_CLUSTER}"
dataStore = "${GOVMOMI_DATASTORE}"
dataCenter = "${GOVMOMI_DATACENTER}"
folder = "${GOVMOMI_FOLDER}"
host = "${VC8_GOVMOMI_URL}"
username = "${VC8_GOVMOMI_USERNAME}"
password = "${VC8_GOVMOMI_PASSWORD}"
cluster = "${VC8_GOVMOMI_CLUSTER}"
dataStore = "${VC8_GOVMOMI_DATASTORE}"
dataCenter = "${VC8_GOVMOMI_DATACENTER}"
folder = "${VC8_GOVMOMI_FOLDER}"
EOF

# Write a basic blueprint for our image.
Expand Down Expand Up @@ -200,30 +200,30 @@ fi

if [ "$IMAGE_TYPE" = "vmdk" ]; then
greenprint "👷🏻 Building VM in vSphere"
$GOVC_CMD vm.create -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \
$GOVC_CMD vm.create -u "${VC8_GOVMOMI_USERNAME}":"${VC8_GOVMOMI_PASSWORD}"@"${VC8_GOVMOMI_URL}" \
-k=true \
-pool="${GOVMOMI_CLUSTER}"/Resources \
-dc="${GOVMOMI_DATACENTER}" \
-ds="${GOVMOMI_DATASTORE}" \
-folder="${GOVMOMI_FOLDER}" \
-net="${GOVMOMI_NETWORK}" \
-pool="${VC8_GOVMOMI_CLUSTER}"/Resources \
-dc="${VC8_GOVMOMI_DATACENTER}" \
-ds="${VC8_GOVMOMI_DATASTORE}" \
-folder="${VC8_GOVMOMI_FOLDER}" \
-net="${VC8_GOVMOMI_NETWORK}" \
-net.adapter=vmxnet3 \
-m=4096 -c=2 -g=rhel8_64Guest -on=true -firmware=efi \
-disk="${IMAGE_KEY}"/"${IMAGE_KEY}".vmdk \
--disk.controller=scsi \
"${IMAGE_KEY}"
elif [ "$IMAGE_TYPE" = "ova" ]; then
greenprint "👷🏻 Modifying network of the VM in vSphere"
$GOVC_CMD vm.network.add -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \
$GOVC_CMD vm.network.add -u "${VC8_GOVMOMI_USERNAME}":"${VC8_GOVMOMI_PASSWORD}"@"${VC8_GOVMOMI_URL}" \
-k=true \
-net="${GOVMOMI_NETWORK}" \
-net="${VC8_GOVMOMI_NETWORK}" \
-net.adapter=vmxnet3 \
-vm="${IMAGE_KEY}" \
-net="${GOVMOMI_NETWORK}"
-net="${VC8_GOVMOMI_NETWORK}"

# start the vm
greenprint "👷🏻 Powering on the VM"
$GOVC_CMD vm.power -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \
$GOVC_CMD vm.power -u "${VC8_GOVMOMI_USERNAME}":"${VC8_GOVMOMI_PASSWORD}"@"${VC8_GOVMOMI_URL}" \
-k=true \
-wait=true \
-on \
Expand All @@ -232,13 +232,13 @@ $GOVC_CMD vm.power -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL
fi

# tagging vm as testing object
$GOVC_CMD tags.attach -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" \
$GOVC_CMD tags.attach -u "${VC8_GOVMOMI_USERNAME}":"${VC8_GOVMOMI_PASSWORD}"@"${VC8_GOVMOMI_URL}" \
-k=true \
-c "osbuild-composer testing" gitlab-ci-test \
"/${GOVMOMI_DATACENTER}/vm/${GOVMOMI_FOLDER}/${IMAGE_KEY}"
"/${VC8_GOVMOMI_DATACENTER}/vm/${VC8_GOVMOMI_FOLDER}/${IMAGE_KEY}"

greenprint "Getting IP of created VM"
VM_IP=$($GOVC_CMD vm.ip -u "${GOVMOMI_USERNAME}":"${GOVMOMI_PASSWORD}"@"${GOVMOMI_URL}" -k=true -v4=true "${IMAGE_KEY}")
VM_IP=$($GOVC_CMD vm.ip -u "${VC8_GOVMOMI_USERNAME}":"${VC8_GOVMOMI_PASSWORD}"@"${VC8_GOVMOMI_URL}" -k=true -v4=true "${IMAGE_KEY}")

# Wait for the node to come online.
greenprint "⏱ Waiting for VM to respond to ssh"
Expand Down

0 comments on commit 9b850de

Please sign in to comment.