| ... | ... |
@@ -354,6 +354,15 @@ function init_ironic {
|
| 354 | 354 |
create_ironic_cache_dir |
| 355 | 355 |
} |
| 356 | 356 |
|
| 357 |
+# _ironic_bm_vm_names() - Generates list of names for baremetal VMs. |
|
| 358 |
+function _ironic_bm_vm_names {
|
|
| 359 |
+ local idx |
|
| 360 |
+ local num_vms=$(($IRONIC_VM_COUNT - 1)) |
|
| 361 |
+ for idx in $(seq 0 $num_vms); do |
|
| 362 |
+ echo "baremetal${IRONIC_VM_NETWORK_BRIDGE}_${idx}"
|
|
| 363 |
+ done |
|
| 364 |
+} |
|
| 365 |
+ |
|
| 357 | 366 |
# start_ironic() - Start running processes, including screen |
| 358 | 367 |
function start_ironic {
|
| 359 | 368 |
# Start Ironic API server, if enabled. |
| ... | ... |
@@ -449,10 +458,13 @@ function create_bridge_and_vms {
|
| 449 | 449 |
else |
| 450 | 450 |
local log_arg="" |
| 451 | 451 |
fi |
| 452 |
- sudo su $STACK_USER -c "$IRONIC_SCRIPTS_DIR/create-nodes \ |
|
| 453 |
- $IRONIC_VM_SPECS_CPU $IRONIC_VM_SPECS_RAM $IRONIC_VM_SPECS_DISK \ |
|
| 454 |
- amd64 $IRONIC_VM_COUNT $IRONIC_VM_NETWORK_BRIDGE $IRONIC_VM_EMULATOR \ |
|
| 455 |
- $log_arg" >> $IRONIC_VM_MACS_CSV_FILE |
|
| 452 |
+ local vm_name |
|
| 453 |
+ for vm_name in $(_ironic_bm_vm_names); do |
|
| 454 |
+ sudo su $STACK_USER -c "$IRONIC_SCRIPTS_DIR/create-node $vm_name \ |
|
| 455 |
+ $IRONIC_VM_SPECS_CPU $IRONIC_VM_SPECS_RAM $IRONIC_VM_SPECS_DISK \ |
|
| 456 |
+ amd64 $IRONIC_VM_NETWORK_BRIDGE $IRONIC_VM_EMULATOR \ |
|
| 457 |
+ $log_arg" >> $IRONIC_VM_MACS_CSV_FILE |
|
| 458 |
+ done |
|
| 456 | 459 |
create_ovs_taps |
| 457 | 460 |
} |
| 458 | 461 |
|
| ... | ... |
@@ -655,7 +667,12 @@ function cleanup_baremetal_basic_ops {
|
| 655 | 655 |
chmod 0600 $IRONIC_AUTHORIZED_KEYS_FILE |
| 656 | 656 |
fi |
| 657 | 657 |
sudo rm -rf $IRONIC_DATA_DIR $IRONIC_STATE_PATH |
| 658 |
- sudo su $STACK_USER -c "$IRONIC_SCRIPTS_DIR/cleanup-nodes $IRONIC_VM_COUNT $IRONIC_VM_NETWORK_BRIDGE" |
|
| 658 |
+ |
|
| 659 |
+ local vm_name |
|
| 660 |
+ for vm_name in $(_ironic_bm_vm_names); do |
|
| 661 |
+ sudo su $STACK_USER -c "$IRONIC_SCRIPTS_DIR/cleanup-node $vm_name $IRONIC_VM_NETWORK_BRIDGE" |
|
| 662 |
+ done |
|
| 663 |
+ |
|
| 659 | 664 |
sudo rm -rf /etc/xinetd.d/tftp /etc/init/tftpd-hpa.override |
| 660 | 665 |
restart_service xinetd |
| 661 | 666 |
sudo iptables -D INPUT -d $HOST_IP -p udp --dport 69 -j ACCEPT || true |
| 662 | 667 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,25 @@ |
| 0 |
+#!/usr/bin/env bash |
|
| 1 |
+ |
|
| 2 |
+# **cleanup-nodes** |
|
| 3 |
+ |
|
| 4 |
+# Cleans up baremetal poseur nodes and volumes created during ironic setup |
|
| 5 |
+# Assumes calling user has proper libvirt group membership and access. |
|
| 6 |
+ |
|
| 7 |
+set -exu |
|
| 8 |
+ |
|
| 9 |
+LIBVIRT_STORAGE_POOL=${LIBVIRT_STORAGE_POOL:-"default"}
|
|
| 10 |
+LIBVIRT_CONNECT_URI=${LIBVIRT_CONNECT_URI:-"qemu:///system"}
|
|
| 11 |
+ |
|
| 12 |
+NAME=$1 |
|
| 13 |
+NETWORK_BRIDGE=$2 |
|
| 14 |
+ |
|
| 15 |
+export VIRSH_DEFAULT_CONNECT_URI=$LIBVIRT_CONNECT_URI |
|
| 16 |
+ |
|
| 17 |
+VOL_NAME="$NAME.qcow2" |
|
| 18 |
+virsh list | grep -q $NAME && virsh destroy $NAME |
|
| 19 |
+virsh list --inactive | grep -q $NAME && virsh undefine $NAME |
|
| 20 |
+ |
|
| 21 |
+if virsh pool-list | grep -q $LIBVIRT_STORAGE_POOL ; then |
|
| 22 |
+ virsh vol-list $LIBVIRT_STORAGE_POOL | grep -q $VOL_NAME && |
|
| 23 |
+ virsh vol-delete $VOL_NAME --pool $LIBVIRT_STORAGE_POOL |
|
| 24 |
+fi |
| 0 | 25 |
deleted file mode 100755 |
| ... | ... |
@@ -1,28 +0,0 @@ |
| 1 |
-#!/usr/bin/env bash |
|
| 2 |
- |
|
| 3 |
-# **cleanup-nodes** |
|
| 4 |
- |
|
| 5 |
-# Cleans up baremetal poseur nodes and volumes created during ironic setup |
|
| 6 |
-# Assumes calling user has proper libvirt group membership and access. |
|
| 7 |
- |
|
| 8 |
-set -exu |
|
| 9 |
- |
|
| 10 |
-LIBVIRT_STORAGE_POOL=${LIBVIRT_STORAGE_POOL:-"default"}
|
|
| 11 |
-LIBVIRT_CONNECT_URI=${LIBVIRT_CONNECT_URI:-"qemu:///system"}
|
|
| 12 |
- |
|
| 13 |
-VM_COUNT=$1 |
|
| 14 |
-NETWORK_BRIDGE=$2 |
|
| 15 |
- |
|
| 16 |
-export VIRSH_DEFAULT_CONNECT_URI=$LIBVIRT_CONNECT_URI |
|
| 17 |
- |
|
| 18 |
-for (( idx=0; idx<$VM_COUNT; idx++ )); do |
|
| 19 |
- NAME="baremetal${NETWORK_BRIDGE}_${idx}"
|
|
| 20 |
- VOL_NAME="baremetal${NETWORK_BRIDGE}-${idx}.qcow2"
|
|
| 21 |
- virsh list | grep -q $NAME && virsh destroy $NAME |
|
| 22 |
- virsh list --inactive | grep -q $NAME && virsh undefine $NAME |
|
| 23 |
- |
|
| 24 |
- if virsh pool-list | grep -q $LIBVIRT_STORAGE_POOL ; then |
|
| 25 |
- virsh vol-list $LIBVIRT_STORAGE_POOL | grep -q $VOL_NAME && |
|
| 26 |
- virsh vol-delete $VOL_NAME --pool $LIBVIRT_STORAGE_POOL |
|
| 27 |
- fi |
|
| 28 |
-done |
| 29 | 1 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,79 @@ |
| 0 |
+#!/usr/bin/env bash |
|
| 1 |
+ |
|
| 2 |
+# **create-nodes** |
|
| 3 |
+ |
|
| 4 |
+# Creates baremetal poseur nodes for ironic testing purposes |
|
| 5 |
+ |
|
| 6 |
+set -ex |
|
| 7 |
+ |
|
| 8 |
+# Keep track of the devstack directory |
|
| 9 |
+TOP_DIR=$(cd $(dirname "$0")/.. && pwd) |
|
| 10 |
+ |
|
| 11 |
+NAME=$1 |
|
| 12 |
+CPU=$2 |
|
| 13 |
+MEM=$(( 1024 * $3 )) |
|
| 14 |
+# extra G to allow fuzz for partition table : flavor size and registered size |
|
| 15 |
+# need to be different to actual size. |
|
| 16 |
+DISK=$(( $4 + 1)) |
|
| 17 |
+ |
|
| 18 |
+case $5 in |
|
| 19 |
+ i386) ARCH='i686' ;; |
|
| 20 |
+ amd64) ARCH='x86_64' ;; |
|
| 21 |
+ *) echo "Unsupported arch $4!" ; exit 1 ;; |
|
| 22 |
+esac |
|
| 23 |
+ |
|
| 24 |
+BRIDGE=$6 |
|
| 25 |
+EMULATOR=$7 |
|
| 26 |
+LOGDIR=$8 |
|
| 27 |
+ |
|
| 28 |
+LIBVIRT_NIC_DRIVER=${LIBVIRT_NIC_DRIVER:-"e1000"}
|
|
| 29 |
+LIBVIRT_STORAGE_POOL=${LIBVIRT_STORAGE_POOL:-"default"}
|
|
| 30 |
+LIBVIRT_CONNECT_URI=${LIBVIRT_CONNECT_URI:-"qemu:///system"}
|
|
| 31 |
+ |
|
| 32 |
+export VIRSH_DEFAULT_CONNECT_URI=$LIBVIRT_CONNECT_URI |
|
| 33 |
+ |
|
| 34 |
+if ! virsh pool-list --all | grep -q $LIBVIRT_STORAGE_POOL; then |
|
| 35 |
+ virsh pool-define-as --name $LIBVIRT_STORAGE_POOL dir --target /var/lib/libvirt/images >&2 |
|
| 36 |
+ virsh pool-autostart $LIBVIRT_STORAGE_POOL >&2 |
|
| 37 |
+ virsh pool-start $LIBVIRT_STORAGE_POOL >&2 |
|
| 38 |
+fi |
|
| 39 |
+ |
|
| 40 |
+pool_state=$(virsh pool-info $LIBVIRT_STORAGE_POOL | grep State | awk '{ print $2 }')
|
|
| 41 |
+if [ "$pool_state" != "running" ] ; then |
|
| 42 |
+ [ ! -d /var/lib/libvirt/images ] && sudo mkdir /var/lib/libvirt/images |
|
| 43 |
+ virsh pool-start $LIBVIRT_STORAGE_POOL >&2 |
|
| 44 |
+fi |
|
| 45 |
+ |
|
| 46 |
+if [ -n "$LOGDIR" ] ; then |
|
| 47 |
+ mkdir -p "$LOGDIR" |
|
| 48 |
+fi |
|
| 49 |
+ |
|
| 50 |
+PREALLOC= |
|
| 51 |
+if [ -f /etc/debian_version ]; then |
|
| 52 |
+ PREALLOC="--prealloc-metadata" |
|
| 53 |
+fi |
|
| 54 |
+ |
|
| 55 |
+if [ -n "$LOGDIR" ] ; then |
|
| 56 |
+ VM_LOGGING="--console-log $LOGDIR/${NAME}_console.log"
|
|
| 57 |
+else |
|
| 58 |
+ VM_LOGGING="" |
|
| 59 |
+fi |
|
| 60 |
+VOL_NAME="${NAME}.qcow2"
|
|
| 61 |
+ |
|
| 62 |
+if ! virsh list --all | grep -q $NAME; then |
|
| 63 |
+ virsh vol-list --pool $LIBVIRT_STORAGE_POOL | grep -q $VOL_NAME && |
|
| 64 |
+ virsh vol-delete $VOL_NAME --pool $LIBVIRT_STORAGE_POOL >&2 |
|
| 65 |
+ virsh vol-create-as $LIBVIRT_STORAGE_POOL ${VOL_NAME} ${DISK}G --format qcow2 $PREALLOC >&2
|
|
| 66 |
+ volume_path=$(virsh vol-path --pool $LIBVIRT_STORAGE_POOL $VOL_NAME) |
|
| 67 |
+ # Pre-touch the VM to set +C, as it can only be set on empty files. |
|
| 68 |
+ sudo touch "$volume_path" |
|
| 69 |
+ sudo chattr +C "$volume_path" || true |
|
| 70 |
+ $TOP_DIR/scripts/configure-vm \ |
|
| 71 |
+ --bootdev network --name $NAME --image "$volume_path" \ |
|
| 72 |
+ --arch $ARCH --cpus $CPU --memory $MEM --libvirt-nic-driver $LIBVIRT_NIC_DRIVER \ |
|
| 73 |
+ --emulator $EMULATOR --network $BRIDGE $VM_LOGGING >&2 |
|
| 74 |
+ |
|
| 75 |
+fi |
|
| 76 |
+ |
|
| 77 |
+# echo mac |
|
| 78 |
+virsh dumpxml $NAME | grep "mac address" | head -1 | cut -d\' -f2 |
| 0 | 79 |
deleted file mode 100755 |
| ... | ... |
@@ -1,84 +0,0 @@ |
| 1 |
-#!/usr/bin/env bash |
|
| 2 |
- |
|
| 3 |
-# **create-nodes** |
|
| 4 |
- |
|
| 5 |
-# Creates baremetal poseur nodes for ironic testing purposes |
|
| 6 |
- |
|
| 7 |
-set -ex |
|
| 8 |
- |
|
| 9 |
-# Keep track of the devstack directory |
|
| 10 |
-TOP_DIR=$(cd $(dirname "$0")/.. && pwd) |
|
| 11 |
- |
|
| 12 |
-CPU=$1 |
|
| 13 |
-MEM=$(( 1024 * $2 )) |
|
| 14 |
-# extra G to allow fuzz for partition table : flavor size and registered size |
|
| 15 |
-# need to be different to actual size. |
|
| 16 |
-DISK=$(( $3 + 1)) |
|
| 17 |
- |
|
| 18 |
-case $4 in |
|
| 19 |
- i386) ARCH='i686' ;; |
|
| 20 |
- amd64) ARCH='x86_64' ;; |
|
| 21 |
- *) echo "Unsupported arch $4!" ; exit 1 ;; |
|
| 22 |
-esac |
|
| 23 |
- |
|
| 24 |
-TOTAL=$(($5 - 1)) |
|
| 25 |
-BRIDGE=$6 |
|
| 26 |
-EMULATOR=$7 |
|
| 27 |
-LOGDIR=$8 |
|
| 28 |
- |
|
| 29 |
-LIBVIRT_NIC_DRIVER=${LIBVIRT_NIC_DRIVER:-"e1000"}
|
|
| 30 |
-LIBVIRT_STORAGE_POOL=${LIBVIRT_STORAGE_POOL:-"default"}
|
|
| 31 |
-LIBVIRT_CONNECT_URI=${LIBVIRT_CONNECT_URI:-"qemu:///system"}
|
|
| 32 |
- |
|
| 33 |
-export VIRSH_DEFAULT_CONNECT_URI=$LIBVIRT_CONNECT_URI |
|
| 34 |
- |
|
| 35 |
-if ! virsh pool-list --all | grep -q $LIBVIRT_STORAGE_POOL; then |
|
| 36 |
- virsh pool-define-as --name $LIBVIRT_STORAGE_POOL dir --target /var/lib/libvirt/images >&2 |
|
| 37 |
- virsh pool-autostart $LIBVIRT_STORAGE_POOL >&2 |
|
| 38 |
- virsh pool-start $LIBVIRT_STORAGE_POOL >&2 |
|
| 39 |
-fi |
|
| 40 |
- |
|
| 41 |
-pool_state=$(virsh pool-info $LIBVIRT_STORAGE_POOL | grep State | awk '{ print $2 }')
|
|
| 42 |
-if [ "$pool_state" != "running" ] ; then |
|
| 43 |
- [ ! -d /var/lib/libvirt/images ] && sudo mkdir /var/lib/libvirt/images |
|
| 44 |
- virsh pool-start $LIBVIRT_STORAGE_POOL >&2 |
|
| 45 |
-fi |
|
| 46 |
- |
|
| 47 |
-if [ -n "$LOGDIR" ] ; then |
|
| 48 |
- mkdir -p "$LOGDIR" |
|
| 49 |
-fi |
|
| 50 |
- |
|
| 51 |
-PREALLOC= |
|
| 52 |
-if [ -f /etc/debian_version ]; then |
|
| 53 |
- PREALLOC="--prealloc-metadata" |
|
| 54 |
-fi |
|
| 55 |
- |
|
| 56 |
-DOMS="" |
|
| 57 |
-for idx in $(seq 0 $TOTAL) ; do |
|
| 58 |
- NAME="baremetal${BRIDGE}_${idx}"
|
|
| 59 |
- if [ -n "$LOGDIR" ] ; then |
|
| 60 |
- VM_LOGGING="--console-log $LOGDIR/${NAME}_console.log"
|
|
| 61 |
- else |
|
| 62 |
- VM_LOGGING="" |
|
| 63 |
- fi |
|
| 64 |
- DOMS="$DOMS $NAME" |
|
| 65 |
- VOL_NAME="baremetal${BRIDGE}-${idx}.qcow2"
|
|
| 66 |
- (virsh list --all | grep -q $NAME) && continue |
|
| 67 |
- |
|
| 68 |
- virsh vol-list --pool $LIBVIRT_STORAGE_POOL | grep -q $VOL_NAME && |
|
| 69 |
- virsh vol-delete $VOL_NAME --pool $LIBVIRT_STORAGE_POOL >&2 |
|
| 70 |
- virsh vol-create-as $LIBVIRT_STORAGE_POOL ${VOL_NAME} ${DISK}G --format qcow2 $PREALLOC >&2
|
|
| 71 |
- volume_path=$(virsh vol-path --pool $LIBVIRT_STORAGE_POOL $VOL_NAME) |
|
| 72 |
- # Pre-touch the VM to set +C, as it can only be set on empty files. |
|
| 73 |
- sudo touch "$volume_path" |
|
| 74 |
- sudo chattr +C "$volume_path" || true |
|
| 75 |
- $TOP_DIR/scripts/configure-vm \ |
|
| 76 |
- --bootdev network --name $NAME --image "$volume_path" \ |
|
| 77 |
- --arch $ARCH --cpus $CPU --memory $MEM --libvirt-nic-driver $LIBVIRT_NIC_DRIVER \ |
|
| 78 |
- --emulator $EMULATOR --network $BRIDGE $VM_LOGGING >&2 |
|
| 79 |
-done |
|
| 80 |
- |
|
| 81 |
-for dom in $DOMS ; do |
|
| 82 |
- # echo mac |
|
| 83 |
- virsh dumpxml $dom | grep "mac address" | head -1 | cut -d\' -f2 |
|
| 84 |
-done |