Fix and enhance devstack test script
* Put nodes in a proper provision state * Use Ironic API instead of Inspector one for starting introspection * Insert sleeps between sending nodes on introspection * Add check on provision state * Update devstack/plugin.sh to default to network not overlapping with devstack-gate default one Closes-Bug: #1470346 Change-Id: Ib7c8fd32cca792c82030e2235166f05d6a40d747
This commit is contained in:
parent
43277b666e
commit
14454ad9d7
@ -8,6 +8,8 @@ EXPECTED_CPUS=${EXPECTED_CPUS:-1}
|
||||
EXPECTED_MIN_LOCAL_GB=${EXPECTED_MIN_LOCAL_GB:-1}
|
||||
EXPECTED_MIN_MEMORY_MB=${EXPECTED_MIN_MEMORY_MB:-512}
|
||||
|
||||
export IRONIC_API_VERSION=${IRONIC_API_VERSION:-latest}
|
||||
|
||||
ironic_url=$(keystone endpoint-get --service baremetal | tail -n +4 | head -n -1 | tr '|' ' ' | awk '{ print $2; }')
|
||||
if [ -z "$ironic_url" ]; then
|
||||
echo "Cannot find Ironic URL"
|
||||
@ -24,11 +26,15 @@ for uuid in $nodes; do
|
||||
for p in cpus cpu_arch memory_mb local_gb; do
|
||||
ironic node-update $uuid remove properties/$p > /dev/null || true
|
||||
done
|
||||
ironic node-set-provision-state $uuid manage
|
||||
done
|
||||
|
||||
for uuid in $nodes; do
|
||||
# TODO(dtantsur): use Ironic API instead
|
||||
openstack baremetal introspection start $uuid
|
||||
ironic node-set-provision-state $uuid inspect
|
||||
# FIXME(dtantsur): virtual machines PXE often behaves weirdly when a lot of
|
||||
# machines DHCP at the same time, inserting sleep helps. It does not affect
|
||||
# bare metal environment AFAIK.
|
||||
sleep 5
|
||||
done
|
||||
|
||||
current_nodes=$nodes
|
||||
@ -67,6 +73,7 @@ function curl_ir {
|
||||
for uuid in $nodes; do
|
||||
node_json=$(curl_ir GET v1/nodes/$uuid)
|
||||
properties=$(echo $node_json | jq '.properties')
|
||||
|
||||
echo Properties for $uuid: $properties
|
||||
if [ "$(echo $properties | jq -r '.cpu_arch')" != "$EXPECTED_CPU_ARCH" ]; then
|
||||
echo "Expected $EXPECTED_CPU_ARCH"
|
||||
@ -84,6 +91,21 @@ for uuid in $nodes; do
|
||||
echo "Expected at least $EXPECTED_MIN_MEMORY_MB"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for attempt in {1..12}; do
|
||||
node_json=$(curl_ir GET v1/nodes/$uuid)
|
||||
provision_state=$(echo $node_json | jq -r '.provision_state')
|
||||
|
||||
if [ "$provision_state" != "manageable" ]; then
|
||||
if [ "$attempt" -eq 12 ]; then
|
||||
echo "Expected provision_state manageable, got $provision_state"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
break
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
done
|
||||
|
||||
echo "Validation passed"
|
||||
|
@ -15,9 +15,9 @@ IRONIC_INSPECTOR_URI="http://$IRONIC_INSPECTOR_HOST:$IRONIC_INSPECTOR_PORT"
|
||||
IRONIC_INSPECTOR_RAMDISK_ELEMENT=${IRONIC_INSPECTOR_RAMDISK_ELEMENT:-ironic-discoverd-ramdisk}
|
||||
IRONIC_INSPECTOR_RAMDISK_FLAVOR=${IRONIC_INSPECTOR_RAMDISK_FLAVOR:-fedora $IRONIC_INSPECTOR_RAMDISK_ELEMENT}
|
||||
# These should not overlap with other ranges/networks
|
||||
IRONIC_INSPECTOR_INTERNAL_IP=${IRONIC_INSPECTOR_INTERNAL_IP:-172.24.5.254}
|
||||
IRONIC_INSPECTOR_INTERNAL_IP=${IRONIC_INSPECTOR_INTERNAL_IP:-172.24.42.254}
|
||||
IRONIC_INSPECTOR_INTERNAL_SUBNET_SIZE=${IRONIC_INSPECTOR_INTERNAL_SUBNET_SIZE:-24}
|
||||
IRONIC_INSPECTOR_DHCP_RANGE=${IRONIC_INSPECTOR_DHCP_RANGE:-172.24.5.100,172.24.5.253}
|
||||
IRONIC_INSPECTOR_DHCP_RANGE=${IRONIC_INSPECTOR_DHCP_RANGE:-172.24.42.100,172.24.42.253}
|
||||
IRONIC_INSPECTOR_INTERFACE=${IRONIC_INSPECTOR_INTERFACE:-br-inspector}
|
||||
IRONIC_INSPECTOR_INTERNAL_URI="http://$IRONIC_INSPECTOR_INTERNAL_IP:$IRONIC_INSPECTOR_PORT"
|
||||
IRONIC_INSPECTOR_INTERNAL_IP_WITH_NET=$IRONIC_INSPECTOR_INTERNAL_IP/$IRONIC_INSPECTOR_INTERNAL_SUBNET_SIZE
|
||||
|
@ -8,6 +8,8 @@ EXPECTED_CPUS=${EXPECTED_CPUS:-1}
|
||||
EXPECTED_MIN_LOCAL_GB=${EXPECTED_MIN_LOCAL_GB:-1}
|
||||
EXPECTED_MIN_MEMORY_MB=${EXPECTED_MIN_MEMORY_MB:-512}
|
||||
|
||||
export IRONIC_API_VERSION=${IRONIC_API_VERSION:-latest}
|
||||
|
||||
ironic_url=$(keystone endpoint-get --service baremetal | tail -n +4 | head -n -1 | tr '|' ' ' | awk '{ print $2; }')
|
||||
if [ -z "$ironic_url" ]; then
|
||||
echo "Cannot find Ironic URL"
|
||||
@ -24,11 +26,15 @@ for uuid in $nodes; do
|
||||
for p in cpus cpu_arch memory_mb local_gb; do
|
||||
ironic node-update $uuid remove properties/$p > /dev/null || true
|
||||
done
|
||||
ironic node-set-provision-state $uuid manage
|
||||
done
|
||||
|
||||
for uuid in $nodes; do
|
||||
# TODO(dtantsur): use Ironic API instead
|
||||
openstack baremetal introspection start $uuid
|
||||
ironic node-set-provision-state $uuid inspect
|
||||
# FIXME(dtantsur): virtual machines PXE often behaves weirdly when a lot of
|
||||
# machines DHCP at the same time, inserting sleep helps. It does not affect
|
||||
# bare metal environment AFAIK.
|
||||
sleep 5
|
||||
done
|
||||
|
||||
current_nodes=$nodes
|
||||
@ -67,6 +73,7 @@ function curl_ir {
|
||||
for uuid in $nodes; do
|
||||
node_json=$(curl_ir GET v1/nodes/$uuid)
|
||||
properties=$(echo $node_json | jq '.properties')
|
||||
|
||||
echo Properties for $uuid: $properties
|
||||
if [ "$(echo $properties | jq -r '.cpu_arch')" != "$EXPECTED_CPU_ARCH" ]; then
|
||||
echo "Expected $EXPECTED_CPU_ARCH"
|
||||
@ -84,6 +91,21 @@ for uuid in $nodes; do
|
||||
echo "Expected at least $EXPECTED_MIN_MEMORY_MB"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for attempt in {1..12}; do
|
||||
node_json=$(curl_ir GET v1/nodes/$uuid)
|
||||
provision_state=$(echo $node_json | jq -r '.provision_state')
|
||||
|
||||
if [ "$provision_state" != "manageable" ]; then
|
||||
if [ "$attempt" -eq 12 ]; then
|
||||
echo "Expected provision_state manageable, got $provision_state"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
break
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
done
|
||||
|
||||
echo "Validation passed"
|
||||
|
Loading…
x
Reference in New Issue
Block a user