# Neutron loadbalancer plugin
# ---------------------------

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


AGENT_LBAAS_BINARY="$NEUTRON_BIN_DIR/neutron-lbaas-agent"
LBAAS_PLUGIN=neutron.services.loadbalancer.plugin.LoadBalancerPlugin

function neutron_agent_lbaas_install_agent_packages {
    if is_ubuntu || is_fedora; then
        install_package haproxy
    elif is_suse; then
        ### FIXME: Find out if package can be pushed to Factory
        echo "HAProxy packages can be installed from server:http project in OBS"
    fi
}

function neutron_agent_lbaas_configure_common {
    _neutron_service_plugin_class_add $LBAAS_PLUGIN
}

function neutron_agent_lbaas_configure_agent {
    LBAAS_AGENT_CONF_PATH=/etc/neutron/services/loadbalancer/haproxy
    mkdir -p $LBAAS_AGENT_CONF_PATH

    LBAAS_AGENT_CONF_FILENAME="$LBAAS_AGENT_CONF_PATH/lbaas_agent.ini"

    cp $NEUTRON_DIR/etc/lbaas_agent.ini $LBAAS_AGENT_CONF_FILENAME

    # ovs_use_veth needs to be set before the plugin configuration
    # occurs to allow plugins to override the setting.
    iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT ovs_use_veth $Q_OVS_USE_VETH

    neutron_plugin_setup_interface_driver $LBAAS_AGENT_CONF_FILENAME

    if is_fedora; then
        iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT user_group "nobody"
    fi
}

function neutron_lbaas_stop {
    pids=$(ps aux | awk '/haproxy/ { print $2 }')
    [ ! -z "$pids" ] && sudo kill $pids
}

# Restore xtrace
$MY_XTRACE