#!/bin/bash

# Neutron metering plugin
# ---------------------------

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


AGENT_METERING_BINARY="$NEUTRON_BIN_DIR/neutron-metering-agent"
METERING_PLUGIN="neutron.services.metering.metering_plugin.MeteringPlugin"

function neutron_agent_metering_configure_common {
    neutron_service_plugin_class_add $METERING_PLUGIN
}

function neutron_agent_metering_configure_agent {
    METERING_AGENT_CONF_PATH=/etc/neutron/services/metering
    mkdir -p $METERING_AGENT_CONF_PATH

    METERING_AGENT_CONF_FILENAME="$METERING_AGENT_CONF_PATH/metering_agent.ini"

    cp $NEUTRON_DIR/etc/metering_agent.ini.sample $METERING_AGENT_CONF_FILENAME
}

function neutron_metering_stop {
    stop_process q-metering
}

# Restore xtrace
$_XTRACE_NETURON_METER

