#!/bin/bash

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

# Save trace setting
METER_XTRACE=$(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 $METERING_AGENT_CONF_FILENAME
}

function neutron_metering_stop {
    stop_process q-metering
}

# Restore xtrace
$METER_XTRACE
