aboutsummaryrefslogtreecommitdiff
path: root/tests/test-ironic.sh
diff options
context:
space:
mode:
authorMark Goddard <mark@stackhpc.com>2018-05-16 13:36:38 +0100
committerRadosław Piliszek <radoslaw.piliszek@gmail.com>2022-03-05 20:03:36 +0000
commit91778aca76cc5df534de0a95d84363c834c2657a (patch)
tree664cd4b4ce15f7317774b9115f6588919c11f70c /tests/test-ironic.sh
parent68bc4f8f52f3e086efb1e72fd6ccdd36e8d0139a (diff)
downloadkolla-ansible-91778aca76cc5df534de0a95d84363c834c2657a.tar.gz
kolla-ansible-91778aca76cc5df534de0a95d84363c834c2657a.zip
[CI] Use Tenks in Ironic job
Installs Tenks [1] and uses it to create virtual machines to pose as bare metal compute nodes. The nodes are registered in Ironic, and used to provision instances. [1] https://docs.openstack.org/tenks/latest/ Depends-On: https://review.opendev.org/c/openstack/tenks/+/830182 Depends-On: https://review.opendev.org/c/openstack/tenks/+/830675 Depends-On: https://review.opendev.org/c/openstack/kolla-ansible/+/831055 Change-Id: Idfb8fbb50dc7442225967b2a2ec38ae7114f3c11 Co-Authored-By: Radosław Piliszek <radoslaw.piliszek@gmail.com>
Diffstat (limited to 'tests/test-ironic.sh')
-rwxr-xr-xtests/test-ironic.sh138
1 files changed, 26 insertions, 112 deletions
diff --git a/tests/test-ironic.sh b/tests/test-ironic.sh
index d676098d5..55697fff0 100755
--- a/tests/test-ironic.sh
+++ b/tests/test-ironic.sh
@@ -7,134 +7,48 @@ set -o pipefail
# Enable unbuffered output for Ansible in Jenkins.
export PYTHONUNBUFFERED=1
-# Adapted from the function of the same name in the ironic devstack plugin.
-function wait_for_placement_resources {
- # After nodes have been enrolled, we need to wait for both ironic and
- # nova's periodic tasks to populate the resource tracker with available
- # nodes and resources. Wait up to 2 minutes for a given resource before
- # timing out.
- local expected_count=1
- local resource_class="RC0"
-
- curl --fail -L -o jq https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64
- chmod +x jq
-
- # TODO(mgoddard): switch to Placement OSC plugin, once it exists
- local token
- token=$(openstack token issue -f value -c id)
- local endpoint
- endpoint=$(openstack endpoint list --service placement --interface public -f value -c URL)
- if [[ -z $endpoint ]]; then
- echo "Cannot find Placement API endpoint"
- return 1
- fi
-
- local i
- local count
- echo "Waiting 2 minutes for Nova resource tracker to pick up $expected_count nodes"
- for i in $(seq 1 120); do
- # Fetch provider UUIDs from Placement
- local providers
- args=(
- --fail
- -sH "X-Auth-Token: $token"
- )
- if [[ "$TLS_ENABLED" = "True" ]]; then
- args+=(--cacert $OS_CACERT)
- fi
- providers=$(curl "${args[@]}" $endpoint/resource_providers \
- | ./jq -r '.resource_providers[].uuid')
-
- local p
- # Total count of the resource class, has to be equal to nodes count
- count=0
- for p in $providers; do
- local amount
- # A resource class inventory record looks something like
- # {"max_unit": 1, "min_unit": 1, "step_size": 1, "reserved": 0, "total": 1, "allocation_ratio": 1}
- # Subtract reserved from total (defaulting both to 0)
- amount=$(curl "${args[@]}" $endpoint/resource_providers/$p/inventories \
- | ./jq ".inventories.CUSTOM_$resource_class as \$cls
- | (\$cls.total // 0) - (\$cls.reserved // 0)")
- if [ $amount -gt 0 ]; then
- count=$(( count + $amount ))
- fi
- done
-
- if [ $count -ge $expected_count ]; then
- return 0
- fi
- sleep 1
- done
-
- echo "Timed out waiting for Nova to track $expected_count nodes"
- return 1
-}
-
-function create_resources {
- # Create a bare metal node and port.
- openstack baremetal node create \
- --name node-0 \
- --driver fake-hardware \
- --network-interface noop \
- --property cpu_arch=x86_64 \
- --resource-class rc0
- node_uuid=$(openstack baremetal node show node-0 -f value -c uuid)
- openstack baremetal port create \
- 00:11:22:33:44:55 \
- --node $node_uuid
- openstack baremetal node power off node-0
- openstack baremetal node manage node-0 --wait
- openstack baremetal node provide node-0 --wait
-
- # Create a bare metal flavor in nova.
- openstack flavor create \
- baremetal \
- --vcpus 1 \
- --ram 1024 \
- --disk 10 \
- --property resources:CUSTOM_RC0=1 \
- --property resources:VCPU=0 \
- --property resources:MEMORY_MB=0 \
- --property resources:DISK_GB=0 \
- --public
-}
-
function test_ironic_logged {
# Assumes init-runonce has been executed.
. /etc/kolla/admin-openrc.sh
. ~/openstackclient-venv/bin/activate
+ echo "Enabling DHCP on the external (\"public\") subnet"
+ openstack subnet set --dhcp public1-subnet
+
# Smoke test ironic API.
- local baremetal_driver_list
- baremetal_driver_list=$(openstack baremetal driver list)
+ openstack baremetal driver list
openstack baremetal node list
openstack baremetal port list
# Ironic Inspector API
openstack baremetal introspection rule list
- # Sanity check.
- if ! echo "$baremetal_driver_list" | grep fake-hardware; then
- echo "No active conductors with fake-hardware driver"
- exit 1
- fi
-
- create_resources
- wait_for_placement_resources
+ openstack baremetal node show tk0
+ openstack baremetal node power off tk0
+ openstack baremetal node show tk0
+ openstack baremetal node manage tk0
+ openstack baremetal node show tk0
+ openstack baremetal node provide tk0
+ openstack baremetal node show tk0
+ openstack baremetal node validate tk0
echo "TESTING: Server creation"
- openstack server create --wait --image cirros --flavor baremetal --key-name mykey --network demo-net kolla_boot_test
- openstack --debug server list
- # If the status is not ACTIVE, print info and exit 1
- if [[ $(openstack server show kolla_boot_test -f value -c status) != "ACTIVE" ]]; then
- echo "FAILED: Instance is not active"
- openstack --debug server show kolla_boot_test
- return 1
- fi
+ openstack server create --image cirros --flavor test-rc --key-name mykey --network public1 kolla_bm_boot_test
+ local attempt
+ attempt=1
+ while [[ $(openstack server show kolla_bm_boot_test -f value -c status) != "ACTIVE" ]]; do
+ echo "Server not yet active, check $attempt - retrying"
+ attempt=$((attempt+1))
+ if [[ $attempt -eq 16 ]]; then
+ echo "FAILED: Server did not become active after $attempt checks"
+ openstack server show kolla_bm_boot_test
+ return 1
+ fi
+ sleep 60
+ done
echo "SUCCESS: Server creation"
echo "TESTING: Server deletion"
- openstack server delete --wait kolla_boot_test
+ openstack server delete --wait kolla_bm_boot_test
echo "SUCCESS: Server deletion"
}