From 823aa719722760a7b0b164291d9ac08bcaac9123 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Fri, 29 May 2015 13:25:56 +0200 Subject: [PATCH] Repair devstack plugin after rename Also move documentation here from always broken etherpad. Depends on https://review.openstack.org/#/c/186772/ for Ironic inspection to work. Change-Id: I795aa9405e6141cc82ad0f37b90a3cc6f0d402c0 --- CONTRIBUTING.rst | 75 ++++++++++++++- README.rst | 3 +- devstack/plugin.sh | 221 +++++++++++++++++++++++---------------------- devstack/settings | 2 +- 4 files changed, 187 insertions(+), 114 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 106b2acca..cc6dbb9d6 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -64,9 +64,78 @@ Run the service with:: Of course you may have to modify ``example.conf`` to match your OpenStack environment. -You can develop and test **ironic-inspector** using -`DevStack `_ plugin - see -https://etherpad.openstack.org/p/DiscoverdDevStack for the current status. +You can develop and test **ironic-inspector** using DevStack - see +`DevStack Support`_ for the current status. + +DevStack Support +~~~~~~~~~~~~~~~~ + +`DevStack `_ provides a way to +quickly build full OpenStack development environment with requested +components. There is a plugin for installing **ironic-inspector** on DevStack. + +Example local.conf +------------------ + +:: + + [[local|localrc]] + enable_service ironic ir-api ir-cond + disable_service n-net n-novnc + enable_service neutron q-svc q-agt q-dhcp q-l3 q-meta + disable_service heat h-api h-api-cfn h-api-cw h-eng + + enable_plugin ironic-inspector https://github.com/stackforge/ironic-discoverd + + IRONIC_BAREMETAL_BASIC_OPS=True + IRONIC_VM_COUNT=2 + IRONIC_VM_SPECS_RAM=1024 + IRONIC_DEPLOY_FLAVOR="fedora deploy-ironic" + + IRONIC_INSPECTOR_RAMDISK_FLAVOR="fedora ironic-discoverd-ramdisk" + + VIRT_DRIVER=ironic + + LOGDAYS=1 + LOGFILE=~/logs/stack.sh.log + SCREEN_LOGDIR=~/logs/screen + + DEFAULT_INSTANCE_TYPE=baremetal + TEMPEST_ALLOW_TENANT_ISOLATION=False + +Notes +----- + +* Replace "fedora" with whatever you have + +* You need at least 1G of RAM for VMs, default value of 512 MB won't work + +* Network configuration is pretty sensitive, better not to touch it + without deep understanding + +* Before restarting stack.sh:: + + rm -rf /opt/stack/ironic-inspector + +Test +---- + +There is a test script included:: + + source devstack/openrc admin admin + /opt/stack/ironic-inspector/functest/devstack-test.sh + +Usage +----- + +Start introspection for a node manually:: + + source devstack/openrc admin admin + openstack baremetal introspection start + +Then check status via API:: + + openstack baremetal introspection status Writing a Plugin ~~~~~~~~~~~~~~~~ diff --git a/README.rst b/README.rst index a27807d9b..95f1622d7 100644 --- a/README.rst +++ b/README.rst @@ -104,8 +104,7 @@ environment):: pip install ironic-inspector Also there is a `DevStack `_ -plugin for **ironic-inspector** - see -https://etherpad.openstack.org/p/DiscoverdDevStack for the current status. +plugin for **ironic-inspector** - see CONTRIBUTING.rst_ for the current status. Finally, some distributions (e.g. Fedora) provide **ironic-inspector** packaged, some of them - under its old name *ironic-discoverd*. diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 146c75285..a87c90a43 100644 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -1,25 +1,26 @@ -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} +IRONIC_INSPECTOR_DEBUG=${IRONIC_INSPECTOR_DEBUG:-false} +IRONIC_INSPECTOR_DIR=$DEST/ironic-inspector +IRONIC_INSPECTOR_BIN_DIR=$(get_python_exec_prefix) +IRONIC_INSPECTOR_BIN_FILE=$IRONIC_INSPECTOR_BIN_DIR/ironic-inspector +IRONIC_INSPECTOR_CONF_DIR=${IRONIC_INSPECTOR_CONF_DIR:-/etc/ironic-inspector} +IRONIC_INSPECTOR_CONF_FILE=$IRONIC_INSPECTOR_CONF_DIR/inspector.conf +IRONIC_INSPECTOR_CMD="sudo $IRONIC_INSPECTOR_BIN_FILE --config-file $IRONIC_INSPECTOR_CONF_FILE" +IRONIC_INSPECTOR_DHCP_CONF_FILE=$IRONIC_INSPECTOR_CONF_DIR/dnsmasq.conf +IRONIC_INSPECTOR_DATA_DIR=$DATA_DIR/ironic-inspector +IRONIC_INSPECTOR_ADMIN_USER=${IRONIC_INSPECTOR_ADMIN_USER:-ironic-inspector} +IRONIC_INSPECTOR_MANAGE_FIREWALL=$(trueorfalse True $IRONIC_INSPECTOR_MANAGE_FIREWALL) +IRONIC_INSPECTOR_HOST=$HOST_IP +IRONIC_INSPECTOR_PORT=5050 +IRONIC_INSPECTOR_URI="http://$IRONIC_INSPECTOR_HOST:$IRONIC_INSPECTOR_PORT" +IRONIC_INSPECTOR_RAMDISK_ELEMENT=${IRONIC_INSPECTOR_RAMDISK_ELEMENT:-ironic-discoverd-ramdisk} +IRONIC_INSPECTOR_RAMDISK_FLAVOR=${IRONIC_INSPECTOR_RAMDISK_FLAVOR:-fedora $IRONIC_INSPECTOR_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 +IRONIC_INSPECTOR_INTERNAL_IP=${IRONIC_INSPECTOR_INTERNAL_IP:-172.24.5.254} +IRONIC_INSPECTOR_INTERNAL_SUBNET_SIZE=${IRONIC_INSPECTOR_INTERNAL_SUBNET_SIZE:-24} +IRONIC_INSPECTOR_DHCP_RANGE=${IRONIC_INSPECTOR_DHCP_RANGE:-172.24.5.100,172.24.5.253} +IRONIC_INSPECTOR_INTERFACE=${IRONIC_INSPECTOR_INTERFACE:-br-inspector} +IRONIC_INSPECTOR_INTERNAL_URI="http://$IRONIC_INSPECTOR_INTERNAL_IP:$IRONIC_INSPECTOR_PORT" +IRONIC_INSPECTOR_INTERNAL_IP_WITH_NET=$IRONIC_INSPECTOR_INTERNAL_IP/$IRONIC_INSPECTOR_INTERNAL_SUBNET_SIZE ### Utilities @@ -30,102 +31,106 @@ function mkdir_chown_stack { sudo chown $STACK_USER "$1" } -function discoverd_iniset { - iniset "$IRONIC_DISCOVERD_CONF_FILE" discoverd $1 $2 +function inspector_iniset { + iniset "$IRONIC_INSPECTOR_CONF_FILE" $1 $2 $3 } ### Install-start-stop -function install_discoverd { - setup_develop $IRONIC_DISCOVERD_DIR +function install_inspector { + setup_develop $IRONIC_INSPECTOR_DIR # NOTE(dtantsur): required for tests install_package jq } -function install_discoverd_dhcp { +function install_inspector_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_inspector { + screen_it ironic-inspector \ + "cd $IRONIC_INSPECTOR_DIR && $IRONIC_INSPECTOR_CMD" } -function start_discoverd_dhcp { - screen_it ironic-discoverd-dhcp "sudo dnsmasq --conf-file=$IRONIC_DISCOVERD_DHCP_CONF_FILE" +function start_inspector_dhcp { + screen_it ironic-inspector-dhcp \ + "sudo dnsmasq --conf-file=$IRONIC_INSPECTOR_DHCP_CONF_FILE" } -function stop_discoverd { - screen -S $SCREEN_NAME -p ironic-discoverd -X kill +function stop_inspector { + screen -S $SCREEN_NAME -p ironic-inspector -X kill } -function stop_discoverd_dhcp { - screen -S $SCREEN_NAME -p ironic-discoverd-dhcp -X kill +function stop_inspector_dhcp { + screen -S $SCREEN_NAME -p ironic-inspector-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" + IRONIC_INSPECTOR_IMAGE_PATH="$TOP_DIR/files/ironic-inspector" + IRONIC_INSPECTOR_KERNEL_PATH="$IRONIC_INSPECTOR_IMAGE_PATH.kernel" + IRONIC_INSPECTOR_INITRAMFS_PATH="$IRONIC_INSPECTOR_IMAGE_PATH.initramfs" - if [ ! -e "$IRONIC_DISCOVERD_KERNEL_PATH" -o ! -e "$IRONIC_DISCOVERD_INITRAMFS_PATH" ]; then + if [ ! -e "$IRONIC_INSPECTOR_KERNEL_PATH" -o ! -e "$IRONIC_INSPECTOR_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 + ramdisk-image-create $IRONIC_INSPECTOR_RAMDISK_FLAVOR \ + -o $IRONIC_INSPECTOR_IMAGE_PATH fi mkdir_chown_stack "$IRONIC_TFTPBOOT_DIR/pxelinux.cfg" - - cp $IRONIC_DISCOVERD_KERNEL_PATH $IRONIC_DISCOVERD_INITRAMFS_PATH \ + cp $IRONIC_INSPECTOR_KERNEL_PATH $IRONIC_INSPECTOR_INITRAMFS_PATH \ $IRONIC_TFTPBOOT_DIR - cat > "$IRONIC_TFTPBOOT_DIR/pxelinux.cfg/default" < "$IRONIC_TFTPBOOT_DIR/pxelinux.cfg/default" < "$IRONIC_DISCOVERD_DHCP_CONF_FILE" < "$IRONIC_INSPECTOR_DHCP_CONF_FILE" <