# Neutron Embrane plugin
# ---------------------------

# Save trace setting
EMBR_XTRACE=$(set +o | grep xtrace)
set +o xtrace

source $TOP_DIR/lib/neutron_plugins/openvswitch

function save_function {
    local ORIG_FUNC=$(declare -f $1)
    local NEW_FUNC="$2${ORIG_FUNC#$1}"
    eval "$NEW_FUNC"
}

save_function neutron_plugin_configure_service _neutron_plugin_configure_service

function neutron_plugin_configure_common {
    Q_PLUGIN_CONF_PATH=etc/neutron/plugins/embrane
    Q_PLUGIN_CONF_FILENAME=heleos_conf.ini
    Q_PLUGIN_CLASS="neutron.plugins.embrane.plugins.embrane_ovs_plugin.EmbraneOvsPlugin"
}

function neutron_plugin_configure_service {
    _neutron_plugin_configure_service
    iniset /$Q_PLUGIN_CONF_FILE heleos esm_mgmt $HELEOS_ESM_MGMT
    iniset /$Q_PLUGIN_CONF_FILE heleos admin_username $HELEOS_ADMIN_USERNAME
    iniset /$Q_PLUGIN_CONF_FILE heleos admin_password $HELEOS_ADMIN_PASSWORD
    iniset /$Q_PLUGIN_CONF_FILE heleos router_image $HELEOS_ROUTER_IMAGE
    iniset /$Q_PLUGIN_CONF_FILE heleos mgmt_id $HELEOS_MGMT_ID
    iniset /$Q_PLUGIN_CONF_FILE heleos inband_id $HELEOS_INBAND_ID
    iniset /$Q_PLUGIN_CONF_FILE heleos oob_id $HELEOS_OOB_ID
    iniset /$Q_PLUGIN_CONF_FILE heleos dummy_utif_id $HELEOS_DUMMY_UTIF_ID
    iniset /$Q_PLUGIN_CONF_FILE heleos resource_pool_id $HELEOS_RESOURCE_POOL_ID
    iniset /$Q_PLUGIN_CONF_FILE heleos async_requests $HELEOS_ASYNC_REQUESTS
}

# Restore xtrace
$EMBR_XTRACE
