diff --git a/MANIFEST.in b/MANIFEST.in index 9223219a0..25fde2f7d 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -8,3 +8,4 @@ include tox.ini include *.rst recursive-include functest * recursive-include locale * +recursive-include devstack * diff --git a/devstack/plugin.sh b/devstack/plugin.sh new file mode 100644 index 000000000..070f56aee --- /dev/null +++ b/devstack/plugin.sh @@ -0,0 +1,196 @@ +IRONIC_DISCOVERD_DEBUG=${IRONIC_DISCOVERD_DEBUG:-false} +IRONIC_DISCOVERD_DIR=$DEST/ironic-discoverd +IRONIC_DISCOVERD_BIN_DIR=$(get_python_exec_prefix) +IRONIC_DISCOVERD_BIN_FILE=$IRONIC_DISCOVERD_BIN_DIR/ironic-discoverd +IRONIC_DISCOVERD_CONF_DIR=${IRONIC_DISCOVERD_CONF_DIR:-/etc/ironic-discoverd} +IRONIC_DISCOVERD_CONF_FILE=$IRONIC_DISCOVERD_CONF_DIR/discoverd.conf +IRONIC_DISCOVERD_DHCP_CONF_FILE=$IRONIC_DISCOVERD_CONF_DIR/dnsmasq.conf +IRONIC_DISCOVERD_DATA_DIR=$DATA_DIR/ironic-discoverd +IRONIC_DISCOVERD_ADMIN_USER=${IRONIC_DISCOVERD_ADMIN_USER:-ironic-discoverd} +IRONIC_DISCOVERD_MANAGE_FIREWALL=$(trueorfalse True $IRONIC_DISCOVERD_MANAGE_FIREWALL) +IRONIC_DISCOVERD_HOST=$HOST_IP +IRONIC_DISCOVERD_PORT=5050 +IRONIC_DISCOVERD_URI="http://$IRONIC_DISCOVERD_HOST:$IRONIC_DISCOVERD_PORT" +IRONIC_DISCOVERD_RAMDISK_ELEMENT=${IRONIC_DISCOVERD_RAMDISK_ELEMENT:-ironic-discoverd-ramdisk} +IRONIC_DISCOVERD_RAMDISK_FLAVOR=${IRONIC_DISCOVERD_RAMDISK_FLAVOR:-fedora $IRONIC_DISCOVERD_RAMDISK_ELEMENT} +# These should not overlap with other ranges/networks +IRONIC_DISCOVERD_INTERNAL_IP=${IRONIC_DISCOVERD_INTERNAL_IP:-172.24.5.254} +IRONIC_DISCOVERD_INTERNAL_SUBNET_SIZE=${IRONIC_DISCOVERD_INTERNAL_SUBNET_SIZE:-24} +IRONIC_DISCOVERD_DHCP_RANGE=${IRONIC_DISCOVERD_DHCP_RANGE:-172.24.5.100,172.24.5.253} +IRONIC_DISCOVERD_INTERFACE=${IRONIC_DISCOVERD_INTERFACE:-br-discoverd} +IRONIC_DISCOVERD_INTERNAL_URI="http://$IRONIC_DISCOVERD_INTERNAL_IP:$IRONIC_DISCOVERD_PORT" +IRONIC_DISCOVERD_INTERNAL_IP_WITH_NET=$IRONIC_DISCOVERD_INTERNAL_IP/$IRONIC_DISCOVERD_INTERNAL_SUBNET_SIZE + +### Utilities + +function mkdir_chown_stack { + if [[ ! -d "$1" ]]; then + sudo mkdir -p "$1" + fi + sudo chown $STACK_USER "$1" +} + +function discoverd_iniset { + iniset "$IRONIC_DISCOVERD_CONF_FILE" discoverd $1 $2 +} + +### Install-start-stop + +function install_discoverd { + setup_develop $IRONIC_DISCOVERD_DIR +} + +function install_discoverd_dhcp { + install_package dnsmasq +} + +function start_discoverd { + screen_it ironic-discoverd "cd $IRONIC_DISCOVERD_DIR && sudo $IRONIC_DISCOVERD_BIN_FILE --config-file $IRONIC_DISCOVERD_CONF_FILE" +} + +function start_discoverd_dhcp { + screen_it ironic-discoverd-dhcp "sudo dnsmasq --conf-file=$IRONIC_DISCOVERD_DHCP_CONF_FILE" +} + +function stop_discoverd { + screen -S $SCREEN_NAME -p ironic-discoverd -X kill +} + +function stop_discoverd_dhcp { + screen -S $SCREEN_NAME -p ironic-discoverd-dhcp -X kill +} + +### Configuration + +function prepare_tftp { + IRONIC_DISCOVERD_IMAGE_PATH="$TOP_DIR/files/ironic-discoverd" + IRONIC_DISCOVERD_KERNEL_PATH="$IRONIC_DISCOVERD_IMAGE_PATH.kernel" + IRONIC_DISCOVERD_INITRAMFS_PATH="$IRONIC_DISCOVERD_IMAGE_PATH.initramfs" + + if [ ! -e "$IRONIC_DISCOVERD_KERNEL_PATH" -o ! -e "$IRONIC_DISCOVERD_INITRAMFS_PATH" ]; then + if [[ $(type -P ramdisk-image-create) == "" ]]; then + pip_install diskimage_builder + fi + ramdisk-image-create $IRONIC_DISCOVERD_RAMDISK_FLAVOR \ + -o $IRONIC_DISCOVERD_IMAGE_PATH + fi + + mkdir_chown_stack "$IRONIC_TFTPBOOT_DIR/pxelinux.cfg" + + cp $IRONIC_DISCOVERD_KERNEL_PATH $IRONIC_DISCOVERD_INITRAMFS_PATH \ + $IRONIC_TFTPBOOT_DIR + cat > "$IRONIC_TFTPBOOT_DIR/pxelinux.cfg/default" < "$IRONIC_DISCOVERD_DHCP_CONF_FILE" <=]', line)[0] + install_requires = [re.split(r'[<>=~]', line)[0] for line in fp if line.strip()] except EnvironmentError: print("No requirements.txt, not handling dependencies")