diff --git a/extras.d/50-ironic.sh b/extras.d/50-ironic.sh new file mode 100644 index 0000000000..f68a14680f --- /dev/null +++ b/extras.d/50-ironic.sh @@ -0,0 +1,33 @@ +# ironic.sh - Devstack extras script to install ironic + +if is_service_enabled ir-api ir-cond; then + if [[ "$1" == "source" ]]; then + # Initial source + source $TOP_DIR/lib/ironic + elif [[ "$1" == "stack" && "$2" == "install" ]]; then + echo_summary "Installing Ironic" + install_ironic + install_ironicclient + cleanup_ironic + elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then + echo_summary "Configuring Ironic" + configure_ironic + + if is_service_enabled key; then + create_ironic_accounts + fi + + elif [[ "$1" == "stack" && "$2" == "extra" ]]; then + # Initialize ironic + init_ironic + + # Start the ironic API and ironic taskmgr components + echo_summary "Starting Ironic" + start_ironic + fi + + if [[ "$1" == "unstack" ]]; then + stop_ironic + cleanup_ironic + fi +fi diff --git a/lib/ironic b/lib/ironic index b8838f59fb..0b9df57c9e 100644 --- a/lib/ironic +++ b/lib/ironic @@ -49,6 +49,13 @@ TEMPEST_SERVICES+=,ironic # Functions # --------- +# Test if any Ironic services are enabled +# is_ironic_enabled +function is_ironic_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"ir-" ]] && return 0 + return 1 +} + # install_ironic() - Collect source and prepare function install_ironic() { git_clone $IRONIC_REPO $IRONIC_DIR $IRONIC_BRANCH diff --git a/stack.sh b/stack.sh index 15e14303cf..1a1460d2f3 100755 --- a/stack.sh +++ b/stack.sh @@ -336,7 +336,6 @@ source $TOP_DIR/lib/heat source $TOP_DIR/lib/neutron source $TOP_DIR/lib/baremetal source $TOP_DIR/lib/ldap -source $TOP_DIR/lib/ironic # Extras Source # -------------- @@ -746,11 +745,6 @@ if is_service_enabled tls-proxy; then # don't be naive and add to existing line! fi -if is_service_enabled ir-api ir-cond; then - install_ironic - install_ironicclient - configure_ironic -fi # Extras Install # -------------- @@ -966,15 +960,6 @@ if is_service_enabled g-reg; then fi -# Ironic -# ------ - -if is_service_enabled ir-api ir-cond; then - echo_summary "Configuring Ironic" - init_ironic -fi - - # Neutron # ------- @@ -1101,12 +1086,6 @@ if is_service_enabled g-api g-reg; then start_glance fi -# Launch the Ironic services -if is_service_enabled ir-api ir-cond; then - echo_summary "Starting Ironic" - start_ironic -fi - # Create an access key and secret key for nova ec2 register image if is_service_enabled key && is_service_enabled swift3 && is_service_enabled nova; then NOVA_USER_ID=$(keystone user-list | grep ' nova ' | get_field 1) diff --git a/unstack.sh b/unstack.sh index 92d0642c38..ea9c27d99b 100755 --- a/unstack.sh +++ b/unstack.sh @@ -55,7 +55,6 @@ source $TOP_DIR/lib/heat source $TOP_DIR/lib/neutron source $TOP_DIR/lib/baremetal source $TOP_DIR/lib/ldap -source $TOP_DIR/lib/ironic # Extras Source # -------------- @@ -118,12 +117,6 @@ if is_service_enabled s-proxy; then cleanup_swift fi -# Ironic runs daemons -if is_service_enabled ir-api ir-cond; then - stop_ironic - cleanup_ironic -fi - # Apache has the WSGI processes if is_service_enabled horizon; then stop_horizon