#!/bin/bash
#
# Neuton Big Switch/FloodLight plugin
# ------------------------------------

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

source $TOP_DIR/lib/neutron_plugins/ovs_base
source $TOP_DIR/lib/neutron_thirdparty/bigswitch_floodlight     # for third party service specific configuration values

function neutron_plugin_create_nova_conf {
    :
}

function neutron_plugin_install_agent_packages {
    _neutron_ovs_base_install_agent_packages
}

function neutron_plugin_configure_common {
    Q_PLUGIN_CONF_PATH=etc/neutron/plugins/bigswitch
    Q_PLUGIN_CONF_FILENAME=restproxy.ini
    Q_PLUGIN_CLASS="neutron.plugins.bigswitch.plugin.NeutronRestProxyV2"
    BS_FL_CONTROLLERS_PORT=${BS_FL_CONTROLLERS_PORT:-localhost:80}
    BS_FL_CONTROLLER_TIMEOUT=${BS_FL_CONTROLLER_TIMEOUT:-10}
}

function neutron_plugin_configure_debug_command {
    _neutron_ovs_base_configure_debug_command
}

function neutron_plugin_configure_dhcp_agent {
    :
}

function neutron_plugin_configure_l3_agent {
    _neutron_ovs_base_configure_l3_agent
}

function neutron_plugin_configure_plugin_agent {
    # Set up integration bridge
    _neutron_ovs_base_setup_bridge $OVS_BRIDGE
    iniset /$Q_PLUGIN_CONF_FILE restproxyagent integration_bridge $OVS_BRIDGE
    AGENT_BINARY="$NEUTRON_DIR/neutron/plugins/bigswitch/agent/restproxy_agent.py"

    _neutron_ovs_base_configure_firewall_driver
}

function neutron_plugin_configure_service {
    iniset /$Q_PLUGIN_CONF_FILE restproxy servers $BS_FL_CONTROLLERS_PORT
    iniset /$Q_PLUGIN_CONF_FILE restproxy servertimeout $BS_FL_CONTROLLER_TIMEOUT
    if [ "$BS_FL_VIF_DRIVER" = "ivs" ]; then
        iniset /$Q_PLUGIN_CONF_FILE nova vif_type ivs
    fi
}

function neutron_plugin_setup_interface_driver {
    local conf_file=$1
    if [ "$BS_FL_VIF_DRIVER" = "ivs" ]; then
        iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.IVSInterfaceDriver
    else
        iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
    fi
}


function has_neutron_plugin_security_group {
    # 1 means False here
    return 0
}

function neutron_plugin_check_adv_test_requirements {
    is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
}

# Restore xtrace
$BS_XTRACE