# 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

        if [[ "$IRONIC_BAREMETAL_BASIC_OPS" = "True" ]]; then
            prepare_baremetal_basic_ops
        fi
    fi

    if [[ "$1" == "unstack" ]]; then
        stop_ironic
        if [[ "$IRONIC_BAREMETAL_BASIC_OPS" = "True" ]]; then
            cleanup_baremetal_basic_ops
        fi
    fi

    if [[ "$1" == "clean" ]]; then
        cleanup_ironic
    fi
fi
