bee7f3850f
Related-Bug: #1524753 Change-Id: Id6373e3a986c343b1e6786753034b19860612117
85 lines
2.4 KiB
Bash
Executable File
85 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eux
|
|
|
|
# Import help functions
|
|
IRONIC_INSPECTOR_DEVSTACK_PLUGIN_DIR=$(cd $(dirname "${BASH_SOURCE:-$0}") && pwd)
|
|
source ${IRONIC_INSPECTOR_DEVSTACK_PLUGIN_DIR}/exercise_common.sh
|
|
|
|
# this exercise destroys BM nodes
|
|
# precaution measures
|
|
assert_sudo
|
|
hook=$(get_ini $IRONIC_INSPECTOR_CONF_FILE processing node_not_found_hook) || {
|
|
echo "Please, enable node_not_found_hook in processing section of inspector.conf"
|
|
exit 1
|
|
}
|
|
|
|
if [ -z "$hook" ] ; then
|
|
echo "Please, provide a value for node_not_found_hook in processing section of inspector.conf"
|
|
exit 1
|
|
fi
|
|
|
|
nodes=$(node_list)
|
|
if [ -z "$nodes" ]; then
|
|
echo "No nodes found in Ironic"
|
|
exit 1
|
|
fi
|
|
|
|
# Choose one ironic node for discover
|
|
discover_uuid=
|
|
for uuid in $nodes; do
|
|
provision_state=$(node_attribute $uuid provision_state)
|
|
if [[ $provision_state = "available" ]] || [[ $provision_state = "enroll" ]] ; then
|
|
discover_uuid=$uuid
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ -z "$discover_uuid" ] ; then
|
|
echo "No nodes in available provisioning state"
|
|
exit 1
|
|
fi
|
|
|
|
# Get node details before delete it
|
|
node_name=$(node_attribute $discover_uuid name)
|
|
node_driver=$(node_attribute $discover_uuid driver)
|
|
node_mac=$(node_mac $discover_uuid)
|
|
declare -A driver_info
|
|
node_driver_info $discover_uuid driver_info
|
|
|
|
# create temporary discovery rule
|
|
discovery_rule=$(mktemp)
|
|
node_discovery_rule $node_name $node_driver driver_info > "$discovery_rule"
|
|
|
|
echo "Purging introspection rules; importing custom rules"
|
|
openstack baremetal introspection rule purge
|
|
openstack baremetal introspection rule import "$discovery_rule"
|
|
|
|
# get virsh node uuid
|
|
virsh_uuid=$(node_to_virsh_uuid $discover_uuid)
|
|
|
|
# delete&rediscover node
|
|
echo "Delete Ironic node $discover_uuid (and ports) for discovery"
|
|
ironic node-delete $discover_uuid
|
|
wait_for 120 ! assert_mac_blacklisted $node_mac
|
|
|
|
# Start vm's for discover
|
|
echo "booting virsh $virsh_uuid domain to be discovered"
|
|
sudo virsh start $virsh_uuid
|
|
|
|
echo "waiting for discovered node to appear"
|
|
discovered_node=
|
|
wait_for 900 node_exists $node_name discovered_node
|
|
|
|
echo "waiting for introspection to finish"
|
|
wait_for 900 assert_node_introspection_status $discovered_node
|
|
|
|
# validate discovery result
|
|
validate_node_flavor $discovered_node baremetal
|
|
assert_equal $node_driver $(node_attribute $discovered_node driver)
|
|
validate_node_driver_info $discovered_node driver_info
|
|
|
|
rm -f $discovery_rule
|
|
|
|
echo "Validation passed"
|