Change-Id: I7a455299c6aa079de02b75d4d53df43074880ff7
| ... | ... |
@@ -174,15 +174,15 @@ function configure_ironic_api {
|
| 174 | 174 |
function configure_ironic_conductor {
|
| 175 | 175 |
cp $IRONIC_DIR/etc/ironic/rootwrap.conf $IRONIC_ROOTWRAP_CONF |
| 176 | 176 |
cp -r $IRONIC_DIR/etc/ironic/rootwrap.d $IRONIC_CONF_DIR |
| 177 |
- IRONIC_ROOTWRAP=$(get_rootwrap_location ironic) |
|
| 178 |
- ROOTWRAP_ISUDOER_CMD="$IRONIC_ROOTWRAP $IRONIC_CONF_DIR/rootwrap.conf *" |
|
| 177 |
+ local ironic_rootwrap=$(get_rootwrap_location ironic) |
|
| 178 |
+ local rootwrap_isudoer_cmd="$ironic_rootwrap $IRONIC_CONF_DIR/rootwrap.conf *" |
|
| 179 | 179 |
|
| 180 | 180 |
# Set up the rootwrap sudoers for ironic |
| 181 |
- TEMPFILE=`mktemp` |
|
| 182 |
- echo "$STACK_USER ALL=(root) NOPASSWD: $ROOTWRAP_ISUDOER_CMD" >$TEMPFILE |
|
| 183 |
- chmod 0440 $TEMPFILE |
|
| 184 |
- sudo chown root:root $TEMPFILE |
|
| 185 |
- sudo mv $TEMPFILE /etc/sudoers.d/ironic-rootwrap |
|
| 181 |
+ local tempfile=`mktemp` |
|
| 182 |
+ echo "$STACK_USER ALL=(root) NOPASSWD: $rootwrap_isudoer_cmd" >$tempfile |
|
| 183 |
+ chmod 0440 $tempfile |
|
| 184 |
+ sudo chown root:root $tempfile |
|
| 185 |
+ sudo mv $tempfile /etc/sudoers.d/ironic-rootwrap |
|
| 186 | 186 |
|
| 187 | 187 |
iniset $IRONIC_CONF_FILE DEFAULT rootwrap_config $IRONIC_ROOTWRAP_CONF |
| 188 | 188 |
iniset $IRONIC_CONF_FILE DEFAULT enabled_drivers $IRONIC_ENABLED_DRIVERS |
| ... | ... |
@@ -213,22 +213,22 @@ function create_ironic_cache_dir {
|
| 213 | 213 |
# service ironic admin # if enabled |
| 214 | 214 |
function create_ironic_accounts {
|
| 215 | 215 |
|
| 216 |
- SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
|
|
| 217 |
- ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
|
|
| 216 |
+ local service_tenant=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
|
|
| 217 |
+ local admin_role=$(openstack role list | awk "/ admin / { print \$2 }")
|
|
| 218 | 218 |
|
| 219 | 219 |
# Ironic |
| 220 | 220 |
if [[ "$ENABLED_SERVICES" =~ "ir-api" ]]; then |
| 221 | 221 |
# Get ironic user if exists |
| 222 | 222 |
|
| 223 |
- IRONIC_USER=$(get_or_create_user "ironic" \ |
|
| 224 |
- "$SERVICE_PASSWORD" $SERVICE_TENANT) |
|
| 225 |
- get_or_add_user_role $ADMIN_ROLE $IRONIC_USER $SERVICE_TENANT |
|
| 223 |
+ local ironic_user=$(get_or_create_user "ironic" \ |
|
| 224 |
+ "$SERVICE_PASSWORD" $service_tenant) |
|
| 225 |
+ get_or_add_user_role $admin_role $ironic_user $service_tenant |
|
| 226 | 226 |
|
| 227 | 227 |
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then |
| 228 | 228 |
|
| 229 |
- IRONIC_SERVICE=$(get_or_create_service "ironic" \ |
|
| 229 |
+ local ironic_service=$(get_or_create_service "ironic" \ |
|
| 230 | 230 |
"baremetal" "Ironic baremetal provisioning service") |
| 231 |
- get_or_create_endpoint $IRONIC_SERVICE \ |
|
| 231 |
+ get_or_create_endpoint $ironic_service \ |
|
| 232 | 232 |
"$REGION_NAME" \ |
| 233 | 233 |
"$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT" \ |
| 234 | 234 |
"$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT" \ |
| ... | ... |
@@ -300,15 +300,15 @@ function configure_ironic_dirs {
|
| 300 | 300 |
sudo chown -R $STACK_USER $IRONIC_DATA_DIR $IRONIC_STATE_PATH |
| 301 | 301 |
sudo chown -R $STACK_USER:$LIBVIRT_GROUP $IRONIC_TFTPBOOT_DIR |
| 302 | 302 |
if is_ubuntu; then |
| 303 |
- PXEBIN=/usr/lib/syslinux/pxelinux.0 |
|
| 303 |
+ local pxebin=/usr/lib/syslinux/pxelinux.0 |
|
| 304 | 304 |
elif is_fedora; then |
| 305 |
- PXEBIN=/usr/share/syslinux/pxelinux.0 |
|
| 305 |
+ local pxebin=/usr/share/syslinux/pxelinux.0 |
|
| 306 | 306 |
fi |
| 307 |
- if [ ! -f $PXEBIN ]; then |
|
| 307 |
+ if [ ! -f $pxebin ]; then |
|
| 308 | 308 |
die $LINENO "pxelinux.0 (from SYSLINUX) not found." |
| 309 | 309 |
fi |
| 310 | 310 |
|
| 311 |
- cp $PXEBIN $IRONIC_TFTPBOOT_DIR |
|
| 311 |
+ cp $pxebin $IRONIC_TFTPBOOT_DIR |
|
| 312 | 312 |
mkdir -p $IRONIC_TFTPBOOT_DIR/pxelinux.cfg |
| 313 | 313 |
} |
| 314 | 314 |
|
| ... | ... |
@@ -316,20 +316,20 @@ function create_bridge_and_vms {
|
| 316 | 316 |
# Call libvirt setup scripts in a new shell to ensure any new group membership |
| 317 | 317 |
sudo su $STACK_USER -c "$IRONIC_SCRIPTS_DIR/setup-network" |
| 318 | 318 |
if [[ "$IRONIC_VM_LOG_CONSOLE" == "True" ]] ; then |
| 319 |
- LOG_ARG="$IRONIC_VM_LOG_DIR" |
|
| 319 |
+ local log_arg="$IRONIC_VM_LOG_DIR" |
|
| 320 | 320 |
else |
| 321 |
- LOG_ARG="" |
|
| 321 |
+ local log_arg="" |
|
| 322 | 322 |
fi |
| 323 | 323 |
sudo su $STACK_USER -c "$IRONIC_SCRIPTS_DIR/create-nodes \ |
| 324 | 324 |
$IRONIC_VM_SPECS_CPU $IRONIC_VM_SPECS_RAM $IRONIC_VM_SPECS_DISK \ |
| 325 | 325 |
amd64 $IRONIC_VM_COUNT $IRONIC_VM_NETWORK_BRIDGE $IRONIC_VM_EMULATOR \ |
| 326 |
- $LOG_ARG" >> $IRONIC_VM_MACS_CSV_FILE |
|
| 326 |
+ $log_arg" >> $IRONIC_VM_MACS_CSV_FILE |
|
| 327 | 327 |
} |
| 328 | 328 |
|
| 329 | 329 |
function enroll_vms {
|
| 330 | 330 |
|
| 331 |
- CHASSIS_ID=$(ironic chassis-create -d "ironic test chassis" | grep " uuid " | get_field 2) |
|
| 332 |
- IRONIC_NET_ID=$(neutron net-list | grep private | get_field 1) |
|
| 331 |
+ local chassis_id=$(ironic chassis-create -d "ironic test chassis" | grep " uuid " | get_field 2) |
|
| 332 |
+ local ironic_net_id=$(neutron net-list | grep private | get_field 1) |
|
| 333 | 333 |
local idx=0 |
| 334 | 334 |
|
| 335 | 335 |
# work around; need to know what netns neutron uses for private network. |
| ... | ... |
@@ -338,11 +338,11 @@ function enroll_vms {
|
| 338 | 338 |
# the instances operation. If we don't do this, the first port creation |
| 339 | 339 |
# only happens in the middle of fake baremetal instance's spawning by nova, |
| 340 | 340 |
# so we'll end up with unbootable fake baremetal VM due to broken PXE. |
| 341 |
- PORT_ID=$(neutron port-create private | grep " id " | get_field 2) |
|
| 341 |
+ local port_id=$(neutron port-create private | grep " id " | get_field 2) |
|
| 342 | 342 |
|
| 343 | 343 |
while read MAC; do |
| 344 | 344 |
|
| 345 |
- NODE_ID=$(ironic node-create --chassis_uuid $CHASSIS_ID --driver pxe_ssh \ |
|
| 345 |
+ local node_id=$(ironic node-create --chassis_uuid $chassis_id --driver pxe_ssh \ |
|
| 346 | 346 |
-i pxe_deploy_kernel=$IRONIC_DEPLOY_KERNEL_ID \ |
| 347 | 347 |
-i pxe_deploy_ramdisk=$IRONIC_DEPLOY_RAMDISK_ID \ |
| 348 | 348 |
-i ssh_virt_type=$IRONIC_SSH_VIRT_TYPE \ |
| ... | ... |
@@ -356,14 +356,14 @@ function enroll_vms {
|
| 356 | 356 |
-p cpu_arch=x86_64 \ |
| 357 | 357 |
| grep " uuid " | get_field 2) |
| 358 | 358 |
|
| 359 |
- ironic port-create --address $MAC --node_uuid $NODE_ID |
|
| 359 |
+ ironic port-create --address $MAC --node_uuid $node_id |
|
| 360 | 360 |
|
| 361 | 361 |
idx=$((idx+1)) |
| 362 | 362 |
|
| 363 | 363 |
done < $IRONIC_VM_MACS_CSV_FILE |
| 364 | 364 |
|
| 365 | 365 |
# create the nova flavor |
| 366 |
- adjusted_disk=$(($IRONIC_VM_SPECS_DISK - $IRONIC_VM_EPHEMERAL_DISK)) |
|
| 366 |
+ local adjusted_disk=$(($IRONIC_VM_SPECS_DISK - $IRONIC_VM_EPHEMERAL_DISK)) |
|
| 367 | 367 |
nova flavor-create --ephemeral $IRONIC_VM_EPHEMERAL_DISK baremetal auto $IRONIC_VM_SPECS_RAM $adjusted_disk $IRONIC_VM_SPECS_CPU |
| 368 | 368 |
# TODO(lucasagomes): Remove the 'baremetal:deploy_kernel_id' |
| 369 | 369 |
# and 'baremetal:deploy_ramdisk_id' parameters |
| ... | ... |
@@ -373,8 +373,8 @@ function enroll_vms {
|
| 373 | 373 |
|
| 374 | 374 |
# intentional sleep to make sure the tag has been set to port |
| 375 | 375 |
sleep 10 |
| 376 |
- TAPDEV=$(sudo ip netns exec qdhcp-${IRONIC_NET_ID} ip link list | grep tap | cut -d':' -f2 | cut -b2-)
|
|
| 377 |
- TAG_ID=$(sudo ovs-vsctl show |grep ${TAPDEV} -A1 -m1 | grep tag | cut -d':' -f2 | cut -b2-)
|
|
| 376 |
+ local tapdev=$(sudo ip netns exec qdhcp-${ironic_net_id} ip link list | grep tap | cut -d':' -f2 | cut -b2-)
|
|
| 377 |
+ local tag_id=$(sudo ovs-vsctl show |grep ${tapdev} -A1 -m1 | grep tag | cut -d':' -f2 | cut -b2-)
|
|
| 378 | 378 |
|
| 379 | 379 |
# make sure veth pair is not existing, otherwise delete its links |
| 380 | 380 |
sudo ip link show ovs-tap1 && sudo ip link delete ovs-tap1 |
| ... | ... |
@@ -384,12 +384,12 @@ function enroll_vms {
|
| 384 | 384 |
sudo ip link set dev brbm-tap1 up |
| 385 | 385 |
sudo ip link set dev ovs-tap1 up |
| 386 | 386 |
|
| 387 |
- sudo ovs-vsctl -- --if-exists del-port ovs-tap1 -- add-port br-int ovs-tap1 tag=$TAG_ID |
|
| 387 |
+ sudo ovs-vsctl -- --if-exists del-port ovs-tap1 -- add-port br-int ovs-tap1 tag=$tag_id |
|
| 388 | 388 |
sudo ovs-vsctl -- --if-exists del-port brbm-tap1 -- add-port $IRONIC_VM_NETWORK_BRIDGE brbm-tap1 |
| 389 | 389 |
|
| 390 | 390 |
# Remove the port needed only for workaround. For additional info read the |
| 391 | 391 |
# comment at the beginning of this function |
| 392 |
- neutron port-delete $PORT_ID |
|
| 392 |
+ neutron port-delete $port_id |
|
| 393 | 393 |
} |
| 394 | 394 |
|
| 395 | 395 |
function configure_iptables {
|
| ... | ... |
@@ -403,11 +403,11 @@ function configure_iptables {
|
| 403 | 403 |
|
| 404 | 404 |
function configure_tftpd {
|
| 405 | 405 |
if is_ubuntu; then |
| 406 |
- PXEBIN=/usr/lib/syslinux/pxelinux.0 |
|
| 406 |
+ local pxebin=/usr/lib/syslinux/pxelinux.0 |
|
| 407 | 407 |
elif is_fedora; then |
| 408 |
- PXEBIN=/usr/share/syslinux/pxelinux.0 |
|
| 408 |
+ local pxebin=/usr/share/syslinux/pxelinux.0 |
|
| 409 | 409 |
fi |
| 410 |
- if [ ! -f $PXEBIN ]; then |
|
| 410 |
+ if [ ! -f $pxebin ]; then |
|
| 411 | 411 |
die $LINENO "pxelinux.0 (from SYSLINUX) not found." |
| 412 | 412 |
fi |
| 413 | 413 |
|
| ... | ... |
@@ -440,12 +440,12 @@ function configure_ironic_ssh_keypair {
|
| 440 | 440 |
} |
| 441 | 441 |
|
| 442 | 442 |
function ironic_ssh_check {
|
| 443 |
- local KEY_FILE=$1 |
|
| 444 |
- local FLOATING_IP=$2 |
|
| 445 |
- local PORT=$3 |
|
| 446 |
- local DEFAULT_INSTANCE_USER=$4 |
|
| 447 |
- local ACTIVE_TIMEOUT=$5 |
|
| 448 |
- if ! timeout $ACTIVE_TIMEOUT sh -c "while ! ssh -p $PORT -o StrictHostKeyChecking=no -i $KEY_FILE ${DEFAULT_INSTANCE_USER}@$FLOATING_IP echo success; do sleep 1; done"; then
|
|
| 443 |
+ local key_file=$1 |
|
| 444 |
+ local floating_ip=$2 |
|
| 445 |
+ local port=$3 |
|
| 446 |
+ local default_instance_user=$4 |
|
| 447 |
+ local active_timeout=$5 |
|
| 448 |
+ if ! timeout $active_timeout sh -c "while ! ssh -p $port -o StrictHostKeyChecking=no -i $key_file ${default_instance_user}@$floating_ip echo success; do sleep 1; done"; then
|
|
| 449 | 449 |
die $LINENO "server didn't become ssh-able!" |
| 450 | 450 |
fi |
| 451 | 451 |
} |
| ... | ... |
@@ -457,16 +457,17 @@ function configure_ironic_auxiliary {
|
| 457 | 457 |
} |
| 458 | 458 |
|
| 459 | 459 |
# build deploy kernel+ramdisk, then upload them to glance |
| 460 |
-# this function sets IRONIC_DEPLOY_KERNEL_ID and IRONIC_DEPLOY_RAMDISK_ID |
|
| 460 |
+# this function sets ``IRONIC_DEPLOY_KERNEL_ID``, ``IRONIC_DEPLOY_RAMDISK_ID`` |
|
| 461 | 461 |
function upload_baremetal_ironic_deploy {
|
| 462 |
- token=$1 |
|
| 462 |
+ local token=$1 |
|
| 463 |
+ declare -g IRONIC_DEPLOY_KERNEL_ID IRONIC_DEPLOY_RAMDISK_ID |
|
| 463 | 464 |
|
| 464 | 465 |
if [ -z "$IRONIC_DEPLOY_KERNEL" -o -z "$IRONIC_DEPLOY_RAMDISK" ]; then |
| 465 |
- IRONIC_DEPLOY_KERNEL_PATH=$TOP_DIR/files/ir-deploy.kernel |
|
| 466 |
- IRONIC_DEPLOY_RAMDISK_PATH=$TOP_DIR/files/ir-deploy.initramfs |
|
| 466 |
+ local IRONIC_DEPLOY_KERNEL_PATH=$TOP_DIR/files/ir-deploy.kernel |
|
| 467 |
+ local IRONIC_DEPLOY_RAMDISK_PATH=$TOP_DIR/files/ir-deploy.initramfs |
|
| 467 | 468 |
else |
| 468 |
- IRONIC_DEPLOY_KERNEL_PATH=$IRONIC_DEPLOY_KERNEL |
|
| 469 |
- IRONIC_DEPLOY_RAMDISK_PATH=$IRONIC_DEPLOY_RAMDISK |
|
| 469 |
+ local IRONIC_DEPLOY_KERNEL_PATH=$IRONIC_DEPLOY_KERNEL |
|
| 470 |
+ local IRONIC_DEPLOY_RAMDISK_PATH=$IRONIC_DEPLOY_RAMDISK |
|
| 470 | 471 |
fi |
| 471 | 472 |
|
| 472 | 473 |
if [ ! -e "$IRONIC_DEPLOY_RAMDISK_PATH" -o ! -e "$IRONIC_DEPLOY_KERNEL_PATH" ]; then |
| ... | ... |
@@ -507,19 +508,20 @@ function prepare_baremetal_basic_ops {
|
| 507 | 507 |
git_clone $DIB_REPO $DIB_DIR $DIB_BRANCH |
| 508 | 508 |
|
| 509 | 509 |
# make sure all needed service were enabled |
| 510 |
+ local srv |
|
| 510 | 511 |
for srv in nova glance key neutron; do |
| 511 | 512 |
if ! is_service_enabled "$srv"; then |
| 512 | 513 |
die $LINENO "$srv should be enabled for ironic tests" |
| 513 | 514 |
fi |
| 514 | 515 |
done |
| 515 | 516 |
|
| 516 |
- TOKEN=$(keystone token-get | grep ' id ' | get_field 2) |
|
| 517 |
- die_if_not_set $LINENO TOKEN "Keystone fail to get token" |
|
| 517 |
+ local token=$(keystone token-get | grep ' id ' | get_field 2) |
|
| 518 |
+ die_if_not_set $LINENO token "Keystone fail to get token" |
|
| 518 | 519 |
|
| 519 | 520 |
echo_summary "Creating and uploading baremetal images for ironic" |
| 520 | 521 |
|
| 521 | 522 |
# build and upload separate deploy kernel & ramdisk |
| 522 |
- upload_baremetal_ironic_deploy $TOKEN |
|
| 523 |
+ upload_baremetal_ironic_deploy $token |
|
| 523 | 524 |
|
| 524 | 525 |
create_bridge_and_vms |
| 525 | 526 |
enroll_vms |
| ... | ... |
@@ -535,9 +537,9 @@ function prepare_baremetal_basic_ops {
|
| 535 | 535 |
function cleanup_baremetal_basic_ops {
|
| 536 | 536 |
rm -f $IRONIC_VM_MACS_CSV_FILE |
| 537 | 537 |
if [ -f $IRONIC_KEY_FILE ]; then |
| 538 |
- KEY=`cat $IRONIC_KEY_FILE.pub` |
|
| 538 |
+ local key=$(cat $IRONIC_KEY_FILE.pub) |
|
| 539 | 539 |
# remove public key from authorized_keys |
| 540 |
- grep -v "$KEY" $IRONIC_AUTHORIZED_KEYS_FILE > temp && mv temp $IRONIC_AUTHORIZED_KEYS_FILE |
|
| 540 |
+ grep -v "$key" $IRONIC_AUTHORIZED_KEYS_FILE > temp && mv temp $IRONIC_AUTHORIZED_KEYS_FILE |
|
| 541 | 541 |
chmod 0600 $IRONIC_AUTHORIZED_KEYS_FILE |
| 542 | 542 |
fi |
| 543 | 543 |
sudo rm -rf $IRONIC_DATA_DIR $IRONIC_STATE_PATH |