Add deploy ramdisk element for Ironic

Ironic requires callback from deploy ramdisk via API with json data.
Auth token also required if Keystone auth enabled for Ironic API.
This patch adds separate element 'deploy-ironic' for Ironic deploy
ramdisk creation.

Change-Id: I5ef96711763e50307cfa17c406a9e16bffb937bc
This commit is contained in:
Yuriy Zveryanskyy 2013-12-03 17:52:50 +02:00
parent d7e43c0861
commit bf222fe7bc
6 changed files with 63 additions and 0 deletions

View File

@ -0,0 +1,2 @@
A ramdisk that will expose the machine primary disk over iSCSI and reboot
once Ironic signals it is finished.

View File

@ -0,0 +1,4 @@
busybox
curl
tgtadm
tgtd

View File

@ -0,0 +1,51 @@
readonly IRONIC_API_URL=$(get_kernel_parameter ironic_api_url)
if [ -z "$ISCSI_TARGET_IQN" ]; then
err_msg "iscsi_target_iqn is not defined"
troubleshoot
fi
t=0
while ! target_disk=$(find_disk "$DISK"); do
if [ $t -eq 10 ]; then
break
fi
t=$(($t + 1))
sleep 1
done
if [ -z "$target_disk" ]; then
err_msg "Could not find disk to use."
troubleshoot
fi
echo "start iSCSI target on $target_disk"
start_iscsi_target "$ISCSI_TARGET_IQN" "$target_disk" ALL
if [ $? -ne 0 ]; then
err_msg "Failed to start iscsi target."
troubleshoot
fi
TOKEN_FILE=token-$DEPLOYMENT_ID
if tftp -r /tftpboot/$TOKEN_FILE -g $BOOT_SERVER
then TOKEN_HEADER="-H 'X-Auth-Token: `cat $TOKEN_FILE`'"
else TOKEN_HEADER=""
fi
DATA="'{\"address\":\"$BOOT_IP_ADDRESS\",\"key\":\"$DEPLOYMENT_KEY\",\"iqn\":\"$ISCSI_TARGET_IQN\",\"error\":\"$FIRST_ERR_MSG\"}'"
echo "request Ironic API to deploy image"
curl \
-X POST \
-H 'Content-Type: application/json' \
$TOKEN_HEADER \
-d $DATA \
$IRONIC_API_URL/nodes/$DEPLOYMENT_ID/vendor_passthru/pass_deploy_info
echo "waiting for notice of complete"
nc -l -p 10000
echo "stop iSCSI target on $target_disk"
stop_iscsi_target

View File

@ -0,0 +1,2 @@
#!/bin/bash
install-packages tgt

View File

@ -0,0 +1,2 @@
#!/bin/bash
install-packages busybox

View File

@ -0,0 +1,2 @@
#!/bin/bash
install-packages curl