#!/bin/bash
#
# Neutron MidoNet plugin
# ----------------------

function _set_config_vars {
    Q_PLUGIN_CONF_PATH=etc/neutron/plugins/${Q_PLUGIN}
    Q_PLUGIN_CONF_FILENAME=midonet.ini
    Q_PLUGIN_CLASS=${MIDONET_PLUGIN}
}

function _create_config {
    local conf_file
    local _Q_PLUGIN_CONF_FILE

    # NOTE(yamamoto): This function is called before
    # devstack creates $NEUTRON_CONF_DIR.
    sudo install -d -o $STACK_USER $NEUTRON_CONF_DIR

    conf_file=midonet.ini.v2.sample
    _Q_PLUGIN_CONF_FILE=/${Q_PLUGIN_CONF_PATH}/${Q_PLUGIN_CONF_FILENAME}

    cd ${NETWORKING_MIDONET_DIR}
    mkdir -p etc/midonet
    oslo-config-generator --output-file etc/midonet/midonet.ini.v2.sample \
        --namespace midonet_v2
    cd -
    mkdir -p /${Q_PLUGIN_CONF_PATH}
    cp ${NETWORKING_MIDONET_DIR}/etc/midonet/${conf_file} ${_Q_PLUGIN_CONF_FILE}

    iniset /$_Q_PLUGIN_CONF_FILE MIDONET midonet_uri $MIDONET_API_URL
    iniset /$_Q_PLUGIN_CONF_FILE MIDONET username $Q_ADMIN_USERNAME
    iniset /$_Q_PLUGIN_CONF_FILE MIDONET password $SERVICE_PASSWORD
    iniset /$_Q_PLUGIN_CONF_FILE MIDONET project_id $SERVICE_TENANT_NAME
    iniset /$_Q_PLUGIN_CONF_FILE MIDONET client $MIDONET_CLIENT
    iniset /$_Q_PLUGIN_CONF_FILE MIDONET cluster_ip $MIDONET_SERVICE_HOST
    iniset /$_Q_PLUGIN_CONF_FILE MIDONET cluster_port $TOPOLOGY_API_PORT
}

function neutron_plugin_configure_common {
    if ! is_neutron_legacy_enabled; then
        die $LINENO "neutron_plugin_configure_common called unexpectedly!"
    fi
    _set_config_vars
}

function neutron_plugin_configure_l3_agent {
    die $LINENO "q-l3 must not be executed with MidoNet plugin!"
}

function neutron_plugin_configure_plugin_agent {
    die $LINENO "q-agt must not be executed with MidoNet plugin!"
}

function neutron_plugin_configure_service {
    if ! is_neutron_legacy_enabled; then
        die $LINENO "neutron_plugin_configure_service called unexpectedly!"
    fi
}

function neutron_plugin_setup_interface_driver {
    local conf_file=$1
    iniset $conf_file DEFAULT interface_driver midonet
}

function neutron_plugin_check_adv_test_requirements {
    # 0 means True here
    return 1
}

function configure_neutron_midonet {
    if ! is_neutron_legacy_enabled; then
        # NOTE(yamamoto): This overwrites what configure_neutron_new did.
        neutron_service_plugin_class_add midonet_l3
    fi
}

function configure_qos_midonet {
    :
}

function install_neutron_midonet {
    _set_config_vars
    _create_config
}

function configure_qos_midonet_v2 {
    :
}
